The body between {define 'card'} and {/define}
becomes the template of a new tag, {card}, exactly as if it stood in
_tags/card.pad. Defining prints nothing; every use of the tag renders the body,
where the use stands and with the fields there.
Everything a file-based custom tag can do works in the body: {#name}
reads a parameter of the use, {parms} declares
them (a bare name required, name=default filling in),
@content@ takes the content of a pair use in, and
{slot}s take named fills. A define can use
itself, for rows below the current one.
The body is kept as written and rendered at each use, so a field in it is read at the use,
not at the definition. A define exists from the point it is walked - like a
{content} or {data} store - so a use above the
{define} is an unknown tag. {define:card} asserts
that the name is a define.
Under the strict check a name that is a built-in or application tag, or already a
{macro}, is an error, and so is a define
without a name or without a body. Use a define for markup with a frame - content and slots;
use a macro when the parameters should read as plain fields.