Rising Tide Docs
For ArtistsDrawing a Template

The Markers

Every marker you can place in a Rising Tide template - text slots, the content region, stacked lines, and the layers the protocol injects.

Four kinds of marker. You will use the first two on every template and may never need the other two.

Text slots

Tag any <text> element with data-slot and the protocol replaces its contents.

<text data-slot="title"
      x="350" y="170"
      font-family="Georgia, serif" font-size="36" font-weight="600"
      text-anchor="middle" fill="#28251e">Title goes here</text>

Everything about how it looks is read off the element you drew. Position, size, family, weight, alignment, colour - the protocol takes all of it from your markup. There is no separate place to configure typography, and nothing overrides your choices.

The placeholder text you type inside the element is for your eye only. It is replaced at render time and never appears anywhere.

SlotWhat lands there
titlethe piece's title
subtitleits subtitle
authorwho made it
timestampthe date it was published
editionNumberthe numbered copy - #0042
recipientthe whole salutation of an open letter, including the "Dear"
line1, line2, line3, ...the lines of a short-form piece, one per slot

Which of these a file must carry depends on the kind of piece it is drawn for. A template that misses a required marker is refused when you submit it, with the name of the marker:

Kind of pieceRequiredOptional
Haikutitle, subtitle, author, line1 to line3, timestamp, editionNumberstickerLayer
Tankathe haiku set plus line4, line5stickerLayer
Sonnetthe haiku set plus line4 to line14stickerLayer
Basic pageauthor, content, timestamp, editionNumbertitle, subtitle, stickerLayer
Open letterrecipient, author, content, timestamp, editionNumbertitle, subtitle, stickerLayer

Tickets, brackets and game trophies carry slots of their own (an event name and venue, a tournament and a score, a winner and a pot), and the Studio names any a file is missing.

A haiku uses line1 through line3. A tanka uses five. Short forms use numbered line slots because each line is placed exactly where you drew it; long-form pieces use the content region below instead.

The content region

For anything long enough to need wrapping - an open letter, an open-format page - draw one box and let the protocol flow the text into it.

<foreignObject data-slot="content" x="100" y="280" width="500" height="820">
  <div xmlns="http://www.w3.org/1999/xhtml"
       style="font-family: Georgia, serif; font-size: 18px; line-height: 30px; color: #28251e;">
    Placeholder for your own eye.
  </div>
</foreignObject>

The box comes from the four attributes. The type comes from the div style inside it.

Write the line height in pixels. line-height: 30px, never line-height: 1.65. A bare ratio is rejected outright rather than guessed at, and that refusal is deliberate - a ratio that quietly resolved to a default is how a file can look correct in your editor and set wrong in every render.

Only one content region per file. If you draw two, only one of them is used.

Stacked lines

When several numbered line slots belong together as a block - the lines of a poem - tag them with the same data-flow-group and they lay out in the order they appear in your file.

<text data-slot="line1" data-flow-group="poem" ...>first line</text>
<text data-slot="line2" data-flow-group="poem" ...>second line</text>
<text data-slot="line3" data-flow-group="poem" ...>third line</text>

Without the group, each line sits exactly at the y you gave it - which is what you want when the design places them deliberately. With the group, they stack, which is what you want when the number of lines can vary.

Injected layers

Three markers tag a place rather than a piece of text. You draw the space; the protocol puts something into it.

MarkerWhat arrives
data-slot="stickerLayer"a sticker, if the creator applied one. An empty group: its transform="translate(x, y)" marks the open paper where a sticker sits well, which is where a new sticker starts. It is a suggested spot, not an origin, and stickers are placed anywhere on the canvas
data-slot="qrCodeSvg"a QR code, on ticket templates
data-slot="bracketGrid"the tournament grid, on bracket templates

These carry no text and no typography. Put the QR code and tournament grid markers on a group or a rectangle at the position and size you want the layer to occupy. Keep the sticker marker clear of your text and at least 100 pixels from the right and bottom edges.

What is not a marker

data-slot is the whole vocabulary. There is no way to declare a variable, run a condition, or loop over anything - a template is a drawing with named holes in it, not a program. If your design needs something the markers above cannot express, tell us rather than working around it.