{% set x = c.ctx %}

Tones and a breath pacer for a timed headspace sit. The clock is never touched — a sit neither earns nor costs lock time, on purpose.

{% for slug, s in x.library.items() %} {% endfor %}
ScoreLengthsShape
{{ s.title }}
{{ slug }}
{{ x.lengths.get(slug, [])|join(' · ') }} min {{ s.segments|map(attribute='name')|join(' → ') }}

{% if x.channels_ok %}Left/right check passed — binaural scores are offered. {% else %}⚠️ Left/right check not done. Binaural is inert on a single earbud and becomes a different stimulus on a speaker, and the browser genuinely cannot tell: a single AirPod still reports two channels. The check is three taps on the Trance page. {% endif %}

Scores are code, not rows — there is no score editor and no trance_scores table until someone wants to author one in the browser. See the guide.