EVEglyphDesign · PAIX · rule one: the body EgD-PAIX-SU-001

The Stand-Up · importable interrupt

Every twelve minutes, the level stops and URIEL stands up.

Not skippable. Not a penalty. Nothing is lost by stopping. This page is the working component and the integration harness — any level in PAIX imports the same file and inherits the rule.

12:00 until the next Stand-Up · counts play time only, pauses when the tab is hidden

What it does to the child's body

Import it

<script type="module">
  import { StandUp } from '../standup/standup.js';

  const standUp = StandUp.install({
    asset:    '../opening/assets/uriel.png',
    onPause:  () => level.pause(),   // your level stops here
    onResume: () => level.resume(),  // and picks up exactly where it was
  });
</script>

Classic script tag also works — the file exposes window.PaixStandUp. The component ships its own styles, needs no build step, makes no network call, and stores nothing but a millisecond count in localStorage on the device.

Options

OptionDefaultWhat it is
intervalMs720000Play time between interrupts. Twelve minutes is canon; lower it for younger cohorts, never raise it.
asset./assets/uriel.pngPath to the URIEL cutout from the level's own folder.
onPause / onResumenullStop and restart the level. Also fired as DOM events.
onStepnullCalled with each stretch step, for levels that want their own cue.
stepseyes / spine / reachOverride the stretch. Each step needs a seated alternative or it will not seat.
persisttrueDevice-local elapsed count. Set false to store nothing at all.
countIdleAsPlayfalseHidden tabs and blurred windows do not count as play.
calmfalseFreezes all motion. prefers-reduced-motion does this automatically.

Methods and events

CallEffect
standUp.trigger()Run it now — for teachers, harnesses and tests.
standUp.remaining()Milliseconds of play left before the next one.
standUp.pause() / .start()Hold and resume the play clock, e.g. across your own menus.
standUp.reset()Zero the clock. Levels should call this after their own long cutscene.
document.addEventListener('paix:standup:start' | 'paix:standup:end', …)For anything that is not the level itself — audio, telemetry-free logging, a village surface.

What it refuses to do