⋯ 973 unchanged lines
</p>
</section>
<section class="scene" data-scene="providers">
<section class="scene" data-scene="providers" id="providers">
<span class="section-kicker">Provider comparison</span>
<h2>Different APIs, same request shape.</h2>
<p>
⋯ 54 unchanged lines
The request starts with a stable instruction.
</p>
</div>
<div class="scene-chip" id="sceneChip">1/10</div>
<div class="scene-chip" id="sceneChip">1/12</div>
</div>
<div class="timeline">
⋯ 19 unchanged lines
</aside>
</div>
<footer>
<div class="page-shell">
Draft prototype for review. The visual is intentionally generic:
user, assistant, system prompt, tools, schema, messages, marker.
</div>
</footer>
<script>
const scenes = [
{⋯ 540 unchanged lines
syncQueued = false;
const activationLine = Math.min(window.innerHeight * 0.28, 220);
let active = sceneEls[0];
const nearBottom =
window.scrollY + window.innerHeight >=
document.documentElement.scrollHeight - 24;
sceneEls.forEach((sceneEl) => { const heading = sceneEl.querySelector("h2") || sceneEl; if (heading.getBoundingClientRect().top <= activationLine) { active = sceneEl;
}
});
if (nearBottom) { active = sceneEls[sceneEls.length - 1];
}
if (active.dataset.scene !== activeSceneId) { render(active.dataset.scene);
⋯ 20 unchanged lines