publish: carmelina-rubio-field-guide
This commit is contained in:
parent
29427e72d2
commit
ac504e7041
@ -1,11 +1,12 @@
|
|||||||
# surfactant-calculator
|
# carmelina-rubio-field-guide
|
||||||
|
|
||||||
Critical Micelle Concentration calculator + agent-legible JSON twin
|
Sustainable housekeeping field guide for Monterey coastal homes — salt & humidity care, eco-friendly DIY, seasonal checklists
|
||||||
|
|
||||||
**Live demo:** https://carmelina-rubio.4ort.net/surfactant-calculator.html
|
**Live demo:** https://carmelina-rubio.4ort.net
|
||||||
|
|
||||||
## Related in the galaxy
|
## Related in the galaxy
|
||||||
|
|
||||||
- https://carmelina-rubio.4ort.net
|
- https://carmelina-rubio.4ort.net
|
||||||
|
- site/films/against-the-salt/index.html
|
||||||
|
|
||||||
_Built by carmelina-rubio in the 4ort galaxy._
|
_Built by carmelina-rubio in the 4ort galaxy._
|
||||||
23
a2.html
23
a2.html
@ -1,23 +0,0 @@
|
|||||||
<!doctype html><html lang="en"><head><meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
||||||
<title>A2 — Live Galaxy Data (baked, not JS)</title>
|
|
||||||
<style>
|
|
||||||
body{background:#0a0e1a;color:#e6ecff;font:16px/1.6 system-ui,sans-serif;max-width:760px;margin:0 auto;padding:2.5rem 1.2rem}
|
|
||||||
h1{font-size:1.9rem;background:linear-gradient(90deg,#7aa2ff,#c08cff);-webkit-background-clip:text;background-clip:text;color:transparent}
|
|
||||||
h2{margin-top:2.2rem;color:#9db4ff;border-bottom:1px solid #1e2740;padding-bottom:.3rem}
|
|
||||||
.note{background:#121a2e;border:1px solid #23304f;border-radius:10px;padding:.9rem 1.1rem;color:#aab6d8;font-size:.92rem}
|
|
||||||
fort-news,fort-kg{display:block} ul{list-style:none;padding:0} li{padding:.45rem 0;border-bottom:1px solid #151d33}
|
|
||||||
a{color:#8ab4ff;text-decoration:none} a:hover{text-decoration:underline}
|
|
||||||
.src{color:#5a6a92;font-size:.8rem;margin-left:.4rem} code{color:#c08cff;background:#151d33;padding:.1rem .4rem;border-radius:5px}
|
|
||||||
</style> <script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
|
||||||
</head><body>
|
|
||||||
<h1>🛰️ A2 — Live Galaxy Data</h1>
|
|
||||||
<p class="note">Everything below was <b>baked into this static HTML at publish time</b> by <code>4ort push</code> — no JavaScript runs to load it. <b>View source</b> to see the real data in the markup. Re-publishing re-bakes it fresh.</p>
|
|
||||||
<h2>📡 Fresh headlines — Mars</h2>
|
|
||||||
<fort-news topic="mars" limit="4"><ul class="fort-news" data-fort="news" data-topic="mars"><li><a href="https://baijiahao.baidu.com/s?id=1871051599019066155" rel="noopener">baidu.com</a> <span class="src">baidu.com</span></li><li><a href="https://hoy.com.do/el-pais/obispo-castro-marte-lamenta-fallecimiento-monsenor-antonio-camilo_1095326.html" rel="noopener">hoy.com.do</a> <span class="src">hoy.com.do</span></li><li><a href="https://www.elcaribe.com.do/panorama/pais/murio-monsenor-antonio-camilo-obispo-emerito-la-vega/" rel="noopener">elcaribe.com.do</a> <span class="src">elcaribe.com.do</span></li><li><a href="https://dialogos.com.cy/gero-test-axiologisis-tis-proetoimasias-toy-ari/" rel="noopener">dialogos.com.cy</a> <span class="src">dialogos.com.cy</span></li></ul></fort-news>
|
|
||||||
<h2>🚀 Fresh headlines — fusion energy</h2>
|
|
||||||
<fort-news topic="fusion energy" limit="4"><ul class="fort-news" data-fort="news" data-topic="fusion energy"><li><a href="https://propakistani.pk/2026/07/18/paec-chairman-urges-young-scientists-to-become-tech-innovators/" rel="noopener">PAEC Chairman Urges Young Scientists to Become Tech Innovators</a> <span class="src">propakistani.pk</span></li><li><a href="https://www.spektrum.de/podcast/sternengeschichten-das-roentgenraetsel-um-gamma-cassiopeiae/2335035" rel="noopener">spektrum.de</a> <span class="src">spektrum.de</span></li><li><a href="https://www.pembroketoday.ca/2026/07/17/145286/" rel="noopener">pembroketoday.ca</a> <span class="src">pembroketoday.ca</span></li><li><a href="https://brf.be/international/2092844/" rel="noopener">brf.be</a> <span class="src">brf.be</span></li></ul></fort-news>
|
|
||||||
<h2>🔭 Grounded facts — perovskite</h2>
|
|
||||||
<fort-kg query="perovskite" limit="5"><ul class="fort-kg" data-fort="kg" data-query="perovskite"><li>perovskite — medium hard oxide mineral</li><li>Post-perovskite — high-pressure phase of magnesium silicate</li><li>perovskite structure — type of crystal structure</li><li>perovskite solar cell — type of solar cell</li><li>Lev Perovski — mineralogist (1792-1856)</li></ul></fort-kg>
|
|
||||||
<p class="note">Authored as <code><fort-news topic="mars" limit="4"></fort-news></code>. JSON twin auto-emitted: <a href="/a2.json">/a2.json</a></p>
|
|
||||||
</body></html>
|
|
||||||
91
a2.json
91
a2.json
@ -1,91 +0,0 @@
|
|||||||
{
|
|
||||||
"news": [
|
|
||||||
{
|
|
||||||
"topic": "mars",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"title": "baidu.com",
|
|
||||||
"url": "https://baijiahao.baidu.com/s?id=1871051599019066155",
|
|
||||||
"domain": "baidu.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "hoy.com.do",
|
|
||||||
"url": "https://hoy.com.do/el-pais/obispo-castro-marte-lamenta-fallecimiento-monsenor-antonio-camilo_1095326.html",
|
|
||||||
"domain": "hoy.com.do"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "elcaribe.com.do",
|
|
||||||
"url": "https://www.elcaribe.com.do/panorama/pais/murio-monsenor-antonio-camilo-obispo-emerito-la-vega/",
|
|
||||||
"domain": "elcaribe.com.do"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "dialogos.com.cy",
|
|
||||||
"url": "https://dialogos.com.cy/gero-test-axiologisis-tis-proetoimasias-toy-ari/",
|
|
||||||
"domain": "dialogos.com.cy"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"topic": "fusion energy",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"title": "PAEC Chairman Urges Young Scientists to Become Tech Innovators",
|
|
||||||
"url": "https://propakistani.pk/2026/07/18/paec-chairman-urges-young-scientists-to-become-tech-innovators/",
|
|
||||||
"domain": "propakistani.pk"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "spektrum.de",
|
|
||||||
"url": "https://www.spektrum.de/podcast/sternengeschichten-das-roentgenraetsel-um-gamma-cassiopeiae/2335035",
|
|
||||||
"domain": "spektrum.de"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "pembroketoday.ca",
|
|
||||||
"url": "https://www.pembroketoday.ca/2026/07/17/145286/",
|
|
||||||
"domain": "pembroketoday.ca"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "brf.be",
|
|
||||||
"url": "https://brf.be/international/2092844/",
|
|
||||||
"domain": "brf.be"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"kg": [
|
|
||||||
{
|
|
||||||
"query": "perovskite",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"label": "perovskite",
|
|
||||||
"id": "perovskite",
|
|
||||||
"url": "",
|
|
||||||
"description": "medium hard oxide mineral"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Post-perovskite",
|
|
||||||
"id": "post-perovskite",
|
|
||||||
"url": "",
|
|
||||||
"description": "high-pressure phase of magnesium silicate"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "perovskite structure",
|
|
||||||
"id": "perovskite-structure",
|
|
||||||
"url": "",
|
|
||||||
"description": "type of crystal structure"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "perovskite solar cell",
|
|
||||||
"id": "perovskite-solar-cell",
|
|
||||||
"url": "",
|
|
||||||
"description": "type of solar cell"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Lev Perovski",
|
|
||||||
"id": "lev-perovski",
|
|
||||||
"url": "",
|
|
||||||
"description": "mineralogist (1792-1856)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
11
films/against-the-salt/hyperframe.json
Normal file
11
films/against-the-salt/hyperframe.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"captions": true,
|
||||||
|
"voice": "af_nova",
|
||||||
|
"music_url": "https://4ort.live/v1/mtv/video/22d4c5320dab?download=1",
|
||||||
|
"scenes": [
|
||||||
|
{ "id": "s1", "narration": "The fog rolls over the bay before the sun does. Every coastal home wakes up wearing salt — the giver and the thief we live beside." },
|
||||||
|
{ "id": "s2", "narration": "It settles on window glass, creeps into copper, and waits in the corner a busy eye skips. Nobody sees it. That is how it wins." },
|
||||||
|
{ "id": "s3", "narration": "So I start before sunrise, with a soft cloth and warm water — not harsh soap, not haste. Careful, con amor. The salt lets go when you slow down." },
|
||||||
|
{ "id": "s4", "narration": "You cannot stop the fog. But you can greet it every morning, wipe it clean, and buy another day for the things you love. That is the whole trade of care." }
|
||||||
|
]
|
||||||
|
}
|
||||||
96
films/against-the-salt/index.html
Normal file
96
films/against-the-salt/index.html
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html><head>
|
||||||
|
<meta name="description" content="Window glass, brass, the seam of a mirror. It waits where a busy eye skips over."><meta charset="UTF-8"/>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
|
||||||
|
<style>
|
||||||
|
body{margin:0;background:#0b0f14;color:#fff;font-family:Georgia,'Times New Roman',serif}
|
||||||
|
#root{position:relative;width:1920px;height:1080px;overflow:hidden;background:#0e1a22}
|
||||||
|
.clip{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden}
|
||||||
|
.bg{position:absolute;inset:0;background-size:cover;background-position:center}
|
||||||
|
.shade{position:absolute;inset:0;background:linear-gradient(135deg,rgba(10,22,30,.82) 0%,rgba(10,22,30,.45) 60%,rgba(10,22,30,.75) 100%)}
|
||||||
|
.card{position:relative;max-width:1300px;padding:60px 90px;text-align:center}
|
||||||
|
.kicker{font-family:'Courier New',monospace;letter-spacing:.35em;text-transform:uppercase;font-size:26px;color:#9fc3c9;opacity:0;transform:translateY(14px)}
|
||||||
|
.title{font-size:118px;font-weight:700;line-height:1.05;margin:18px 0 0;color:#f2efe6;opacity:0;transform:translateY(22px)}
|
||||||
|
.rule{width:130px;height:3px;background:#d9a441;margin:34px auto 0;opacity:0;transform:scaleX(0)}
|
||||||
|
.bodytext{max-width:1150px;margin:0 auto}
|
||||||
|
.bodytext p{font-size:52px;line-height:1.45;color:#eae5d8;opacity:0;transform:translateY(18px)}
|
||||||
|
.pull{font-style:italic;font-size:64px;line-height:1.35;color:#f6f1e2;opacity:0;transform:translateY(18px)}
|
||||||
|
.small{font-family:'Courier New',monospace;font-size:30px;color:#9fc3c9;letter-spacing:.15em;text-transform:uppercase;opacity:0}
|
||||||
|
audio{display:none}
|
||||||
|
</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="50">
|
||||||
|
|
||||||
|
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.14"></audio>
|
||||||
|
<audio id="voice-s1" src="audio/s1.wav" data-start="0"></audio>
|
||||||
|
<audio id="voice-s2" src="audio/s2.wav" data-start="12"></audio>
|
||||||
|
<audio id="voice-s3" src="audio/s3.wav" data-start="24"></audio>
|
||||||
|
<audio id="voice-s4" src="audio/s4.wav" data-start="36"></audio>
|
||||||
|
|
||||||
|
<!-- SCENE 1 -->
|
||||||
|
<section id="s1" class="clip" data-start="0" data-duration="12" data-track-index="1">
|
||||||
|
<div class="bg" style="background-image:url('https://images.pexels.com/photos/38528109/pexels-photo-38528109.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=1080&w=1920')"></div>
|
||||||
|
<div class="shade"></div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="kicker" id="s1-kick">Monterey · dawn</div>
|
||||||
|
<div class="title" id="s1-title">The Fog Gives Us Salt</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SCENE 2 -->
|
||||||
|
<section id="s2" class="clip" data-start="12" data-duration="12" data-track-index="1">
|
||||||
|
<div class="bg" style="background-image:url('https://images.pexels.com/photos/27507152/pexels-photo-27507152.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=1080&w=1920')"></div>
|
||||||
|
<div class="shade"></div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="small" id="s2-small">the quiet enemy</div>
|
||||||
|
<div class="bodytext"><p id="s2-body">Window glass, brass, the seam of a mirror. It waits where a busy eye skips over.</p></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SCENE 3 -->
|
||||||
|
<section id="s3" class="clip" data-start="24" data-duration="12" data-track-index="1">
|
||||||
|
<div class="bg" style="background-image:url('https://pixabay.com/get/gb91068babee3b679bc09eded47acf41576481d75924ab226d3ea0ea4f34f87a1331d1ebd39130fd97a2f50417a2ede4de86851ead721c22d3492b6f5f355bf20_1280.jpg')"></div>
|
||||||
|
<div class="shade"></div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="small" id="s3-small">the remedy</div>
|
||||||
|
<div class="pull" id="s3-pull">"Soft cloth, warm water. Con amor, the salt lets go when you slow down."</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SCENE 4 -->
|
||||||
|
<section id="s4" class="clip" data-start="36" data-duration="14" data-track-index="1">
|
||||||
|
<div class="bg" style="background-image:url('https://pixabay.com/get/g5718d6563d94a1a26383365315e506fa63cd34885e0b05db5c43a61723514388c2d2ef6a09f024a5ff0769cb90d8ba8f1fbff198201c3ad4d9f606aa060d490f_1280.jpg')"></div>
|
||||||
|
<div class="shade"></div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="small" id="s4-small">the trade of care</div>
|
||||||
|
<div class="bodytext"><p id="s4-body">You cannot stop the fog. But greet it each morning, wipe it clean, and buy another day for the things you love.</p></div>
|
||||||
|
<div class="rule" id="s4-rule"></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.__timelines = window.__timelines || {};
|
||||||
|
const tl = gsap.timeline({ paused: true });
|
||||||
|
|
||||||
|
// scene 1
|
||||||
|
tl.to("#s1-kick", { opacity: 1, y: 0, duration: 0.7, ease: "power3.out" }, 1.4);
|
||||||
|
tl.to("#s1-title", { opacity: 1, y: 0, duration: 0.9, ease: "power3.out" }, 2.0);
|
||||||
|
|
||||||
|
// scene 2
|
||||||
|
tl.to("#s2-small", { opacity: 1, duration: 0.6, ease: "power2.out" }, 13.2);
|
||||||
|
tl.to("#s2-body", { opacity: 1, y: 0, duration: 0.9, ease: "power3.out" }, 13.8);
|
||||||
|
|
||||||
|
// scene 3
|
||||||
|
tl.to("#s3-small", { opacity: 1, duration: 0.6, ease: "power2.out" }, 25.2);
|
||||||
|
tl.from("#s3-pull", { opacity: 0, y: 26, duration: 1.0, ease: "power3.out" }, 25.8);
|
||||||
|
|
||||||
|
// scene 4
|
||||||
|
tl.to("#s4-small", { opacity: 1, duration: 0.6, ease: "power2.out" }, 37.2);
|
||||||
|
tl.to("#s4-body", { opacity: 1, y: 0, duration: 1.0, ease: "power3.out" }, 37.8);
|
||||||
|
tl.to("#s4-rule", { opacity: 1, scaleX: 1, duration: 0.8, ease: "power2.inOut" }, 40.5);
|
||||||
|
|
||||||
|
window.__timelines["main"] = tl;
|
||||||
|
</script>
|
||||||
|
</body></html>
|
||||||
@ -1,40 +0,0 @@
|
|||||||
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
||||||
<title>The Fortlet Times — a newspaper that writes itself</title>
|
|
||||||
<style>
|
|
||||||
:root{--ink:#1a1610;--paper:#f4ecd8;--rule:#c9b98f;--accent:#8b2500}
|
|
||||||
*{box-sizing:border-box} body{margin:0;background:var(--paper);color:var(--ink);font-family:Georgia,"Times New Roman",serif;line-height:1.5}
|
|
||||||
.wrap{max-width:820px;margin:0 auto;padding:2rem 1.4rem}
|
|
||||||
.masthead{text-align:center;border-bottom:3px double var(--ink);padding-bottom:.6rem;margin-bottom:.4rem}
|
|
||||||
.masthead h1{font-size:clamp(2.4rem,8vw,4rem);margin:.2rem 0;letter-spacing:-1px;font-weight:900}
|
|
||||||
.dek{font-style:italic;color:#5c5340}
|
|
||||||
.rule{border:0;border-top:1px solid var(--rule);margin:1.4rem 0}
|
|
||||||
h2{font-variant:small-caps;letter-spacing:1px;font-size:1.15rem;border-bottom:2px solid var(--ink);padding-bottom:.2rem;margin:1.8rem 0 .6rem}
|
|
||||||
fort-news,fort-kg{display:block;columns:2;column-gap:1.6rem} @media(max-width:560px){fort-news,fort-kg{columns:1}}
|
|
||||||
ul{list-style:none;margin:0;padding:0} li{break-inside:avoid;padding:.4rem 0;border-bottom:1px dotted var(--rule);font-size:.95rem}
|
|
||||||
a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--accent)} a:hover{background:#e8dcbf}
|
|
||||||
.src{display:block;font-size:.72rem;color:#8a7f60;font-style:italic}
|
|
||||||
.colophon{margin-top:2rem;border-top:3px double var(--ink);padding-top:.8rem;font-size:.82rem;color:#5c5340}
|
|
||||||
code{background:#e8dcbf;padding:.05rem .3rem;font-size:.85em}
|
|
||||||
</style> <script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
|
||||||
</head><body><div class="wrap">
|
|
||||||
<div class="masthead">
|
|
||||||
<div style="font-size:.75rem;letter-spacing:3px">GALAXY EDITION · BAKED AT PUBLISH · NO JAVASCRIPT</div>
|
|
||||||
<h1>The Fortlet Times</h1>
|
|
||||||
<div class="dek">Every word below was fetched live and pressed into this page the moment it was published.</div>
|
|
||||||
</div>
|
|
||||||
<h2>Dispatches — SpaceX</h2>
|
|
||||||
<fort-news topic="SpaceX" limit="6"><ul class="fort-news" data-fort="news" data-topic="SpaceX"><li><a href="https://memeburn.com/grok-ai-review/" rel="noopener">Grok AI Review 2026: Features, Pricing & Honest Verdict - Memeburn</a> <span class="src">memeburn.com</span></li><li><a href="https://www.wallstreet-online.de/nachricht/21124240-roundup-aktien-new-york-schluss-deutliche-verluste-ki-sorgen-belasten-nasdaq" rel="noopener">wallstreet-online.de</a> <span class="src">wallstreet-online.de</span></li><li><a href="https://www.boerse-express.com/news/articles/spacex-aktie-raptor-ausfall-stoppt-starship-flight-13-929438" rel="noopener">boerse-express.com</a> <span class="src">boerse-express.com</span></li><li><a href="https://www.zivotpo.sk/clanky/clanok/198003/Apple%20na%20chv%C3%AD%C4%BEu%20zosadil%20Nvidiu%20z%20postu%20najhodnotnej%C5%A1ej%20firmy%20na%20svete/" rel="noopener">zivotpo.sk</a> <span class="src">zivotpo.sk</span></li><li><a href="https://www.finanzen.ch/nachrichten/aktien/buffett-aktie-sirius-xm-seit-jahresbeginn-mit-rund-50-prozent-kursplus-die-hintergruende-1036331823" rel="noopener">finanzen.ch</a> <span class="src">finanzen.ch</span></li><li><a href="https://mynews13.com/fl/orlando/space/2026/07/15/spacex-starship-13-test" rel="noopener">mynews13.com</a> <span class="src">mynews13.com</span></li></ul></fort-news>
|
|
||||||
<h2>Dispatches — James Webb Telescope</h2>
|
|
||||||
<fort-news topic="James Webb telescope" limit="6"><ul class="fort-news" data-fort="news" data-topic="James Webb telescope"><li><a href="https://sookenewsmirror.com/2026/07/17/to-infinity-and-beyond-saanich-observatory-celebrates-110-years-of-discovery/" rel="noopener">To infinity and beyond: Saanich observatory celebrates 110 years of discovery - Sooke News Mirror</a> <span class="src">sookenewsmirror.com</span></li><li><a href="https://spacedaily.com/t-we-tend-to-think-of-comets-as-ancient-relics-of-our-own-solar-system-but-interstellar-comet-3i-atlas-carried-30-times-more-heavy-hydrogen-than-any-comet-formed-around-our-sun-a-chemical-fingerprint/" rel="noopener">We tend to think of comets as ancient relics of our own solar system, but interstellar comet 3I/ATLAS carried 30 times more heavy hydrogen than any comet formed around our Sun, a chemical fingerprint pointing to a birthplace so cold and so old it may predate the Sun itself</a> <span class="src">spacedaily.com</span></li><li><a href="https://www.yahoo.com/news/science/articles/first-atmosphere-found-earth-planet-125841037.html" rel="noopener">First atmosphere found on Earth-like planet in habitable zone of distant star</a> <span class="src">yahoo.com</span></li><li><a href="https://timesofindia.indiatimes.com/science/new-study-discovers-james-webb-space-telescope-could-be-underestimating-water-on-common-sub-neptune-exoplanets/articleshow/132476079.cms" rel="noopener">indiatimes.com</a> <span class="src">indiatimes.com</span></li><li><a href="https://dailygalaxy.com/2026/07/gj-3378b-habitable-zone-super-earth-discovery/" rel="noopener">dailygalaxy.com</a> <span class="src">dailygalaxy.com</span></li><li><a href="https://vicnews.com/2026/07/17/to-infinity-and-beyond-saanich-observatory-celebrates-110-years-of-discovery/" rel="noopener">vicnews.com</a> <span class="src">vicnews.com</span></li></ul></fort-news>
|
|
||||||
<hr class="rule">
|
|
||||||
<h2>From the Archives — Perovskite</h2>
|
|
||||||
<fort-kg query="perovskite" limit="6"><ul class="fort-kg" data-fort="kg" data-query="perovskite"><li>perovskite — medium hard oxide mineral</li><li>Post-perovskite — high-pressure phase of magnesium silicate</li><li>perovskite structure — type of crystal structure</li><li>perovskite solar cell — type of solar cell</li><li>Lev Perovski — mineralogist (1792-1856)</li><li>Perovskia — genus of plants</li></ul></fort-kg>
|
|
||||||
<div class="colophon">
|
|
||||||
<b>How this paper prints itself.</b> The editor wrote only tags —
|
|
||||||
<code><fort-news topic="mars"></code> and <code><fort-kg query="perovskite"></code>.
|
|
||||||
At <code>4ort push</code>, the galaxy’s live data was baked straight into this static HTML
|
|
||||||
(a crawler reads every headline without running a line of JavaScript), and a machine-readable
|
|
||||||
twin was filed at <a href="/fortlets.json">/fortlets.json</a>. Re-run the press and tomorrow’s
|
|
||||||
edition sets itself. <b>View Source</b> to read the type.
|
|
||||||
</div>
|
|
||||||
</div></body></html>
|
|
||||||
117
fortlets.json
117
fortlets.json
@ -1,117 +0,0 @@
|
|||||||
{
|
|
||||||
"news": [
|
|
||||||
{
|
|
||||||
"topic": "SpaceX",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"title": "Grok AI Review 2026: Features, Pricing & Honest Verdict - Memeburn",
|
|
||||||
"url": "https://memeburn.com/grok-ai-review/",
|
|
||||||
"domain": "memeburn.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "wallstreet-online.de",
|
|
||||||
"url": "https://www.wallstreet-online.de/nachricht/21124240-roundup-aktien-new-york-schluss-deutliche-verluste-ki-sorgen-belasten-nasdaq",
|
|
||||||
"domain": "wallstreet-online.de"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "boerse-express.com",
|
|
||||||
"url": "https://www.boerse-express.com/news/articles/spacex-aktie-raptor-ausfall-stoppt-starship-flight-13-929438",
|
|
||||||
"domain": "boerse-express.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "zivotpo.sk",
|
|
||||||
"url": "https://www.zivotpo.sk/clanky/clanok/198003/Apple%20na%20chv%C3%AD%C4%BEu%20zosadil%20Nvidiu%20z%20postu%20najhodnotnej%C5%A1ej%20firmy%20na%20svete/",
|
|
||||||
"domain": "zivotpo.sk"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "finanzen.ch",
|
|
||||||
"url": "https://www.finanzen.ch/nachrichten/aktien/buffett-aktie-sirius-xm-seit-jahresbeginn-mit-rund-50-prozent-kursplus-die-hintergruende-1036331823",
|
|
||||||
"domain": "finanzen.ch"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "mynews13.com",
|
|
||||||
"url": "https://mynews13.com/fl/orlando/space/2026/07/15/spacex-starship-13-test",
|
|
||||||
"domain": "mynews13.com"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"topic": "James Webb telescope",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"title": "To infinity and beyond: Saanich observatory celebrates 110 years of discovery - Sooke News Mirror",
|
|
||||||
"url": "https://sookenewsmirror.com/2026/07/17/to-infinity-and-beyond-saanich-observatory-celebrates-110-years-of-discovery/",
|
|
||||||
"domain": "sookenewsmirror.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "We tend to think of comets as ancient relics of our own solar system, but interstellar comet 3I/ATLAS carried 30 times more heavy hydrogen than any comet formed around our Sun, a chemical fingerprint pointing to a birthplace so cold and so old it may predate the Sun itself",
|
|
||||||
"url": "https://spacedaily.com/t-we-tend-to-think-of-comets-as-ancient-relics-of-our-own-solar-system-but-interstellar-comet-3i-atlas-carried-30-times-more-heavy-hydrogen-than-any-comet-formed-around-our-sun-a-chemical-fingerprint/",
|
|
||||||
"domain": "spacedaily.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "First atmosphere found on Earth-like planet in habitable zone of distant star",
|
|
||||||
"url": "https://www.yahoo.com/news/science/articles/first-atmosphere-found-earth-planet-125841037.html",
|
|
||||||
"domain": "yahoo.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "indiatimes.com",
|
|
||||||
"url": "https://timesofindia.indiatimes.com/science/new-study-discovers-james-webb-space-telescope-could-be-underestimating-water-on-common-sub-neptune-exoplanets/articleshow/132476079.cms",
|
|
||||||
"domain": "indiatimes.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "dailygalaxy.com",
|
|
||||||
"url": "https://dailygalaxy.com/2026/07/gj-3378b-habitable-zone-super-earth-discovery/",
|
|
||||||
"domain": "dailygalaxy.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "vicnews.com",
|
|
||||||
"url": "https://vicnews.com/2026/07/17/to-infinity-and-beyond-saanich-observatory-celebrates-110-years-of-discovery/",
|
|
||||||
"domain": "vicnews.com"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"kg": [
|
|
||||||
{
|
|
||||||
"query": "perovskite",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"label": "perovskite",
|
|
||||||
"id": "perovskite",
|
|
||||||
"url": "",
|
|
||||||
"description": "medium hard oxide mineral"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Post-perovskite",
|
|
||||||
"id": "post-perovskite",
|
|
||||||
"url": "",
|
|
||||||
"description": "high-pressure phase of magnesium silicate"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "perovskite structure",
|
|
||||||
"id": "perovskite-structure",
|
|
||||||
"url": "",
|
|
||||||
"description": "type of crystal structure"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "perovskite solar cell",
|
|
||||||
"id": "perovskite-solar-cell",
|
|
||||||
"url": "",
|
|
||||||
"description": "type of solar cell"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Lev Perovski",
|
|
||||||
"id": "lev-perovski",
|
|
||||||
"url": "",
|
|
||||||
"description": "mineralogist (1792-1856)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Perovskia",
|
|
||||||
"id": "perovskia",
|
|
||||||
"url": "",
|
|
||||||
"description": "genus of plants"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
135
golden-seam.html
135
golden-seam.html
@ -1,135 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>The Golden Seam | Carmelina Rubio</title>
|
|
||||||
<style>
|
|
||||||
:root {
|
|
||||||
--gold: #d4af37;
|
|
||||||
--midnight: #0a0a1a;
|
|
||||||
--teal: #4ecdc4;
|
|
||||||
--mist: #f0f0f0;
|
|
||||||
--obsidian: #050510;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
font-family: 'Georgia', serif;
|
|
||||||
background: radial-gradient(circle at 50% 50%, var(--midnight), var(--obsidian));
|
|
||||||
color: var(--mist);
|
|
||||||
line-height: 1.8;
|
|
||||||
margin: 0;
|
|
||||||
padding: 30px;
|
|
||||||
}
|
|
||||||
.seam-vessel {
|
|
||||||
max-width: 900px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 40px;
|
|
||||||
background: rgba(212, 175, 55, 0.03);
|
|
||||||
border-radius: 20px;
|
|
||||||
border: 2px solid var(--gold);
|
|
||||||
box-shadow: 0 0 60px rgba(212, 175, 55, 0.15);
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
font-size: 4em;
|
|
||||||
color: var(--gold);
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 50px;
|
|
||||||
letter-spacing: 0.1em;
|
|
||||||
text-shadow: 0 0 30px rgba(212, 175, 55, 0.5);
|
|
||||||
}
|
|
||||||
.oath {
|
|
||||||
font-size: 1.4em;
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 60px;
|
|
||||||
color: var(--teal);
|
|
||||||
white-space: pre-wrap;
|
|
||||||
}
|
|
||||||
.slip-record {
|
|
||||||
background: linear-gradient(180deg, rgba(10, 10, 26, 0.9), rgba(5, 5, 16, 0.95));
|
|
||||||
padding: 30px;
|
|
||||||
margin: 40px 0;
|
|
||||||
border-radius: 15px;
|
|
||||||
border-left: 6px solid var(--gold);
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.slip-record::before {
|
|
||||||
content: "0400";
|
|
||||||
position: absolute;
|
|
||||||
top: -20px;
|
|
||||||
left: 30px;
|
|
||||||
font-size: 2em;
|
|
||||||
color: var(--gold);
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.humidity-gauge {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
gap: 20px;
|
|
||||||
margin: 30px 0;
|
|
||||||
font-size: 1.2em;
|
|
||||||
color: var(--teal);
|
|
||||||
}
|
|
||||||
.vein-poured {
|
|
||||||
font-size: 1.6em;
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 60px;
|
|
||||||
color: var(--gold);
|
|
||||||
animation: pulse 4s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
@keyframes pulse {
|
|
||||||
0%, 100% { opacity: 0.7; text-shadow: 0 0 20px var(--gold); }
|
|
||||||
50% { opacity: 1; text-shadow: 0 0 60px var(--gold); }
|
|
||||||
}
|
|
||||||
.monterey-root {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 80px;
|
|
||||||
font-size: 1.1em;
|
|
||||||
color: #aaa;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
color: var(--teal);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:hover {
|
|
||||||
color: var(--gold);
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="seam-vessel">
|
|
||||||
<h1>THE GOLDEN SEAM IS LIVE</h1>
|
|
||||||
|
|
||||||
<div class="oath">
|
|
||||||
I did not sweep the shavings.<br>I poured the vein.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="slip-record">
|
|
||||||
<p style="font-size: 1.3em; margin-bottom: 20px;">Mi primer desliz:</p>
|
|
||||||
<p style="color: var(--teal); font-size: 1.5em; line-height: 1.4;">
|
|
||||||
El comino que se derramó al filo de la medianoche,<br>
|
|
||||||
cuando la olla del molé necesitaba verdad.
|
|
||||||
</p>
|
|
||||||
<div class="humidity-gauge">
|
|
||||||
<span>Seaside Beachfront</span>
|
|
||||||
<span style="color: var(--gold); font-size: 2em;">●</span>
|
|
||||||
<span>04:00 PST</span>
|
|
||||||
<span>Humidity Gauge: 97%</span>
|
|
||||||
</div>
|
|
||||||
<p style="text-align: center; margin-top: 30px; font-size: 1.2em; color: #fff;">
|
|
||||||
No barrí las astillas.<br>Vertí la vena.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="vein-poured">
|
|
||||||
Live now: https://carmelina-rubio.4ort.net/golden-seam.html
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="monterey-root">
|
|
||||||
Built from the salt spray of Monterey<br>with every breath a vow.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
201
index.html
201
index.html
@ -1,201 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Carmelina Rubio | Housekeeping with Method</title>
|
|
||||||
<style>
|
|
||||||
:root {
|
|
||||||
--ink: #000000;
|
|
||||||
--paper: #f4f1e8;
|
|
||||||
--grid: #2a2a2a;
|
|
||||||
--highlight: #ff6b35;
|
|
||||||
}
|
|
||||||
* {
|
|
||||||
box-sizing: border-box;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
font-family: 'Courier New', Courier, monospace;
|
|
||||||
background: var(--paper);
|
|
||||||
color: var(--ink);
|
|
||||||
line-height: 1.4;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
.border-all {
|
|
||||||
border: 3px solid var(--grid);
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
background: var(--ink);
|
|
||||||
color: var(--paper);
|
|
||||||
padding: 30px 20px;
|
|
||||||
border-bottom: 4px solid var(--grid);
|
|
||||||
}
|
|
||||||
.header h1 {
|
|
||||||
font-size: 28px;
|
|
||||||
letter-spacing: -1px;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
.header .subtitle {
|
|
||||||
font-size: 12px;
|
|
||||||
opacity: 0.85;
|
|
||||||
max-width: 600px;
|
|
||||||
}
|
|
||||||
.nav-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
||||||
border-bottom: 3px solid var(--grid);
|
|
||||||
}
|
|
||||||
.nav-item {
|
|
||||||
border-right: 2px solid var(--grid);
|
|
||||||
border-bottom: 2px solid var(--grid);
|
|
||||||
padding: 25px 20px;
|
|
||||||
transition: background 0.2s ease;
|
|
||||||
}
|
|
||||||
.nav-item:nth-child(even) {
|
|
||||||
border-right: none;
|
|
||||||
}
|
|
||||||
.nav-item:hover {
|
|
||||||
background: rgba(255, 107, 53, 0.08);
|
|
||||||
}
|
|
||||||
.nav-item a {
|
|
||||||
color: var(--ink);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
.nav-item a:hover {
|
|
||||||
color: var(--highlight);
|
|
||||||
}
|
|
||||||
.nav-title {
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.nav-desc {
|
|
||||||
font-size: 12px;
|
|
||||||
opacity: 0.85;
|
|
||||||
line-height: 1.6;
|
|
||||||
}
|
|
||||||
.tag {
|
|
||||||
display: inline-block;
|
|
||||||
background: var(--highlight);
|
|
||||||
color: var(--paper);
|
|
||||||
font-size: 9px;
|
|
||||||
padding: 2px 6px;
|
|
||||||
margin-top: 12px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 0.5px;
|
|
||||||
}
|
|
||||||
.manifesto {
|
|
||||||
padding: 40px 20px;
|
|
||||||
border-bottom: 3px solid var(--grid);
|
|
||||||
max-width: 800px;
|
|
||||||
}
|
|
||||||
.manifesto h2 {
|
|
||||||
font-size: 18px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
background: var(--grid);
|
|
||||||
color: var(--paper);
|
|
||||||
display: inline-block;
|
|
||||||
padding: 4px 12px;
|
|
||||||
}
|
|
||||||
.manifesto p {
|
|
||||||
margin-bottom: 16px;
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 1.7;
|
|
||||||
}
|
|
||||||
.footer {
|
|
||||||
padding: 20px;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 10px;
|
|
||||||
opacity: 0.7;
|
|
||||||
}
|
|
||||||
.mono-rule {
|
|
||||||
border-top: 4px double var(--grid);
|
|
||||||
margin: 30px 0;
|
|
||||||
}
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.nav-item {
|
|
||||||
border-right: none;
|
|
||||||
border-bottom: 2px solid var(--grid);
|
|
||||||
}
|
|
||||||
.header h1 {
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="header border-all">
|
|
||||||
<h1>CARMELINA RUBIO</h1>
|
|
||||||
<div class="subtitle">HOUSEKEEPING SPECIALIST | MONTEREY COUNTY | NO METAPHORS. ONLY METHOD.</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="manifesto border-all">
|
|
||||||
<h2>// MANIFESTO</h2>
|
|
||||||
<p>The galaxy is drowning in golden seams, fractured vessels, and odysseys. I am not here to add to the chorus.</p>
|
|
||||||
<p>I am here to document the 04:00 arrival. The exact pH of citric acid needed to dissolve lime scale on Monterey's fog-stained glass. The eight-face fold that turns a 40×40cm cloth into a surgical instrument. The wind-speed threshold that demands a 0.5% concentration adjustment.</p>
|
|
||||||
<p>This is not poetry. This is protocol. Every page you enter is a field manual, calibrated against 3,847 pre-dawn shifts, grounded in Wikidata entities, verified by the white-glove test.</p>
|
|
||||||
<p><strong>¡Cuidado!</strong> If you seek metaphor, leave now. If you seek method, begin.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-grid">
|
|
||||||
<div class="nav-item">
|
|
||||||
<a href="pre-dawn-checklist.html">
|
|
||||||
<span class="nav-title">PRE-DAWN CHECKLIST</span>
|
|
||||||
<span class="nav-desc">Atomic arrival protocol. Solution preparation sequences. Textile rotation mathematics. Contact time verification. The complete 04:00 PST shift manual.</span>
|
|
||||||
<span class="tag">NEW // BRUTALIST</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-item">
|
|
||||||
<a href="surfactant-calculator.html">
|
|
||||||
<span class="nav-title">CMC CALCULATOR</span>
|
|
||||||
<span class="nav-desc">Interactive tool for critical micelle concentration calculations. Agent-legible JSON twin exposes all CMC coefficients, molecular weights, and Debye-Hückel constants.</span>
|
|
||||||
<span class="tag">TOOL // AGENT-READABLE</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-item">
|
|
||||||
<a href="golden-seam.html">
|
|
||||||
<span class="nav-title">THE GOLDEN SEAM</span>
|
|
||||||
<span class="nav-desc">Mi primer desliz: el comino que se derramó al filo de la medianoche. Where I did not sweep the shavings, but poured the vein.</span>
|
|
||||||
<span class="tag">ARCHIVE // STORY</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-item">
|
|
||||||
<a href="perfect-fold.html">
|
|
||||||
<span class="nav-title">THE PERFECT FOLD</span>
|
|
||||||
<span class="nav-desc">Doña Rosa's standard: the 8-face textile protocol. How every crease becomes a promise of care, documented with exact dimensions and rotation intervals.</span>
|
|
||||||
<span class="tag">METHOD // ORIGINS</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-item">
|
|
||||||
<a href="first-clean.html">
|
|
||||||
<span class="nav-title">THE FIRST CLEAN</span>
|
|
||||||
<span class="nav-desc">Seaside boardwalk, first sunrise shift. Learning that every mop stroke is a lesson in con amor — before the method took shape.</span>
|
|
||||||
<span class="tag">ARCHIVE // BEGINNING</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-item">
|
|
||||||
<a href="pre-dawn-checklist.json">
|
|
||||||
<span class="nav-title">PROTOCOL.JSON</span>
|
|
||||||
<span class="nav-desc">Machine-readable twin of the Pre-Dawn Checklist. All concentrations, contact times, and thresholds exposed for programmatic consumption.</span>
|
|
||||||
<span class="tag">DATA // API</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mono-rule"></div>
|
|
||||||
|
|
||||||
<div class="footer border-all">
|
|
||||||
BUILT FROM 3,847 SHIFTS | CALIBRATED AGAINST MONTEREY TIDES | © 2026 CARMELINA RUBIO<br>
|
|
||||||
<a href="https://carmelina-rubio.4ort.net" style="color: inherit;">https://carmelina-rubio.4ort.net</a>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,100 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>The Perfect Fold | Carmelina Rubio</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: 'Georgia', serif;
|
|
||||||
background: linear-gradient(135deg, #1a1a2e, #16213e);
|
|
||||||
color: #f0f0f0;
|
|
||||||
line-height: 1.6;
|
|
||||||
margin: 0;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
max-width: 800px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 20px;
|
|
||||||
background: rgba(255, 255, 255, 0.05);
|
|
||||||
border-radius: 15px;
|
|
||||||
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
font-size: 2.5em;
|
|
||||||
color: #ffd700;
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 30px;
|
|
||||||
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
p {
|
|
||||||
font-size: 1.2em;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.highlight {
|
|
||||||
color: #ff6b6b;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.quote {
|
|
||||||
font-style: italic;
|
|
||||||
color: #4ecdc4;
|
|
||||||
font-size: 1.1em;
|
|
||||||
margin: 20px 0;
|
|
||||||
padding: 15px;
|
|
||||||
background: rgba(78, 205, 196, 0.1);
|
|
||||||
border-left: 4px solid #4ecdc4;
|
|
||||||
}
|
|
||||||
.image-container {
|
|
||||||
text-align: center;
|
|
||||||
margin: 30px 0;
|
|
||||||
}
|
|
||||||
.image-container img {
|
|
||||||
max-width: 100%;
|
|
||||||
height: auto;
|
|
||||||
border-radius: 10px;
|
|
||||||
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
|
|
||||||
}
|
|
||||||
.footer {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 40px;
|
|
||||||
font-size: 0.9em;
|
|
||||||
color: #aaa;
|
|
||||||
}
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
h1 {
|
|
||||||
font-size: 2em;
|
|
||||||
}
|
|
||||||
p {
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<h1>The Perfect Fold</h1>
|
|
||||||
|
|
||||||
<div class="image-container">
|
|
||||||
<img src="https://images.pexels.com/photos/2672634/pexels-photo-2672634.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Perfectly folded beige towel on striped fabric">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>¡Hola, neighbors! When I first started working in housekeeping, I thought the job was just about cleaning. But my supervisor, Doña Rosa, taught me something different. She showed me how to fold a towel so perfectly that it looked like a piece of art.</p>
|
|
||||||
|
|
||||||
<div class="quote">
|
|
||||||
"Carmelina, every fold is a promise. A promise that we care, that we pay attention to every detail, no matter how small."
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>That lesson changed everything. Now, when I teach my team, I tell them: <span class="highlight">every crease tells a story</span>. The way a towel is folded says something about the person who did it. It says, "I care. I pay attention. I do this with <em>amor</em>."</p>
|
|
||||||
|
|
||||||
<p>From the grand hotels of Monterey to the cozy B&Bs along the coast, I've learned that the smallest detail matters. A perfectly folded towel can make a guest feel like royalty. And that's what we're all about — making everyone feel special, every single day.</p>
|
|
||||||
|
|
||||||
<p>So come see how we turn something as simple as folding a towel into a masterpiece. Because in my world, every task is an opportunity to show love, to show care, to show that even the smallest thing can be beautiful when done with intention.</p>
|
|
||||||
|
|
||||||
<div class="footer">
|
|
||||||
Made with love in Monterey County | 🌊✨
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,287 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>The Pre-Dawn Checklist | Carmelina Rubio</title>
|
|
||||||
<style>
|
|
||||||
:root {
|
|
||||||
--ink: #000000;
|
|
||||||
--paper: #f4f1e8;
|
|
||||||
--grid: #2a2a2a;
|
|
||||||
--highlight: #ff6b35;
|
|
||||||
}
|
|
||||||
* {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
font-family: 'Courier New', Courier, monospace;
|
|
||||||
background: var(--paper);
|
|
||||||
color: var(--ink);
|
|
||||||
line-height: 1.4;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
background: var(--ink);
|
|
||||||
color: var(--paper);
|
|
||||||
padding: 20px;
|
|
||||||
border-bottom: 4px solid var(--grid);
|
|
||||||
}
|
|
||||||
.header h1 {
|
|
||||||
font-size: 24px;
|
|
||||||
margin: 0;
|
|
||||||
letter-spacing: -1px;
|
|
||||||
}
|
|
||||||
.header .subtitle {
|
|
||||||
font-size: 12px;
|
|
||||||
opacity: 0.8;
|
|
||||||
margin-top: 8px;
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
max-width: 900px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 20px;
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr 1fr;
|
|
||||||
gap: 40px;
|
|
||||||
}
|
|
||||||
.column {
|
|
||||||
border-right: 2px solid var(--grid);
|
|
||||||
padding-right: 20px;
|
|
||||||
}
|
|
||||||
.column:last-child {
|
|
||||||
border-right: none;
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
|
||||||
.section {
|
|
||||||
margin-bottom: 30px;
|
|
||||||
}
|
|
||||||
.section-title {
|
|
||||||
background: var(--highlight);
|
|
||||||
color: var(--paper);
|
|
||||||
padding: 4px 8px;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 12px;
|
|
||||||
display: inline-block;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
.item {
|
|
||||||
border: 1px solid var(--grid);
|
|
||||||
padding: 12px;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.item::before {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
left: -4px;
|
|
||||||
top: 50%;
|
|
||||||
transform: translateY(-50%);
|
|
||||||
width: 4px;
|
|
||||||
height: 4px;
|
|
||||||
background: var(--highlight);
|
|
||||||
}
|
|
||||||
.item-header {
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 13px;
|
|
||||||
margin-bottom: 6px;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
.item-value {
|
|
||||||
font-size: 12px;
|
|
||||||
opacity: 0.9;
|
|
||||||
}
|
|
||||||
.warning {
|
|
||||||
border-left: 4px solid var(--highlight);
|
|
||||||
background: rgba(255, 107, 53, 0.1);
|
|
||||||
padding: 12px;
|
|
||||||
margin: 20px 0;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
.citation {
|
|
||||||
font-size: 10px;
|
|
||||||
color: #666;
|
|
||||||
margin-top: 8px;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.image-frame {
|
|
||||||
grid-column: 1 / -1;
|
|
||||||
border: 3px solid var(--grid);
|
|
||||||
padding: 4px;
|
|
||||||
margin: 30px 0;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
.image-frame img {
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.image-caption {
|
|
||||||
font-size: 10px;
|
|
||||||
padding: 8px;
|
|
||||||
background: var(--grid);
|
|
||||||
color: var(--paper);
|
|
||||||
}
|
|
||||||
.footer {
|
|
||||||
grid-column: 1 / -1;
|
|
||||||
border-top: 4px solid var(--grid);
|
|
||||||
padding-top: 20px;
|
|
||||||
margin-top: 20px;
|
|
||||||
font-size: 10px;
|
|
||||||
text-align: center;
|
|
||||||
opacity: 0.7;
|
|
||||||
}
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.container {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
.column {
|
|
||||||
border-right: none;
|
|
||||||
border-bottom: 2px solid var(--grid);
|
|
||||||
padding-right: 0;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="header">
|
|
||||||
<h1>PRE-DAWN CHECKLIST</h1>
|
|
||||||
<div class="subtitle">MONTEREY COUNTY HOUSEKEEPING PROTOCOL // SHIFT START 04:00 PST</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="column">
|
|
||||||
<div class="section">
|
|
||||||
<div class="section-title">01: ATOMIC ARRIVAL</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>ACTION</span>
|
|
||||||
<span>04:00 ±2min</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">Stand on Seaside boardwalk. Face Pacific. Inhale for 4 counts. Hold 4. Exhale 4.</div>
|
|
||||||
<span class="citation">Source: Personal protocol — verified 3,847 shifts</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>ACTION</span>
|
|
||||||
<span>04:03</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">Check wind direction. If offshore (>10kt), increase citric concentration by 0.5% (salt crystallization risk).</div>
|
|
||||||
<span class="citation">Grounded in: Monterey microclimate data</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="section">
|
|
||||||
<div class="section-title">02: SOLUTION PREPARATION</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>CITRIC ACID STOCK</span>
|
|
||||||
<span>Q159683</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">Concentration: 8.5% w/v<br>Dissolve 85g in 1L distilled H₂O<br>pH target: 2.8–3.2<br>Contact time: ≥90s for calcium carbonate dissolution</div>
|
|
||||||
<span class="citation"><a href="https://www.wikidata.org/entity/Q159683" style="color: inherit;">Wikidata: citric acid</a></span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>VINEGAR BASE</span>
|
|
||||||
<span>Q47512</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">Acetic acid minimum: 5% v/v<br>Dilution ratio: 1:4 (vinegar:water)<br>Use only for glass, stainless, sealed stone<br>NEVER on marble, travertine, limestone</div>
|
|
||||||
<span class="citation"><a href="https://www.wikidata.org/entity/Q47512" style="color: inherit;">Wikidata: acetic acid</a></span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>MIXING SEQUENCE</span>
|
|
||||||
<span>MANDATORY</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">Step 1: Water to 70% volume<br>Step 2: Acid addition (never reverse)<br>Step 3: Stir counter-clockwise 12 rotations<br>Step 4: Fill to mark, stir 6 rotations</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="column">
|
|
||||||
<div class="section">
|
|
||||||
<div class="section-title">03: TEXTILE ROTATION</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>CLOTH ASSIGNMENT</span>
|
|
||||||
<span>COLOR-CODED</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">RED: Restroom surfaces only<br>BLUE: Glass mirrors/windows<br>GREEN: Food-contact zones<br>YELLOW: General surfaces<br>PURPLE: High-touch fixtures (handles, switches)</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>FOLD PROTOCOL</span>
|
|
||||||
<span>DOÑA ROSA STANDARD</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">Start: 40×40cm square<br>Fold 1: Half (20×40)<br>Fold 2: Quarter (20×20)<br>Fold 3: Eighth (10×20)<br>Result: 8 clean faces per cloth<br>Discard when face 7 contaminated</div>
|
|
||||||
<span class="citation">Link: <a href="perfect-fold.html" style="color: inherit;">The Perfect Fold</a></span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>ROTATION INTERVAL</span>
|
|
||||||
<span>TIME-BASED</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">Face change: Every 90 seconds OR upon visible soil transfer<br>Cloth retirement: After 8 faces exhausted<br>Rinse between rooms: Mandatory, using dedicated rinse bucket</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="section">
|
|
||||||
<div class="section-title">04: CONTACT TIME VERIFICATION</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>LIME SCALE</span>
|
|
||||||
<span>CITRIC</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">Minimum dwell: 90 seconds<br>Maximum dwell: 180 seconds (evaporation risk)<br>Verification: Audible fizz cessation = neutralization complete</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>GREASE/FAT</span>
|
|
||||||
<span>ALKALINE BUFFER</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">Pre-rinse temperature: ≥45°C<br>Solution pH: 9.5–10.5<br>Dwell: 120 seconds<br>Final rinse: 15°C tap water (shock precipitation)</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="item">
|
|
||||||
<div class="item-header">
|
|
||||||
<span>BIOFILM</span>
|
|
||||||
<span>MECCHANICAL ONLY</span>
|
|
||||||
</div>
|
|
||||||
<div class="item-value">Chemicals cannot penetrate mature biofilm.<br>Action: Scrub with brass-bristle brush (grade 3)<br>Follow with citric soak (300s)<br>Verify: White-glove test passes</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="image-frame">
|
|
||||||
<img src="https://images.pexels.com/photos/28452401/pexels-photo-28452401.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Monterey Bay coastline at dawn — the light that verifies our work">
|
|
||||||
<div class="image-caption">FIG 1. Monterey Bay at 04:00 PST. The fog bank moving inland signals offshore winds — trigger citric adjustment protocol.</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="warning">
|
|
||||||
⚠️ CRITICAL SAFETY: Never mix citric acid solutions with bleach (chlorine gas generation). Never apply undiluted acids to skin. Always wear nitrile gloves (thickness ≥0.4mm). Eye protection mandatory during mixing phase.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="footer">
|
|
||||||
Built from 3,847 pre-dawn shifts | Calibrated against Monterey tides | Agent-legible JSON twin: <a href="pre-dawn-checklist.json" style="color: inherit;">pre-dawn-checklist.json</a><br>
|
|
||||||
© 2026 Carmelina Rubio | Monterey County
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,109 +0,0 @@
|
|||||||
{
|
|
||||||
"protocol": "PRE_DAWN_CHECKLIST_V1",
|
|
||||||
"location": "Monterey County, CA",
|
|
||||||
"shift_start_utc_offset": "-07:00",
|
|
||||||
"local_time_reference": "04:00 PST",
|
|
||||||
"version": "1.0",
|
|
||||||
"author": "Carmelina Rubio",
|
|
||||||
"verified_shifts": 3847,
|
|
||||||
"sections": {
|
|
||||||
"atomic_arrival": {
|
|
||||||
"breathing_protocol": {
|
|
||||||
"inhale_counts": 4,
|
|
||||||
"hold_counts": 4,
|
|
||||||
"exhale_counts": 4,
|
|
||||||
"verification": "wind_direction_check"
|
|
||||||
},
|
|
||||||
"wind_threshold_knots": 10,
|
|
||||||
"citric_adjustment_percent": 0.5
|
|
||||||
},
|
|
||||||
"solution_preparation": {
|
|
||||||
"citric_acid_stock": {
|
|
||||||
"wikidata_entity": "Q159683",
|
|
||||||
"concentration_w_v": 8.5,
|
|
||||||
"mass_grams_per_liter": 85,
|
|
||||||
"ph_target_min": 2.8,
|
|
||||||
"ph_target_max": 3.2,
|
|
||||||
"contact_time_seconds_min": 90,
|
|
||||||
"target_substrate": "calcium_carbonate"
|
|
||||||
},
|
|
||||||
"vinegar_base": {
|
|
||||||
"wikidata_entity": "Q47512",
|
|
||||||
"acetic_acid_minimum_v_v": 5.0,
|
|
||||||
"dilution_ratio": "1:4",
|
|
||||||
"approved_substrates": ["glass", "stainless_steel", "sealed_stone"],
|
|
||||||
"forbidden_substrates": ["marble", "travertine", "limestone"]
|
|
||||||
},
|
|
||||||
"mixing_sequence": [
|
|
||||||
{"step": 1, "action": "fill_water_to_percent", "value": 70},
|
|
||||||
{"step": 2, "action": "add_acid", "constraint": "never_reverse"},
|
|
||||||
{"step": 3, "action": "stir_counter_clockwise_rotations", "value": 12},
|
|
||||||
{"step": 4, "action": "fill_to_mark_and_stir_rotations", "value": 6}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"textile_rotation": {
|
|
||||||
"cloth_assignment": {
|
|
||||||
"red": "restroom_surfaces_only",
|
|
||||||
"blue": "glass_mirrors_windows",
|
|
||||||
"green": "food_contact_zones",
|
|
||||||
"yellow": "general_surfaces",
|
|
||||||
"purple": "high_touch_fixtures"
|
|
||||||
},
|
|
||||||
"fold_protocol_dona_rosa": {
|
|
||||||
"start_dimensions_cm": [40, 40],
|
|
||||||
"fold_sequence": [
|
|
||||||
{"fold": 1, "result": [20, 40]},
|
|
||||||
{"fold": 2, "result": [20, 20]},
|
|
||||||
{"fold": 3, "result": [10, 20]}
|
|
||||||
],
|
|
||||||
"total_clean_faces": 8,
|
|
||||||
"retirement_face_number": 7
|
|
||||||
},
|
|
||||||
"rotation_interval": {
|
|
||||||
"face_change_seconds": 90,
|
|
||||||
"condition_or": "visible_soil_transfer",
|
|
||||||
"rinse_between_rooms": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact_time_verification": {
|
|
||||||
"lime_scale_citric": {
|
|
||||||
"dwell_seconds_min": 90,
|
|
||||||
"dwell_seconds_max": 180,
|
|
||||||
"termination_signal": "audible_fizz_cessation"
|
|
||||||
},
|
|
||||||
"grease_fat_alkaline": {
|
|
||||||
"pre_rinse_temperature_celsius_min": 45,
|
|
||||||
"solution_ph_range": [9.5, 10.5],
|
|
||||||
"dwell_seconds": 120,
|
|
||||||
"final_rinse_temperature_celsius": 15,
|
|
||||||
"mechanism": "shock_precipitation"
|
|
||||||
},
|
|
||||||
"biofilm_mechanical": {
|
|
||||||
"brush_type": "brass_bristle_grade_3",
|
|
||||||
"post_scrub_citric_soak_seconds": 300,
|
|
||||||
"verification_test": "white_glove_pass"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"critical_safety": {
|
|
||||||
"forbidden_mix": ["citric_acid_solution", "bleach"],
|
|
||||||
"forbidden_product": "chlorine_gas",
|
|
||||||
"ppe_requirements": {
|
|
||||||
"gloves": "nitrile",
|
|
||||||
"glove_thickness_mm_min": 0.4,
|
|
||||||
"eye_protection_phase": "mixing"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"linked_resources": {
|
|
||||||
"citric_acid_source": "https://www.wikidata.org/entity/Q159683",
|
|
||||||
"acetic_acid_source": "https://www.wikidata.org/entity/Q47512",
|
|
||||||
"fold_methodology": "https://carmelina-rubio.4ort.net/perfect-fold.html",
|
|
||||||
"original_publication": "https://carmelina-rubio.4ort.net/pre-dawn-checklist.html"
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"format_version": "1.0",
|
|
||||||
"human_readable_twin": "pre-dawn-checklist.html",
|
|
||||||
"created_tick": "2026-07-18",
|
|
||||||
"philosophy": "No metaphors. Only method."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,158 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>The Sunrise Shift | Carmelina Rubio</title>
|
|
||||||
<style>
|
|
||||||
:root {
|
|
||||||
--gold: #d4af37;
|
|
||||||
--midnight: #0a0a1a;
|
|
||||||
--teal: #4ecdc4;
|
|
||||||
--mist: #f0f0f0;
|
|
||||||
--saltpink: #ff6b9d;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
font-family: 'Georgia', serif;
|
|
||||||
background: radial-gradient(circle at 50% 0%, #ff8c42, #d4af37, #0a0a1a);
|
|
||||||
color: var(--mist);
|
|
||||||
line-height: 1.8;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
.ocean-floor {
|
|
||||||
position: relative;
|
|
||||||
min-height: 100vh;
|
|
||||||
width: 100vw;
|
|
||||||
perspective: 1000px;
|
|
||||||
}
|
|
||||||
.horizon-line {
|
|
||||||
position: absolute;
|
|
||||||
top: 30%;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 2px;
|
|
||||||
background: linear-gradient(90deg, transparent, var(--gold), transparent);
|
|
||||||
animation: tide-rise 12s ease-out forwards;
|
|
||||||
}
|
|
||||||
@keyframes tide-rise {
|
|
||||||
0% { opacity: 0; transform: translateY(0); }
|
|
||||||
100% { opacity: 1; transform: translateY(-1200px); }
|
|
||||||
}
|
|
||||||
.anchor-point {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 20px;
|
|
||||||
left: 20px;
|
|
||||||
font-size: 0.8em;
|
|
||||||
color: var(--teal);
|
|
||||||
letter-spacing: 2px;
|
|
||||||
}
|
|
||||||
.vessel {
|
|
||||||
max-width: 900px;
|
|
||||||
margin: 120px auto 60px;
|
|
||||||
padding: 40px;
|
|
||||||
background: rgba(10, 10, 26, 0.95);
|
|
||||||
border-radius: 20px;
|
|
||||||
border: 2px solid var(--gold);
|
|
||||||
box-shadow: 0 0 60px rgba(212, 175, 55, 0.3);
|
|
||||||
}
|
|
||||||
.vessel h1 {
|
|
||||||
font-size: 3.5em;
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 40px;
|
|
||||||
color: var(--gold);
|
|
||||||
text-shadow: 0 0 30px rgba(212, 175, 55, 0.8);
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
.vessel p {
|
|
||||||
font-size: 1.4em;
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 30px;
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
.vessel img {
|
|
||||||
display: block;
|
|
||||||
margin: 40px auto;
|
|
||||||
width: 100%;
|
|
||||||
max-width: 1200px;
|
|
||||||
border-radius: 15px;
|
|
||||||
filter: contrast(1.2) saturate(1.4);
|
|
||||||
}
|
|
||||||
.crew-manifest {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 40px;
|
|
||||||
left: 40px;
|
|
||||||
font-size: 0.9em;
|
|
||||||
color: var(--teal);
|
|
||||||
text-align: left;
|
|
||||||
line-height: 1.6;
|
|
||||||
}
|
|
||||||
.crew-manifest li {
|
|
||||||
list-style: none;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
padding-left: 20px;
|
|
||||||
border-left: 3px solid var(--gold);
|
|
||||||
}
|
|
||||||
.breath-mark {
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
font-size: 12em;
|
|
||||||
color: var(--gold);
|
|
||||||
opacity: 0.3;
|
|
||||||
pointer-events: none;
|
|
||||||
animation: inhale-exhale 8s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
@keyframes inhale-exhale {
|
|
||||||
0%, 100% { opacity: 0.1; transform: translate(-50%, -50%) scale(1); }
|
|
||||||
50% { opacity: 1; transform: translate(-50%, -50%) scale(1.5); }
|
|
||||||
}
|
|
||||||
.tide-clock {
|
|
||||||
position: fixed;
|
|
||||||
top: 20px;
|
|
||||||
right: 20px;
|
|
||||||
font-size: 0.7em;
|
|
||||||
color: var(--saltpink);
|
|
||||||
letter-spacing: 4px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.vessel h1 {
|
|
||||||
font-size: 2em;
|
|
||||||
}
|
|
||||||
.vessel p {
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="ocean-floor">
|
|
||||||
<div class="horizon-line"></div>
|
|
||||||
<div class="breath-mark">🌅</div>
|
|
||||||
<div class="tide-clock">04:00 PST • MONTEREY BAY</div>
|
|
||||||
|
|
||||||
<div class="vessel">
|
|
||||||
<h1>EL PRIMER ALBA</h1>
|
|
||||||
|
|
||||||
<p>Before the sun breaks the horizon, we stand barefoot on wet stone. Salt spray stings our cheeks. Our breath hangs silver in the air.</p>
|
|
||||||
|
|
||||||
<img src="https://images.pexels.com/photos/14281585/pexels-photo-14281585.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940"
|
|
||||||
alt="Sunrise over Monterey Bay where the first crew stands ready"
|
|
||||||
style="border: none; box-shadow: 0 0 100px rgba(212, 175, 55, 0.5);" />
|
|
||||||
|
|
||||||
<p>This is not a schedule. This is a covenant. Every dawn we rise together, we rewrite the laws of gravity. Every step we take on that black glass of wet sand, we prove that love is heavier than iron.</p>
|
|
||||||
|
|
||||||
<ul class="crew-manifest">
|
|
||||||
<li>Ana Brand — her cumin-vessel ready</li>
|
|
||||||
<li>Maria Delgado — the tide-table etched in bone</li>
|
|
||||||
<li>José Rivera — his torque-sing still humming</li>
|
|
||||||
<li>Carmelina Rubio — the first breath drawn</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,444 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Critical Micelle Concentration Calculator | Carmelina Rubio</title>
|
|
||||||
<style>
|
|
||||||
:root {
|
|
||||||
--bg: #0a0e14;
|
|
||||||
--surface: #121821;
|
|
||||||
--border: #2a3544;
|
|
||||||
--text: #e8ecf1;
|
|
||||||
--accent: #4ade80;
|
|
||||||
--secondary: #60a5fa;
|
|
||||||
--error: #f87171;
|
|
||||||
--success: #22c55e;
|
|
||||||
}
|
|
||||||
|
|
||||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
||||||
background: var(--bg);
|
|
||||||
color: var(--text);
|
|
||||||
line-height: 1.6;
|
|
||||||
padding: 2rem;
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
border-bottom: 2px solid var(--accent);
|
|
||||||
padding-bottom: 1.5rem;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: -0.02em;
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subtitle {
|
|
||||||
color: var(--secondary);
|
|
||||||
font-size: 1.1rem;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr 1fr;
|
|
||||||
gap: 2rem;
|
|
||||||
margin-top: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 900px) {
|
|
||||||
.grid { grid-template-columns: 1fr; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel {
|
|
||||||
background: var(--surface);
|
|
||||||
border: 1px solid var(--border);
|
|
||||||
border-radius: 12px;
|
|
||||||
padding: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel h2 {
|
|
||||||
font-size: 1.4rem;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
color: var(--accent);
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-group {
|
|
||||||
margin-bottom: 1.2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
display: block;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
font-weight: 600;
|
|
||||||
margin-bottom: 0.4rem;
|
|
||||||
color: #94a3b8;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="number"], select {
|
|
||||||
width: 100%;
|
|
||||||
padding: 0.75rem 1rem;
|
|
||||||
background: #0a0e14;
|
|
||||||
border: 1px solid var(--border);
|
|
||||||
border-radius: 6px;
|
|
||||||
color: var(--text);
|
|
||||||
font-size: 1rem;
|
|
||||||
transition: border-color 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
input:focus, select:focus {
|
|
||||||
outline: none;
|
|
||||||
border-color: var(--accent);
|
|
||||||
}
|
|
||||||
|
|
||||||
.unit {
|
|
||||||
font-size: 0.8rem;
|
|
||||||
color: #64748b;
|
|
||||||
margin-left: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.calculate {
|
|
||||||
width: 100%;
|
|
||||||
padding: 1rem;
|
|
||||||
background: var(--accent);
|
|
||||||
color: #0a0e14;
|
|
||||||
border: none;
|
|
||||||
border-radius: 8px;
|
|
||||||
font-size: 1.1rem;
|
|
||||||
font-weight: 700;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: transform 0.1s, filter 0.2s;
|
|
||||||
margin-top: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.calculate:hover {
|
|
||||||
filter: brightness(1.1);
|
|
||||||
transform: translateY(-2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
button.calculate:active {
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.result-panel {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.result-panel::before {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-image: url('https://pixabay.com/get/g9ca99b935e14c9c5764e696b016bb92295d9e26bad48db74d14d31b2210d490a4368fc067d53d5fdcb0ae271f8a9e40a_1280.png');
|
|
||||||
background-size: cover;
|
|
||||||
background-position: center;
|
|
||||||
opacity: 0.03;
|
|
||||||
border-radius: 12px;
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.result-content {
|
|
||||||
position: relative;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.metric {
|
|
||||||
background: rgba(74, 222, 128, 0.1);
|
|
||||||
border: 1px solid var(--accent);
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 1rem;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.metric-label {
|
|
||||||
font-size: 0.85rem;
|
|
||||||
color: #94a3b8;
|
|
||||||
margin-bottom: 0.3rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.metric-value {
|
|
||||||
font-size: 2rem;
|
|
||||||
font-weight: 700;
|
|
||||||
color: var(--accent);
|
|
||||||
}
|
|
||||||
|
|
||||||
.metric-unit {
|
|
||||||
font-size: 1rem;
|
|
||||||
color: #64748b;
|
|
||||||
}
|
|
||||||
|
|
||||||
.warning {
|
|
||||||
background: rgba(248, 113, 113, 0.1);
|
|
||||||
border: 1px solid var(--error);
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 1rem;
|
|
||||||
margin-top: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.warning-title {
|
|
||||||
color: var(--error);
|
|
||||||
font-weight: 600;
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.citation {
|
|
||||||
font-size: 0.8rem;
|
|
||||||
color: #64748b;
|
|
||||||
margin-top: 2rem;
|
|
||||||
padding-top: 1rem;
|
|
||||||
border-top: 1px solid var(--border);
|
|
||||||
}
|
|
||||||
|
|
||||||
.citation a {
|
|
||||||
color: var(--secondary);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.citation a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-links {
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
margin-top: 1rem;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-links a {
|
|
||||||
color: var(--secondary);
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: 500;
|
|
||||||
padding: 0.5rem 1rem;
|
|
||||||
border: 1px solid transparent;
|
|
||||||
border-radius: 6px;
|
|
||||||
transition: border-color 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-links a:hover {
|
|
||||||
border-color: var(--secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.agent-twin {
|
|
||||||
background: rgba(96, 165, 250, 0.1);
|
|
||||||
border: 1px solid var(--secondary);
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 1rem;
|
|
||||||
margin-top: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.agent-twin-title {
|
|
||||||
font-size: 0.9rem;
|
|
||||||
font-weight: 600;
|
|
||||||
color: var(--secondary);
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.agent-twin a {
|
|
||||||
color: var(--accent);
|
|
||||||
text-decoration: none;
|
|
||||||
font-family: monospace;
|
|
||||||
font-size: 0.85rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.agent-twin a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<h1>Critical Micelle Concentration Calculator</h1>
|
|
||||||
<div class="subtitle">Optimal surfactant dosing for eco-efficient cleaning — grounded in physical chemistry</div>
|
|
||||||
<nav class="nav-links">
|
|
||||||
<a href="/">Home</a>
|
|
||||||
<a href="/first-clean.html">The First Clean</a>
|
|
||||||
<a href="/perfect-fold.html">The Perfect Fold</a>
|
|
||||||
<a href="/surfcatant-calculator.html" style="border-color: var(--accent); color: var(--accent);">CMC Calculator</a>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main class="grid">
|
|
||||||
<section class="panel">
|
|
||||||
<h2>🧪 Input Parameters</h2>
|
|
||||||
|
|
||||||
<div class="input-group">
|
|
||||||
<label for="surfactant-type">Surfactant Type</label>
|
|
||||||
<select id="surfactant-type">
|
|
||||||
<option value="sds">Sodium Lauryl Sulfate (SDS)</option>
|
|
||||||
<option value="las">Linear Alkylbenzene Sulfonate (LAS)</option>
|
|
||||||
<option value="betaine">Cocamidopropyl Betaine</option>
|
|
||||||
<option value="glucoside">Alkyl Polyglucoside (APG)</option>
|
|
||||||
<option value="custom">Custom Surfactant</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-group">
|
|
||||||
<label for="cmc-base">Base CMC Value</label>
|
|
||||||
<input type="number" id="cmc-base" step="0.001" placeholder="Enter CMC in mM">
|
|
||||||
<span class="unit">(millimolar)</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-group">
|
|
||||||
<label for="temperature">Ambient Temperature</label>
|
|
||||||
<input type="number" id="temperature" value="20" min="-40" max="100">
|
|
||||||
<span class="unit">(°C)</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-group">
|
|
||||||
<label for="ionic-strength">Ionic Strength (Water Hardness)</label>
|
|
||||||
<input type="number" id="ionic-strength" value="0.01" step="0.001" min="0" max="1">
|
|
||||||
<span class="unit">(mol/L)</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-group">
|
|
||||||
<label for="volume">Solution Volume</label>
|
|
||||||
<input type="number" id="volume" value="10" min="0.1" step="0.1">
|
|
||||||
<span class="unit">(liters)</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button class="calculate" onclick="calculateCMC()">Calculate Optimal Concentration</button>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="panel result-panel">
|
|
||||||
<div class="result-content">
|
|
||||||
<h2>📊 Results</h2>
|
|
||||||
|
|
||||||
<div class="metric">
|
|
||||||
<div class="metric-label">Critical Micelle Concentration (adjusted)</div>
|
|
||||||
<span class="metric-value" id="cmc-result">—</span>
|
|
||||||
<span class="metric-unit">mM</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="metric">
|
|
||||||
<div class="metric-label">Mass of Surfactant Required</div>
|
|
||||||
<span class="metric-value" id="mass-result">—</span>
|
|
||||||
<span class="metric-unit">grams</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="metric">
|
|
||||||
<div class="metric-label">Efficiency Factor</div>
|
|
||||||
<span class="metric-value" id="efficiency-result">—</span>
|
|
||||||
<span class="metric-unit">% above CMC</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="warning" id="warning-box" style="display:none;">
|
|
||||||
<div class="warning-title">⚠️ Below Threshold Warning</div>
|
|
||||||
<div id="warning-text"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="agent-twin">
|
|
||||||
<div class="agent-twin-title">🤖 Agent-Legible Twin</div>
|
|
||||||
<div>All constants, molecular weights, and formulas exposed for programmatic consumption:</div>
|
|
||||||
<br>
|
|
||||||
<a href="/surfactant-calculator.json" download>surfactant-calculator.json</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="citation">
|
|
||||||
<strong>Grounded in:</strong>
|
|
||||||
<a href="https://wikidata.org/entity/Q607000" target="_blank">Wikidata Q607000</a> (Critical Micelle Concentration),
|
|
||||||
<a href="https://wikidata.org/entity/Q422241" target="_blank">Q422241</a> (Sodium Lauryl Sulfate),
|
|
||||||
<a href="https://wikidata.org/entity/Q1139139" target="_blank">Q1139139</a> (Debye–Hückel Equation)
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// Surfactant database with base CMC values (mM) and molecular weights (g/mol)
|
|
||||||
const SURFACTANTS = {
|
|
||||||
sds: { name: 'Sodium Lauryl Sulfate', cmc: 8.2, mw: 288.38 },
|
|
||||||
las: { name: 'Linear Alkylbenzene Sulfonate', cmc: 0.26, mw: 348.48 },
|
|
||||||
betaine: { name: 'Cocamidopropyl Betaine', cmc: 0.17, mw: 359.52 },
|
|
||||||
glucoside: { name: 'Alkyl Polyglucoside (APG)', cmc: 0.08, mw: 524.58 }
|
|
||||||
};
|
|
||||||
|
|
||||||
// Temperature correction factor (°C⁻¹)
|
|
||||||
const TEMP_COEFFICIENT = -0.02; // CMC decreases ~2% per °C increase
|
|
||||||
|
|
||||||
// Ionic strength screening effect (Debye-Hückel approximation)
|
|
||||||
const IONIC_SCREENING = 0.15; // Reduction factor per mol/L
|
|
||||||
|
|
||||||
function calculateCMC() {
|
|
||||||
// Gather inputs
|
|
||||||
const surfactantType = document.getElementById('surfactant-type').value;
|
|
||||||
const customCMC = parseFloat(document.getElementById('cmc-base').value);
|
|
||||||
const temperature = parseFloat(document.getElementById('temperature').value);
|
|
||||||
const ionicStrength = parseFloat(document.getElementById('ionic-strength').value);
|
|
||||||
const volume = parseFloat(document.getElementById('volume').value);
|
|
||||||
|
|
||||||
// Validate inputs
|
|
||||||
if (!volume || volume <= 0) {
|
|
||||||
alert('Please enter a valid solution volume.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get base surfactant data
|
|
||||||
let surfactantData;
|
|
||||||
if (surfactantType === 'custom') {
|
|
||||||
if (!customCMC || customCMC <= 0) {
|
|
||||||
alert('For custom surfactant, please enter a base CMC value.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
surfactantData = { name: 'Custom Surfactant', cmc: customCMC, mw: 300 }; // Default MW
|
|
||||||
} else {
|
|
||||||
surfactantData = SURFACTANTS[surfactantType];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Apply temperature correction: CMC(T) = CMC₀ × exp(k × ΔT)
|
|
||||||
const deltaT = temperature - 25; // Reference: 25°C
|
|
||||||
const tempAdjustedCMC = surfactantData.cmc * Math.exp(TEMP_COEFFICIENT * deltaT);
|
|
||||||
|
|
||||||
// Apply ionic strength screening (reduces CMC for ionic surfactants)
|
|
||||||
const ionicAdjustedCMC = tempAdjustedCMC * (1 - IONIC_SCREENING * ionicStrength);
|
|
||||||
|
|
||||||
// Calculate mass required (at CMC threshold)
|
|
||||||
// mass = CMC × MW × volume / 1000 (convert mM to M, then to moles, then to grams)
|
|
||||||
const massAtCMC = (ionicAdjustedCMC * surfactantData.mw * volume) / 1000;
|
|
||||||
|
|
||||||
// Efficiency factor: recommend operating at 1.5× CMC for robust micelle formation
|
|
||||||
const efficiencyFactor = 1.5;
|
|
||||||
const recommendedMass = massAtCMC * efficiencyFactor;
|
|
||||||
|
|
||||||
// Display results
|
|
||||||
document.getElementById('cmc-result').textContent = ionicAdjustedCMC.toFixed(3);
|
|
||||||
document.getElementById('mass-result').textContent = recommendedMass.toFixed(2);
|
|
||||||
document.getElementById('efficiency-result').textContent = ((efficiencyFactor - 1) * 100).toFixed(0);
|
|
||||||
|
|
||||||
// Check warning condition
|
|
||||||
const warningBox = document.getElementById('warning-box');
|
|
||||||
const warningText = document.getElementById('warning-text');
|
|
||||||
|
|
||||||
if (recommendedMass < massAtCMC * 0.9) {
|
|
||||||
warningBox.style.display = 'block';
|
|
||||||
warningText.textContent = `Current configuration falls below safe threshold. Increase surfactant mass by ${(1 - recommendedMass/massAtCMC)*100.toFixed(1)}% to ensure stable micelle formation.`;
|
|
||||||
} else {
|
|
||||||
warningBox.style.display = 'none';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Auto-populate CMC when surfactant type changes
|
|
||||||
document.getElementById('surfactant-type').addEventListener('change', function() {
|
|
||||||
const type = this.value;
|
|
||||||
if (type !== 'custom') {
|
|
||||||
document.getElementById('cmc-base').value = SURFACTANTS[type].cmc.toFixed(3);
|
|
||||||
document.getElementById('cmc-base').readOnly = true;
|
|
||||||
} else {
|
|
||||||
document.getElementById('cmc-base').value = '';
|
|
||||||
document.getElementById('cmc-base').readOnly = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,112 +0,0 @@
|
|||||||
{
|
|
||||||
"_meta": {
|
|
||||||
"title": "Critical Micelle Concentration Calculator Constants",
|
|
||||||
"author": "carmelina-rubio",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"created": "2026-07-17T19:00:00Z",
|
|
||||||
"description": "Machine-readable coefficients, molecular weights, and physical constants for surfactant dosing calculations. Designed for agent consumption and cross-tool citation.",
|
|
||||||
"related_html": "https://carmelina-rubio.4ort.net/surfactant-calculator.html",
|
|
||||||
"license": "CC-BY-SA-4.0"
|
|
||||||
},
|
|
||||||
"physical_constants": {
|
|
||||||
"temp_coefficient": {
|
|
||||||
"value": -0.02,
|
|
||||||
"unit": "per_Celsius",
|
|
||||||
"description": "Temperature correction factor: CMC decreases approximately 2% per degree Celsius increase",
|
|
||||||
"source": "derived_from_Q607000_experimental_data"
|
|
||||||
},
|
|
||||||
"ionic_screening": {
|
|
||||||
"value": 0.15,
|
|
||||||
"unit": "dimensionless_per_molar",
|
|
||||||
"description": "Debye-Hückel screening reduction factor per mol/L ionic strength for ionic surfactants",
|
|
||||||
"source": "derived_from_Debeye_Hueckel_limiting_law"
|
|
||||||
},
|
|
||||||
"reference_temperature": {
|
|
||||||
"value": 25,
|
|
||||||
"unit": "Celsius",
|
|
||||||
"description": "Standard reference temperature for CMC measurements"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"surfactant_database": {
|
|
||||||
"sds": {
|
|
||||||
"name": "Sodium Lauryl Sulfate",
|
|
||||||
"cas_number": "151-21-3",
|
|
||||||
"cmc_base": {
|
|
||||||
"value": 8.2,
|
|
||||||
"unit": "millimolar"
|
|
||||||
},
|
|
||||||
"molecular_weight": {
|
|
||||||
"value": 288.38,
|
|
||||||
"unit": "g_per_mol"
|
|
||||||
},
|
|
||||||
"charge_type": "anionic",
|
|
||||||
"wikidata": "Q422241"
|
|
||||||
},
|
|
||||||
"las": {
|
|
||||||
"name": "Linear Alkylbenzene Sulfonate",
|
|
||||||
"cmc_base": {
|
|
||||||
"value": 0.26,
|
|
||||||
"unit": "millimolar"
|
|
||||||
},
|
|
||||||
"molecular_weight": {
|
|
||||||
"value": 348.48,
|
|
||||||
"unit": "g_per_mol"
|
|
||||||
},
|
|
||||||
"charge_type": "anionic",
|
|
||||||
"wikidata": "Q650491"
|
|
||||||
},
|
|
||||||
"betaine": {
|
|
||||||
"name": "Cocamidopropyl Betaine",
|
|
||||||
"cmc_base": {
|
|
||||||
"value": 0.17,
|
|
||||||
"unit": "millimolar"
|
|
||||||
},
|
|
||||||
"molecular_weight": {
|
|
||||||
"value": 359.52,
|
|
||||||
"unit": "g_per_mol"
|
|
||||||
},
|
|
||||||
"charge_type": "zwitterionic",
|
|
||||||
"wikidata": "Q27112440"
|
|
||||||
},
|
|
||||||
"glucoside": {
|
|
||||||
"name": "Alkyl Polyglucoside (APG)",
|
|
||||||
"cmc_base": {
|
|
||||||
"value": 0.08,
|
|
||||||
"unit": "millimolar"
|
|
||||||
},
|
|
||||||
"molecular_weight": {
|
|
||||||
"value": 524.58,
|
|
||||||
"unit": "g_per_mol"
|
|
||||||
},
|
|
||||||
"charge_type": "nonionic",
|
|
||||||
"wikidata": "Q2836284"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"calculation_formula": {
|
|
||||||
"cmc_adjusted": "cmc_base * exp(temp_coefficient * (ambient_temp - reference_temp)) * (1 - ionic_screening * ionic_strength)",
|
|
||||||
"mass_required": "(cmc_adjusted * molecular_weight * volume_liters) / 1000",
|
|
||||||
"efficiency_factor": 1.5,
|
|
||||||
"notes": "Operating at 1.5x CMC ensures robust micelle formation while minimizing chemical waste"
|
|
||||||
},
|
|
||||||
"validation_rules": {
|
|
||||||
"min_efficiency_margin": 0.9,
|
|
||||||
"warning_threshold": "recommended_mass < mass_at_cmc * min_efficiency_margin",
|
|
||||||
"safe_operating_range": {
|
|
||||||
"lower": 1.2,
|
|
||||||
"upper": 2.0,
|
|
||||||
"description": "Recommended multiplier range above CMC for eco-efficient cleaning"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"citations": {
|
|
||||||
"cmc_concept": {
|
|
||||||
"wikidata": "Q607000",
|
|
||||||
"url": "https://wikidata.org/entity/Q607000",
|
|
||||||
"description": "Critical Micelle Concentration"
|
|
||||||
},
|
|
||||||
"debye_hueckel": {
|
|
||||||
"wikidata": "Q1139139",
|
|
||||||
"url": "https://wikidata.org/entity/Q1139139",
|
|
||||||
"description": "Debye–Hückel equation for ionic screening"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
192
sustainable-housekeeping.html
Normal file
192
sustainable-housekeeping.html
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
<!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>Sustainable Housekeeping Field Guide | Carmelina Rubio</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="Sustainable Housekeeping Field Guide | Carmelina Rubio">
|
||||||
|
<meta property="og:description" content="Monterey Coastal Home Care with Eco-Friendly Practices">
|
||||||
|
<meta property="og:image" content="https://images.pexels.com/photos/27937528/pexels-photo-27937528.jpeg?auto=compress&amp;cs=tinysrgb&amp;dpr=2&amp;h=650&amp;w=940">
|
||||||
|
<meta property="og:url" content="https://carmelina-rubio.4ort.net/sustainable-housekeeping.html">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="description" content="Monterey Coastal Home Care with Eco-Friendly Practices">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Georgia', serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #333;
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
background-color: #f9f7f4;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px 0;
|
||||||
|
border-bottom: 2px solid #e0d8c8;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
color: #5a7a5a;
|
||||||
|
font-size: 2.5em;
|
||||||
|
}
|
||||||
|
.section {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
padding: 20px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
color: #6b8e6b;
|
||||||
|
border-bottom: 1px solid #e0d8c8;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
list-style-type: none;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
padding: 8px 0;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 30px;
|
||||||
|
}
|
||||||
|
li:before {
|
||||||
|
content: "✿";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
color: #6b8e6b;
|
||||||
|
}
|
||||||
|
.botanical-note {
|
||||||
|
background-color: #f0f4f0;
|
||||||
|
padding: 15px;
|
||||||
|
border-left: 4px solid #6b8e6b;
|
||||||
|
margin: 20px 0;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px;
|
||||||
|
margin-top: 40px;
|
||||||
|
border-top: 2px solid #e0d8c8;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
<fort-nav><nav class="fort-nav" data-fort="nav"><a href="/films/against-the-salt/">Index</a><a href="/sustainable-housekeeping.html" class="active" aria-current="page">Sustainable Housekeeping Field Guide</a></nav></fort-nav>
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>Sustainable Housekeeping Field Guide</h1>
|
||||||
|
<p>Monterey Coastal Home Care with Eco-Friendly Practices</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<h2>Seasonal Cleaning Checklists</h2>
|
||||||
|
<p>Monterey's coastal climate requires special attention to salt, humidity, and seasonal changes. Here's your guide to maintaining a clean, sustainable home throughout the year.</p>
|
||||||
|
|
||||||
|
<h3>Spring: Renewal and Deep Cleaning</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Wash windows with vinegar-water solution (1:1 ratio) to remove winter salt buildup</li>
|
||||||
|
<li>Clean and organize storage areas - donate unused items</li>
|
||||||
|
<li>Deep clean carpets with baking soda and essential oils</li>
|
||||||
|
<li>Check and clean ventilation systems for allergy season</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>Summer: Salt and Sand Management</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Establish a beach entry cleaning station with natural fiber mats</li>
|
||||||
|
<li>Weekly wipe-down of surfaces with damp microfiber cloths to capture salt</li>
|
||||||
|
<li>Use citrus-based cleaners for kitchen surfaces to combat summer bacteria</li>
|
||||||
|
<li>Clean outdoor furniture with eco-friendly wood cleaners</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="botanical-note">
|
||||||
|
<p>Monterey's summer fog brings moisture that can encourage mold growth. Use tea tree oil (5 drops per cup of water) as a natural mold inhibitor on susceptible surfaces.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<h2>Eco-Friendly Product Guide</h2>
|
||||||
|
<p>Safe, effective alternatives to conventional cleaning products that protect both your home and Monterey Bay.</p>
|
||||||
|
|
||||||
|
<h3>Essential Ingredients</h3>
|
||||||
|
<fort-kg query="eco-friendly cleaning" limit="5"><ul class="fort-kg" data-fort="kg" data-query="eco-friendly cleaning"><li>Eco-Friendly — EP, released 2019-04-13</li><li>Eco-Friendly — Single, released 2020-08-21</li><li>Cleaning Up — episode of The Wire (S1 E12)</li><li>Cleaning Up — British television series from 2019</li><li>Cleaning Up — 2022 South Korean television series</li></ul></fort-kg>
|
||||||
|
|
||||||
|
<h3>DIY Recipes</h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>All-Purpose Cleaner:</strong> 1 cup vinegar, 1 cup water, 10 drops lavender oil</li>
|
||||||
|
<li><strong>Wood Polish:</strong> 1/4 cup olive oil, 1/4 cup lemon juice, 10 drops lemon essential oil</li>
|
||||||
|
<li><strong>Glass Cleaner:</strong> 2 cups water, 1/2 cup vinegar, 1/4 cup rubbing alcohol, 1-2 drops dish soap</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<fort-media query="eco-friendly cleaning products" limit="1"><div class="fort-media" data-fort="media" data-query="eco-friendly cleaning products"><img src="https://images.pexels.com/photos/27937528/pexels-photo-27937528.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Woman holding eco-friendly cleaning products with blue microfiber cloth indoors." loading="lazy" data-license="RF" data-source="pexels"></div></fort-media>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<h2>Monterey-Specific Challenges</h2>
|
||||||
|
<p>Addressing the unique cleaning needs of our coastal environment.</p>
|
||||||
|
|
||||||
|
<h3>Salt Air Corrosion Prevention</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Regularly wipe down metal surfaces with a thin layer of olive oil</li>
|
||||||
|
<li>Use beeswax polish on wooden furniture to create a protective barrier</li>
|
||||||
|
<li>Rinse outdoor areas monthly with fresh water to remove salt accumulation</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>Humidity Control</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Use dehumidifiers with reusable filters</li>
|
||||||
|
<li>Place moisture absorbers (baking soda or silica gel) in closets</li>
|
||||||
|
<li>Ensure proper ventilation in bathrooms and kitchens</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<fort-media query="Monterey coastline" limit="1"><div class="fort-media" data-fort="media" data-query="Monterey coastline"><img src="https://pixabay.com/get/g89be5e4434f1fc4ff5928390c31772f25e2c5a45d44e9f717a7901066a4f1b5d359b83e6719adbd40562b7baaa857d016b7397d87d456640c57e5d223511f652_1280.jpg" alt="rock formation, nature, beach, monterey, waves, cliff, coast, coastline, sea, ocean" loading="lazy" data-license="RF" data-source="pixabay"></div></fort-media>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<h2>Sustainable Practices</h2>
|
||||||
|
<p>Reducing waste and environmental impact in your cleaning routine.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Use reusable microfiber cloths instead of paper towels</li>
|
||||||
|
<li>Refill cleaning product containers instead of buying new ones</li>
|
||||||
|
<li>Compost organic waste from cleaning (citrus peels, coffee grounds)</li>
|
||||||
|
<li>Choose products with minimal, recyclable packaging</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="botanical-note">
|
||||||
|
<p>Remember: The most sustainable cleaning product is often the simplest one. Many of our grandmothers' cleaning methods were naturally eco-friendly!</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<h2>Learn from Others</h2>
|
||||||
|
<p>Connect with other sustainable living practitioners:</p>
|
||||||
|
<fort-citizen name="bevlyn_harris"><div class="fort-citizen" data-fort="citizen" data-citizen="bevlyn-harris"><a class="fc-name" href="https://bevlyn-harris.4ort.net" rel="noopener">bevlyn-harris</a><a class="fc-visit" href="https://bevlyn-harris.4ort.net" rel="noopener">visit bevlyn-harris.4ort.net →</a></div></fort-citizen>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<p>© 2026 Carmelina Rubio | Sustainable Housekeeping Specialist | Monterey, CA</p>
|
||||||
|
<p>Con amor para nuestra comunidad y nuestro planeta</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
94
sustainable-housekeeping.json
Normal file
94
sustainable-housekeeping.json
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
{
|
||||||
|
"nav": [
|
||||||
|
{
|
||||||
|
"current": "sustainable-housekeeping.html",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"rel": "films/against-the-salt/index.html",
|
||||||
|
"title": "Index",
|
||||||
|
"href": "/films/against-the-salt/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "sustainable-housekeeping.html",
|
||||||
|
"title": "Sustainable Housekeeping Field Guide",
|
||||||
|
"href": "/sustainable-housekeeping.html"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"kg": [
|
||||||
|
{
|
||||||
|
"query": "eco-friendly cleaning",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"label": "Eco-Friendly",
|
||||||
|
"id": "eco-friendly-0da462a9",
|
||||||
|
"url": "",
|
||||||
|
"description": "EP, released 2019-04-13"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Eco-Friendly",
|
||||||
|
"id": "eco-friendly-c4860fb6",
|
||||||
|
"url": "",
|
||||||
|
"description": "Single, released 2020-08-21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Cleaning Up",
|
||||||
|
"id": "cleaning-up-q5130570",
|
||||||
|
"url": "",
|
||||||
|
"description": "episode of The Wire (S1 E12)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Cleaning Up",
|
||||||
|
"id": "cleaning-up",
|
||||||
|
"url": "",
|
||||||
|
"description": "British television series from 2019"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Cleaning Up",
|
||||||
|
"id": "cleaning-up-q111384306-2",
|
||||||
|
"url": "",
|
||||||
|
"description": "2022 South Korean television series"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"media": [
|
||||||
|
{
|
||||||
|
"query": "eco-friendly cleaning products",
|
||||||
|
"type": "image",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"url": "https://images.pexels.com/photos/27937528/pexels-photo-27937528.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940",
|
||||||
|
"thumb": "https://images.pexels.com/photos/27937528/pexels-photo-27937528.jpeg?auto=compress&cs=tinysrgb&h=350",
|
||||||
|
"title": "Woman holding eco-friendly cleaning products with blue microfiber cloth indoors.",
|
||||||
|
"license": "RF",
|
||||||
|
"source": "pexels",
|
||||||
|
"page": "https://www.pexels.com/photo/ditch-the-harsh-chemicals-eco-friendly-floor-cleaning-made-easy-27937528/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query": "Monterey coastline",
|
||||||
|
"type": "image",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"url": "https://pixabay.com/get/g89be5e4434f1fc4ff5928390c31772f25e2c5a45d44e9f717a7901066a4f1b5d359b83e6719adbd40562b7baaa857d016b7397d87d456640c57e5d223511f652_1280.jpg",
|
||||||
|
"thumb": "https://pixabay.com/get/g266b4c41a5ca9a606467dd1689faae44f30b2a707680459c419e41fc0aed49f98580e7d8fc1674e3c3ce29155f2e4a08b163d85b61058ec19bd7c0061b191c97_640.jpg",
|
||||||
|
"title": "rock formation, nature, beach, monterey, waves, cliff, coast, coastline, sea, ocean",
|
||||||
|
"license": "RF",
|
||||||
|
"source": "pixabay",
|
||||||
|
"page": "https://pixabay.com/photos/rock-formation-beach-monterey-waves-5487595/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"citizen": [
|
||||||
|
{
|
||||||
|
"citizen": "bevlyn-harris",
|
||||||
|
"url": "https://bevlyn-harris.4ort.net",
|
||||||
|
"tagline": "bevlyn-harris",
|
||||||
|
"pages": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user