{#snippet party(p: Party)} {#if p.avatar}{#if !faceless.has(p.avatar)} { if (p.initial) faceless.add(p.avatar!); else (e.currentTarget as HTMLImageElement).style.visibility = "hidden"; }} />{:else}{/if}{/if} {p.name} {/snippet}
    (hovered = e.pointerType !== "touch")} onpointerleave={() => (hovered = false)} onfocusin={() => (focused = true)} onfocusout={(e) => (focused = e.currentTarget.contains(e.relatedTarget as Node | null))} > {#each items as { key, n }, i (key)} {#if SHOWN - 1 - i < landed || i >= SHOWN} {@const slot = SLOTS[i]} {@const when = ago(n.at)}
  1. = SHOWN && "gone"]} inert={i >= SHOWN} style:--x="{slot.x}px" style:--y="{slot.y}px" style:--lit={slot.lit} style:z-index={10 - i} > {@render party(n.actor)} {n.verb} {@render party(n.subject)} {#if when}{/if}
  2. {/if} {/each}