diff --git a/.gitattributes b/.gitattributes
index 518b349..e20a156 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -15,3 +15,4 @@
*.ico binary
*.webp binary
*.mp4 binary
+*.ttf binary
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index d4721dd..0e90127 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -23,4 +23,6 @@ jobs:
- name: Build release from source
run: python -B tools/build_release.py
- name: Check public site links and fictional demo parity
- run: python -B tools/check_site.py
\ No newline at end of file
+ run: python -B tools/check_site.py
+ - name: Exercise homepage evidence selection and fallback
+ run: node tools/test_evidence_board.cjs
diff --git a/docs/assets/evidence-board.js b/docs/assets/evidence-board.js
new file mode 100644
index 0000000..debc6a1
--- /dev/null
+++ b/docs/assets/evidence-board.js
@@ -0,0 +1,127 @@
+(function (root, factory) {
+ 'use strict';
+ const api = factory();
+ if (typeof module === 'object' && module.exports) module.exports = api;
+ if (root && root.document) {
+ const document = root.document;
+ if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', function () {
+ api.initEvidenceBoard(document);
+ }, { once: true });
+ } else {
+ api.initEvidenceBoard(document);
+ }
+ }
+}(typeof globalThis !== 'undefined' ? globalThis : this, function () {
+ 'use strict';
+
+ const records = Object.freeze({
+ award: Object.freeze({
+ id: 'award',
+ edge: 'e-grant',
+ nodes: Object.freeze(['cobalt', 'meridian']),
+ announcement: 'The award notice: Cobalt Foundation awarded a research grant to Meridian Institute.'
+ }),
+ agreement: Object.freeze({
+ id: 'agreement',
+ edge: 'e-approval',
+ nodes: Object.freeze(['cobalt', 'brief']),
+ announcement: 'The signed agreement: Cobalt Foundation holds approval rights over the funded policy brief.'
+ }),
+ revision: Object.freeze({
+ id: 'revision',
+ edge: 'e-leo-revisions',
+ nodes: Object.freeze(['leo', 'brief']),
+ announcement: 'The revision register: Leo Venn requested in-scope revisions to the funded policy brief.'
+ })
+ });
+ const edgeIds = ['e-grant', 'e-approval', 'e-leo-revisions', 'e-direction'];
+ const nodeIds = ['cobalt', 'meridian', 'leo', 'brief', 'astera'];
+ const controllers = new WeakMap();
+
+ function getRecord(id) {
+ return typeof id === 'string' && Object.prototype.hasOwnProperty.call(records, id)
+ ? records[id] : null;
+ }
+
+ function unique(scope, selector) {
+ const matches = scope.querySelectorAll(selector);
+ return matches.length === 1 ? matches[0] : null;
+ }
+
+ function initEvidenceBoard(document) {
+ if (!document || typeof document.querySelectorAll !== 'function') return null;
+ const board = unique(document, '#evidence-board');
+ if (!board) return null;
+ if (controllers.has(board)) return controllers.get(board);
+
+ // Resolve the whole contract before changing the readable HTML fallback.
+ const controls = unique(board, '[data-record-controls]');
+ const announcement = unique(board, '[data-record-announcement]');
+ if (!controls || !announcement) return null;
+ const entries = Object.keys(records).map(function (id) {
+ return {
+ record: records[id],
+ article: unique(board, '[data-record="' + id + '"]'),
+ button: unique(controls, '[data-select-record="' + id + '"]')
+ };
+ });
+ const edges = edgeIds.map(function (id) {
+ return { id: id, element: unique(board, '[data-edge="' + id + '"]') };
+ });
+ const nodes = nodeIds.map(function (id) {
+ return { id: id, element: unique(board, '[data-node="' + id + '"]') };
+ });
+ const validEntries = entries.every(function (entry) {
+ return entry.article && entry.button &&
+ entry.article.tagName.toLowerCase() === 'article' &&
+ entry.button.tagName.toLowerCase() === 'button' &&
+ entry.article.id === 'record-' + entry.record.id &&
+ entry.button.getAttribute('aria-controls') === entry.article.id;
+ });
+ if (!validEntries || !edges.every(function (edge) { return edge.element; }) ||
+ !nodes.every(function (node) { return node.element; }) ||
+ board.querySelectorAll('[data-record]').length !== entries.length ||
+ controls.querySelectorAll('[data-select-record]').length !== entries.length ||
+ announcement.getAttribute('role') !== 'status' ||
+ announcement.getAttribute('aria-live') !== 'polite' ||
+ entries.some(function (entry) { return entry.article.contains(announcement); })) return null;
+
+ let selectedId = null;
+ function select(id, fromUser) {
+ const record = getRecord(id);
+ if (!record) return false;
+ if (selectedId === id) return true;
+ entries.forEach(function (entry) {
+ const active = entry.record.id === id;
+ entry.article.hidden = !active;
+ entry.button.setAttribute('aria-pressed', String(active));
+ });
+ edges.forEach(function (edge) {
+ edge.element.classList.toggle('is-active', edge.id === record.edge);
+ });
+ nodes.forEach(function (node) {
+ node.element.classList.toggle('is-active', record.nodes.indexOf(node.id) !== -1);
+ });
+ selectedId = id;
+ if (fromUser) announcement.textContent = record.announcement;
+ return true;
+ }
+
+ entries.forEach(function (entry) {
+ // Native button activation supplies keyboard behavior and retains focus.
+ entry.button.addEventListener('click', function () { select(entry.record.id, true); });
+ });
+ select('award', false);
+ board.classList.add('is-enhanced');
+ controls.hidden = false;
+ const controller = Object.freeze({
+ select: function (id) { return select(id, false); },
+ get selectedId() { return selectedId; }
+ });
+ controllers.set(board, controller);
+ return controller;
+ }
+
+ return Object.freeze({ getRecord: getRecord, initEvidenceBoard: initEvidenceBoard });
+}));
diff --git a/docs/assets/fonts/BarlowCondensed-SemiBold.ttf b/docs/assets/fonts/BarlowCondensed-SemiBold.ttf
new file mode 100644
index 0000000..9df6657
Binary files /dev/null and b/docs/assets/fonts/BarlowCondensed-SemiBold.ttf differ
diff --git a/docs/assets/fonts/BebasNeue-Regular.ttf b/docs/assets/fonts/BebasNeue-Regular.ttf
new file mode 100644
index 0000000..c328c6e
Binary files /dev/null and b/docs/assets/fonts/BebasNeue-Regular.ttf differ
diff --git a/docs/assets/fonts/OFL-Barlow-Condensed.txt b/docs/assets/fonts/OFL-Barlow-Condensed.txt
new file mode 100644
index 0000000..11f2528
--- /dev/null
+++ b/docs/assets/fonts/OFL-Barlow-Condensed.txt
@@ -0,0 +1,93 @@
+Copyright 2017 The Barlow Project Authors (https://github.com/jpt/barlow)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/docs/assets/fonts/OFL-Bebas-Neue.txt b/docs/assets/fonts/OFL-Bebas-Neue.txt
new file mode 100644
index 0000000..2ca164f
--- /dev/null
+++ b/docs/assets/fonts/OFL-Bebas-Neue.txt
@@ -0,0 +1,93 @@
+Copyright © 2010 by Dharma Type.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/docs/assets/fonts/README.md b/docs/assets/fonts/README.md
new file mode 100644
index 0000000..67ee4fd
--- /dev/null
+++ b/docs/assets/fonts/README.md
@@ -0,0 +1,30 @@
+# Self-hosted fonts
+
+RED THREADS serves these fonts locally. They are original, unmodified TTF files from the official [Google Fonts repository](https://github.com/google/fonts/tree/5e35378e6bda803962ee6fd257e444a7d459660d), downloaded on 2026-09-08. No font service is contacted at runtime.
+
+| Font | Use | Version | Weight | Size | Source | License notice |
+| --- | --- | --- | --- | --- | --- | --- |
+| Bebas Neue Regular | Display lettering | 2.000 | 400 | 61,400 bytes | [Original TTF](https://github.com/google/fonts/blob/5e35378e6bda803962ee6fd257e444a7d459660d/ofl/bebasneue/BebasNeue-Regular.ttf) | [OFL-Bebas-Neue.txt](OFL-Bebas-Neue.txt) |
+| Barlow Condensed SemiBold | Headings | 1.408 | 600 | 109,428 bytes | [Original TTF](https://github.com/google/fonts/blob/5e35378e6bda803962ee6fd257e444a7d459660d/ofl/barlowcondensed/BarlowCondensed-SemiBold.ttf) | [OFL-Barlow-Condensed.txt](OFL-Barlow-Condensed.txt) |
+
+Both families use the SIL Open Font License 1.1. The full upstream copyright and license notices accompany the fonts with their wording preserved (line endings and trailing whitespace normalized), from [Bebas Neue's OFL.txt](https://github.com/google/fonts/blob/5e35378e6bda803962ee6fd257e444a7d459660d/ofl/bebasneue/OFL.txt) and [Barlow Condensed's OFL.txt](https://github.com/google/fonts/blob/5e35378e6bda803962ee6fd257e444a7d459660d/ofl/barlowcondensed/OFL.txt). Font metadata, names, glyphs, and embedded copyright notices are preserved. These font licenses remain separate from the surrounding project's license.
+
+The TTF files retain the upstream character coverage. No local font installation, external stylesheet, or conversion is required. For CSS in `docs/assets/site.css`, use:
+
+```css
+@font-face {
+ font-family: "Bebas Neue";
+ src: url("./fonts/BebasNeue-Regular.ttf") format("truetype");
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+}
+
+@font-face {
+ font-family: "Barlow Condensed";
+ src: url("./fonts/BarlowCondensed-SemiBold.ttf") format("truetype");
+ font-style: normal;
+ font-weight: 600;
+ font-display: swap;
+}
+```
diff --git a/docs/assets/site.css b/docs/assets/site.css
index 26e8afe..8d3186c 100644
--- a/docs/assets/site.css
+++ b/docs/assets/site.css
@@ -1,31 +1,20 @@
-/* RED THREADS: an editorial front door to an evidence-first investigation. */
-:root{color-scheme:dark;--ink:#171716;--ink-deep:#101110;--ink-soft:#20211f;--paper:#f2eddf;--paper-muted:#c2bbae;--line:#49473e;--red:#f26454;--red-deep:#9b2f28;--warm:#bba987;--serif:Georgia,'Times New Roman',serif;--sans:'Segoe UI',Arial,sans-serif;--mono:Consolas,'Courier New',monospace;--max:1400px;--gutter:clamp(22px,4.4vw,78px)}
-*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--ink);color:var(--paper);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
-a{color:inherit;text-underline-offset:5px;text-decoration-thickness:1px}a:hover{color:var(--red)}button,a,summary{-webkit-tap-highlight-color:transparent}button{font:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--red);outline-offset:6px}::selection{background:var(--red);color:var(--ink-deep)}img{display:block;max-width:100%;height:auto}button[hidden],[hidden]{display:none!important}
-.wrap{width:min(calc(100% - var(--gutter)*2),var(--max));margin-inline:auto}.skip-link{position:absolute;z-index:20;left:20px;top:12px;padding:10px 18px;background:var(--paper);color:var(--ink);transform:translateY(-160%)}.skip-link:focus{transform:none}
-.site-header{min-height:116px;display:flex;gap:35px;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{display:block;position:relative;padding-left:26px;font-family:var(--serif);font-size:22px;font-weight:bold;line-height:1.05;letter-spacing:.04em;text-decoration:none;flex-shrink:0}.wordmark-sub{display:block;font-family:var(--mono);font-size:8px;font-weight:normal;letter-spacing:.19em;margin-top:8px}.thread-mark{position:absolute;left:0;top:0;width:3px;height:43px;background:var(--red)}.thread-mark:before,.thread-mark:after{content:'';position:absolute;left:-3px;width:9px;height:9px;border:2px solid var(--red);background:var(--ink);border-radius:50%}.thread-mark:before{top:-2px}.thread-mark:after{bottom:-2px}
-.site-header nav{display:flex;gap:clamp(20px,2.6vw,40px);align-items:center;font-size:13px}.site-header nav a{text-decoration:none;padding-block:12px;white-space:nowrap}.site-header nav a[aria-current=page]{color:var(--red);text-decoration:underline;text-underline-offset:8px}.site-header nav a span{margin-left:4px;color:var(--red)}
-.hero{padding-top:66px;padding-bottom:68px;display:grid;grid-template-columns:minmax(0,.87fr) minmax(0,1.13fr);gap:clamp(30px,4vw,65px);align-items:center}.eyebrow,.section-label,.fine-print,.edition-line,.case-stamp,.record-locator,.fiction-label,.work-note,.atlas-caption>span{font-family:var(--mono)}.eyebrow{font-size:10px;letter-spacing:.11em;color:var(--paper-muted);margin:0 0 25px;text-wrap:balance}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);margin-right:9px;vertical-align:middle}
-h1,h2,h3,p,figure{margin-top:0}h1,h2{font-family:var(--serif);font-weight:normal;letter-spacing:-.055em;line-height:1.05}h1{font-size:clamp(49px,5.1vw,83px);margin-bottom:26px}h1 em,h2 em{font-weight:normal;color:var(--red)}h2{font-size:clamp(40px,4.1vw,64px);margin-bottom:24px}h3{font-family:var(--serif);font-size:25px;letter-spacing:-.025em;line-height:1.3;font-weight:normal;margin-bottom:10px}p{margin-bottom:21px}.hero-description{font-size:20px;line-height:1.5;margin-bottom:16px}.hero-detail{font-size:16px;color:var(--paper-muted);max-width:420px;line-height:1.7;margin-bottom:26px}
-.actions{display:flex;gap:22px;align-items:center;flex-wrap:wrap}.button{display:inline-flex;justify-content:space-between;align-items:center;gap:28px;padding:15px 22px;font-size:14px;font-weight:600;line-height:1.4;min-height:52px;text-decoration:none;border:1px solid transparent;transition:background .15s ease,color .15s ease}.button-red{background:var(--red);color:var(--ink-deep)}.button-red:hover{background:var(--paper);color:var(--ink-deep)}.button-red:focus-visible{outline-color:var(--paper)}.button span{font-size:22px;line-height:1}.text-link{display:inline-block;min-height:30px;font-size:13px;text-decoration:none;border-bottom:1px solid var(--line);padding-block:4px;line-height:1.6}.text-link span{color:var(--red);margin-left:10px}.fine-print{font-size:10px;color:var(--paper-muted);line-height:1.7;margin:15px 0 0;letter-spacing:.015em}
-.hero-art{margin:0}.hero-art img{width:100%;height:auto;aspect-ratio:1672/941;object-fit:contain;border:1px solid #34322a}.hero-art figcaption{display:flex;gap:16px;justify-content:space-between;border-top:1px solid var(--line);margin-top:20px;padding-top:12px;font-size:10px;color:var(--paper-muted);line-height:1.5}.hero-art figcaption span:first-child{color:var(--red);font-family:var(--mono);font-size:10px;letter-spacing:.09em;white-space:nowrap}
-.edition-line{display:flex;flex-wrap:wrap;justify-content:space-between;gap:14px 24px;padding:20px 0;border-block:1px solid var(--line);font-size:10px;letter-spacing:.09em;color:var(--paper-muted)}.section-space{padding-block:96px}.section-label{display:flex;gap:18px;font-size:10px;letter-spacing:.13em;margin-bottom:40px;color:var(--paper-muted);line-height:1.7}.section-label>span{color:var(--red);font-weight:600}.manifesto-body{display:grid;grid-template-columns:1fr 1fr;gap:clamp(35px,8vw,150px)}.prose{max-width:600px;font-size:17px;line-height:1.8;color:var(--paper-muted)}.prose p:last-child{margin-bottom:0}.prose .lead{font-size:23px;line-height:1.55;color:var(--paper)}.prose em{color:var(--paper)}
-.method-section{background:var(--paper);color:var(--ink);color-scheme:light}.method-section .section-label,.method-section .prose,.method-section .case-margin p{color:#5b564c}.method-section h2 em,.method-section .section-label>span{color:var(--red-deep)}.section-heading{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(40px,6vw,95px);align-items:start;margin-bottom:45px}.section-heading .prose{padding-top:7px;margin-bottom:0}.evidence-chain{display:grid;grid-template-columns:.45fr 1fr;gap:clamp(40px,6vw,95px);padding-top:16px}.case-margin{padding-top:28px}.case-stamp{display:inline-block;font-size:10px;letter-spacing:.12em;color:var(--red-deep);border:1px solid #b4a691;padding:6px 10px;margin-bottom:21px}.case-margin p{font-size:12px;line-height:1.7;margin-bottom:22px}.method-section .text-link{border-color:#b4a691}.method-section .text-link span{color:var(--red-deep)}
-.record-stack{position:relative;border-top:1px solid #b9ae9d}.record{border-bottom:1px solid #b9ae9d}.record summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:45px 1fr 24px;align-items:center;gap:17px;padding:24px 3px;min-height:99px}.record summary::-webkit-details-marker{display:none}.record-no{font-family:var(--mono);font-size:12px;color:var(--red-deep)}.record-title{font-family:var(--serif);font-size:28px;line-height:1.1;letter-spacing:-.03em}.record-title small{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:#62594d;margin-top:9px}.detail-sign{width:18px;height:18px;position:relative;color:var(--red-deep)}.detail-sign:before,.detail-sign:after{content:'';position:absolute;background:currentColor}.detail-sign:before{width:16px;height:1px;top:8px;left:1px}.detail-sign:after{width:1px;height:16px;left:8px;top:1px}.record[open] .detail-sign:after{display:none}.record summary:hover .record-title{color:var(--red-deep)}.record-body{padding:0 35px 26px 65px;font-size:15px;line-height:1.8;color:#524b42}.record-fact{font-family:var(--serif);font-size:23px;color:var(--ink);line-height:1.45}.record-fact strong{font-weight:normal;color:var(--red-deep)}.record-locator{font-size:9px;letter-spacing:.06em;margin-bottom:0}.method-conclusion{margin:52px 0 0 34.48%;font-size:18px;line-height:1.7;color:#645a4e}.method-conclusion strong{color:var(--ink);font-weight:500}
-.demo-brief{border:1px solid var(--line);display:grid;grid-template-columns:.78fr 1fr;margin-top:48px}.demo-question{background:var(--ink-deep);padding:40px clamp(26px,3.6vw,54px);display:flex;flex-direction:column;justify-content:center}.demo-question .eyebrow{color:var(--red);margin-bottom:24px}.demo-question>p{font-family:var(--serif);font-size:clamp(27px,2.4vw,38px);line-height:1.25;letter-spacing:-.035em}.fiction-label{font-size:9px;line-height:1.8;letter-spacing:.055em;color:var(--paper-muted);margin-top:12px;max-width:290px}.demo-probes{padding:8px 36px}.demo-probes article{display:grid;grid-template-columns:24px 1fr;gap:18px;padding:26px 0;border-bottom:1px solid var(--line)}.demo-probes article:last-child{border-bottom:0}.probe-no{font-family:var(--serif);font-size:20px;color:var(--red)}.demo-probes h3{font-size:22px;margin-bottom:9px}.demo-probes p{font-size:14px;color:var(--paper-muted);line-height:1.75;margin-bottom:0}.atlas-caption{display:grid;grid-template-columns:.6fr 1.2fr auto;align-items:center;gap:30px;padding:24px 0;border-bottom:1px solid var(--line)}.atlas-caption>span{color:var(--red);font-size:10px;letter-spacing:.07em}.atlas-caption p{font-size:13px;line-height:1.7;color:var(--paper-muted);margin-bottom:0}
-.work-section{background:var(--ink-deep);border-block:1px solid #34352f}.work-rows{border-top:1px solid var(--line)}.work-rows article{display:grid;grid-template-columns:.8fr 1.2fr .65fr;gap:36px;padding:30px 0;border-bottom:1px solid var(--line);align-items:start}.work-rows h3{font-size:25px;max-width:240px;margin-bottom:0}.work-rows p{font-size:14px;color:var(--paper-muted);line-height:1.8;margin:0;max-width:530px}.work-note{font-size:9px;line-height:1.7;color:var(--warm);letter-spacing:.045em;max-width:190px;padding-top:6px}.custody-note{display:grid;grid-template-columns:.65fr 1.15fr auto;gap:40px;align-items:start;padding-top:38px}.custody-note .eyebrow{color:var(--red);padding-top:5px}.custody-note>p:not(.eyebrow){font-size:14px;line-height:1.8;color:var(--paper-muted);margin-bottom:0}.custody-note .text-link{margin-top:1px;max-width:200px}code{font-family:var(--mono);font-size:.92em;color:var(--paper)}
-.start-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:clamp(45px,8vw,140px)}.start-grid>.prose{max-width:550px}.start-note{border-top:3px solid var(--red);padding-top:24px}.start-note .eyebrow{color:var(--red)}.start-note p:not(.eyebrow){color:var(--paper-muted);font-size:14px;line-height:1.8}.reading-room{border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:clamp(45px,8vw,140px);padding-block:64px 86px}.reading-room h2{font-size:clamp(36px,3.3vw,52px)}.doc-links{border-top:1px solid var(--line)}.doc-links>a{display:flex;justify-content:space-between;align-items:center;gap:25px;padding:17px 0;border-bottom:1px solid var(--line);font-size:17px;text-decoration:none}.doc-links>a>span:last-child{color:var(--red)}.doc-links small{display:block;font-size:12px;color:var(--paper-muted);font-weight:normal;margin-top:2px}.site-footer{border-top:1px solid var(--line);display:grid;grid-template-columns:1.35fr 1fr .7fr;gap:50px;padding-block:38px 42px;font-size:12px;line-height:1.7}.footer-brand{font-family:var(--serif);font-size:20px;letter-spacing:.04em;text-decoration:none}.site-footer p{font-size:11px;color:var(--paper-muted);margin-block:7px 0}.site-footer nav{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.site-footer nav a{text-decoration:none}.site-footer .footer-end{font-family:var(--serif);font-size:18px;line-height:1.4;color:var(--paper);margin-top:0}.footer-end em{color:var(--red)}
-/* Task guide. */
-.guide-hero{max-width:890px;padding-block:76px 52px;margin-left:0}.guide-hero h1{font-size:clamp(53px,6vw,84px)}.guide-hero .prose{font-size:20px;max-width:680px}.guide-jump{display:flex;flex-wrap:wrap;gap:12px 26px;border-block:1px solid var(--line);padding-block:17px;margin-bottom:64px;font-family:var(--mono);font-size:11px}.guide-jump a{text-decoration:none;padding-block:5px}.guide-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:clamp(45px,7vw,115px);padding-bottom:80px}.guide-body{min-width:0}.guide-step{border-bottom:1px solid var(--line);padding-bottom:50px;margin-bottom:50px;scroll-margin-top:30px}.guide-step:last-child{margin-bottom:0}.guide-step .section-label{margin-bottom:18px}.guide-step h2{font-size:clamp(33px,3.2vw,45px);letter-spacing:-.04em}.guide-step>p,.guide-step>div>p{max-width:750px;color:var(--paper-muted);font-size:16px;line-height:1.8}.guide-step strong{color:var(--paper);font-weight:600}.guide-step a:not(.button){text-decoration-color:var(--red)}.guide-step .button{margin-bottom:20px}.guide-note{border-left:2px solid var(--red);padding:3px 0 3px 19px;margin-block:24px}.guide-step .guide-note{font-size:14px;color:var(--paper)}.guide-aside{padding-top:4px}.guide-aside section{border-top:1px solid var(--line);padding-top:22px;margin-bottom:30px}.guide-aside h2{font-size:26px;letter-spacing:-.03em}.guide-aside p{font-size:13px;color:var(--paper-muted);line-height:1.8}.guide-aside .text-link{font-size:12px}.code-block{border:1px solid var(--line);background:var(--ink-deep);margin:25px 0}.code-label{display:flex;justify-content:space-between;align-items:center;gap:15px;min-height:44px;border-bottom:1px solid var(--line);padding:7px 15px;color:var(--paper-muted);font-family:var(--mono);font-size:10px}.copy-button{border:1px solid var(--line);background:transparent;color:var(--paper);padding:7px 13px;cursor:pointer;font-family:var(--mono);font-size:10px;min-height:34px;flex-shrink:0}.copy-button:hover{background:var(--paper);color:var(--ink-deep)}.code-block pre{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9;padding:21px;margin:0;font-size:13px}.copy-status{font-family:var(--mono);font-size:11px!important;min-height:1.7em;margin:0;color:var(--warm)!important;line-height:1.7!important}.prompt-text{padding:23px;margin:0;font-family:var(--serif);font-size:21px;line-height:1.65;color:var(--paper)}.tour-stops{counter-reset:tour}.tour-stop{padding:22px 0 3px 43px;position:relative;counter-increment:tour;border-top:1px solid var(--line)}.tour-stop:before{content:counter(tour,decimal-leading-zero);position:absolute;left:0;top:25px;font-family:var(--mono);font-size:11px;color:var(--red)}.tour-stop h3{font-size:24px}.tour-stop p{font-size:15px;color:var(--paper-muted);line-height:1.8}.guide-close{padding-block:0 60px;max-width:750px}.guide-close h2{font-size:38px}.guide-close p{color:var(--paper-muted)}
-@media(min-width:1600px){.hero{gap:80px}.hero-art{margin-right:-12px}}
-@media(max-width:1100px){.site-header{gap:20px}.site-header nav{gap:19px;font-size:12px}.hero{grid-template-columns:.9fr 1.1fr;gap:32px}.hero .actions{gap:16px}.hero .text-link{font-size:12px}.hero h1{font-size:clamp(45px,5.3vw,63px)}.hero-description{font-size:18px}.hero-art figcaption{display:block}.hero-art figcaption span{display:block;margin-top:5px}.work-rows article{grid-template-columns:.9fr 1.3fr;gap:28px}.work-note{grid-column:2;padding-top:0;margin-top:-15px}.custody-note{grid-template-columns:.75fr 1.4fr;gap:24px}.custody-note .text-link{grid-column:2;max-width:none;justify-self:start}.atlas-caption{grid-template-columns:1fr 2fr}.atlas-caption .text-link{grid-column:2;justify-self:start;margin-top:-12px}.guide-layout{grid-template-columns:minmax(0,1fr) 230px;gap:45px}.site-footer{grid-template-columns:1.2fr 1fr;gap:35px}.footer-end{grid-column:1 / -1}}
-@media(max-width:800px){.site-header{min-height:120px;align-items:flex-start;flex-direction:column;justify-content:center;gap:12px;padding-block:22px}.site-header nav{width:100%;justify-content:space-between;gap:16px;font-size:12px}.site-header nav a{padding-block:7px}.wordmark{font-size:20px}.wordmark-sub{font-size:7px}.thread-mark{height:37px}.hero{grid-template-columns:1fr;padding-top:45px;padding-bottom:37px;gap:37px}.hero h1{font-size:clamp(53px,9.5vw,76px);line-height:1.02;max-width:700px}.wide-break{display:none}.hero-copy{max-width:620px}.hero-description{font-size:21px}.hero-detail{max-width:520px}.hero-art figcaption{display:flex}.hero-art figcaption span{margin-top:0}.eyebrow{font-size:10px}.edition-line{justify-content:flex-start;column-gap:26px;row-gap:9px;font-size:9px}.edition-line span{flex-basis:calc(50% - 13px)}.section-space{padding-block:64px}.section-label{margin-bottom:29px}.manifesto-body{grid-template-columns:1fr;gap:16px}.manifesto-body h2 br{display:none}.prose{max-width:none}.section-heading{grid-template-columns:1fr;gap:7px;margin-bottom:32px}.section-heading h2{margin-bottom:10px}.section-heading .prose{max-width:600px}.evidence-chain{grid-template-columns:1fr;gap:20px}.case-margin{display:flex;flex-wrap:wrap;gap:10px 25px;align-items:center;padding-top:0}.case-margin p{margin-bottom:0;font-size:11px}.case-margin .case-stamp{margin-bottom:0}.case-margin .text-link{display:block;margin-left:auto}.method-conclusion{margin:35px 0 0 65px;font-size:17px}.demo-brief{grid-template-columns:1fr;margin-top:30px}.demo-question{padding:28px 32px}.demo-question>p{max-width:590px;font-size:33px}.fiction-label{max-width:none;margin-top:0}.demo-probes{padding:2px 30px}.atlas-caption{gap:15px 25px}.work-rows article{grid-template-columns:1fr;gap:12px}.work-rows h3{max-width:none}.work-rows p{max-width:620px}.work-note{grid-column:auto;max-width:none;margin-top:0}.custody-note{grid-template-columns:1fr;gap:12px}.custody-note .eyebrow{margin-bottom:0}.custody-note .text-link{grid-column:auto;margin-top:0}.start-grid{grid-template-columns:1fr;gap:40px}.start-note{max-width:620px}.start-note p:not(.eyebrow){font-size:15px}.reading-room{grid-template-columns:1fr;gap:15px;padding-block:49px 56px}.reading-room h2{font-size:43px}.reading-room h2 br{display:none}.reading-room .section-label{margin-bottom:25px}.doc-links small{font-size:12px}.guide-hero{padding-block:52px 33px}.guide-jump{margin-bottom:38px}.guide-layout{grid-template-columns:1fr;gap:40px;padding-bottom:42px}.guide-aside{display:grid;grid-template-columns:1fr 1fr;gap:30px}.guide-aside section{margin-bottom:0}.guide-aside section:last-child{grid-column:1/-1}.guide-step{padding-bottom:37px;margin-bottom:37px}}
-@media(max-width:480px){.site-header nav{flex-wrap:wrap;justify-content:flex-start;gap:4px 22px}.site-header nav .nav-source{margin-left:auto}.hero h1{font-size:52px}.hero-description{font-size:19px}.hero .actions{gap:15px 20px}.hero-art figcaption{gap:12px;font-size:9px}.hero-art figcaption span:first-child{font-size:9px}.fine-print{font-size:9px}.hero .eyebrow{font-size:8px;letter-spacing:.065em}.section-label{font-size:9px;gap:12px}h2{font-size:40px}.prose{font-size:16px}.prose .lead{font-size:22px}.record summary{grid-template-columns:27px 1fr 20px;gap:12px;padding-block:23px}.record-title{font-size:25px}.record-body{padding:0 8px 23px 40px;font-size:14px}.record-fact{font-size:21px}.record-title small{font-size:9px}.record-locator{font-size:8px}.method-conclusion{margin-left:40px;font-size:15px}.case-margin .text-link{margin-left:0}.demo-question{padding:26px}.demo-question>p{font-size:30px}.demo-probes{padding-inline:23px}.demo-probes article{grid-template-columns:18px 1fr;gap:12px}.demo-probes h3{font-size:23px}.atlas-caption{grid-template-columns:1fr}.atlas-caption .text-link{grid-column:auto;margin-top:0}.site-footer{grid-template-columns:1fr;gap:28px}.site-footer .footer-end{grid-column:auto}.guide-hero h1{font-size:52px}.guide-hero .prose{font-size:18px}.guide-aside{grid-template-columns:1fr;gap:30px}.guide-aside section:last-child{grid-column:auto}.code-block pre{padding:16px;font-size:12px}.code-label{font-size:9px}.tour-stop{padding-left:34px}.prompt-text{font-size:20px;padding:19px}}
+/* RED THREADS: an open investigation file. No external assets or dependencies. */
+@font-face{font-family:'Bebas Neue';src:url('./fonts/BebasNeue-Regular.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
+@font-face{font-family:'Barlow Condensed';src:url('./fonts/BarlowCondensed-SemiBold.ttf') format('truetype');font-style:normal;font-weight:600;font-display:swap}
+:root{color-scheme:dark;--ink:#151716;--deep:#0e100f;--panel:#1c201e;--paper:#eee9dc;--muted:#b7bcb5;--line:#454b45;--red:#ff6257;--red-dark:#ad3028;--paper-line:#b6ad98;--sans:'Segoe UI',Arial,sans-serif;--display:'Bebas Neue',Impact,'Arial Narrow',sans-serif;--heading:'Barlow Condensed','Arial Narrow',Arial,sans-serif;--mono:Consolas,'Liberation Mono',monospace;--gutter:clamp(18px,4vw,64px);--max:1440px}
+*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--ink);color:var(--paper);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-underline-offset:4px;text-decoration-thickness:1px}a:hover{color:var(--red)}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid var(--red);outline-offset:5px}::selection{background:var(--red);color:var(--deep)}[hidden]{display:none!important}img{display:block;max-width:100%;height:auto}h1,h2,h3,p,figure{margin:0 0 1em}h1,h2,h3{font-family:var(--heading);font-weight:600;line-height:1.03;letter-spacing:-.015em}h2{font-size:clamp(36px,4.2vw,64px)}h3{font-size:30px}h1 em,h2 em{font-style:normal;color:var(--red)}p{max-width:68ch}code,pre{font-family:var(--mono)}code{overflow-wrap:anywhere}.wrap{width:min(calc(100% - var(--gutter)*2),var(--max));margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;z-index:20;top:12px;left:18px;transform:translateY(-180%);padding:12px 20px;background:var(--paper);color:var(--ink)}.skip-link:focus{transform:none}
+.site-header{min-height:86px;display:flex;align-items:center;justify-content:space-between;gap:28px;border-bottom:1px solid var(--line)}.wordmark{display:block;position:relative;padding-left:20px;font-family:var(--heading);font-weight:600;font-size:24px;line-height:1;letter-spacing:.035em;text-decoration:none;flex-shrink:0}.wordmark-sub{display:block;font:9px var(--mono);letter-spacing:.075em;margin-top:7px}.thread-mark{position:absolute;left:0;top:0;height:100%;width:4px;background:var(--red)}.site-header nav{display:flex;gap:clamp(16px,2.4vw,36px);flex-wrap:wrap;font:12px var(--mono)}.site-header nav a{display:flex;align-items:center;gap:8px;min-height:44px;text-decoration:none}.site-header nav a[aria-current=page]{box-shadow:inset 0 -2px var(--red)}.site-header nav a span{color:var(--red)}
+.eyebrow,.issue-line,.product-subtitle,.download-note,.board-toolbar,.plot-heading,.map-legend,.plot-note,.inspector-heading,.record-index,.source-locator,.next-question>span,.lead-number,.cover-label,.case-cover figcaption,.requirements,.section-label,.fine-print{font-family:var(--mono);font-size:11px;line-height:1.6;letter-spacing:.04em}.eyebrow{color:var(--red);margin-bottom:14px}.issue-line{display:flex;justify-content:space-between;gap:18px;padding-block:21px;color:var(--muted)}.issue-line span:last-child{flex-shrink:0}.masthead{font-family:var(--display);font-size:clamp(60px,22.5vw,365px);font-weight:400;line-height:.83;letter-spacing:-.018em;word-spacing:.025em;overflow-wrap:anywhere;margin:8px 0 24px}.masthead span{color:var(--red)}.opening-deck{border-top:4px solid var(--paper);padding:24px 0 34px;display:grid;grid-template-columns:1.1fr 1fr;gap:50px}.product-subtitle{letter-spacing:.25em;color:var(--muted);margin-bottom:15px}.opening-deck h2{font-size:clamp(34px,3.5vw,54px);margin:0}.opening-copy{align-self:end}.opening-copy>p{font-size:16px;color:var(--muted);margin-bottom:15px;max-width:570px}.opening-copy>p:first-child{color:var(--paper);font-size:18px;font-weight:600;margin-bottom:5px}.button{display:inline-flex;justify-content:space-between;align-items:center;min-height:50px;padding:13px 21px;gap:35px;border:1px solid transparent;text-decoration:none;font-family:var(--mono);font-size:12px;line-height:1.5;font-weight:bold;transition:background .15s,color .15s}.button-red{background:var(--red);color:var(--deep)}.button-red:hover{background:var(--paper);color:var(--deep)}.button-red:focus-visible{outline-color:var(--paper)}.button>span{font-size:22px;font-weight:normal}.download-note{display:block;color:var(--muted);margin-top:9px;font-size:10px}.text-link{display:inline-block;min-height:40px;padding-block:8px;font-family:var(--mono);font-size:12px}.text-link span{margin-left:8px;color:var(--red)}
+.case-section{padding-top:35px}.case-heading{display:flex;justify-content:space-between;align-items:end;gap:50px;margin-bottom:24px}.case-heading .eyebrow{margin-bottom:8px}.case-heading h2{font-size:clamp(35px,3.9vw,56px);margin:0}.case-heading h2 span{color:var(--muted)}.fiction-note{border-left:2px solid var(--red);padding-left:16px;max-width:280px;color:var(--muted);font-size:12px;margin:0 0 4px}.fiction-note strong{display:block;font-weight:600;color:var(--paper);margin-bottom:4px}.evidence-board{border:1px solid var(--line);background:var(--deep)}.board-toolbar{display:flex;justify-content:space-between;gap:15px;padding:13px 21px;border-bottom:1px solid var(--line);color:var(--muted)}.board-title{color:var(--paper)}.board-layout{display:grid;grid-template-columns:minmax(0,1fr) 370px}.network-panel{display:flex;flex-direction:column;min-width:0;padding:20px 16px 16px;background-image:radial-gradient(#41463d 1px,transparent 1px);background-size:24px 24px}.plot-heading{display:flex;justify-content:space-between;gap:20px;font-size:9px;color:var(--muted);padding:0 7px}.plot-heading span:last-child{max-width:190px;text-align:right}.evidence-map{display:block;width:100%;height:auto;margin:auto 0;overflow:visible}.map-edge>path{fill:none;stroke:#9ea69a;stroke-width:2;marker-end:url(#arrow-context)}.map-edge>text{fill:#bdc5b9;font:11px var(--mono);text-anchor:middle;paint-order:stroke;stroke:var(--deep);stroke-width:6px;stroke-linejoin:round}.map-edge>text.edge-caveat{font-size:9px}.map-node>rect{fill:#191e1a;stroke:#8c968a;stroke-width:1}.node-category{fill:#bbc3b5;font:10px var(--mono);letter-spacing:.07em}.node-name{fill:var(--paper);font:600 20px var(--heading)}.disputed-edge>path{stroke:#9ca794;stroke-dasharray:6 7;stroke-width:1.5}.disputed-node>rect{stroke-dasharray:5 4}.is-enhanced .map-edge.is-active>path{stroke:var(--red);stroke-width:3}.is-enhanced .map-edge.is-active>text{fill:var(--red);font-weight:bold}.is-enhanced .map-node.is-active>rect{stroke:var(--red);stroke-width:2}.is-enhanced .map-node.is-active .node-category{fill:var(--red)}.map-legend{display:flex;justify-content:center;gap:22px;flex-wrap:wrap;color:var(--muted);font-size:9px;margin:14px 0 8px}.map-legend span{display:flex;align-items:center;gap:8px}.legend-line{width:21px;border-top:2px solid #9ea69a;display:inline-block}.legend-line.dashed{border-top-style:dashed}.plot-note{text-align:center;margin:0 auto;color:var(--muted);font-size:9px;letter-spacing:0}
+.record-inspector{color-scheme:light;background:var(--paper);color:var(--ink);border-left:1px solid var(--line);min-width:0}.inspector-heading{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:#ddd6c5;border-bottom:1px solid var(--paper-line);font-size:10px}.inspector-heading>span:last-child{font-size:23px;line-height:1}.record-controls{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--paper-line);background:#e0d9c8}.record-controls button{border:0;border-right:1px solid var(--paper-line);background:transparent;color:var(--ink);padding:13px 8px 11px;text-align:left;font-size:11px;line-height:1.45;cursor:pointer;min-height:64px;position:relative}.record-controls button:last-child{border-right:0}.record-controls button>span{display:block;font:10px var(--mono);margin-bottom:3px}.record-controls button[aria-pressed=true]{background:var(--paper);font-weight:bold;box-shadow:inset 0 -4px var(--red-dark)}.record-controls button[aria-pressed=true]>span{color:var(--red-dark)}.record-controls button:hover{background:#f9f5e9}.record-controls button:focus-visible{outline:3px solid var(--red-dark);outline-offset:-4px}.record-content{padding:24px 23px 10px}.evidence-record{margin:0}.evidence-record+.evidence-record{border-top:3px solid var(--red-dark);padding-top:25px;margin-top:26px}.evidence-record[hidden]+.evidence-record{border:0;padding-top:0;margin-top:0}.record-index{color:#625947;font-size:9px;margin-bottom:13px}.evidence-record h3{font-size:36px;line-height:1.02;margin-bottom:20px}.evidence-record>p{font-size:13px;line-height:1.65}.record-route{display:flex;flex-direction:column;border-block:1px solid var(--paper-line);padding-block:13px;gap:4px}.record-route>span{font-size:12px}.record-route>strong{font-family:var(--heading);color:var(--red-dark);font-size:24px;line-height:1.15;font-weight:600}.evidence-record .source-locator{font-size:10px;color:#615847;margin-block:20px}.source-locator strong{display:block;color:var(--ink);font-size:9px;margin-bottom:5px}.next-question{padding-top:13px;border-top:1px solid var(--paper-line);font-weight:600}.next-question>span{display:block;color:var(--red-dark);font-size:9px;margin-bottom:5px}.board-footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:25px;padding:17px 22px;font-size:13px}.board-footer p{margin:0;color:var(--muted)}.board-footer strong{color:var(--paper)}.board-footer a{display:flex;align-items:center;gap:20px;min-height:38px;color:var(--red);font:12px var(--mono);flex-shrink:0}.board-footer a:hover{color:var(--paper)}
+.atlas-invitation{display:grid;grid-template-columns:1fr 1.3fr;gap:70px;padding-block:60px}.atlas-invitation h2{font-size:clamp(36px,3.6vw,54px);margin-bottom:22px}.case-leads>a{display:grid;grid-template-columns:112px 1fr 20px;gap:18px;padding:22px 0;border-top:1px solid var(--line);text-decoration:none;color:var(--muted);font-size:13px;line-height:1.65}.case-leads>a:last-child{border-bottom:1px solid var(--line)}.case-leads strong{display:block;font:600 26px/1.15 var(--heading);color:var(--paper);margin-bottom:7px}.case-leads>a:hover strong,.case-leads>a:hover>span:last-child{color:var(--red)}.lead-number{color:var(--red);font-size:9px;padding-top:5px}.case-leads>a>span:last-child{font-size:21px;color:var(--paper)}.case-cover{margin-block:0 65px;background:var(--deep);border:1px solid var(--line)}.cover-label{display:flex;justify-content:space-between;gap:25px;padding:13px 18px;color:var(--muted);font-size:10px;border-bottom:1px solid var(--line)}.cover-label span:last-child{color:var(--red)}.case-cover img{width:100%}.case-cover figcaption{padding:12px 18px;color:var(--muted);margin:0;border-top:1px solid var(--line);font-size:10px}.get-section{display:grid;grid-template-columns:1fr 1fr;gap:90px;padding-bottom:65px}.get-intro h2{font-family:var(--display);font-weight:400;font-size:clamp(56px,6.2vw,94px);line-height:.98}.get-intro h2 span{color:var(--red)}.get-intro>p:not(.eyebrow){color:var(--muted);max-width:410px;margin-bottom:28px}.kit-contents{border-top:3px solid var(--paper);padding-top:19px}.kit-contents dl{margin:0}.kit-contents dl>div{display:grid;grid-template-columns:150px 1fr;gap:23px;padding-block:17px;border-bottom:1px solid var(--line)}.kit-contents dt{font-family:var(--heading);font-size:23px;line-height:1.12;font-weight:600}.kit-contents dd{font-size:13px;color:var(--muted);margin:0}.requirements{color:var(--muted);font-size:10px;margin:22px 0 12px;line-height:1.8}.reading-room{display:grid;grid-template-columns:1fr 1fr;gap:90px;border-block:1px solid var(--line);padding-block:40px;margin-bottom:0}.reading-room h2{font-size:44px}.doc-links a{display:flex;justify-content:space-between;gap:25px;padding:15px 0;text-decoration:none;border-bottom:1px solid var(--line);font-family:var(--heading);font-size:24px;line-height:1.2}.doc-links a:first-child{padding-top:0}.doc-links a:last-child{border-bottom:0;padding-bottom:0}.doc-links small{display:block;color:var(--muted);font:11px/1.6 var(--sans);margin-top:5px}.doc-links a>span:last-child{color:var(--red)}.site-footer{display:grid;grid-template-columns:1fr 1fr auto;gap:35px;padding-block:35px 45px}.footer-brand{font:400 36px/1 var(--display);text-decoration:none}.site-footer p{font:10px/1.7 var(--mono);color:var(--muted);margin:12px 0 0}.site-footer nav{display:grid;grid-template-columns:1fr 1fr;gap:8px 25px;font:11px/1.5 var(--mono);align-content:start}.site-footer nav a{min-height:32px}.site-footer .footer-end{font:600 23px/1.2 var(--heading);color:var(--paper);margin:0}
+/* Field manual: the same instrument, with the reading column given priority. */
+.guide-hero{padding-block:45px 32px;border-bottom:4px solid var(--paper)}.guide-hero h1{font-family:var(--display);font-weight:400;font-size:clamp(54px,7vw,106px);line-height:.96;margin-bottom:22px}.guide-hero .prose{font-size:19px;color:var(--muted);max-width:650px;margin:0}.guide-jump{display:flex;flex-wrap:wrap;gap:14px 30px;padding-block:19px;border-bottom:1px solid var(--line);margin-bottom:45px;font:11px/1.6 var(--mono)}.guide-jump a{display:flex;align-items:center;min-height:36px;text-decoration:none}.guide-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:75px;padding-bottom:25px}.guide-body{min-width:0;max-width:850px}.guide-step{border-bottom:1px solid var(--line);padding-bottom:38px;margin-bottom:40px;scroll-margin-top:24px}.section-label{color:var(--red);display:flex;gap:16px;margin-bottom:16px}.section-label>span{font-weight:bold}.guide-step h2{font-size:48px;margin-bottom:22px}.guide-step>p{font-size:16px;line-height:1.85;color:var(--muted);max-width:none}.guide-step strong{color:var(--paper);font-weight:600}.guide-step>p a{color:var(--paper)}.guide-step>p a:hover{color:var(--red)}.guide-step .button{margin-bottom:24px}.guide-note{border-left:3px solid var(--red);padding:13px 19px;background:var(--panel);font-size:14px!important}.guide-aside section{padding-top:17px;border-top:1px solid var(--line);margin-bottom:32px}.guide-aside h2{font-size:30px;line-height:1.1;margin-bottom:15px}.guide-aside p{font-size:13px;line-height:1.75;color:var(--muted)}.guide-aside .eyebrow{font-size:9px;color:var(--red)}.guide-aside .text-link{font-size:10px}.code-block{border:1px solid var(--line);background:var(--deep);margin:24px 0 8px}.code-label{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:7px 15px;min-height:48px;border-bottom:1px solid var(--line);color:var(--muted);font:10px var(--mono)}.copy-button{border:1px solid #737a70;background:transparent;color:var(--paper);padding:8px 13px;cursor:pointer;font:11px var(--mono);min-height:38px;flex-shrink:0}.copy-button:hover{background:var(--paper);color:var(--ink)}.copy-button:disabled{opacity:.65;cursor:wait}.code-block pre{margin:0;padding:22px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.8}.copy-status{font:11px/1.7 var(--mono)!important;color:var(--muted)!important;min-height:1.7em;margin:0 0 15px}.prompt-text{padding:24px;margin:0;color:var(--paper);font-size:18px;line-height:1.65}.tour-stops{counter-reset:tour;margin-top:30px}.tour-stop{counter-increment:tour;position:relative;padding:22px 0 10px 40px;border-top:1px solid var(--line)}.tour-stop:before{content:counter(tour,decimal-leading-zero);position:absolute;left:0;top:25px;font:11px var(--mono);color:var(--red)}.tour-stop h3{font-size:30px;margin-bottom:12px}.tour-stop p{font-size:15px;line-height:1.8;color:var(--muted)}.guide-close{padding-bottom:45px;max-width:760px}.guide-close h2{font-size:52px;margin-bottom:24px}.guide-close>p{color:var(--muted)}.mobile-context{display:none}
+@media(min-width:1001px){.guide-jump{position:sticky;top:0;z-index:5;background:var(--ink);margin-top:0}.guide-step{scroll-margin-top:92px}}
+@media(max-width:1200px){.board-layout{grid-template-columns:minmax(0,1fr) 345px}.record-content{padding:22px 20px 10px}.network-panel{padding-inline:10px}.plot-heading{display:block}.plot-heading span{display:block}.plot-heading span:last-child{text-align:left;max-width:none;margin-top:5px}.atlas-invitation{gap:45px}.case-leads>a{grid-template-columns:1fr 20px;gap:6px 15px}.case-leads .lead-number{grid-column:1/-1}.get-section,.reading-room{gap:55px}.kit-contents dl>div{grid-template-columns:120px 1fr;gap:20px}.guide-layout{gap:45px}.site-footer{grid-template-columns:1fr 1fr}.site-footer .footer-end{grid-column:1/-1}}
+@media(max-width:1000px){.board-layout{grid-template-columns:1fr}.network-panel{padding:22px;min-height:0}.evidence-map{max-width:820px;margin:12px auto}.plot-heading{display:flex}.plot-heading span:last-child{margin:0;text-align:right}.record-inspector{border-left:0;border-top:1px solid var(--line)}.record-controls button{padding:12px 18px;min-height:65px;font-size:13px}.record-controls button>span{display:inline-block;margin:0 10px 0 0}.record-content{padding:28px;min-height:0}.evidence-record{display:grid;grid-template-columns:1fr 1fr;gap:0 35px}.record-index,.evidence-record h3,.record-route{grid-column:1}.evidence-record .record-route{margin-bottom:0}.evidence-record>p:nth-of-type(3){grid-column:2;grid-row:1/3;align-self:end}.evidence-record>p:nth-of-type(4){grid-column:2;grid-row:3}.evidence-record .source-locator{grid-column:1;margin:20px 0 0}.evidence-record .next-question{grid-column:2;grid-row:4;align-self:end;margin-bottom:0}.evidence-record h3{font-size:40px}.board-footer{flex-wrap:wrap;gap:8px}.opening-deck{gap:30px}.atlas-invitation{grid-template-columns:1fr 1.2fr;gap:40px}.kit-contents dl>div{grid-template-columns:1fr;gap:8px}.guide-layout{grid-template-columns:minmax(0,1fr) 220px;gap:35px}}
+@media(max-width:720px){.site-header{align-items:flex-start;flex-direction:column;gap:12px;padding-block:22px}.site-header nav{width:100%;justify-content:space-between;gap:8px 16px;font-size:11px}.site-header nav a{min-height:35px}.issue-line{font-size:8px;letter-spacing:0;padding-block:18px}.issue-line span:first-child{max-width:210px}.masthead{margin-top:8px;margin-bottom:18px}.opening-deck{grid-template-columns:1fr;gap:23px;padding-top:20px}.opening-deck h2{font-size:42px}.product-subtitle{font-size:9px;letter-spacing:.18em}.opening-copy>p{font-size:15px}.opening-copy>p:first-child{font-size:16px}.case-section{padding-top:18px}.case-heading{display:block;margin-bottom:20px}.case-heading h2{font-size:42px}.fiction-note{margin-top:20px;max-width:420px;font-size:11px}.board-toolbar{font-size:9px;padding:12px 15px;flex-wrap:wrap;gap:4px 20px}.board-layout{display:flex;flex-direction:column}.network-panel{order:2;border-top:1px solid var(--line);padding:16px}.record-inspector{border-top:0}.plot-heading{display:block;font-size:9px}.plot-heading span:last-child{display:none}.evidence-map{display:none}.map-legend{justify-content:flex-start;margin-top:18px}.plot-note{text-align:left;margin-left:0}.network-panel .mobile-context{display:block;font:12px/1.8 var(--mono);color:var(--muted);border-left:2px dashed #9ca794;padding-left:12px}.mobile-context strong{display:block;color:var(--paper);margin-bottom:5px}.network-panel .plot-heading,.network-panel .map-legend,.network-panel .plot-note{display:none}.record-inspector .record-content{padding:24px 20px}.evidence-record{display:block}.evidence-record h3{font-size:38px}.evidence-record>p{font-size:14px}.evidence-record .record-route{margin-bottom:18px;border-left:3px solid var(--red-dark);padding-left:13px}.evidence-record .source-locator{font-size:10px;margin:20px 0}.evidence-record .next-question{margin-bottom:8px}.record-controls button{font-size:11px;padding:12px 9px}.record-controls button>span{display:block;margin-bottom:3px}.board-footer{padding:16px;font-size:12px;gap:8px}.board-footer a{font-size:11px}.atlas-invitation,.get-section,.reading-room{grid-template-columns:1fr;gap:28px;padding-block:40px}.atlas-invitation h2{font-size:42px;margin-bottom:12px}.case-leads>a{padding-block:18px}.case-cover{margin-bottom:0}.cover-label{font-size:8px;padding:11px 13px}.case-cover figcaption{font-size:9px;padding:11px 13px}.get-intro h2{font-size:68px}.kit-contents dl>div{grid-template-columns:140px 1fr}.reading-room h2{font-size:42px;margin-bottom:0}.site-footer{gap:30px;padding-block:30px}.site-footer nav{grid-template-columns:1fr;gap:6px}.site-footer .footer-end{font-size:24px}.guide-hero{padding-top:35px}.guide-hero h1{font-size:68px}.guide-hero .prose{font-size:17px}.guide-jump{gap:10px 25px;margin-bottom:30px}.guide-layout{grid-template-columns:1fr;gap:0}.guide-step h2{font-size:42px}.guide-step>p{font-size:15px}.guide-aside{display:grid;grid-template-columns:1fr 1fr;gap:22px}.guide-aside section{margin-bottom:20px}.guide-aside section:last-child{grid-column:1/-1}.guide-close h2{font-size:46px}}
+@media(max-width:400px){.site-header nav{font-size:10px;gap:6px 13px}.issue-line{font-size:7px}.opening-deck h2,.case-heading h2{font-size:38px}.kit-contents dl>div{grid-template-columns:1fr}.get-intro h2{font-size:59px}.site-footer,.guide-aside{grid-template-columns:1fr}.guide-aside section:last-child{grid-column:auto}.guide-hero h1{font-size:58px}.code-label{flex-wrap:wrap;font-size:9px}.code-block pre{font-size:12px;padding:16px}.prompt-text{padding:18px;font-size:16px}.guide-jump{display:grid;grid-template-columns:1fr 1fr;font-size:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
-@media(forced-colors:active){.button,.thread-mark,.case-stamp{border:1px solid ButtonText}.thread-mark:before,.thread-mark:after{border-color:CanvasText}.detail-sign:before,.detail-sign:after{background:CanvasText}.record-fact strong{color:CanvasText}a:focus-visible,button:focus-visible,summary:focus-visible{outline-color:Highlight}}
-@media print{body{background:#fff;color:#111}.site-header,.site-footer,.skip-link,.actions,.guide-jump,.copy-button{display:none!important}.wrap{width:100%}.hero,.section-heading,.manifesto-body,.start-grid,.reading-room,.guide-layout{display:block}.hero-art{max-width:600px}.section-space{padding-block:25px}.prose,.hero-detail,.fine-print,.guide-step>p{color:#333}.method-section,.work-section,.demo-question,.code-block{background:white;color:#111}.guide-aside{display:none}h1,h2,h3{break-after:avoid}figure,article,.record{break-inside:avoid}a{color:#111}code{color:#111}}
-/* Keep interactive text and focus distinct on the light evidence surface. */
-.method-section a:hover{color:var(--red-deep)}
-.method-section a:focus-visible,.method-section summary:focus-visible{outline-color:var(--red-deep)}
-.copy-button:disabled{opacity:.65;cursor:wait}
-@media(forced-colors:active){.method-section a:focus-visible,.method-section summary:focus-visible{outline-color:Highlight}}
\ No newline at end of file
+@media(forced-colors:active){.button,.record-controls button,.record-route{border:1px solid ButtonText}.record-controls button[aria-pressed=true]{border-bottom:4px solid Highlight}.map-node>rect{fill:Canvas;stroke:CanvasText}.map-node text,.map-edge>text{fill:CanvasText;stroke:none}.map-edge>path{stroke:CanvasText}.is-enhanced .map-edge.is-active>path,.is-enhanced .map-node.is-active>rect{stroke:Highlight}.is-enhanced .map-edge.is-active>text,.is-enhanced .map-node.is-active .node-category{fill:Highlight}.legend-line{border-color:CanvasText}a:focus-visible,button:focus-visible,.record-controls button:focus-visible{outline-color:Highlight}}
+@media print{body{background:#fff;color:#111}.site-header,.site-footer,.skip-link,.record-controls,.guide-jump,.guide-index,.copy-button,.button{display:none!important}.wrap{width:100%}.masthead{font-size:80px}.opening-deck,.board-layout,.atlas-invitation,.get-section,.reading-room,.guide-layout{display:block}.network-panel{display:none}.record-inspector{background:white;color:black}.evidence-record[hidden]{display:block!important}.evidence-record{display:block;break-inside:avoid;padding-top:22px!important;border-top:1px solid #777!important}.record-inspector .record-content{padding:0}.case-cover{max-width:600px}.guide-aside{display:none}.guide-step>p,.opening-copy>p,.kit-contents dd,.requirements,.guide-close p,.fiction-note{color:#333}.code-block,.guide-note{background:#fff;color:#111}.guide-step strong,.prompt-text{color:#111}h1,h2,h3{break-after:avoid}a{color:#111!important}}
diff --git a/docs/guide.html b/docs/guide.html
index c1dbae1..1b7e02a 100644
--- a/docs/guide.html
+++ b/docs/guide.html
@@ -1,19 +1,19 @@
-
+
Your first case — RED THREADS
-
+
Skip to content
-
+
- FIELD GUIDE / FIRST CASE / v0.1.0
Start with a thread.Keep the receipts. Explore the fictional Meridian investigation, see what makes a connection meaningful, and create an atlas you can keep.
+ RED THREADS / FIELD MANUAL 01 / v0.1.0
Start with a thread.Keep the receipts. Explore the fictional Meridian investigation, see what makes a connection meaningful, and create an atlas you can keep.
01 / Explore the case 02 / Install the skill 03 / Make an atlas 04 / Follow your thread
01 START IN THE CASE
Four things to inspect. The Meridian File asks who can influence a proposed compute-licensing rule—and what would distinguish patron direction from coordinated or independent agreement. Every actor, amount, document, and quotation is invented teaching material.
Open the fictional atlas ↗ Use your browser’s Back action to return to this guide, or open the atlas in a separate tab using your browser’s link menu.
@@ -38,6 +38,6 @@
The next recordshould change something. A useful investigation leaves you with the best supported mechanism, a serious rival, and the observation that would change your mind.
Open the complete documentation ↗
-
+
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index aa2d9a6..bb427d5 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -3,7 +3,7 @@
-
+
RED THREADS — Follow the evidence. Find the mechanism.
@@ -22,7 +22,9 @@
+
+
@@ -31,70 +33,86 @@
Skip to content
-
-
-
FOLLOW THE MONEY. QUESTION THE LINE.
-
Pull the thread.Find the mechanism.
-
Investigative craft for your AI. A portable case for you.
-
Turn a hunch, a document, or an institutional hairball into an investigation you can explore, challenge, and pick up again.
-
-
v0.1.0 · Complete skill ZIP · Your AI host supplies the model
-
- LOOK CLOSER. Connections are the beginning of the inquiry.
-
- ONE SELF-CONTAINED AI SKILL PORTABLE EVIDENCE OFFLINE ATLAS FREE · 0.1.0
-
- 01 THE QUESTION BEHIND THE QUESTION
- Who can makewhat happen? Money moves. People change roles. A briefing becomes a headline becomes “everybody knows.”
RED THREADS follows resources into activities, access, persuasion, and actual decision rights. It keeps the verbs precise: funded , appointed , distributed , approved . A line needs a mechanism, a date, and a source.
Your intuition gets a seat at the table. So does the explanation that could prove it wrong.
+
+ COLLABORATIVE DYNAMICS / INVESTIGATIVE AI AUGMENT FREE / VOL. 0.1.0
+
+ CONSPIRACY UNRAVELER
Follow the money. Find the mechanism. Power has a paper trail. Sometimes it has a missing page.
Give your AI the craft to investigate money, influence, and hidden ties—with a case you can explore, challenge, and keep.
Get RED THREADS ↓ Free skill ZIP · Your host supplies the AI
-
-
-
02 MAKE THE CONNECTION EARN ITS MEANING
-
A grant is a fact.Control is a question. In the fictional Meridian case, one foundation funds a policy institute. Look at what each record actually adds. Open the documents below.
-
-
-
-
01 The award noticeFunding Cobalt Foundation → awarded a research grant to → Meridian Institute
The $1.8m award establishes funding. The $900,000 first installment belongs to that award; adding them would count the same money twice. The notice establishes no editorial command.
BASIS: FICTIONAL AWARD AND REMITTANCE RECORDS
-
02 The signed agreementA specific right Cobalt Foundation → holds approval rights over → the funded policy brief
Section 4 grants review and revision rights for this deliverable. That is a real, bounded mechanism. It does not give Cobalt general authority over Meridian or the separate company Astera AI.
BASIS: FICTIONAL AGREEMENT, SECTION 4
-
03 The revision registerThe right in use Leo Venn, Cobalt’s liaison → requested in-scope revisions to → the funded brief
Record R-07 shows the limited approval right being exercised. Now the case has an observed action to investigate. Whether a wider campaign was directed remains a separate question requiring its own evidence.
BASIS: FICTIONAL REVISION REGISTER, R-07
+
+ OPEN FILE / THE MERIDIAN CASE
The money is real.What does it buy? A fictional teaching case. Every actor, amount, and record here is invented. The distinctions are the point.
+
+
TRACE THE MECHANISM 3 RECORDS / 3 DIFFERENT CLAIMS
+
+
+
RELATIONSHIP MAP SELECT A RECORD TO FOLLOW ITS THREAD
+
+ Funding, approval, and an exercised right
+ Cobalt Foundation awarded a grant to Meridian Institute and holds approval rights over the funded Licensing policy brief. Leo Venn requested in-scope revisions to that brief. The separate allegation that Cobalt directed Astera AI is disputed: no orders are supplied. Read the record inspector for sources and scope.
+
+ RESEARCH GRANT
+ APPROVAL RIGHT
+ REVISION REQUEST
+ ALLEGED DIRECTION DISPUTED · NO ORDER SUPPLIED
+ FUNDER Cobalt Foundation
+ POLICY INSTITUTE Meridian Institute
+ FUNDED DELIVERABLE Licensing policy brief
+ PROGRAM LIAISON Leo Venn
+ SEPARATE COMPANY Astera AI
+
+
Documented relationship Disputed allegation
+
Position is a reading aid. A line earns its meaning from the record.
+
The wider claim / disputed Cobalt Foundation → allegedly directed the licensing campaign of → Astera AI
No orders are supplied. The allegation traces back to the grant notice about Meridian.
+
+
+
EXAMINE THE RECORD ↙
+
+ 01 Award notice
+ 02 Section 4
+ 03 Revision R-07
+
+
+
+ 01 / AWARD NOTICE / 10 JAN 2025
$1.8 million. One funding relationship.
+ Cobalt Foundation awarded a research grant to Meridian Institute
+ The notice establishes a two-year research award. It supplies no editorial orders.
The $900,000 first installment is part of that award. Add them together and you have invented $900,000.
+ SOURCE / s-award Fictional grant announcement, paragraph 2. Installment: agreement, remittance appendix B.
+ THE NEXT QUESTION Does the agreement give the funder any decision rights?
+
+
+ 02 / SIGNED AGREEMENT / 15 JAN 2025
A right to approve. A boundary around it.
+ Cobalt Foundation holds approval rights over Licensing policy brief
+ Section 4 requires liaison approval for the funded brief. The contract establishes a specific mechanism: review and revision of this deliverable.
It grants no general authority over Meridian or the separate company Astera AI.
+ SOURCE / s-agreement Fictional signed grant agreement, section 4. Teaching paraphrase; limited to the research scope.
+ THE NEXT QUESTION Was that approval right ever exercised?
+
+
+ 03 / REVISION REGISTER / 02 JUL 2025
Now there’s an action to trace.
+ Leo Venn, program liaison requested in-scope revisions to Licensing policy brief
+ Record R-07 asks for clarification of the audit-threshold section before approval. The limited right was used.
That supports influence over this brief. A claim about directing Astera’s wider campaign still needs its own evidence.
+ SOURCE / s-revisions Fictional revision register, R-07, read with agreement section 4. Teaching paraphrase.
+ THE NEXT QUESTION What record would establish a route to Astera?
+
+
+
-
Funding. Alignment. Coordination. Control.Different claims. Different evidence.
+
-
- 03 AN INVESTIGATION YOU CAN GET YOUR HANDS ON
- Meet the case.Then interrogate it. The offline atlas links the network to its timeline, sources, rival hypotheses, next leads, and actor strategies. This demo is generated by the shipped renderer from the included fictional case.
Explore the Meridian atlas ↗ Opens the real atlas · No installation needed to explore
- YOUR QUESTION Is one patron directing the campaign—or are different actors arriving at the same position?
EVERY PERSON, ORGANIZATION, AND SOURCE IN THIS DEMO IS FICTIONAL.
-
I. Three headlines. One origin. Trace the direction allegation through Sentinel, Ledger, and Streamcast. Separate URLs do not create independent corroboration.
-
II. The calendar has an objection. Astera’s June endorsement precedes the July briefing packet. What earlier record would be needed to explain the initial agreement?
-
III. Remove the patron. Look again. Inspect the advisory route that remains. Removing a node tests the supplied graph’s connectivity; it cannot establish real-world independence.
-
- A MAP YOU CAN QUESTION Open a relationship and inspect its basis. Compare a time slice or rival explanation. Save the view you want to return to.
Follow the guided tour →
-
-
-
04 THE CRAFT BEHIND THE CASE
-
Follow the strongest lead.Keep the case intact. Research, intuition, rival explanations, and game theory share one case. The AI investigates with the tools your host provides. The bundled Python tools preserve and display the work.
-
-
Look for the mechanism Trace grants, contracts, roles, resource dependencies, access, and decision rights. Keep an institution’s different actors and powers distinguishable.
PRECISE VERBS + DATES + SOURCES
-
Give rivals a real chance Work inside a hunch while keeping its assumptions attached. Compare explanations that predict different observations, then choose the record that could separate them.
HYPOTHESES + DISCRIMINATING LEADS
-
Ask who can credibly act Examine objectives, constraints, outside options, and responses. A dependency becomes strategic leverage only when the ability to withhold or redirect is established.
ACTOR GAMES + EXPLICIT ASSUMPTIONS
-
Let corrections travel Trace a changed source through declared dependencies. Review the affected relationships, hypotheses, and strategies; preserve independent support and save a new revision.
SOURCE ANCESTRY + REVIEW FRONTIER
-
-
THE CASE STAYS PORTABLE
case.json holds the investigation. The HTML atlas and CSV exports are views of it. Store the case where you choose, preserve the evidence, and resume from what remains unresolved.
Working with your own records ↗
-
-
- 05 YOUR FIRST THREAD
- Bring a question.Leave with a next move. Download the complete skill, install it through your AI host’s supported skill route, and begin with the fictional case. Python 3.10+ is needed for the supplied case tools and atlas; conversational investigation can continue without it.
KNOW WHAT YOU’RE GETTING One self-contained AI skill, investigative references, a fictional worked case, and local tools.
Your host supplies the model, browsing, and source access. The renderer performs no research. Validation checks the data’s structure and references; the investigator still has to earn the conclusion.
Capabilities, evidence, and licenses ↗
+
-
- 06 THE READING ROOM
Keep the usefulinstructions close.
-
+ RED THREADS / CONSPIRACY UNRAVELER LOOK CLOSER.
Connections are the beginning of the inquiry.
+
+ YOUR FIRST THREAD
Bring a hunch.Keep the receipts. Research, intuition, rival explanations, and game theory—working inside one portable investigation.
Download free · v0.1.0 ↓
+ INSIDE THE COMPLETE SKILL ZIP
Investigative craft One self-contained AI skill with references for mechanisms, source ancestry, rival hypotheses, and strategy.
A case you can carry A worked fictional investigation, local Python tools, an offline HTML atlas, and CSV exports.
A place to pick up again Your case.json holds the evidence. Save revisions, inspect corrections, and return to the strongest unresolved lead. Your host supplies the AI, browsing, and source access. Python 3.10+ runs the bundled case tools. The renderer displays the case; it performs no research.
Install it. Open your first case. →
+
-
+
-