docs: disclose single-engine-host node distribution + add study site & story slides
Paper (stage-07 lead): add an Apparatus disclosure (§4.3) and a Node-distribution limitation (§7) stating that all relay hops ran as isolated Docker containers on a single engine host and the two phones were consenting endpoints, not forwarders. Containment (engine != local) holds; cross-machine timing is out of scope / future work. Add the self-contained study site (docs/paper-site/: build_site.py, index.html) built straight from the sealed paper markdown, plus a generator + six 1080x1920 Instagram-story teaser slides (make_story_slides.py, story/) using only sealed, audited numbers. Defensive measurement framing throughout; the pre-registered nulls are reported, not spun.
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 554 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 552 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 530 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 584 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 558 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 547 KiB |
@@ -0,0 +1,38 @@
|
||||
<!doctype html><html><head><meta charset=utf-8>
|
||||
<meta name=viewport content="width=1080,height=1920">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
html,body{width:1080px;height:1920px;overflow:hidden}
|
||||
body{
|
||||
font-family:-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
|
||||
background:radial-gradient(120% 90% at 50% 0%,#141b2e 0%,#0a0e1a 55%,#05070f 100%);
|
||||
color:#eef2fb; position:relative;
|
||||
}
|
||||
.frame{position:absolute;inset:0;padding:96px 84px;display:flex;flex-direction:column}
|
||||
.kicker{font-size:30px;letter-spacing:.30em;font-weight:700;text-transform:uppercase;color:#63d3ff}
|
||||
.rq{font-size:34px;letter-spacing:.10em;font-weight:800;color:#8b9bc4;text-transform:uppercase}
|
||||
h1{font-size:104px;line-height:1.02;font-weight:850;letter-spacing:-.01em;margin:8px 0}
|
||||
h2{font-size:62px;line-height:1.08;font-weight:800;letter-spacing:-.01em}
|
||||
.sub{font-size:40px;line-height:1.34;color:#c3cce2;font-weight:450}
|
||||
.big{font-family:'SF Mono',ui-monospace,Menlo,monospace;font-weight:800;letter-spacing:-.02em}
|
||||
.mono{font-family:'SF Mono',ui-monospace,Menlo,monospace}
|
||||
.pill{display:inline-block;padding:12px 26px;border-radius:999px;font-size:30px;font-weight:700}
|
||||
.good{background:rgba(52,211,153,.16);color:#59f0b6;border:2px solid rgba(52,211,153,.45)}
|
||||
.bad{background:rgba(248,113,113,.14);color:#ff9b9b;border:2px solid rgba(248,113,113,.4)}
|
||||
.muted{color:#8b9bc4}
|
||||
.foot{position:absolute;left:84px;right:84px;bottom:70px;display:flex;justify-content:space-between;
|
||||
align-items:center;font-size:26px;color:#6b7a9c;font-weight:600;letter-spacing:.04em}
|
||||
.spacer{flex:1}
|
||||
.card{background:rgba(255,255,255,.035);border:2px solid rgba(255,255,255,.08);border-radius:28px;
|
||||
padding:40px 44px}
|
||||
.dim{color:#9aa7c6}
|
||||
</style></head><body>
|
||||
<div class=frame>
|
||||
<div class=kicker>Pre-registered · Defensive measurement</div>
|
||||
<div class=spacer></div>
|
||||
<h1>Can a<br>consent-gated<br>onion relay<br>actually<br><span style="color:#63d3ff">hide who<br>talks to whom?</span></h1>
|
||||
<div style="height:38px"></div>
|
||||
<div class=sub>We built the instrument to <b>measure</b> it —<br>then pre-registered the answer before<br>a single confirmatory packet moved.</div>
|
||||
<div class=spacer></div>
|
||||
<div class=foot><span>SOR‑CONSENT</span><span>lab-only · isolated-engine · sealed</span></div>
|
||||
</div></body></html>
|
||||
@@ -0,0 +1,68 @@
|
||||
<!doctype html><html><head><meta charset=utf-8>
|
||||
<meta name=viewport content="width=1080,height=1920">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
html,body{width:1080px;height:1920px;overflow:hidden}
|
||||
body{
|
||||
font-family:-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
|
||||
background:radial-gradient(120% 90% at 50% 0%,#141b2e 0%,#0a0e1a 55%,#05070f 100%);
|
||||
color:#eef2fb; position:relative;
|
||||
}
|
||||
.frame{position:absolute;inset:0;padding:96px 84px;display:flex;flex-direction:column}
|
||||
.kicker{font-size:30px;letter-spacing:.30em;font-weight:700;text-transform:uppercase;color:#63d3ff}
|
||||
.rq{font-size:34px;letter-spacing:.10em;font-weight:800;color:#8b9bc4;text-transform:uppercase}
|
||||
h1{font-size:104px;line-height:1.02;font-weight:850;letter-spacing:-.01em;margin:8px 0}
|
||||
h2{font-size:62px;line-height:1.08;font-weight:800;letter-spacing:-.01em}
|
||||
.sub{font-size:40px;line-height:1.34;color:#c3cce2;font-weight:450}
|
||||
.big{font-family:'SF Mono',ui-monospace,Menlo,monospace;font-weight:800;letter-spacing:-.02em}
|
||||
.mono{font-family:'SF Mono',ui-monospace,Menlo,monospace}
|
||||
.pill{display:inline-block;padding:12px 26px;border-radius:999px;font-size:30px;font-weight:700}
|
||||
.good{background:rgba(52,211,153,.16);color:#59f0b6;border:2px solid rgba(52,211,153,.45)}
|
||||
.bad{background:rgba(248,113,113,.14);color:#ff9b9b;border:2px solid rgba(248,113,113,.4)}
|
||||
.muted{color:#8b9bc4}
|
||||
.foot{position:absolute;left:84px;right:84px;bottom:70px;display:flex;justify-content:space-between;
|
||||
align-items:center;font-size:26px;color:#6b7a9c;font-weight:600;letter-spacing:.04em}
|
||||
.spacer{flex:1}
|
||||
.card{background:rgba(255,255,255,.035);border:2px solid rgba(255,255,255,.08);border-radius:28px;
|
||||
padding:40px 44px}
|
||||
.dim{color:#9aa7c6}
|
||||
</style></head><body>
|
||||
<div class=frame>
|
||||
<div class=kicker>The instrument</div>
|
||||
<div style="height:20px"></div>
|
||||
<h2>An instrument,<br>not a service.</h2>
|
||||
<div style="height:26px"></div>
|
||||
<div class=sub>A nested-SSH, consent-gated, federated relay —
|
||||
built only so a frozen statistical battery could probe it.</div>
|
||||
<div class=spacer></div>
|
||||
<div style="display:flex;gap:40px;align-items:center">
|
||||
<div><svg viewBox="0 0 560 960" width="340" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs><marker id="ar" markerWidth="10" markerHeight="10" refX="7" refY="3" orient="auto">
|
||||
<path d="M0,0 L7,3 L0,6 Z" fill="#63d3ff"/></marker></defs>
|
||||
<line x1="150" y1="150" x2="150" y2="880" stroke="#233156" stroke-width="4"/>
|
||||
<!-- sender -->
|
||||
<rect x="70" y="90" width="160" height="90" rx="16" fill="#1a2340" stroke="#63d3ff" stroke-width="3"/>
|
||||
<text x="150" y="145" text-anchor="middle" font-size="30" fill="#cfe4ff" font-family="monospace">sender</text>
|
||||
<!-- hops -->
|
||||
<g>
|
||||
<rect x="70" y="300" width="160" height="80" rx="16" fill="#141d36" stroke="#3a4a78" stroke-width="3"/>
|
||||
<text x="150" y="350" text-anchor="middle" font-size="28" fill="#aab8dc" font-family="monospace">hop 0</text>
|
||||
<rect x="70" y="530" width="160" height="80" rx="16" fill="#141d36" stroke="#3a4a78" stroke-width="3"/>
|
||||
<text x="150" y="580" text-anchor="middle" font-size="28" fill="#aab8dc" font-family="monospace">hop 1</text>
|
||||
<rect x="70" y="760" width="160" height="80" rx="16" fill="#141d36" stroke="#3a4a78" stroke-width="3"/>
|
||||
<text x="150" y="810" text-anchor="middle" font-size="28" fill="#aab8dc" font-family="monospace">hop 2</text>
|
||||
</g>
|
||||
<path d="M150,180 L150,296" stroke="#63d3ff" stroke-width="4" marker-end="url(#ar)"/>
|
||||
<path d="M150,380 L150,526" stroke="#63d3ff" stroke-width="4" marker-end="url(#ar)"/>
|
||||
<path d="M150,610 L150,756" stroke="#63d3ff" stroke-width="4" marker-end="url(#ar)"/>
|
||||
<circle cx="360" cy="330" r="9" fill="#ffcf5e"/><text x="384" y="339" font-size="26" fill="#ffcf5e" font-family="monospace">pcap</text><circle cx="360" cy="560" r="9" fill="#ffcf5e"/><text x="384" y="569" font-size="26" fill="#ffcf5e" font-family="monospace">pcap</text><circle cx="360" cy="790" r="9" fill="#ffcf5e"/><text x="384" y="799" font-size="26" fill="#ffcf5e" font-family="monospace">pcap</text>
|
||||
</svg></div>
|
||||
<div style="display:flex;flex-direction:column;gap:26px">
|
||||
<div class=card><div class="big" style="font-size:70px;color:#63d3ff">9,000</div><div class=dim style="font-size:30px">confirmatory circuits</div></div>
|
||||
<div class=card><div class="big" style="font-size:70px;color:#63d3ff">27,000</div><div class=dim style="font-size:30px">per-hop packet captures</div></div>
|
||||
<div class=card><div class="big" style="font-size:70px;color:#63d3ff">36,361</div><div class=dim style="font-size:30px">SHA‑256‑sealed artifacts</div></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class=spacer></div>
|
||||
<div class=foot><span>seed-reproducible</span><span>every forwarder: engine ≠ local</span></div>
|
||||
</div></body></html>
|
||||
@@ -0,0 +1,56 @@
|
||||
<!doctype html><html><head><meta charset=utf-8>
|
||||
<meta name=viewport content="width=1080,height=1920">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
html,body{width:1080px;height:1920px;overflow:hidden}
|
||||
body{
|
||||
font-family:-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
|
||||
background:radial-gradient(120% 90% at 50% 0%,#141b2e 0%,#0a0e1a 55%,#05070f 100%);
|
||||
color:#eef2fb; position:relative;
|
||||
}
|
||||
.frame{position:absolute;inset:0;padding:96px 84px;display:flex;flex-direction:column}
|
||||
.kicker{font-size:30px;letter-spacing:.30em;font-weight:700;text-transform:uppercase;color:#63d3ff}
|
||||
.rq{font-size:34px;letter-spacing:.10em;font-weight:800;color:#8b9bc4;text-transform:uppercase}
|
||||
h1{font-size:104px;line-height:1.02;font-weight:850;letter-spacing:-.01em;margin:8px 0}
|
||||
h2{font-size:62px;line-height:1.08;font-weight:800;letter-spacing:-.01em}
|
||||
.sub{font-size:40px;line-height:1.34;color:#c3cce2;font-weight:450}
|
||||
.big{font-family:'SF Mono',ui-monospace,Menlo,monospace;font-weight:800;letter-spacing:-.02em}
|
||||
.mono{font-family:'SF Mono',ui-monospace,Menlo,monospace}
|
||||
.pill{display:inline-block;padding:12px 26px;border-radius:999px;font-size:30px;font-weight:700}
|
||||
.good{background:rgba(52,211,153,.16);color:#59f0b6;border:2px solid rgba(52,211,153,.45)}
|
||||
.bad{background:rgba(248,113,113,.14);color:#ff9b9b;border:2px solid rgba(248,113,113,.4)}
|
||||
.muted{color:#8b9bc4}
|
||||
.foot{position:absolute;left:84px;right:84px;bottom:70px;display:flex;justify-content:space-between;
|
||||
align-items:center;font-size:26px;color:#6b7a9c;font-weight:600;letter-spacing:.04em}
|
||||
.spacer{flex:1}
|
||||
.card{background:rgba(255,255,255,.035);border:2px solid rgba(255,255,255,.08);border-radius:28px;
|
||||
padding:40px 44px}
|
||||
.dim{color:#9aa7c6}
|
||||
</style></head><body>
|
||||
<div class=frame>
|
||||
<div class=rq>RQ1 · Linkability</div>
|
||||
<div style="height:16px"></div>
|
||||
<h2>Does the shared<br>bridge leak who's<br>talking to whom?</h2>
|
||||
<div class=spacer></div>
|
||||
<div style="text-align:center">
|
||||
<div class=dim style="font-size:34px;letter-spacing:.1em">CORRELATION DETECTOR AUC</div>
|
||||
<div class="big" style="font-size:190px;color:#59f0b6;line-height:1">0.466</div>
|
||||
<div class="mono dim" style="font-size:32px">BCa 95% CI [0.452, 0.480]</div>
|
||||
</div>
|
||||
<div style="height:44px"></div>
|
||||
<!-- gauge: 0.4 .. 0.6, chance at 0.5 -->
|
||||
<svg viewBox="0 0 900 130" width="900" xmlns="http://www.w3.org/2000/svg" style="align-self:center">
|
||||
<rect x="0" y="52" width="900" height="26" rx="13" fill="#1c2743"/>
|
||||
<rect x="0" y="52" width="270" height="26" rx="13" fill="#59f0b6" opacity=".55"/>
|
||||
<line x1="450" y1="34" x2="450" y2="96" stroke="#8b9bc4" stroke-width="4" stroke-dasharray="7 7"/>
|
||||
<text x="450" y="26" text-anchor="middle" font-size="28" fill="#8b9bc4" font-family="monospace">chance 0.50</text>
|
||||
<circle cx="297" cy="65" r="18" fill="#59f0b6"/>
|
||||
<text x="297" y="122" text-anchor="middle" font-size="30" fill="#59f0b6" font-family="monospace">0.466</text>
|
||||
<text x="10" y="122" font-size="26" fill="#6b7a9c" font-family="monospace">0.40</text>
|
||||
<text x="852" y="122" font-size="26" fill="#6b7a9c" font-family="monospace">0.60</text>
|
||||
</svg>
|
||||
<div style="height:40px"></div>
|
||||
<div class=sub style="text-align:center"><b>Below</b> a coin flip. The detector did <b>worse than chance</b><br>→ <span class="pill good">no measurable leak</span></div>
|
||||
<div class=spacer></div>
|
||||
<div class=foot><span>two-sided, frozen gate</span><span>survives Holm‑7</span></div>
|
||||
</div></body></html>
|
||||
@@ -0,0 +1,52 @@
|
||||
<!doctype html><html><head><meta charset=utf-8>
|
||||
<meta name=viewport content="width=1080,height=1920">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
html,body{width:1080px;height:1920px;overflow:hidden}
|
||||
body{
|
||||
font-family:-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
|
||||
background:radial-gradient(120% 90% at 50% 0%,#141b2e 0%,#0a0e1a 55%,#05070f 100%);
|
||||
color:#eef2fb; position:relative;
|
||||
}
|
||||
.frame{position:absolute;inset:0;padding:96px 84px;display:flex;flex-direction:column}
|
||||
.kicker{font-size:30px;letter-spacing:.30em;font-weight:700;text-transform:uppercase;color:#63d3ff}
|
||||
.rq{font-size:34px;letter-spacing:.10em;font-weight:800;color:#8b9bc4;text-transform:uppercase}
|
||||
h1{font-size:104px;line-height:1.02;font-weight:850;letter-spacing:-.01em;margin:8px 0}
|
||||
h2{font-size:62px;line-height:1.08;font-weight:800;letter-spacing:-.01em}
|
||||
.sub{font-size:40px;line-height:1.34;color:#c3cce2;font-weight:450}
|
||||
.big{font-family:'SF Mono',ui-monospace,Menlo,monospace;font-weight:800;letter-spacing:-.02em}
|
||||
.mono{font-family:'SF Mono',ui-monospace,Menlo,monospace}
|
||||
.pill{display:inline-block;padding:12px 26px;border-radius:999px;font-size:30px;font-weight:700}
|
||||
.good{background:rgba(52,211,153,.16);color:#59f0b6;border:2px solid rgba(52,211,153,.45)}
|
||||
.bad{background:rgba(248,113,113,.14);color:#ff9b9b;border:2px solid rgba(248,113,113,.4)}
|
||||
.muted{color:#8b9bc4}
|
||||
.foot{position:absolute;left:84px;right:84px;bottom:70px;display:flex;justify-content:space-between;
|
||||
align-items:center;font-size:26px;color:#6b7a9c;font-weight:600;letter-spacing:.04em}
|
||||
.spacer{flex:1}
|
||||
.card{background:rgba(255,255,255,.035);border:2px solid rgba(255,255,255,.08);border-radius:28px;
|
||||
padding:40px 44px}
|
||||
.dim{color:#9aa7c6}
|
||||
</style></head><body>
|
||||
<div class=frame>
|
||||
<div class=rq>RQ2 · Anonymity set</div>
|
||||
<div style="height:16px"></div>
|
||||
<h2>Does federating<br>houses grow the<br>crowd to hide in?</h2>
|
||||
<div class=spacer></div>
|
||||
<div class=card style="border-color:rgba(248,113,113,.35)">
|
||||
<div class=dim style="font-size:32px">As instrumented — per-circuit entropy change</div>
|
||||
<div class="big" style="font-size:96px;color:#ff9b9b">−0.96 bits</div>
|
||||
<div class="mono dim" style="font-size:30px">ΔH CI [−1.056, −0.864] · it <b>SHRANK</b></div>
|
||||
</div>
|
||||
<div style="height:30px"></div>
|
||||
<div style="text-align:center;font-size:44px;color:#ffcf5e">↓ but <b>why?</b> ↓</div>
|
||||
<div style="height:30px"></div>
|
||||
<div class=card style="border-color:rgba(52,211,153,.35)">
|
||||
<div class=dim style="font-size:32px">Mechanism-corrected test (RQ2‑P3′)</div>
|
||||
<div class="big" style="font-size:96px;color:#59f0b6">ρ = +0.62</div>
|
||||
<div class="mono dim" style="font-size:30px">Spearman CI [0.594, 0.655] · decision: <b>MIX</b></div>
|
||||
</div>
|
||||
<div style="height:34px"></div>
|
||||
<div class=sub style="text-align:center">It behaves like a <b>mix</b>, not a funnel.<br>The “shrink” was a <b>unique-bridge artifact</b> —<br>and that correction <i>is</i> the finding.</div>
|
||||
<div class=spacer></div>
|
||||
<div class=foot><span>13,500 pooled circuits</span><span>both survive Holm‑7</span></div>
|
||||
</div></body></html>
|
||||
@@ -0,0 +1,51 @@
|
||||
<!doctype html><html><head><meta charset=utf-8>
|
||||
<meta name=viewport content="width=1080,height=1920">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
html,body{width:1080px;height:1920px;overflow:hidden}
|
||||
body{
|
||||
font-family:-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
|
||||
background:radial-gradient(120% 90% at 50% 0%,#141b2e 0%,#0a0e1a 55%,#05070f 100%);
|
||||
color:#eef2fb; position:relative;
|
||||
}
|
||||
.frame{position:absolute;inset:0;padding:96px 84px;display:flex;flex-direction:column}
|
||||
.kicker{font-size:30px;letter-spacing:.30em;font-weight:700;text-transform:uppercase;color:#63d3ff}
|
||||
.rq{font-size:34px;letter-spacing:.10em;font-weight:800;color:#8b9bc4;text-transform:uppercase}
|
||||
h1{font-size:104px;line-height:1.02;font-weight:850;letter-spacing:-.01em;margin:8px 0}
|
||||
h2{font-size:62px;line-height:1.08;font-weight:800;letter-spacing:-.01em}
|
||||
.sub{font-size:40px;line-height:1.34;color:#c3cce2;font-weight:450}
|
||||
.big{font-family:'SF Mono',ui-monospace,Menlo,monospace;font-weight:800;letter-spacing:-.02em}
|
||||
.mono{font-family:'SF Mono',ui-monospace,Menlo,monospace}
|
||||
.pill{display:inline-block;padding:12px 26px;border-radius:999px;font-size:30px;font-weight:700}
|
||||
.good{background:rgba(52,211,153,.16);color:#59f0b6;border:2px solid rgba(52,211,153,.45)}
|
||||
.bad{background:rgba(248,113,113,.14);color:#ff9b9b;border:2px solid rgba(248,113,113,.4)}
|
||||
.muted{color:#8b9bc4}
|
||||
.foot{position:absolute;left:84px;right:84px;bottom:70px;display:flex;justify-content:space-between;
|
||||
align-items:center;font-size:26px;color:#6b7a9c;font-weight:600;letter-spacing:.04em}
|
||||
.spacer{flex:1}
|
||||
.card{background:rgba(255,255,255,.035);border:2px solid rgba(255,255,255,.08);border-radius:28px;
|
||||
padding:40px 44px}
|
||||
.dim{color:#9aa7c6}
|
||||
</style></head><body>
|
||||
<div class=frame>
|
||||
<div class=rq>RQ3 · Churn resilience</div>
|
||||
<div style="height:16px"></div>
|
||||
<h2>Can a local-LLM<br>agent beat baselines<br>when nodes die?</h2>
|
||||
<div class=spacer></div>
|
||||
<div style="display:flex;flex-direction:column;gap:24px">
|
||||
<div class=card style="display:flex;justify-content:space-between;align-items:center">
|
||||
<div><div style="font-size:34px">Throughput vs baseline</div><div class="mono dim" style="font-size:28px">CI [−1.6%, +0.4%]</div></div>
|
||||
<div class="big" style="font-size:64px;color:#ff9b9b">−0.6%</div></div>
|
||||
<div class=card style="display:flex;justify-content:space-between;align-items:center">
|
||||
<div><div style="font-size:34px">Added latency</div><div class="mono dim" style="font-size:28px">within budget, but no win</div></div>
|
||||
<div class="big" style="font-size:64px;color:#ffcf5e">−13 ms</div></div>
|
||||
<div class=card style="display:flex;justify-content:space-between;align-items:center">
|
||||
<div><div style="font-size:34px">Rebuild fingerprint</div><div class="mono dim" style="font-size:28px">gate wanted AUC ≤ 0.60</div></div>
|
||||
<div class="big" style="font-size:64px;color:#ff9b9b">0.59</div></div>
|
||||
</div>
|
||||
<div style="height:40px"></div>
|
||||
<div class=sub style="text-align:center">The <span class=mono>qwen2.5:3b</span> agent (local Ollama, <b>$0</b>)<br><b>did not</b> beat a coin flip. <span class="pill bad">double-null</span></div>
|
||||
<div class=sub style="text-align:center;font-size:34px;margin-top:22px">A null is a result. We report it.</div>
|
||||
<div class=spacer></div>
|
||||
<div class=foot><span>90 live-docker runs</span><span>frontier arm: inert, $0</span></div>
|
||||
</div></body></html>
|
||||
@@ -0,0 +1,72 @@
|
||||
<!doctype html><html><head><meta charset=utf-8>
|
||||
<meta name=viewport content="width=1080,height=1920">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
html,body{width:1080px;height:1920px;overflow:hidden}
|
||||
body{
|
||||
font-family:-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
|
||||
background:radial-gradient(120% 90% at 50% 0%,#141b2e 0%,#0a0e1a 55%,#05070f 100%);
|
||||
color:#eef2fb; position:relative;
|
||||
}
|
||||
.frame{position:absolute;inset:0;padding:96px 84px;display:flex;flex-direction:column}
|
||||
.kicker{font-size:30px;letter-spacing:.30em;font-weight:700;text-transform:uppercase;color:#63d3ff}
|
||||
.rq{font-size:34px;letter-spacing:.10em;font-weight:800;color:#8b9bc4;text-transform:uppercase}
|
||||
h1{font-size:104px;line-height:1.02;font-weight:850;letter-spacing:-.01em;margin:8px 0}
|
||||
h2{font-size:62px;line-height:1.08;font-weight:800;letter-spacing:-.01em}
|
||||
.sub{font-size:40px;line-height:1.34;color:#c3cce2;font-weight:450}
|
||||
.big{font-family:'SF Mono',ui-monospace,Menlo,monospace;font-weight:800;letter-spacing:-.02em}
|
||||
.mono{font-family:'SF Mono',ui-monospace,Menlo,monospace}
|
||||
.pill{display:inline-block;padding:12px 26px;border-radius:999px;font-size:30px;font-weight:700}
|
||||
.good{background:rgba(52,211,153,.16);color:#59f0b6;border:2px solid rgba(52,211,153,.45)}
|
||||
.bad{background:rgba(248,113,113,.14);color:#ff9b9b;border:2px solid rgba(248,113,113,.4)}
|
||||
.muted{color:#8b9bc4}
|
||||
.foot{position:absolute;left:84px;right:84px;bottom:70px;display:flex;justify-content:space-between;
|
||||
align-items:center;font-size:26px;color:#6b7a9c;font-weight:600;letter-spacing:.04em}
|
||||
.spacer{flex:1}
|
||||
.card{background:rgba(255,255,255,.035);border:2px solid rgba(255,255,255,.08);border-radius:28px;
|
||||
padding:40px 44px}
|
||||
.dim{color:#9aa7c6}
|
||||
</style></head><body>
|
||||
<div class=frame>
|
||||
<div class=kicker>The verdict</div>
|
||||
<div style="height:18px"></div>
|
||||
<h2>7 pre-registered tests.<br>Holm-corrected.<br><span style="color:#59f0b6">3 survived.</span></h2>
|
||||
<div style="height:44px"></div>
|
||||
<svg viewBox="0 0 940 620" width="912" xmlns="http://www.w3.org/2000/svg" style="align-self:center">
|
||||
<line x1="440" y1="30" x2="440" y2="600" stroke="#3a4a78" stroke-width="3" stroke-dasharray="6 8"/>
|
||||
<text x="440" y="618" text-anchor="middle" font-size="26" fill="#6b7a9c" font-family="monospace">no effect</text>
|
||||
|
||||
<text x="0" y="78" font-size="30" fill="#cfe4ff" font-family="monospace">RQ1-P1</text>
|
||||
<line x1="288" y1="70" x2="668" y2="70" stroke="#59f0b6" stroke-width="6"/>
|
||||
<circle cx="531" cy="70" r="10" fill="#59f0b6"/>
|
||||
<text x="870" y="80" font-size="40" fill="#59f0b6">✓</text>
|
||||
<text x="0" y="158" font-size="30" fill="#cfe4ff" font-family="monospace">RQ2-P1</text>
|
||||
<line x1="478" y1="150" x2="744" y2="150" stroke="#59f0b6" stroke-width="6"/>
|
||||
<circle cx="622" cy="150" r="10" fill="#59f0b6"/>
|
||||
<text x="870" y="160" font-size="40" fill="#59f0b6">✓</text>
|
||||
<text x="0" y="238" font-size="30" fill="#cfe4ff" font-family="monospace">RQ2-P3</text>
|
||||
<line x1="516" y1="230" x2="653" y2="230" stroke="#59f0b6" stroke-width="6"/>
|
||||
<circle cx="584" cy="230" r="10" fill="#59f0b6"/>
|
||||
<text x="870" y="240" font-size="40" fill="#59f0b6">✓</text>
|
||||
<text x="0" y="318" font-size="30" fill="#cfe4ff" font-family="monospace">RQ1-P2</text>
|
||||
<line x1="379" y1="310" x2="516" y2="310" stroke="#6b7a9c" stroke-width="6"/>
|
||||
<circle cx="448" cy="310" r="10" fill="#6b7a9c"/>
|
||||
<text x="870" y="320" font-size="40" fill="#6b7a9c">×</text>
|
||||
<text x="0" y="398" font-size="30" fill="#cfe4ff" font-family="monospace">RQ3-P2</text>
|
||||
<line x1="326" y1="390" x2="531" y2="390" stroke="#6b7a9c" stroke-width="6"/>
|
||||
<circle cx="432" cy="390" r="10" fill="#6b7a9c"/>
|
||||
<text x="870" y="400" font-size="40" fill="#6b7a9c">×</text>
|
||||
<text x="0" y="478" font-size="30" fill="#cfe4ff" font-family="monospace">RQ3-perf</text>
|
||||
<line x1="364" y1="470" x2="501" y2="470" stroke="#6b7a9c" stroke-width="6"/>
|
||||
<circle cx="425" cy="470" r="10" fill="#6b7a9c"/>
|
||||
<text x="870" y="480" font-size="40" fill="#6b7a9c">×</text>
|
||||
<text x="0" y="558" font-size="30" fill="#cfe4ff" font-family="monospace">RQ3-lat</text>
|
||||
<line x1="318" y1="550" x2="562" y2="550" stroke="#6b7a9c" stroke-width="6"/>
|
||||
<circle cx="440" cy="550" r="10" fill="#6b7a9c"/>
|
||||
<text x="870" y="560" font-size="40" fill="#6b7a9c">×</text>
|
||||
</svg>
|
||||
<div style="height:26px"></div>
|
||||
<div class=sub style="text-align:center">Bridge doesn't leak. Federation is a mix, not a funnel.<br>The AI selector didn't win. <b>We pre-committed to the nulls</b><br><b>— and we report them.</b> That's the point.</div>
|
||||
<div class=spacer></div>
|
||||
<div class=foot><span>BCa 95% CI · α=0.05</span><span>reproducible · sealed · lab-only</span></div>
|
||||
</div></body></html>
|
||||
Reference in New Issue
Block a user