Change a draft with one or more operations, applied together as one revision and one Undo: details, theme, update a block's attributes, insert/replace blocks written as source, move, duplicate, remove, rewrite the whole layout, switch Template, Size, name. Use block ids from the latest source. Returns the new source, sketch and review; fix anything it marks FIX. Setting a detail the design does not show places a block for it (field-…); to show it elsewhere, move that block or write your own bound block, which replaces it. Side effects: only the draft changes, and the revision before stays in the draft's history (undo_signature_edit restores it). Source: tags are blocks (<stack> vertical group, <row> columns, <text>, <image>, <button>, <rule>, <spacer>); attributes are the block's fields and style, in px. Type on a <row> or <stack> (fontFamily, fontSize, fontWeight, color, lineHeight) passes to the text inside it, as in CSS, and reads back on each text; a button keeps its own colour. lineHeight up to 4 ("1.4") is a multiple of each text's font size, stored in px; in em or % on a row or stack, it is of that group's font size, as in CSS. Bind details instead of typing them: <text binding="title"/>, <image imageSlot="photo" …/>, <image binding="linkedin" socialIconStyle="round" …/>, <button linkBinding="booking">Book a call</button>. Theme colours: color/background/borderColor="accent|text|muted|icon". Email-table idioms: columns are a <row> of stacks; a vertical bar is borderLeft+paddingLeft on a stack; a card is background+padding on a stack; a short accent line is <rule width="40" borderTop="2"/> inside a stack that has its own width (a stack without one shrinks to its narrowest set-width block); space with gap, padding or <spacer>; a width is the block's content, with its padding and border drawn around it, so a row's columns fit when their widths, paddings, borders and gaps add up to its room; an image or button is sized by imageWidth and imageHeight (a button is 200×32 unless set); a label pill is a <button> without a link; a monogram or initials tile is a square one: <button background="accent" imageWidth="40" imageHeight="40" fontWeight="700">MO</button>; credentials follow the name in one <row inline="true">: <text bind="name"/><text bind="credentials" prefix=", "/>, never in a column of their own; when that line would wrap, the credentials take a line of their own under the name, without the comma: <text bind="credentials"/>. Blocks: <stack> <row> <text> <image> <button> <rule> <spacer>. Block attributes: id, label, href, linkBinding, src, assetPath, alt, prefix, suffix, imageWidth, imageHeight, crop, radius, background, backgroundToken, imageSlot, socialIconStyle, binding, shownWith, showsAddress, hidden; a crop is "zoom x y": zoom a percentage from 100 (the whole picture) to 300, x and y from -1 to 1 (0 0 is centred), e.g. crop="140 0 -0.2". Style attributes: width, height, fill, fontFamily, fontSize, lineHeight, fontWeight, color, colorToken, borderColorToken, align, valign, italic, underline, paddingTop, paddingRight, paddingBottom, paddingLeft, gap, inline, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderStyle. Short forms: color/background/borderColor="accent|text|muted|icon" use the theme, padding="t r b l", bind=binding, slot=imageSlot.
edit_signature