{
  "groups": [
    {
      "title": "Setup And Defaults",
      "guide": "setup.md",
      "intro": "Install setup before document annotations. Configuration can precede it. Reapply setup after replacing a native page foreground/background; identities and counters persist.",
      "entries": [
        {
          "names": [
            "deixis-setup-notes"
          ],
          "setup": "installs",
          "summary": "Document show rule: installs registration, references, visibility, validation and optional page overlays.",
          "args": [
            "override-page-footnotes",
            "page-overlays",
            "foreground",
            "background"
          ],
          "call": "#show: deixis-setup-notes",
          "note": "Set page geometry/layers first. Page footnotes default to native flow; override-page-footnotes: true makes the foreground overlay their default. Host themes may install both overlay hooks with page-overlays: false.",
          "returns": "content \u2192 content"
        },
        {
          "names": [
            "deixis-page-overlay"
          ],
          "setup": "setup",
          "summary": "Host integration hook for one page overlay; does not initialize the annotation registry.",
          "args": [
            "layer"
          ],
          "call": "deixis-page-overlay(layer: \"foreground\")",
          "note": "Install background too: it records page geometry. See the setup guide for host-owned/scoped composition.",
          "returns": "content"
        },
        {
          "names": [
            "deixis-set",
            "deixis-configure"
          ],
          "setup": "free",
          "summary": "Updates subsequent defaults in the current Deixis scope; ordinary Typst brackets do not create a settings scope.",
          "args": [
            "omit",
            "palette",
            "numbering",
            "stroke",
            "marker-style",
            "connector",
            "layer",
            "render-single"
          ],
          "call": "deixis-set(palette: \"okabe-ito\")",
          "note": "Top-level `auto` leaves settings unchanged. Type/component maps merge compatible branches; empty maps and branch `auto` have option-specific reset semantics. Resolved `numbering: none` takes no counter value; `deixis-set(numbering: (footnote: \"*\"))` selects a note family. Palette names are `\"deixis\"`, `\"okabe-ito\"`, `\"tol-bright\"`, `\"tol-muted\"` and `\"tableau\"`. `omit: (series: (\"todo\",))` removes selected annotations while preserving passages; `none` includes all series. `deixis-configure` and `short.configure` are identical aliases.",
          "returns": "content",
          "guide": "configuration.md"
        },
        {
          "names": [
            "short"
          ],
          "summary": "Opt-in module of short aliases. Use configure for settings and note-block for Deixis scopes; native block remains available.",
          "setup": "free",
          "args": [],
          "guide": "getting-started.md",
          "call": "#import \"@preview/deixis:0.2.0\": short\n#import short: *",
          "returns": "module",
          "note": "Import with `#import \"@preview/deixis:0.2.0\": short as dx` for qualified calls, or import `short` and then `#import short: *`. Wildcard aliases shadow native `footnote`/`ref` and math `attach`/`arrowhead`; use `std.footnote`, `std.ref`, `std.math.attach` and `std.sym.arrowhead`. `configure` avoids the `set` keyword; `note-block` preserves native `block`."
        }
      ]
    },
    {
      "title": "Marks And Identity",
      "guide": "identities.md",
      "intro": "Use id to create the original counter owner; of reuses it. Names accept nonempty strings or labels. An original, its one body and reused marks may appear in any order. Reuse does not add a drawn connector.",
      "entries": [
        {
          "names": [
            "deixis-mark"
          ],
          "setup": "setup",
          "summary": "Unified original/reused mark. Defaults to inline; pins select region mode. A call without id/of is anonymous decoration.",
          "args": [
            "id",
            "of",
            "mark-type",
            "occurrence",
            "marker",
            "numbering"
          ],
          "call": "deixis-mark(id: <detail>)[A passage]",
          "note": "mark-type: \"region\" highlights a passage or pins; \"phantom\" is a semantic origin. Set data on creation, not reuse. Resolved numbering: none takes no counter value; an explicit marker may still display. See shared options for styles, targets and region controls.",
          "returns": "content"
        },
        {
          "names": [
            "deixis-inline-mark"
          ],
          "setup": "setup",
          "summary": "Specialized inline form of deixis-mark, with an optional marked passage.",
          "args": [
            "inline-mode",
            "marker-position"
          ],
          "call": "deixis-inline-mark(of: <detail>)[Another passage]",
          "note": "Box, highlight, underline, parentheses, text-fill and none are available. Reused marks retain the original styles beneath explicit overrides.",
          "returns": "content",
          "guide": "shared-notes.md"
        },
        {
          "names": [
            "deixis-region-mark"
          ],
          "setup": "setup",
          "summary": "Highlights a passage or a pin-defined region, with page-local fragment geometry.",
          "args": [
            "pins",
            "padding",
            "layer",
            "inline",
            "region-shape"
          ],
          "call": "deixis-region-mark(inline: true)[$x^2 + y^2$]",
          "note": "Supply passage or pins, never both. A flow region must fit one page. Foreground/background regions may span pages. Region marker numerals remain foreground.",
          "returns": "content",
          "guide": "regions.md"
        },
        {
          "names": [
            "deixis-phantom-mark"
          ],
          "setup": "setup",
          "summary": "Creates/reuses an invisible semantic original; its body may still carry a numbered marker.",
          "args": [
            "id",
            "of",
            "occurrence",
            "marker"
          ],
          "call": "deixis-phantom-mark(id: <quiet>)",
          "note": "Phantom reuse accepts no passage or appearance overrides. An anonymous phantom draws nothing and consumes no palette slot.",
          "returns": "content"
        }
      ]
    },
    {
      "title": "Bodies And Collections",
      "guide": "ownership.md",
      "intro": "Wrappers accept [body] or [passage][body]. A -body call takes [body]. Wrapper id creates original + body; -body id creates a standalone body. With of, both forms attach only a body. Margin, inset and endnote bodies capture declaration typography; page footnotes use the native footer.",
      "entries": [
        {
          "names": [
            "deixis-footnote",
            "deixis-footnote-body"
          ],
          "setup": "setup",
          "summary": "Allocates a native footer slot at the body declaration, even when its original mark is on another page.",
          "args": [
            "layer",
            "backlink",
            "container-args"
          ],
          "call": "deixis-footnote[An explanation.]",
          "note": "Native flow (the default) paginates long bodies and uses the footer's typography; separator/gap are native footnote.entry settings. Overlay footnotes reserve space but paint whole units. Local block footnotes collect at the block end. numbering: (restart: \"page\", pattern: \"1\") restarts displayed markers on each original page; assigned counts stay stable. HTML uses the native footnote section for every layer. Notes nested in Deixis footnote bodies exceed the HTML layout-pass budget.",
          "returns": "content",
          "guide": "rendering.md"
        },
        {
          "names": [
            "deixis-margin-note",
            "deixis-margin-note-body"
          ],
          "setup": "setup",
          "summary": "Overlay bodies follow the original mark or anchor pin; margin packing may spill onto later existing pages.",
          "args": [
            "width",
            "side",
            "dx",
            "dy",
            "spillover",
            "overflow",
            "mark-align",
            "mark-align-strictness",
            "anchor-pin"
          ],
          "call": "deixis-margin-note(width: 30mm, side: right)[Passage][Explanation.]",
          "note": "Leave a wide page margin. Flow places exactly on the declaration page with no collision packing. overflow: \"error\" checks the final frame. Connector shorthand selects the original mark. HTML appends margin bodies to the document's notes list.",
          "returns": "content",
          "guide": "margin-overflow.md"
        },
        {
          "names": [
            "deixis-sidenote",
            "deixis-sidenote-body"
          ],
          "setup": "setup",
          "summary": "Margin-note presets for the outside margin and loose mark alignment.",
          "args": [
            "side",
            "mark-align-strictness"
          ],
          "call": "deixis-sidenote[A brief aside.]",
          "note": "Uses margin-note configuration/query type. Explicit arguments override the preset; mark-align-strictness: auto resumes configured strictness.",
          "returns": "content",
          "guide": "configuration.md"
        },
        {
          "names": [
            "deixis-comment"
          ],
          "setup": "setup",
          "summary": "Review-comment preset: a margin note in the \"review\" series with lettered markers, author/status data and a bold header.",
          "args": [
            "author",
            "status",
            "series",
            "numbering",
            "header"
          ],
          "call": "deixis-comment(author: \"Ada\", status: \"open\")[Passage][Comment.]",
          "note": "Remove comments in the series for a final copy with `deixis-set(omit: (series: (\"review\",)))`. Other options are margin-note options; `of` is rejected. Pass `numbering: auto` to inherit configured numbering, or `numbering: none` for no automatic marker and no counter value.",
          "returns": "content",
          "guide": "review-comments.md"
        },
        {
          "names": [
            "deixis-inset-note",
            "deixis-inset-note-body"
          ],
          "setup": "setup",
          "summary": "Callout whose page defaults to its body declaration; use anchors, offsets or a placement callback for deliberate positioning.",
          "args": [
            "width",
            "layer",
            "placement",
            "dx",
            "dy",
            "anchor",
            "anchor-pin"
          ],
          "call": "deixis-inset-note(dx: 100pt, dy: 40pt)[Passage][Callout.]",
          "note": "Flow is the factory body layer. Overlay declarations are invisible in flow. The connector layer is independent. Custom containers receive container-args.",
          "returns": "content"
        },
        {
          "names": [
            "deixis-inline-note",
            "deixis-inline-note-body"
          ],
          "setup": "setup",
          "summary": "An explanation in native flow: the wrapper places it right after its passage as an inline aside; a -body call places it where called.",
          "args": [
            "inline",
            "of",
            "breakable",
            "container-args"
          ],
          "call": "deixis-inline-note[term][An inline explanation.]",
          "note": "The wrapper defaults to inline: true and keeps the sentence; inline: false gives a callout after the line (the -body default). Inline decoration bypasses block containers/custom single renderers. breakable: false supplies one frame for an explicit body endpoint.",
          "returns": "content",
          "guide": "containers.md"
        },
        {
          "names": [
            "deixis-endnote",
            "deixis-endnote-body"
          ],
          "setup": "setup",
          "summary": "Declares a collected explanation, rendered only by an eligible endnote printer.",
          "args": [
            "series",
            "backlink",
            "container-args"
          ],
          "call": "deixis-endnote[A collected explanation.]",
          "note": "Wrapper series defaults to \"endnote\"; attachments inherit the original series. The printer controls where it appears. Body settings are retained until printing. Margin, inset, inline and footnotes nested in endnote bodies converge in PDF and HTML within the documented layout limits.",
          "returns": "content",
          "guide": "collected-notes.md"
        },
        {
          "names": [
            "deixis-print-endnotes"
          ],
          "setup": "setup",
          "summary": "Prints unprinted eligible bodies in source order; successive printers do not duplicate output.",
          "args": [
            "target",
            "series",
            "after",
            "before",
            "render-group",
            "container-args"
          ],
          "call": "deixis-print-endnotes()",
          "note": "Omitted overrides retain body settings. The grid bypasses per-note containers for default aligned singles; a series with a custom single renderer is stacked. Select `deixis-native-render-group` to use containers with default singles. `after`/`before` are exclusive source boundaries.",
          "returns": "content",
          "guide": "collected-notes.md"
        }
      ]
    },
    {
      "title": "Connections And Drawing",
      "guide": "connectors.md",
      "intro": "A body connector is the short path for margin/inset notes. Independent edges select document endpoints without creating or moving them. Connections paint in their own foreground/background layer, below bodies at matching priorities.",
      "entries": [
        {
          "names": [
            "deixis-connect"
          ],
          "setup": "setup",
          "summary": "Draws an independent edge between marks, bodies, attached objects or pins; declarations may precede endpoints.",
          "args": [
            "from",
            "to",
            "connector"
          ],
          "call": "deixis-connect(from: (node: <a>), to: (node: <b>))",
          "note": "Bare from IDs select original marks; bare to IDs select bodies. Use (mark: id, occurrence: name), (body: id, point: \"end\"), (node: id) or (pin: target) explicitly. Default route is straight, or sharp orthogonal inside deixis-routing.",
          "returns": "content",
          "guide": "independent-connections.md"
        },
        {
          "names": [
            "deixis-routing"
          ],
          "setup": "setup",
          "summary": "Show-rule wrapper that captures a policy for individual connections and enabled margin/inset shorthand.",
          "args": [
            "policy",
            "nodes",
            "clearance",
            "spacing",
            "rounds",
            "max-searches"
          ],
          "call": "#show: deixis-routing.with(policy: \"avoid\")",
          "note": "manual keeps native routes; avoid searches independently; separate adds bounded group repair. Search needs sharp orthogonal geometry. Registered objects stay fixed. Nested wrappers form separate groups.",
          "returns": "content \u2192 content",
          "guide": "document-routing.md"
        },
        {
          "names": [
            "deixis-route"
          ],
          "setup": "free",
          "summary": "Builds source-local line/cubic geometry from finite absolute coordinates, optionally using a prepared scene.",
          "args": [
            "from",
            "to",
            "route",
            "via",
            "segments",
            "radius",
            "scene",
            "page"
          ],
          "call": "deixis-route(from: (0pt, 0pt), to: (100pt, 40pt), route: \"curve\")",
          "note": "Coordinates use x-right/y-down. origin is the source; segments are relative to it. No measurement or painting. Scene routes can fail: inspect status/detail before preparation. Avoidance requires sharp orthogonal paths.",
          "returns": "route / failure record",
          "guide": "numeric-routing.md"
        },
        {
          "names": [
            "deixis-routing-scene"
          ],
          "setup": "conditional",
          "summary": "Prepares reusable fixed rectangles/points in caller-defined page planes.",
          "args": [
            "nodes",
            "clearance",
            "escape",
            "bend-cost",
            "bounds",
            "pages"
          ],
          "call": "deixis-routing-scene(nodes: ((id: <a>, bounds: (left: 0pt, top: 0pt, right: 30pt, bottom: 20pt)),))",
          "note": "Numeric nodes need no setup. Selectors for document marks/bodies/pins need setup + context. Node behavior is avoid, ignore, cut or cross; the latter two do not add visual indicators.",
          "returns": "scene record",
          "guide": "routing-scenes.md"
        },
        {
          "names": [
            "deixis-route-group"
          ],
          "setup": "free",
          "summary": "Plans up to sixteen explicit sharp orthogonal page fragments together against a prepared scene.",
          "args": [
            "edges",
            "scene",
            "spacing",
            "weight",
            "max-detour",
            "rounds",
            "max-searches",
            "max-expansions"
          ],
          "call": "deixis-route-group(((from: <a>, to: <b>),), scene: scene)",
          "note": "Result routes retain input order. quality has before/after metrics; stats reports bounded work. No registration or painting. Complete separation/global optimality is not guaranteed. Preparing a document-derived scene still needs setup.",
          "returns": "(routes, quality, stats)",
          "guide": "route-groups.md"
        },
        {
          "names": [
            "deixis-prepare-connector"
          ],
          "setup": "free",
          "summary": "Prepares existing geometry for native/custom paint without repeating routing. Head callbacks run here.",
          "args": [
            "route",
            "stroke",
            "heads",
            "cuts",
            "gap-marks"
          ],
          "call": "deixis-prepare-connector(path, heads: (body: \"stealth\"))",
          "note": "Place the painted request at path.origin yourself. Relative styles/custom heads may need context. It consults no document defaults, page layer or automatic crossing group.",
          "returns": "painter request",
          "guide": "numeric-routing.md"
        },
        {
          "names": [
            "deixis-render-connector"
          ],
          "setup": "free",
          "summary": "Paints a prepared connector request, including shafts, heads and optional decorations.",
          "args": [
            "request"
          ],
          "call": "deixis-render-connector(request)",
          "note": "Numeric painting adds no layout dimensions; reserve the drawing area and place at the source origin. In document callbacks this is the default-painter delegation helper.",
          "returns": "content",
          "guide": "numeric-routing.md"
        },
        {
          "names": [
            "deixis-arrowhead"
          ],
          "setup": "free",
          "summary": "Constructs a reusable head specification; stealth is a filled triangular head with an open notch.",
          "args": [
            "shape",
            "length",
            "width",
            "fill",
            "stroke",
            "trim",
            "render"
          ],
          "call": "deixis-arrowhead(shape: \"stealth\", length: 7pt, width: 5pt)",
          "note": "Other native shapes include triangle, vee, circle, diamond and bar. Custom render(request) returns body, trim and bounds in a tip-local +x frame. Omitted dimensions scale with the shaft. Disable endpoint heads with heads: none.",
          "returns": "head specification"
        },
        {
          "names": [
            "deixis-render-head"
          ],
          "setup": "free",
          "summary": "Paints a prepared head in its local frame. A missing head or zero direction emits nothing.",
          "args": [
            "head",
            "tip",
            "forward"
          ],
          "call": "deixis-render-head(request.heads.body, request.route.end, request.route.end-tangent)",
          "note": "Use prepared heads from the connector request, not the raw specification returned by deixis-arrowhead.",
          "returns": "content",
          "extension": true
        }
      ]
    },
    {
      "title": "Pins And Attachments",
      "guide": "pins.md",
      "intro": "Pin names and attachment IDs accept string/label spellings. They have independent namespaces from note IDs. A pin is a point; an attached routing object registers one live, nonbreaking frame.",
      "entries": [
        {
          "names": [
            "deixis-pin"
          ],
          "setup": "setup",
          "summary": "Publishes a geometric anchor at its declaration; padding expands bounds around that anchor.",
          "args": [
            "name",
            "scope",
            "padding",
            "extra-data"
          ],
          "call": "deixis-pin(<anchor>, padding: 0pt)",
          "note": "Default \"text\" padding follows local text metrics. Percentages have no pin-size basis. Scope namespaces pins independently of note/block identities.",
          "returns": "content"
        },
        {
          "names": [
            "deixis-attach"
          ],
          "setup": "setup",
          "summary": "Wraps rendered content to attach pins, scan marked tokens, or register a selectable routing node.",
          "args": [
            "id",
            "behavior",
            "pins",
            "scope",
            "inline",
            "padding",
            "pin-padding"
          ],
          "call": "deixis-attach(id: <card>)[A card]",
          "note": "id registers a routing frame with avoid behavior by default. Generated node ports are the four side midpoints. pins can define custom outlets. Explicit avoid/ignore/cut/cross also registers anonymous nodes. Pin-only attachments keep their native breakability.",
          "returns": "content",
          "guide": "document-routing.md"
        }
      ]
    },
    {
      "title": "Scopes And Counters",
      "guide": "scopes.md",
      "intro": "Scope names and note IDs are independent. Blocks own rendering instances and counter streams; thread shares a rendering domain, while counter synchronization only shares numbering.",
      "entries": [
        {
          "names": [
            "deixis-block",
            "deixis-minipage"
          ],
          "setup": "setup",
          "summary": "Creates local annotation rendering/settings/counter scope around native content.",
          "args": [
            "id",
            "thread",
            "sync-counters-with",
            "breakable",
            "width",
            "height",
            "inset"
          ],
          "call": "deixis-block(id: <section>)[Local content.]",
          "note": "Minipage maps margin to internal inset and fixes outset at 0pt. Named IDs are unique; automatic scopes stay private. Breakable blocks use per-page margin frames and collect local footnotes at the block end. Page-local numbering restarts displayed markers at each original page, including inside multi-page blocks. HTML prints local footnote lists where their block ends.",
          "returns": "content",
          "guide": "blocks.md"
        },
        {
          "names": [
            "deixis-note-counter"
          ],
          "setup": "setup",
          "summary": "Reads the assigned counter value for a scope and literal series. Use inside context.",
          "args": [
            "target",
            "series"
          ],
          "call": "#context deixis-note-counter()",
          "note": "Unused streams start at zero. This is not a total annotation count. Page numbering resets do not reset note counters. Opt-in page-local display markers do not change this assigned value.",
          "returns": "integer",
          "guide": "counters.md"
        },
        {
          "names": [
            "deixis-update-note-counter"
          ],
          "setup": "setup",
          "summary": "Sets a stream to an integer or applies current \u2192 integer. The next numbered original increments that value.",
          "args": [
            "value",
            "target",
            "series"
          ],
          "call": "deixis-update-note-counter(0)",
          "note": "Unnumbered originals, bodies, references and reuse never increment. Earlier notes keep assigned numbers. Endnote wrappers use the \"endnote\" series; select it explicitly for their resets.",
          "returns": "content",
          "guide": "counters.md"
        }
      ]
    },
    {
      "title": "References And Custom Views",
      "guide": "queries.md",
      "intro": "Queries return safe semantic records and summaries instead of replaying live annotation content. An annotation remains one entry even when several marks share its body.",
      "entries": [
        {
          "names": [
            "deixis-ref"
          ],
          "setup": "setup",
          "summary": "References one or more annotations, retaining original marker styling and native fallback for ordinary labels.",
          "args": [
            "..targets",
            "supplement",
            "form",
            "marker-style"
          ],
          "call": "deixis-ref(<detail>)",
          "note": "@detail uses the native bridge installed by setup. Repeated reference targets deduplicate; compatible numeric ranges can collapse. Explicit marker-style overrides formatting.",
          "returns": "content",
          "guide": "references.md"
        },
        {
          "names": [
            "deixis-query-notes"
          ],
          "setup": "setup",
          "summary": "One safe structured record per selected annotation. Page queries follow native body order; the unfiltered catalogue follows source order. Call inside context.",
          "args": [
            "target",
            "thread",
            "include-types",
            "series",
            "include-unpaired",
            "after",
            "before",
            "page",
            "order"
          ],
          "call": "#context deixis-query-notes(page: here().page())",
          "note": "Page queries include standalone bodies and require complete unique live spans. order: \"source\" / \"body\" and include-unpaired override automatic defaults. Each record retains all shared marks, safe summaries and optional body metadata; no live body content is returned.",
          "returns": "array of records"
        },
        {
          "names": [
            "deixis-note-outline"
          ],
          "setup": "setup",
          "summary": "Ready-made linked list over the annotation catalogue; custom callbacks can replace summaries or presentation.",
          "args": [
            "title",
            "include-types",
            "include-unpaired",
            "group-by",
            "summary"
          ],
          "call": "deixis-note-outline()",
          "note": "One entry per annotation, with links to all marked pages. Use query-notes for cards/tables or occurrence indexes. data can supply a custom title/status.",
          "returns": "content",
          "guide": "outlines.md"
        },
        {
          "names": [
            "deixis-plain"
          ],
          "setup": "setup",
          "summary": "Shows repeated content with its marked passages but without creating marks, bodies or connections again.",
          "args": [
            "body"
          ],
          "call": "deixis-plain(heading.body)",
          "note": "Native outlines apply it to heading and caption entries automatically. Use it for running headers and custom tables of contents that repeat annotated headings.",
          "returns": "content",
          "guide": "outlines.md"
        }
      ]
    },
    {
      "title": "Rendering Extension Points",
      "guide": "custom-renderers.md",
      "intro": "These hooks consume supplied records or content; they do not create a registered annotation. When used in live document annotations, keep setup active and preserve destination/content helpers. Relative typography and backlinks may require context.",
      "entries": [
        {
          "names": [
            "deixis-native-render-single",
            "deixis-aligned-render-single"
          ],
          "setup": "conditional",
          "summary": "Built-in single-body layouts. Native keeps a natural text flow; aligned accepts a shared marker column.",
          "args": [
            "data",
            "inner-width"
          ],
          "call": "deixis-native-render-single(note, ..args.named())",
          "note": "Use supplied data unchanged when delegating. Aligned additionally accepts max-marker-width/max-marker-gap. The container and body-style come from the body record.",
          "returns": "content",
          "extension": true
        },
        {
          "names": [
            "deixis-chicago-render-single"
          ],
          "setup": "conditional",
          "summary": "Chicago endnotes with a first-line indent and a full-size linked marker followed by a period.",
          "args": [
            "data",
            "inner-width"
          ],
          "call": "deixis-print-endnotes(render-single: deixis-chicago-render-single)",
          "note": "Defaults to a 0.5in first-line indent unless an explicit indent setting or printer override applies. Preserves inherited paragraph settings, backlinks, styles and containers. Unnumbered notes omit the marker and period. The default group stacks custom single renderers with the configured gap. HTML uses the native semantic renderer without paragraph indentation.",
          "returns": "content",
          "extension": true,
          "guide": "collected-notes.md"
        },
        {
          "names": [
            "deixis-native-render-group",
            "deixis-aligned-render-group",
            "deixis-grid-render-group"
          ],
          "setup": "conditional",
          "summary": "Stack bodies, align stacked markers, or lay markers/content directly in two grid columns.",
          "args": [
            "notes-data",
            "gap"
          ],
          "call": "deixis-native-render-group(notes, ..args.named())",
          "note": "Native/aligned groups delegate to each single renderer. Grid paints default aligned records directly; a series with another single renderer is stacked natively. Containers alone do not change the grid path. Empty groups produce no content. Supplied records may contain live document behavior.",
          "returns": "content",
          "extension": true,
          "guide": "collected-notes.md"
        },
        {
          "names": [
            "deixis-generate-body-meta",
            "deixis-generate-body-marker",
            "deixis-generate-body-content",
            "deixis-generate-backlinks"
          ],
          "setup": "conditional",
          "summary": "Composable helpers for a custom body renderer: one destination, a marker, live content span, and return links.",
          "args": [
            "data"
          ],
          "call": "[#deixis-generate-body-marker(note)#deixis-generate-body-content(note)]",
          "note": "Emit meta OR marker once; marker already includes meta. Content publishes start/end spans and preserves nested palette ownership. Measurement records suppress live metadata. Backlinks read document origins and need setup/context.",
          "returns": "content",
          "extension": true
        },
        {
          "names": [
            "deixis-plain-container",
            "deixis-rect-container",
            "deixis-alert-container"
          ],
          "setup": "free",
          "summary": "Body wrappers: identity, native rect alias, or a left-bar alert. Container arguments are forwarded separately from shared styles.",
          "args": [
            "body",
            "..args"
          ],
          "call": "deixis-alert-container(stroke: teal + 0.5pt)[Body]",
          "note": "`container-func` accepts `\"plain\"`, `\"rect\"`, `\"alert\"`, `\"stripe\"` and `\"tinted\"`, or a custom function. The first three select these exports; `\"stripe\"` and `\"tinted\"` are named accent presets. Explicit body `stroke`/`fill`/`radius` override preset styles; `container-args` supplies options such as `inset`. `deixis-rect-container` has native `rect` parameters. Alert doubles scalar border thickness on the left; native edge maps remain literal. Built-in containers emit plain text in HTML.",
          "returns": "content",
          "extension": true,
          "guide": "containers.md"
        },
        {
          "names": [
            "deixis-rect-region",
            "deixis-ellipse-region"
          ],
          "setup": "free",
          "summary": "Region-shape callbacks for rectangular or elliptical bounds.",
          "args": [
            "..args"
          ],
          "call": "deixis-rect-region(width: 40pt, height: 20pt, fill: teal)",
          "note": "Shape records provide width, height, fill/stroke and rectangle radius. Region registration/fragment selection belongs to the calling mark, not these painters. Use region marks with stroke: none for a highlight; add region-shape: deixis-ellipse-region for an ellipse.",
          "returns": "content",
          "extension": true,
          "guide": "regions.md"
        }
      ]
    },
    {
      "title": "Low-Level Layout Hooks",
      "guide": "rendering.md",
      "intro": "Advanced hooks use supplied measured records and geometry. Most documents should choose note adapters, container/render callbacks, or routing APIs instead. Native layout and document lookup are separate responsibilities.",
      "entries": [
        {
          "names": [
            "deixis-margin-note-exact-layout",
            "deixis-margin-note-adaptive-layout",
            "deixis-margin-note-flow-layout"
          ],
          "setup": "conditional",
          "summary": "Numeric margin adapter hooks: exact ignores collisions; adaptive packs; flow distributes available space.",
          "args": [
            "notes",
            "top-bound",
            "bottom-bound",
            "start-x",
            "text-width",
            "end-y",
            "left-space",
            "right-space",
            "current-page"
          ],
          "note": "All share min-margin-width, pushed-notes and extra arguments. Supply accepted page geometry and prepared notes. They paint locally through the layout adapter. These hooks are not the body layer: \"flow\" switch.",
          "returns": "content",
          "extension": true
        },
        {
          "names": [
            "deixis-place-anchored"
          ],
          "setup": "setup",
          "summary": "Immediate placement relative to selected pin bounds on the call's page.",
          "args": [
            "body",
            "dx",
            "dy",
            "anchor",
            "pin",
            "body-size"
          ],
          "note": "Pin lookup reads document geometry. Native placement can disturb flow.",
          "returns": "content",
          "extension": true,
          "guide": "pins.md"
        },
        {
          "names": [
            "deixis-absolute-place"
          ],
          "setup": "conditional",
          "summary": "Immediate placement in physical page coordinates, ignoring margins.",
          "args": [
            "..args"
          ],
          "call": "deixis-absolute-place(top + left, dx: 30pt, dy: 40pt)[Content]",
          "note": "Accepts content, or alignment + content; dx/dy default to 0pt. Fixed page dimensions need no setup. An auto page axis needs setup-provided page frames for accepted dimensions. This is placement, not dimension reservation.",
          "returns": "content",
          "extension": true
        }
      ]
    }
  ],
  "functions": [
    {
      "name": "short",
      "description": "Opt-in short names for every public function. Import with\n `#import \"@preview/deixis:0.2.0\": short`, then `#import short: *`, or use\n `short as dx` and qualified calls such as `dx.footnote`.\n `configure` aliases `deixis-configure` / `deixis-set`; `note-block` aliases\n `deixis-block`, preserving native `block`. Other names omit `deixis-`.\n Wildcard imports shadow native footnote and ref (use std.footnote/std.ref)\n and, in math, attach/arrowhead (use std.math.attach / std.sym.arrowhead).\n These are direct aliases, not wrappers."
    },
    {
      "name": "deixis-page-overlay",
      "description": "Paints Deixis in a page layer owned by a host theme.\n\n Use with `deixis-setup-notes(page-overlays: false)` when a presentation\n framework owns page settings. Install this content through its page API.\n\n - layer (str): `\"foreground\"` or `\"background\"`.",
      "args": {
        "layer": {
          "description": "",
          "default": "\"foreground\""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-setup-notes",
      "description": "Installs document registration/show rules, validation, and optional page overlays.\n\n Wrap document notes, pins, scopes, counters, queries and declared connections\n with `#show: deixis-setup-notes.with(...)`. Resolved numeric routes/scenes,\n head/shaft painting and configuration do not require note setup.\n\n ```warning\n `deixis` uses the page foreground and background to display some notes.\n Replacing a native page foreground/background later removes that layer's\n compositor, while registration and show rules remain installed. Reapply\n setup after the new page settings to restore automatic composition. Reuse\n the same bound setup function when retaining nondefault setup options.\n Themes and scoped page styles should own their layers with `page-overlays:\n false` and include `deixis-page-overlay` in each background/foreground.\n The background hook also publishes physical page geometry.\n ```\n\n - body (content): The main document content to wrap.\n - foreground (none, content): Custom content to inject into the foreground overlay layer.\n - background (none, content): Custom content to inject into the background overlay layer.\n - override-page-footnotes (bool): Default unspecified page-footnote bodies to native flow (`false`) or the foreground overlay (`true`); explicit layers retain ownership.",
      "args": {
        "body": {
          "description": "The main document content to wrap.",
          "types": [
            "content"
          ]
        },
        "foreground": {
          "description": "Custom content to inject into the foreground overlay layer.",
          "default": "none",
          "types": [
            "none",
            "content"
          ]
        },
        "background": {
          "description": "Custom content to inject into the background overlay layer.",
          "default": "none",
          "types": [
            "none",
            "content"
          ]
        },
        "override-page-footnotes": {
          "description": "Default unspecified page-footnote bodies to the foreground overlay instead\n of native flow. Explicit body layers and deixis-set layers are honored.\n\n ```info\n Native flow paginates long bodies. Overlays reserve complete bodies and\n can group series with aligned markers, but cannot split across pages.\n ```",
          "default": "false",
          "types": [
            "bool"
          ]
        },
        "page-overlays": {
          "description": "Automatically install page layers. Set false when a host theme calls\n deixis-page-overlay through its own background/foreground configuration.",
          "default": "true",
          "types": [
            "bool"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-set",
      "description": "Updates defaults within the current Deixis scope.\n Also available as `deixis-configure` and `short.configure`.\n\n Defaults apply to subsequent declarations until the current `deixis-block`\n ends; outside a block they are document defaults. Ordinary Typst content\n brackets do not create a Deixis settings scope. Top-level `auto` arguments\n leave existing settings unchanged.\n\n ```tip\n *Type-Specific Styling:* Style parameters accept either a global value or a `dictionary` targeting specific note types\n (e.g., `stroke: (margin-note: red, inset-note: blue)`).\n A dictionary whose keys are all scope keys selects note types or components.\n Other dictionaries retain their native value shape; empty stroke/radius/position,\n connector, and arrowhead dictionaries are literal values.\n - Type keys: `inline-mark`, `phantom-mark`, `region-mark`, `footnote`,\n   `endnote`, `margin-note`, `inset-note`, `inline-note`, `connection`.\n - Component keys: `mark`, `body`, `connector`.\n   - `\"nodes\"` indicates both `\"mark\"` and `\"body\"` (excluding `\"connector\"`).\n - Wildcard key: `\"rest\"` indicates anything else.\n Body-only options (including renderers and containers) select the body/nodes\n branch automatically. Numbering/region shape select mark, and connector\n options select connector. Arrowhead mark/body maps describe endpoints.\n Repeated updates merge compatible dictionaries. Changing between native value\n and scope dictionaries, or between type and component scopes, replaces the\n old structure. An explicit empty dictionary clears it at that level.\n Route records `(kind: ..., tension: ...)` are complete literal values and\n replace atomically. String routes retain defaults; catmull-rom records can\n select centripetal/uniform parameterization. B-spline uses influence controls;\n Hobby uses global tension (minimum 0.75) and free-end curl (default 1).\n Controls belong to the algorithm.\n Sidenotes are margin-note presets; use margin-note settings, not sidenote keys.\n ```\n\n - palette (auto, none, str, array): A built-in palette name or nonempty color sequence starts a fresh cycle in this Deixis scope; none disables later allocation and auto leaves it unchanged.\n - numbering (auto, none, str, function, dictionary): The numbering style for markers; none disables automatic markers and counter allocation.\n - marker-style (auto, function, dictionary): The styling function `(content) => content` for note markers.\n - body-style (auto, function, dictionary): The styling function `(content) => content` for note bodies.\n - backlink (auto, bool, str, dictionary): Enables or disables clickable backlinks from bodies to marks. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n - marker-position (auto, alignment, dictionary): Mark marker placement.\n - inline-mode (auto, str): The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n - stroke (auto, stroke, none, dictionary): The border stroke.\n - fill (auto, color, none, dictionary): The background fill color.\n - radius (auto, length, dictionary): The border radius.\n - separator (auto, content, none, dictionary): The separator line for block footnote collections and endnotes.\n - clearance (auto, length, dictionary): Vertical spacing before block footnote collections and endnotes.\n - gap (auto, length, dictionary): Vertical spacing between adjacent notes.\n - marker-gap (auto, length, dictionary): Horizontal spacing between the marker and the body text.\n - indent (auto, length, dictionary): The indentation applied to the note body.\n - margin-layout (auto, str): The layout engine for margin notes. Choices: `\"adaptive\"` | `\"flow\"` | `\"exact\"`.\n - min-margin-width (auto, length): Minimum margin width to put margin notes.\n - side-strategy (auto, str): Strategy to select side for margin note. Choices: `\"nearest\"` | `\"strict\"`.\n - mark-align (auto, alignment, dictionary): How margin notes align vertically relative to their marks.\n - mark-align-strictness (auto, str): How strictly to align margin notes to their marks. Choices: `\"strict\"` | `\"loose\"` | `\"none\"`.\n - spillover (auto, bool): Allow margin notes to spill over page boundaries.\n - overflow (auto, str, dictionary): Margin frame policy: \"allow\" or \"error\" after final placement.\n - region-shape (auto, function): Shape drawing function for region marks.\n - layer (auto, str): The rendering layer for region marks and inset notes. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n - render-single (auto, function, dictionary): Note body rendering function.\n - render-group (auto, function, dictionary): Group rendering function for grouped notes (footnote and endnote).\n - container-func (auto, str, function, dictionary): A named body container or function `(content, ..args) => content`.",
      "args": {
        "omit": {
          "description": "Omit annotations created in these series, preserving marked passages.\n Omitted annotations have no counter, body, connector or query identity.\n Reused marks and attached bodies follow the original across scopes and\n forward declarations. References to omitted IDs are errors.\n Use none to include every series; auto leaves the policy unchanged.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "dictionary"
          ]
        },
        "palette": {
          "description": "Optional annotation accent cycle. A color array or a built-in name\n (\"deixis\", \"okabe-ito\", \"tol-bright\", \"tol-muted\", \"tableau\") starts a new\n cycle in the current Deixis scope; none disables it and auto leaves it\n unchanged. Reused marks/bodies keep the original accent; explicit styles win.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "array"
          ]
        },
        "numbering": {
          "description": "The numbering style for the marker. A literal `(restart: \"page\", pattern: \"1\")`\n uses the original mark's physical page and restarts the displayed ordinal.\n Assigned counters/query counts stay unchanged; reuse and attached bodies\n keep the original marker, including inside multi-page blocks. HTML has no\n page boundaries and uses a continuous sequence. Ordinary strings/functions\n keep assigned numbering. Resolved `none` takes no counter value and shows no\n automatic marker; an explicit fixed marker may still display.\n Note-family keys such as `(footnote: \"*\", endnote: \"i\")` number the marks\n those wrappers create, ahead of mark-type keys and rest.\n\n ```example\n #deixis-set(numbering: \"i\")\n #deixis-footnote[A note with roman numbering.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "marker-style": {
          "description": "The styling function `(content) => content` for note markers.\n\n ```example\n #deixis-set(marker-style: (\n   mark: it => text(super(it), fill: red),\n   body: it => text([#it.], fill: blue, weight: \"bold\"))\n )\n #deixis-footnote[A note with custom mark marker style and body marker style.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "function",
            "dictionary"
          ]
        },
        "body-style": {
          "description": "The styling function `(content) => content` for note bodies.\n\n ```example\n #deixis-set(body-style: it => text(it, fill: blue, weight: \"semibold\"))\n #deixis-footnote[A note with custom body style.]\n ```\n\n ```info\n Setting `body-style` will override the default styling, i.e. `it => text(size: 0.85em, it)`.\n Instead, applying custom styling directly to the body content does not.\n ```\n\n ```example\n #deixis-footnote[#text(fill: blue, weight: \"semibold\")[Another note with custom body style.]]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "function",
            "dictionary"
          ]
        },
        "backlink": {
          "description": "Enables or disables clickable backlinks from bodies to marks. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n\n ```example\n #deixis-set(backlink: true)\n #deixis-footnote(id: <deixis-set.backlink>)[A note with backlink.]\n #deixis-ref(<deixis-set.backlink>)\n ```",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str",
            "dictionary"
          ]
        },
        "marker-position": {
          "description": "Mark marker placement.\n\n See `deixis-inline-mark.marker-position` and `deixis-region-mark.marker-position`.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "inline-mode": {
          "description": "The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n\n See `deixis-inline-mark.inline-mode`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "stroke": {
          "description": "The border stroke.\n\n ```example\n #deixis-inset-note(\n   stroke: (mark: red, body: blue),\n   layer: \"flow\",\n )[A note with red mark stroke.][And blue body stroke.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none",
            "dictionary"
          ]
        },
        "fill": {
          "description": "The background fill color.\n\n ```example\n #deixis-inset-note(\n   stroke: none,\n   fill: (mark: red, body: blue),\n   layer: \"flow\",\n )[A note with red mark fill.][And blue body fill.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none",
            "dictionary"
          ]
        },
        "radius": {
          "description": "The border radius.\n\n ```example\n #deixis-inset-note(\n   stroke: yellow,\n   fill: yellow.transparentize(95%),\n   radius: (mark: 0pt, body: 1em),\n   layer: \"flow\",\n )[A note with `0pt` mark radius.][And `1em` body radius.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "connector": {
          "description": "Connector defaults for margin/inset notes and independent connections.\n A route name is shorthand for `(route: name)`; a record sets any of\n route, ports, via/segments, heads, stroke, radius and the other connector\n fields. Records merge with outer defaults field by field; none disables.\n Routes: `\"none\"`, `\"straight-line\"`/`\"polyline\"`, `\"right-angle\"`/`\"orthogonal\"`,\n `\"chamfer\"`, `\"curve\"`, `\"ccr\"`, `\"ucr\"`, `\"b-spline\"` and `\"hobby\"`.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-set(connector: (route: \"curve\", heads: \"stealth\"))\n #deixis-inset-note(dx: 4em, dy: 3em, layer: \"flow\")[Note mark.][Note body.]\n ```\n\n Scope defaults by note type: `connector: (margin-note: \"curve\")`.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "dictionary"
          ]
        },
        "separator": {
          "description": "The separator line for note groups.\n\n ```info\n This affects local block footnote collections and endnote printers. Page\n footnotes share the native footer: configure it once with a document-level\n `set footnote.entry(separator: ...)`, as for `std.footnote`.\n ```\n\n ```example\n #deixis-set(separator: line(length: 50%, stroke: (thickness: 0.5pt, dash: \"dashed\")))\n #deixis-endnote[An endnote separated by a dashed line.]\n #deixis-print-endnotes()\n ```",
          "default": "auto",
          "types": [
            "auto",
            "content",
            "none",
            "dictionary"
          ]
        },
        "clearance": {
          "description": "Vertical spacing before note groups.\n\n ```info\n This affects local block footnote collections and endnote printers. Page\n footnotes use the native `footnote.entry` clearance.\n ```\n\n ```example\n #deixis-set(clearance: 3em)\n #deixis-endnote[A note `3em`-spaced from the main content.]\n #deixis-print-endnotes()\n ```",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "gap": {
          "description": "Vertical spacing between adjacent notes.\n\n ```info\n This affects margin notes, local block footnote collections and endnote\n printers. Page footnotes use the native `footnote.entry` gap.\n ```\n\n ```example\n #deixis-set(gap: 1em)\n #deixis-endnote[Note A.]\n #deixis-endnote[Note B.]\n #deixis-print-endnotes()\n ```",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "marker-gap": {
          "description": "Horizontal spacing between the marker and the body text.\n\n ```example\n #deixis-set(marker-gap: 1em)\n #deixis-footnote[A note with `marker-gap=1em`.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "indent": {
          "description": "The indentation applied to the note body.\n\n ```example\n #deixis-set(indent: 3em)\n #deixis-footnote[A note with `indent=3em`.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "margin-layout": {
          "description": "The layout engine for margin notes. Choices: `\"adaptive\"` | `\"flow\"` | `\"exact\"`.\n - `\"adaptive\"`: Apply a two-pass _rubber band algorithm_ to calculate the y-coordinates of all margin notes in the page; then use `#std.place` to put them into calculated positions.\n - `\"flow\"`: Distribute available space by fractional weights in a shared numeric plan, then place each note at its planned position.\n - `\"exact\"`: Put margin notes exactly where the marker is, ignore if they overlap or not.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "min-margin-width": {
          "description": "Minimum margin width to put margin notes.\n\n ```example\n //| margin: (left: 1.2in, right: 0.5in, y: 0.05in)\n The margin of the minipage is set to `(left: 1.2in, right: 0.5in)`.\n #deixis-set(min-margin-width: 1in)\n #deixis-margin-note[This note prefers the left margin.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "side-strategy": {
          "description": "Strategy to select side for margin note. Choices: `\"nearest\"` | `\"strict\"`.\n\n See `deixis-margin-note-body.side-strategy`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "mark-align": {
          "description": "How margin notes align vertically relative to their marks.\n\n See `deixis-margin-note-body.mark-align`.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "mark-align-strictness": {
          "description": "How strictly to align margin notes to their marks. Choices: `\"strict\"` | `\"loose\"` | `\"none\"`.\n\n See `deixis-margin-note-body.mark-align-strictness`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "spillover": {
          "description": "Allow margin notes to spill over page boundaries.\n\n See `deixis-margin-note-body.spillover`.",
          "default": "auto",
          "types": [
            "auto",
            "bool"
          ]
        },
        "overflow": {
          "description": "Margin body frame overflow: allow preserves placement; error checks final bounds.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "dictionary"
          ]
        },
        "region-shape": {
          "description": "Shape drawing function for region marks.\n\n See `deixis-region-mark.region-shape`.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "layer": {
          "description": "The rendering layer for region marks and inset notes. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n\n See `deixis-region-mark.layer`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority. Higher integers paint later within a page layer.\n Native flow keeps its order; component/type dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "render-single": {
          "description": "Note body rendering function.\n\n `render-single` formats each body; `render-group` arranges collected bodies.\n The examples use endnotes so both settings apply. Page footnotes use the\n native footer group and honor only their single renderer.\n - `native`: _Almost_ pixel-identical to `std.footnote`.\n ```example\n #deixis-set(\n   render-single: deixis-native-render-single,\n   render-group: deixis-native-render-group,\n )\n #deixis-endnote[A normal note.]\n #deixis-endnote(marker: [long marker])[A note with very long marker, and also a long body.]\n #deixis-print-endnotes()\n ```\n - `aligned`: Body markers are aligned, but the notes are still prose-printed.\n ```example\n #deixis-set(\n   render-single: deixis-aligned-render-single,\n   render-group: deixis-aligned-render-group,\n )\n #deixis-endnote[A normal note.]\n #deixis-endnote(marker: [long marker])[A note with very long marker, and also a long body.]\n #deixis-print-endnotes()\n ```\n - `grid`: Body markers and body content are structured in a `grid`.\n ```example\n #deixis-set(\n   render-group: deixis-grid-render-group,\n )\n #deixis-endnote[A normal note.]\n #deixis-endnote(marker: [long marker])[A note with very long marker, and also a long body.]\n #deixis-print-endnotes()\n ```\n\n ```tip\n Custom renderers can combine `deixis-generate-body-marker`,\n `deixis-generate-body-content` and `deixis-generate-backlinks`. Emit the body\n content helper once to preserve navigation spans and nested annotations.\n ```\n\n ```example\n #let custom-render-func(note-data, ..args) = {\n   let body-marker = deixis-generate-body-marker(note-data + (body-marker-style: it => it))\n   rect(\n     ..note-data.styles,\n     inset: (top: 10pt, rest: 5pt)\n   )[\n     #place(center + top, dy: -20pt, rect(\n       stroke: note-data.styles.stroke,\n       fill: white,\n       radius: 1em,\n       body-marker))\n     #deixis-generate-body-content(note-data)\n   ]\n }\n\n #deixis-set(\n   render-single: custom-render-func,\n   render-group: deixis-native-render-group,\n )\n #deixis-footnote[A note with custom render function.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "function",
            "dictionary"
          ]
        },
        "render-group": {
          "description": "Group rendering function for grouped notes (footnote and endnote).\n\n See `deixis-set.render-single`.",
          "default": "auto",
          "types": [
            "auto",
            "function",
            "dictionary"
          ]
        },
        "container-func": {
          "description": "A body-container name (\"plain\", \"rect\", \"alert\", \"stripe\", \"tinted\")\n or function `(content, ..args) => content`. Type/component maps are supported.\n \"stripe\" and \"tinted\" use the annotation accent; explicit body styles win.\n Forward native/custom wrapper options through `container-args` on the note.\n\n ```example\n #import \"@preview/colorful-boxes:1.4.3\": stickybox\n #deixis-set(container-func: (body, ..args) => stickybox(body))\n #deixis-margin-note(target: \"page\")[Yes, we can also do that.]\n ```\n\n ```tip\n `container-func` is only a wrapper around the rendered body of each note and does not have access to the raw notes' data.\n For more sophisticated control, you should use `deixis-set.render-single` or `deixis-set.render-group`.\n ```",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function",
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-configure",
      "description": "Alias of `deixis-set`: updates defaults within the current Deixis scope.\n Both prefixed names are the same function. The short module exports\n `configure`, since `set` is a Typst keyword."
    },
    {
      "name": "deixis-note-counter",
      "description": "Retrieves the current counter value for a target scope and series.\n An unused stream starts at zero. This numbering value can be reset or changed;\n it is not the total number of registered notes.\n\n Use this function rather than native `counter()` for Deixis numbering.\n Unnumbered originals (`numbering: none`) take no counter value. Page-local\n display numbering does not change this assigned value.\n\n Note: Because it queries the document state, this function must be called within a `context` block.\n\n - target (int, label, str): Current scope (0), ancestor (negative integer), named/forward scope, or global `\"page\"`. Synchronized scopes share their resolved counter owner.\n - series (str): Literal series name, default `\"default\"`. Endnote wrappers use `\"endnote\"`; select that explicitly when reading it. Punctuation and empty names are valid distinct strings.\n\n ```example\n //| sandbox-mode: \"page\"\n #context deixis-note-counter()\n ```",
      "args": {
        "target": {
          "description": "Current scope (0), ancestor (negative integer), named scope, or global \"page\".",
          "default": "0",
          "types": [
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "The specific note series to query.",
          "default": "\"default\"",
          "types": [
            "str"
          ]
        }
      },
      "return-types": [
        "int"
      ]
    },
    {
      "name": "deixis-update-note-counter",
      "description": "Set or update the current counter value for one target scope and series.\n The next numbered original mark increments that value. Resetting to zero makes\n the next numbered original use one; earlier notes retain their assigned numbers and identities.\n Unnumbered originals, bodies, references, and reused marks do not increment it.\n\n Reset a stream at a chapter or section boundary, or use `deixis-block`\n for an independent local collection. Other series are unaffected.\n\n - value (int, function): Integer or a function `(current) => int`. Direct values and results must be integers; strings, floats, and booleans are not coerced. Negative displayed counts need a suitable numbering callback.\n - target (int, label, str): Current scope (0), ancestor (negative integer), named/forward scope, or global `\"page\"`. Updates affect all scopes synchronized with that counter owner.\n - series (str): Literal series name, default `\"default\"`; other series are untouched.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-update-note-counter(0)\n #context deixis-note-counter()\n ```",
      "args": {
        "value": {
          "description": "Integer or a function of the current value returning an integer. Use 0 to\n restart the next numbered original at 1. Values are not coerced.",
          "types": [
            "int",
            "function"
          ]
        },
        "target": {
          "description": "Current scope (0), ancestor (negative integer), named/forward scope, or \"page\".",
          "default": "0",
          "types": [
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "The specific note series to update.",
          "default": "\"default\"",
          "types": [
            "str"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-block",
      "description": "Creates an isolated, self-contained layout environment for notes.\n\n A minipage provides a separate rendering and counter scope. Margin notes use\n its insets; footnotes are collected after all main content, with native\n pagination for long collections. They are not per-page block footers.\n A single-column breakable block has a margin frame on each physical page,\n with normal overflow limits when space runs out. Overlay packing does not\n subtract native page-footer reservations or create more pages.\n Counters are independent by default and can be shared or synchronized explicitly.\n With page-local numbering, displayed markers restart on each original mark\n page even when the block spans pages; its footnotes still collect at the end.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-footnote[This is a page footnote.]\n #deixis-block(inset: 5pt, fill: gray.lighten(90%))[\n   Inside a `#deixis-block`, notes have their own counters and layout.\n   #deixis-footnote[This is a block-level footnote.]\n ]\n ```\n\n ````experiment\n Nested blocks keep independent counters and rendering scopes. Breakable and\n threaded layouts should be checked against the available page/block space.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-block(inset: 5pt, fill: red.lighten(90%))[\n   #deixis-footnote[Level 1.]\n   #deixis-block(inset: 5pt, fill: orange.lighten(90%))[\n     #deixis-footnote[Level 2.]\n     #deixis-block(inset: 5pt, fill: yellow.lighten(90%))[\n       #deixis-footnote[Level 3.]\n       #deixis-block(inset: 5pt, fill: green.lighten(90%))[\n         You are wandering into the unknown#deixis-footnote[Level 4.].\n       ]\n     ]\n   ]\n ]\n ```\n ````\n\n - id (auto, str, label): A unique nonempty public block name; `\"page\"` is reserved. `auto` creates a private instance.\n - thread (none, str, label): A nonempty name sharing rendering and, by default, counters between distinct blocks. Matching strings/labels select the same thread.\n - sync-counters-with (auto, int, label, str): Synchronize internal counters with another `#deixis-block` or the global document counters rather than starting from 1.\n - width (auto, length, relative): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-width\")[`std.block.width`].\n - height (auto, length, relative): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-height\")[`std.block.height`].\n - breakable (auto, bool): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-breakable\")[`std.block.breakable`].\n - fill (auto, color, none): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-fill\")[`std.block.fill`].\n - stroke (auto, stroke, none): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-stroke\")[`std.block.stroke`].\n - radius (auto, length, dictionary): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-radius\")[`std.block.radius`].\n - inset (auto, length, dictionary): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-inset\")[`std.block.inset`].\n - outset (auto, length, dictionary): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-outset\")[`std.block.outset`].\n - spacing (auto, length): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-spacing\")[`std.block.spacing`].\n - above (auto, length): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-above\")[`std.block.above`].\n - below (auto, length): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-below\")[`std.block.below`].\n - clip (auto, bool): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-clip\")[`std.block.clip`].\n - sticky (auto, bool): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-sticky\")[`std.block.sticky`].\n - ..args (arguments): Accepts at most 1 positional argument: `[body]`, the content of the minipage.",
      "args": {
        "id": {
          "description": "A nonempty string/label name for this block. Names must be unique; page is reserved.\n Auto creates a private instance without a public name.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "label"
          ]
        },
        "thread": {
          "description": "Allows separate blocks to share rendering/counters through a nonempty string\n or label name. Equivalent strings/labels select the same thread.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-block(thread: \"green\", inset: 5pt, fill: green.lighten(90%))[\n   #deixis-footnote[This block belongs to the `\"green\"` thread.]\n ]\n\n #deixis-block(inset: 5pt, fill: red.lighten(90%))[\n   #deixis-footnote[This block does not, hence, its notes count from 1.]\n ]\n\n #deixis-block(thread: \"green\", inset: 5pt, fill: green.lighten(90%))[\n   #deixis-footnote[This block also belongs to the `\"green\"` thread.]\n ]\n ```\n\n ````tip\n `thread` cannot be used to sync counters with the `\"page\"`.\n For that purpose, use `deixis-block.sync-counters-with`.\n `sync-counters-with` controls numbering; `thread` controls rendering ownership.\n Each block still owns its collected footnotes independently.\n ````",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "sync-counters-with": {
          "description": "Synchronize internal counters with another `#deixis-block` or the global document counters rather than starting from 1.\n - Accepts `int` for going up in the stack level, and `\"page\"` for the document global.\n ```example\n //| sandbox-mode: \"page\"\n #deixis-block(sync-counters-with: \"page\", inset: 5pt, fill: red.lighten(90%))[\n   #deixis-footnote[This block shares its counters with the document.]\n ]\n\n #deixis-block(sync-counters-with: -1, inset: 5pt, fill: orange.lighten(90%))[\n   #deixis-footnote[Same for this block.]\n ]\n ```\n - Also accepts `label` or `str` for targetting another `#deixis-block`.\n ```example\n //| sandbox-mode: \"page\"\n #deixis-block(id: <blue-block>, inset: 5pt, fill: blue.lighten(90%))[\n   #deixis-footnote[This block is given an `id: <blue-block>`.]\n ]\n\n #deixis-block(sync-counters-with: <blue-block>, inset: 5pt, fill: teal.lighten(90%))[\n   #deixis-footnote[This block shares its counters with `<blue-block>`.]\n ]\n ```\n\n ```tip\n To sync counters of multiple blocks, it is more convenient to use `deixis-block.thread`.\n ```",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "width": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-width\")[`std.block.width`].",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "relative"
          ]
        },
        "height": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-height\")[`std.block.height`].",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "relative"
          ]
        },
        "breakable": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-breakable\")[`std.block.breakable`].",
          "default": "auto",
          "types": [
            "auto",
            "bool"
          ]
        },
        "fill": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-fill\")[`std.block.fill`].",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "stroke": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-stroke\")[`std.block.stroke`].",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "radius": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-radius\")[`std.block.radius`].",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "inset": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-inset\")[`std.block.inset`].\n\n ```info\n The left and right inset of a `#deixis-block` is where block-level `deixis-margin-note-body` are rendered.\n ```",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "outset": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-outset\")[`std.block.outset`].",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "spacing": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-spacing\")[`std.block.spacing`].",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "above": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-above\")[`std.block.above`].",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "below": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-below\")[`std.block.below`].",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "clip": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-clip\")[`std.block.clip`].",
          "default": "auto",
          "types": [
            "auto",
            "bool"
          ]
        },
        "sticky": {
          "description": "See #link(\"https://typst.app/docs/reference/layout/block/#parameters-sticky\")[`std.block.sticky`].",
          "default": "auto",
          "types": [
            "auto",
            "bool"
          ]
        },
        "..args": {
          "description": "Accepts at most 1 positional argument: `[body]`, the content of the minipage.\n See #link(\"https://typst.app/docs/reference/layout/block/#parameters-body\")[`std.block.body`].",
          "types": [
            "arguments"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-minipage",
      "description": "Creates an isolated layout environment for notes, utilizing `margin` instead of `inset`/`outset`.\n\n This is just a convenience wrapper around `#deixis-block`.\n It calls `#deixis-block` with `inset: margin` and `outset: 0pt` by default.\n\n See `#deixis-block` for details about parameters.\n\n - id (auto, str, label): A unique nonempty public block name; `\"page\"` is reserved. `auto` creates a private instance.\n - thread (none, str, label): A nonempty name sharing rendering and, by default, counters between distinct blocks. Matching strings/labels select the same thread.\n - sync-counters-with (auto, int, label, str): Synchronize internal counters with another `#deixis-block` or the global document counters rather than starting from 1.\n - width (auto, length, relative): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-width\")[`std.block.width`].\n - height (auto, length, relative): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-height\")[`std.block.height`].\n - breakable (auto, bool): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-breakable\")[`std.block.breakable`].\n - fill (auto, color, none): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-fill\")[`std.block.fill`].\n - stroke (auto, stroke, none): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-stroke\")[`std.block.stroke`].\n - radius (auto, length, dictionary): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-radius\")[`std.block.radius`].\n - margin (auto, length, dictionary): Internal padding, forwarded to ```ref #deixis-block.inset```; reserves space for local margin notes.\n - spacing (auto, length): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-spacing\")[`std.block.spacing`].\n - above (auto, length): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-above\")[`std.block.above`].\n - below (auto, length): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-below\")[`std.block.below`].\n - clip (auto, bool): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-clip\")[`std.block.clip`].\n - sticky (auto, bool): See #link(\"https://typst.app/docs/reference/layout/block/#parameters-sticky\")[`std.block.sticky`].\n - ..args (arguments): Accepts at most 1 positional argument: `[body]`, the content of the minipage.",
      "args": {
        "id": {
          "description": "",
          "default": "auto"
        },
        "thread": {
          "description": "",
          "default": "none"
        },
        "sync-counters-with": {
          "description": "",
          "default": "auto"
        },
        "width": {
          "description": "",
          "default": "auto"
        },
        "height": {
          "description": "",
          "default": "auto"
        },
        "breakable": {
          "description": "",
          "default": "auto"
        },
        "fill": {
          "description": "",
          "default": "auto"
        },
        "stroke": {
          "description": "",
          "default": "auto"
        },
        "radius": {
          "description": "",
          "default": "auto"
        },
        "margin": {
          "description": "Internal padding between the block boundary and its content.\n Forwarded to `deixis-block(inset: margin, outset: 0pt)`; its left and right\n padding also provide space for local margin notes.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "spacing": {
          "description": "",
          "default": "auto"
        },
        "above": {
          "description": "",
          "default": "auto"
        },
        "below": {
          "description": "",
          "default": "auto"
        },
        "clip": {
          "description": "",
          "default": "auto"
        },
        "sticky": {
          "description": "",
          "default": "auto"
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-place-anchored",
      "description": "Places content relative to selected pin bounds, or the call site when no pin\n matches. Pin accepts a name, a `(name:, scope:, select:, page:)` target, or an\n array of either. Names combine all matches; records default to unique.\n `anchor` selects the same point on the bounds and body, or accepts separate\n `(target:, body:)` alignments. Offsets apply after alignment, on the call's page.",
      "args": {
        "body": {
          "description": ""
        },
        "dx": {
          "description": "",
          "default": "0pt"
        },
        "dy": {
          "description": "",
          "default": "0pt"
        },
        "anchor": {
          "description": "",
          "default": "bottom + right"
        },
        "pin": {
          "description": "",
          "default": "none"
        },
        "body-size": {
          "description": "",
          "default": "auto"
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-absolute-place",
      "description": "Places content at a specific exact absolute coordinate on the page ignoring page margins.",
      "args": {
        "..args": {
          "description": ""
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-margin-note-exact-layout",
      "description": "A lightweight margin layout engine that places each note exactly aligned with its marker.\n It intentionally ignores collisions, gaps, and spillovers.",
      "args": {
        "notes": {
          "description": ""
        },
        "top-bound": {
          "description": ""
        },
        "bottom-bound": {
          "description": ""
        },
        "start-x": {
          "description": ""
        },
        "text-width": {
          "description": ""
        },
        "end-y": {
          "description": ""
        },
        "left-space": {
          "description": ""
        },
        "right-space": {
          "description": ""
        },
        "current-page": {
          "description": ""
        },
        "min-margin-width": {
          "description": "",
          "default": "1in"
        },
        "pushed-notes": {
          "description": "",
          "default": "()"
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-margin-note-adaptive-layout",
      "description": "A placement-based margin layout engine that uses the rubber band algorithm under the hood.",
      "args": {
        "notes": {
          "description": ""
        },
        "top-bound": {
          "description": ""
        },
        "bottom-bound": {
          "description": ""
        },
        "start-x": {
          "description": ""
        },
        "text-width": {
          "description": ""
        },
        "end-y": {
          "description": ""
        },
        "left-space": {
          "description": ""
        },
        "right-space": {
          "description": ""
        },
        "current-page": {
          "description": ""
        },
        "min-margin-width": {
          "description": "",
          "default": "1in"
        },
        "pushed-notes": {
          "description": "",
          "default": "()"
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-margin-note-flow-layout",
      "description": "A flow-based margin layout engine that distributes free space toward marker positions.",
      "args": {
        "notes": {
          "description": ""
        },
        "top-bound": {
          "description": ""
        },
        "bottom-bound": {
          "description": ""
        },
        "start-x": {
          "description": ""
        },
        "text-width": {
          "description": ""
        },
        "end-y": {
          "description": ""
        },
        "left-space": {
          "description": ""
        },
        "right-space": {
          "description": ""
        },
        "current-page": {
          "description": ""
        },
        "min-margin-width": {
          "description": "",
          "default": "1in"
        },
        "pushed-notes": {
          "description": "",
          "default": "()"
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-inline-mark",
      "description": "An inline text mark with a visual marker.\n\n This function drops a numbered (or custom) marker into the text and registers its location in the\n annotation catalogue.\n With `of: id`, it reuses an annotation through `deixis-mark` instead;\n only a numbered original `id` declaration advances the counter. Reuse is forward-safe.\n\n ```example\n Inline note is usually just a single marker#deixis-inline-mark(id: <celibate-inline-note1>).\n Alternatively, it can wrap #deixis-inline-mark(id: <celibate-inline-note2>)[a text content of arbitrary length with it].\n ```\n\n - ..args (arguments): Accepts up to one positional arguments: `[body]`.\n - numbering (auto, none, str, function, dictionary): The numbering style (e.g., `\"1\"`, `\"a\"`) for the generated marker.\n - marker (auto, content): A hardcoded marker (like a symbol) to use instead of the automatic counter.\n - target (int, label, str): The specific block/minipage counter context this mark belongs to.\n - series (str): The counter series this mark belongs to. Defaults to `\"default\"`.\n - id (none, str, label): A unique identifier linking this mark to its corresponding body.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - marker-style (auto, function): A custom styling function `(string) => content` for the generated marker.\n - marker-position (auto, alignment): The alignment/positioning of the marker relative to its anchor.\n - inline-mode (auto, str): The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n - stroke (auto, stroke, none): The border stroke.\n - fill (auto, color, none): The background fill color.\n - radius (auto, length, dictionary): The border radius.",
      "args": {
        "..args": {
          "description": "Accepts up to one positional arguments: `[body]`.",
          "types": [
            "arguments"
          ]
        },
        "numbering": {
          "description": "The numbering style (e.g., `\"1\"`, `\"a\"`) for the generated marker.\n A record `(restart: \"page\", pattern: \"1\")` restarts displayed markers per original page; assigned counters stay unchanged.\n `none` disables automatic markers and counter allocation.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "marker": {
          "description": "A hardcoded marker (like a symbol) to use instead of the automatic counter.",
          "default": "auto",
          "types": [
            "auto",
            "content"
          ]
        },
        "target": {
          "description": "The specific block/minipage counter context this mark belongs to.",
          "default": "0",
          "types": [
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "The counter series this mark belongs to.",
          "default": "\"default\"",
          "types": [
            "str"
          ]
        },
        "id": {
          "description": "A unique identifier linking this mark to its corresponding body.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields, owned by the original. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Reuse an existing annotation instead of declaring a new counter owner.\n Mutually exclusive with id; numbering/scope/series are inherited.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "occurrence": {
          "description": "Optional name for a reused occurrence. Visible named repeats use one inline box.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "marker-style": {
          "description": "A custom styling function `(string) => content` for the generated marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "marker-position": {
          "description": "The alignment/positioning of the marker relative to its anchor.\n\n ```example\n #deixis-inline-mark(marker-position: left, id: <celibate-inline-note3>)[\n   This noted content has its mark placed on the left side.\n ]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "alignment"
          ]
        },
        "inline-mode": {
          "description": "The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n\n ```example\n #deixis-inline-mark(inline-mode: \"highlight\")[Marked content]\n ```\n ```example\n #deixis-inline-mark(inline-mode: \"box\")[Marked content]\n ```\n ```example\n #deixis-inline-mark(inline-mode: \"parentheses\")[Marked content]\n ```\n ```example\n #deixis-inline-mark(inline-mode: \"underline\")[Marked content]\n ```\n ```example\n #deixis-inline-mark(inline-mode: \"text-fill\")[Marked content]\n ```\n ```example\n #deixis-inline-mark(inline-mode: \"none\")[Marked content]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-phantom-mark",
      "description": "A semantic mark that is registered without leaving _any_ visible trace in the text.\n\n Numbered phantom marks increment the counter (`numbering: none` does not)\n and register a reference destination, but leave\n no visual footprint in the paragraph.\n This is useful for creating semantic anchors or side-channel annotations that shouldn't disrupt the reading flow.\n With `of: id`, it reuses an annotation without advancing the counter. A named\n phantom occurrence supplies a point endpoint for an explicit connection.\n\n ```example\n //| sandbox-mode: \"page\"\n The library was constructed with massive stone walls to regulate the indoor climate naturally across the changing seasons.\n #deixis-phantom-mark(id: <phantom>, marker: none)\n This architectural choice ensured that centuries of fragile manuscripts remained perfectly preserved without the need for artificial climate control.\n\n #deixis-margin-note-body(of: <phantom>)[Thick stone absorbs daytime heat and releases it at night.]\n ```\n\n - id (none, str, label): A unique identifier for linking this mark to a decoupled body.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - numbering (auto, none, str, function, dictionary): The numbering style (used for the body and outline, though invisible here).\n - target (int, label, str): The specific block/minipage counter context this mark belongs to.\n - series (str): The counter series this mark belongs to. Defaults to `\"default\"`.\n - marker (auto, content): A hardcoded marker override (used for the body and outline, though invisible here).\n - ..args (arguments): Accepts no public arguments; a phantom mark has no body.",
      "args": {
        "z-index": {
          "description": "Ordering defaults for future attached overlay bodies; this mark is invisible.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "id": {
          "description": "A unique identifier for linking this mark to a decoupled body.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields, owned by the original. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Reuse an annotation as an invisible semantic anchor.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "occurrence": {
          "description": "Optional occurrence name for explicit connection selection.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "numbering": {
          "description": "The numbering style (used for the body and outline, though invisible here).\n Supports `(restart: \"page\", pattern: \"1\")` for page-local display numbering.\n `none` disables automatic markers and counter allocation.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "target": {
          "description": "The specific block/minipage counter context this mark belongs to.",
          "default": "0",
          "types": [
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "The counter series this mark belongs to.",
          "default": "\"default\"",
          "types": [
            "str"
          ]
        },
        "marker": {
          "description": "A hardcoded marker override (used for the body and outline, though invisible here).",
          "default": "auto",
          "types": [
            "auto",
            "content"
          ]
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-mark",
      "description": "Creates a mark, or adds another occurrence of an annotation.\n\n ```example\n #deixis-mark(id: <idea>)[First passage]\n #deixis-margin-note-body(of: <idea>)[One explanation.]\n #deixis-mark(of: <idea>)[Another passage]\n ```\n\n Use `id:` to declare the original counter owner and `of:` to reuse it, even\n before the original declaration. Without either, this is anonymous decoration.\n The default is inline; supplied pins select region mode. Select another form\n explicitly with `mark-type: \"region\"` or `\"phantom\"`. Reuse adds a backlink\n origin and never inherits a drawn connector. Name an occurrence and use\n `deixis-connect` when an additional connection is wanted.\n\n - id (none, str, label): Declare an original annotation with this public ID.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - of (none, str, label): Reuse an original annotation; mutually exclusive with id.\n - mark-type (auto, str): Inline by default, region with pins, or explicit inline/region/phantom.\n - occurrence (none, str, label): Name a reused occurrence within its annotation.\n - numbering (auto, none, str, function, dictionary): Original numbering style; inherited on reuse.\n - target (int, str, label): Original counter scope; inherited on reuse.\n - series (str): Original counter series; inherited on reuse.\n - marker (auto, none, content): Number automatically, replace the marker, or hide it.\n - marker-style (auto, function, dictionary): Mark marker appearance.\n - marker-position (auto, alignment, dictionary): Marker position.\n - inline-mode (auto, str): Inline passage decoration.\n - stroke (auto, stroke, none): Decoration stroke.\n - fill (auto, color, none): Decoration fill.\n - radius (auto, length, dictionary): Decoration radius.\n - pins (array): Region bounds instead of a passage.\n - padding (auto, length, str, dictionary): Region padding.\n - region-shape (auto, function): Region shape renderer.\n - layer (auto, str, dictionary): Region paint layer.\n - inline (bool): Wrap a region passage in an inline box.\n - ..args (arguments): At most one optional [passage]; identity arguments are named.",
      "args": {
        "..args": {
          "description": "At most one optional [passage]; identity arguments are named.",
          "types": [
            "arguments"
          ]
        },
        "id": {
          "description": "Declare an original annotation with this public ID.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields. Owned by creation; omit with of.\n Kept under note.data in queries and body renderers, outside runtime fields.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Reuse an original annotation; mutually exclusive with id.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "mark-type": {
          "description": "Inline by default, region with pins, or explicit inline/region/phantom.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "occurrence": {
          "description": "Name a reused occurrence within its annotation.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "numbering": {
          "description": "Original numbering style; inherited on reuse.\n A record `(restart: \"page\", pattern: \"1\")` restarts displayed markers per original page; assigned counters stay unchanged.\n `none` disables automatic markers and counter allocation.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "target": {
          "description": "Original counter scope; inherited on reuse.",
          "default": "0",
          "types": [
            "int",
            "str",
            "label"
          ]
        },
        "series": {
          "description": "Original counter series; inherited on reuse.",
          "default": "\"default\"",
          "types": [
            "str"
          ]
        },
        "marker": {
          "description": "Number automatically, replace the marker, or hide it.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "content"
          ]
        },
        "marker-style": {
          "description": "Mark marker appearance.",
          "default": "auto",
          "types": [
            "auto",
            "function",
            "dictionary"
          ]
        },
        "marker-position": {
          "description": "Marker position.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "inline-mode": {
          "description": "Inline passage decoration.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "stroke": {
          "description": "Decoration stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "Decoration fill.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "Decoration radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "pins": {
          "description": "Region bounds instead of a passage.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "padding": {
          "description": "Region padding.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "str",
            "dictionary"
          ]
        },
        "region-shape": {
          "description": "Region shape renderer.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "layer": {
          "description": "Region paint layer.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "dictionary"
          ]
        },
        "inline": {
          "description": "Wrap a region passage in an inline box.",
          "default": "false",
          "types": [
            "bool"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-region-mark",
      "description": "A visual enclose mark of a specific region in the document.\n\n Region marks are highly versatile. They can dynamically wrap a continuous block of text provided as a\n positional argument, or they can asynchronously draw a shape spanning between pre-defined `#deixis-pin` coordinates.\n They support crossing page boundaries with background/foreground layers,\n including automatic corner pins around breakable block content.\n With `of: id`, it creates another region occurrence of an existing annotation.\n Its own pins/content determine geometry; the original still owns the number,\n body placement, and implicit connector. Name it with `occurrence` for an\n explicit connection, including automatic page-fragment selection.\n\n ```example\n Inline marks cannot highlight equations or `raw`:\n\n #deixis-inline-mark[*Sigmoid:* $f(x) = frac(1, 1 + e^(-x))$ or `torch.sigmoid`.]\n\n This is where region marks shine:\n\n #deixis-region-mark(inline: true)[*ReLU:* $f(x) = max(0, x)$ or `torch.relu`]\n ```\n\n ```example\n #let highlight-cell = deixis-region-mark.with(stroke: blue, fill: blue.transparentize(95%))\n\n #set text(0.8em)\n #table(\n   columns: (auto, 1fr, auto, 1fr),\n   align: center + horizon,\n   fill: (x, y) => if y == 0 { gray.lighten(80%) },\n\n   table.header([*Function*], [*Equation*], [*Output\\ Range*], [*Common\\ Usecase*]),\n   [*Sigmoid*], [$1 / (1 + e^(-x))$], [$(0, 1)$], [Binary classifier],\n   [*Tanh*], [$(e^x - e^(-x)) / (e^x + e^(-x))$], [$(-1, 1)$], [RNNs],\n   [*ReLU*], [$max(0, x)$], [$[0, inf)$], [CNNs],\n   [*GELU*], highlight-cell(padding: 4pt)[$x Phi(x)$], [$approx [-0.17, inf)$], [*Transformers*],\n )\n ```\n\n - ..args (arguments): Accepts at most 1 positional argument: `[body]`.\n - id (none, str, label): The unique identifier linking this region to its data/body state.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - pins (array): Pin names or `(name:, scope:, select:, page:)` targets. Strings combine all occurrences; records default to a unique match. Cannot be used simultaneously with a positional body.\n - numbering (auto, none, str, function, dictionary): The numbering style for the region's marker.\n - marker (auto, content): A hardcoded marker to use instead of the automatic counter.\n - target (int, label, str): The specific block/minipage counter context this mark belongs to.\n - series (str): The counter series this mark belongs to.\n - marker-style (auto, function): A custom styling function `(string) => content` for the generated marker.\n - marker-position (auto, alignment, dictionary): Where to place the marker relative to the bounding box.\n - stroke (auto, stroke, none): The border stroke of the region highlight.\n - fill (auto, color, none): The background fill color of the region highlight.\n - radius (auto, length, dictionary): The border radius of the region shape. Automatically adjusts when breaking across pages.\n - padding (auto, length, str): The padding between the highlighted text and the border. Using `\"text\"` aligns to font metrics.\n - region-shape (auto, function): Shape drawing function.\n - layer (auto, str): The rendering layer context. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n - inline (bool): If `true`, the region wraps the text in an inline `box` instead of a standard `block`.",
      "args": {
        "..args": {
          "description": "Accepts at most 1 positional argument: `[body]`.",
          "types": [
            "arguments"
          ]
        },
        "id": {
          "description": "The unique identifier linking this region to its data/body state.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields, owned by the original. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Reuse an annotation with new region geometry, without a new number/body.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "occurrence": {
          "description": "Optional occurrence name, scoped to the reused annotation.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "pins": {
          "description": "Pin names or structured targets, e.g. `((name: \"corner\", scope: \"diagram\"),)`.\n Strings combine all occurrences. Records require a match and default to\n unique selection; select can be all, first, last, or unique, and page can\n restrict to a positive physical page number. Cannot also wrap a body.\n\n See `deixis-pin` and `deixis-attach`.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "numbering": {
          "description": "The numbering style for the region's marker.\n A record `(restart: \"page\", pattern: \"1\")` restarts displayed markers per original page; assigned counters stay unchanged.\n `none` disables automatic markers and counter allocation.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "marker": {
          "description": "A hardcoded marker to use instead of the automatic counter.",
          "default": "auto",
          "types": [
            "auto",
            "content"
          ]
        },
        "target": {
          "description": "The specific block/minipage counter context this mark belongs to.",
          "default": "0",
          "types": [
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "The counter series this mark belongs to.",
          "default": "\"default\"",
          "types": [
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function `(string) => content` for the generated marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "marker-position": {
          "description": "Where to place the marker relative to the bounding box.\n - If `alignment`, align to one of the 9 locations.\n ```example\n #deixis-region-mark(\n   id: <celibate-region1>,\n   marker-position: top + center)[#lorem(10)]\n ```\n - If `dictionary` of `length` or `relative`, place the mark at `(dx, dy)` relative to the top left corner of the region. `relative` is understood as to the dimensions of the region.\n ```example\n #deixis-region-mark(\n   id: <celibate-region2>,\n   marker-position: (dx: 100% + 5pt, dy: 5pt))[#lorem(10)]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "stroke": {
          "description": "The border stroke of the region highlight.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color of the region highlight.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius of the region shape. Automatically adjusts when breaking across pages.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "padding": {
          "description": "The padding between the highlighted text and the border. Using `\"text\"` aligns to font metrics.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "str"
          ]
        },
        "region-shape": {
          "description": "Shape drawing function.\n\n ```example\n *Kepler\u2019s First Law of Planetary Motion* states that every planet\u2019s orbit is an ellipse:\n #align(\n   center,\n   deixis-region-mark(padding: (x: 8pt, y: 8pt), region-shape: deixis-ellipse-region)[$r = frac(1 - e^2, 1 + e cos(theta))$]\n )\n ```",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "layer": {
          "description": "The rendering layer context. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n - With `\"foreground\"` layer, the region is rendered in the foreground of the page, and may occlude the highlighted content.\n - With `\"background\"` layer, the region will be rendered in the background of the page, and might be occluded by other contents.\n ```example\n // pins already placed in manual.typ\n This example draws the #box(width: 0.6em, height: 0.6em, stroke: yellow) yellow region around this documentation chapter.\n #deixis-region-mark(\n   pins: (\"region-mark-chapter-start\", \"region-mark-chapter-end\"),\n   padding: (x: 5pt, top: -5pt, bottom: 5pt),\n   stroke: yellow + 2pt,\n   fill: yellow.transparentize(98%),\n   radius: 10pt,\n   layer: \"background\",\n )\n ```\n - With `\"flow\"` layer, the placement of the region is synchronuous.\n ```example\n #deixis-region-mark(\n   pins: (\"test-layer3\", \"test-layer4\"),\n   stroke: none,\n   fill: purple.transparentize(25%),\n   layer: \"flow\",\n )  // below the highlighted text\n\n #quote(attribution: [Messmer the Impaler], block: true)[*#deixis-pin(\"test-layer1\")Mongrel#deixis-pin(\"test-layer2\") #deixis-pin(\"test-layer3\")intruder#deixis-pin(\"test-layer4\").*]\n\n #deixis-region-mark(\n   pins: (\"test-layer1\", \"test-layer2\"),\n   stroke: none,\n   fill: red.transparentize(25%),\n   layer: \"flow\",\n )  // above the highlighted text\n ```\n\n ```tip\n - Use `\"flow\"` for highlighting images, diagrams, ...\n   Be aware that it will trigger a `#parbreak`.\n\n - Use `\"background\"` for highlighting texts, equations, ... _if they are not in a non-transparent container_.\n\n - Use `\"foreground\"` or `\"background\"` where the region can span across multiple pages.\n ```",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "inline": {
          "description": "If `true`, the region wraps the text in an inline `box` instead of a standard `block`.",
          "default": "false",
          "types": [
            "bool"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-pin",
      "description": "Manually drops an invisible, named geometric anchor (a `\"pin\"`) into the document flow.\n\n Pins are the coordinate anchors that ```ref #deixis-region-mark``` uses to draw its highlights.\n Initialize with `deixis-setup-notes` before producing document pins.\n They can also be used as anchor coordinates for ```ref #deixis-inset-note-body``` and ```ref #deixis-margin-note-body```.\n\n - name (str, label): A pin name, global unless scope is supplied; strings and labels with the same spelling are equivalent.\n - scope (none, str, label, location): Optional namespace; native locations isolate reusable instances.\n - padding (str, length, dictionary, none): Geometric expansion around the point; `\"text\"` is an em-based baseline approximation. Adds no layout space.\n - extra-data (dictionary): Custom metadata; name, scope, padding, dx, dy, type, and hidden are reserved.",
      "args": {
        "name": {
          "description": "A string/label name within scope (document-wide by default). Both spellings\n normalize to the same name. Repeated names contribute\n multiple occurrences; scoped targets select them with a name/scope record.",
          "types": [
            "str",
            "label"
          ]
        },
        "scope": {
          "description": "Optional namespace, independent of note/counter scopes. Use a native\n location such as here() to isolate each reusable component instance.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label",
            "location"
          ]
        },
        "padding": {
          "description": "The mathematical padding around the pin.\n - Accepts `length` or `dictionary`.\n ```example\n #place(center + horizon, deixis-pin(\"test-padding\", padding: 5pt))\n #deixis-region-mark(pins: (\"test-padding\",))\n ```\n - `\"text\"` uses top 0.9em, bottom 0.2em, and horizontal 0.1em. This is a\n   baseline approximation, not a glyph bounding box. `none`/`auto` mean zero.\n - Signed lengths preserve their sign. Percentages have no pin-size basis.\n ```example\n The library was filled with the #deixis-pin(\"susurrus-l\", padding: \"text\")susurrus#deixis-pin(\"susurrus-r\", padding: \"text\") of turning pages.\n #deixis-region-mark(pins: (\"susurrus-l\", \"susurrus-r\"))\n ```",
          "default": "\"text\"",
          "types": [
            "str",
            "length",
            "dictionary",
            "none",
            "auto"
          ]
        },
        "extra-data": {
          "description": "Custom metadata. `name`, `scope`, `padding`, `dx`, `dy`, `type`, and `hidden` are reserved.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-attach",
      "description": "Attaches geometric anchors and optional routing identity to live content.\n\n This function does two things:\n 1. It scans the `body` text for your pin prefix (e.g., `deixispinTop`) and converts them into physical inline pins.\n 2. It can place absolute overlay pins relative to the bounding box of the `body` (e.g., placing a pin exactly at `dx: 100%, dy: 100%`).\n Optional id/behavior also registers the content frame for deixis-routing.\n Named frames offer top/bottom/left/right midpoint ports automatically; use\n connector.ports for side/percentage/sliding selection or one of these pins\n for an exact custom socket. pins accepts any number of named anchors.\n\n - body (content): The content block to wrap and scan.\n - pins (dictionary): A dictionary mapping pin names to overlay coordinates and padding. Example: `(\"my-pin\": (dx: 100%, dy: 50%, padding: 2pt))`.\n - scope (none, str, label, location): Optional namespace shared by this attachment's scanned and coordinate pins.\n - prefix (auto, str, none): Literal opening delimiter; auto uses \"deixispin\". Set to none to disable delimiter scanning.\n - pattern (auto, regex, none): An explicit scanning regex with exactly one capture for the pin name; overrides delimiters.\n - padding (auto, str, length, dictionary): Padding for pins replaced with `prefix`. It has no effect on pins defined with `pins`.\n - inline (bool): If `true`, the wrapper uses an inline `box` instead of a `block`.",
      "args": {
        "body": {
          "description": "The content block to wrap and scan.",
          "types": [
            "content"
          ]
        },
        "id": {
          "description": "Optional routing-node identity. Strings and labels agree. A registered\n attachment is one nonbreaking native frame and can be selected with\n (node: id) by deixis-connect. Scope also namespaces this identity.\n Four side midpoints are automatic ports; no named pins are required.\n Independent of note IDs and pin names, including equal spellings. Wrapping\n an overlay note declaration captures its declaration, not its painted body.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "behavior": {
          "description": "Routing behavior: avoid, ignore, cut or cross. auto registers an avoid\n node when id is supplied; without an ID, auto preserves ordinary attach.\n An explicit behavior also registers an anonymous obstacle/decorative node.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "pins": {
          "description": "A dictionary mapping pin names to overlay coordinates and padding. Example: `(\"my-pin\": (dx: 100%, dy: 50%, padding: 2pt))`.\n\n ```example\n #deixis-attach(\n   pins: (\n     area-tl: (dx: 20%, dy: 20%, padding: 2pt),\n     area-br: (dx: 80%, dy: 80%, padding: 2pt),\n   ),\n )[\n   #rect(width: 160pt, height: 90pt, fill: luma(240))\n ]\n #deixis-region-mark(\n   pins: (\"area-tl\", \"area-br\"),\n   stroke: red + 2pt,\n )\n ```\n\n Missing coordinates default to zero. Bottom pins (`dy: 100%`, optionally\n plus an offset) follow the final fragment of a breakable block.\n An alternative `(anchor: top + right, offset: (2pt, 0pt))` uses native\n alignment and an optional coordinate pair. Do not combine it with dx/dy.\n Dictionary keys are strings. A pair array also accepts label-valued names,\n e.g. `((<corner>, (anchor: top + left)),)`.",
          "default": "(:)",
          "types": [
            "dictionary",
            "array"
          ]
        },
        "scope": {
          "description": "Namespace for both scanned and coordinate pins. It does not affect other\n pin declarations in the body or change note/counter scopes.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label",
            "location"
          ]
        },
        "prefix": {
          "description": "Literal opening delimiter. If `auto`, uses `\"deixispin\"`; none/empty disables\n delimiter scanning. Use `pattern` for intentional regular expressions.\n\n ```info\n Pins attached with regex scan will have `padding: \"text\"` by default. Use `deixis-attach.padding` for customization.\n ```\n\n ````example\n Usage:\n #deixis-attach(prefix: \"mypin\")[\n   ```typst\n   mypincode1#deixis-attachmypincode2(postfix: \"deixis\")[\n     deixispinp1deixisThis line will be pinned.deixispinp2deixis\n   ]\n   // Now one can use pins \"p1\" and \"p2\"\n   ```\n ]\n #deixis-region-mark(pins: (\"code1\", \"code2\"), fill: red.transparentize(95%))\n ````\n\n ```tip\n Oftentimes, if `prefix` alone is not enough, you can also define a `postfix`.\n\n The name of the pin attached with regex scan should also not contain any special character, depending on the `raw` language.\n ```\n\n Set to `none` or an empty string to disable text scanning.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "none"
          ]
        },
        "postfix": {
          "description": "Literal closing delimiter. If `auto`, uses `\"\"`; none/empty omits it.\n\n ````example\n Python hello world program:\n #deixis-attach(\n   prefix: \"mypin\",\n   postfix: \"mypin\")[\n   ```python\n   mypincode3mypinprintmypincode4mypin(\"Hello world!\")\n   ```\n ]\n #deixis-region-mark(pins: (\"code3\", \"code4\"), fill: red.transparentize(95%))\n ````",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "none"
          ]
        },
        "pattern": {
          "description": "Explicit scanning regex with exactly one capture for the pin name.\n `auto` builds a pattern from literal prefix/postfix; `none` disables scanning.",
          "default": "auto",
          "types": [
            "auto",
            "regex",
            "none"
          ]
        },
        "padding": {
          "description": "Padding for pins replaced with `deixis-attach.prefix`. It has no effect on pins defined with `deixis-attach.pins`.\n\n ```example\n Pythagorean theorem:\n\n #align(center)[\n #deixis-attach(\n   prefix: \"mypin\",\n   pin-padding: (  // dict of pin names\n     eq1: (top: 1.2em, bottom: 0.5em, left: 1em),\n     eq2: (top: 1.2em, bottom: 0.5em, right: 1em),\n   ),\n )[\n   mypineq1$a^2 + b^2 = c^2$mypineq2\n ]\n ]\n #deixis-region-mark(pins: (\"eq1\", \"eq2\"), stroke: orange, fill: orange.transparentize(95%))\n ```",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "length",
            "dictionary"
          ]
        },
        "pin-padding": {
          "description": "Per-name padding for scanned pins. Names such as left/rest are literal\n names here. Unlisted names use padding; explicit coordinate pins keep their\n own padding. Prefer this to legacy per-name maps passed through padding.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "inline": {
          "description": "If `true`, the wrapper uses an inline `box` instead of a `block`.\n\n ```example\n #lorem(7)\n #deixis-attach(\n   pins: (tl1: (dx: 0%, dy: 0%), br1: (dx: 100%, dy: 100%)),\n   inline: false)[\n   Block-level attached content.\n ]\n #deixis-region-mark(pins: (\"tl1\", \"br1\"), stroke: teal)\n\n #lorem(7)\n #deixis-attach(\n   pins: (tl2: (dx: 0%, dy: 0%), br2: (dx: 100%, dy: 100%)),\n   inline: true)[\n   Inline attached content.\n ]\n #deixis-region-mark(pins: (\"tl2\", \"br2\"), stroke: green)\n ```",
          "default": "false",
          "types": [
            "bool"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-inline-note-body",
      "description": "A standalone body content of an inline note.\n\n Body content is preserved. Built-in single renderers fold source indentation\n with native weak marker spacing and retain explicit paragraph/line breaks.\n\n ```example\n The garden was filled with the\n #deixis-inline-mark(id: <apricity>)[apricity]\n of a pale winter sun.\n\n #deixis-inline-note-body(\n   of: <apricity>,\n   stroke: maroon,\n   fill: maroon.transparentize(95%),\n )[\n   *Apricity:* The warmth of the sun in winter.\n ]\n ```\n\n - body (content): The actual text or content of the note.\n - id (none, str, label): Names a standalone body. Use of to attach this body to an original mark.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - target (auto, int, label, str): Body rendering scope. Auto inherits the original mark's exact instance, or uses the current scope for standalone bodies.\n - series (auto, str): Collection series for a standalone body. Omit with of; attachments inherit the original's series.\n - marker-style (auto, function): A custom styling function `(string) => content` for the number/marker.\n - backlink (auto, bool, str): Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n - inline-mode (auto, str): The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`. Only used when `inline: true`.\n - stroke (auto, stroke, none): The border stroke.\n - fill (auto, color, none): The background fill color.\n - radius (auto, length, dictionary): The border radius.\n - inline (bool): If `true`, the body is rendered as if it is ```ref #deixis-inline-mark```.\n Inline-decoration bodies wrap within the current paragraph and can paginate,\n whether standalone or attached. `breakable: false` deliberately keeps one frame.\n\n - breakable (bool): Native flow by default. False keeps the rendered body in one frame, selectable by explicit connections.\n - render-single (auto, function): A custom render function for the inner layout of the body.\n - container-func (auto, str, function): A custom container wrapper for the body block, or a preset name (\"plain\", \"rect\", \"alert\", \"stripe\", \"tinted\").\n - ..args (arguments): Additional arguments are rejected; put custom container options in `container-args`.",
      "args": {
        "body": {
          "description": "The actual text or content of the note.",
          "types": [
            "content"
          ]
        },
        "id": {
          "description": "Names a standalone body. Use of to attach this body to an original mark.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "target": {
          "description": "Body rendering scope. Auto inherits the original mark's exact instance,\n or uses the current scope for a standalone body. An explicit override\n changes body rendering without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Collection series for a standalone body. Omit with of; attachments\n inherit their original's series and reject explicit series arguments.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function `(string) => content` for the number/marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "inline-mode": {
          "description": "The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`. Only used when `inline: true`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "inline": {
          "description": "If `true`, the body is rendered as if it is `deixis-inline-mark`.\n\n ```example\n The city streets were filled with the psithurism #deixis-inline-mark(id: <psithurism>) of swaying trees.\n It was a comforting melody, #deixis-inline-note-body(of: <psithurism>, inline: true)[the sound of wind whispering through leaves].\n ```",
          "default": "false",
          "types": [
            "bool"
          ]
        },
        "breakable": {
          "description": "False puts the complete rendered body in one native nonbreaking frame:\n an inline box with inline: true, otherwise a block. Its live bounds supply\n explicit connection ports. True preserves the existing rendering path.",
          "default": "true",
          "types": [
            "bool"
          ]
        },
        "render-single": {
          "description": "A custom render function for the inner layout of the body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "..args": {
          "description": "Additional arguments are rejected; put custom container options in `container-args`.",
          "types": [
            "arguments"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-inline-note",
      "description": "A wrapper for inline notes: a mark and its explanation in the same paragraph.\n\n By default the explanation follows the marked passage as an inline aside,\n decorated like the passage, so the sentence continues. `inline: false`\n places a callout block after the line instead, which ends the paragraph.\n This delegates to ```ref #deixis-inline-note-body```.\n\n ```example\n The garden was full of\n #deixis-inline-note[apricity][the warmth of the sun in winter]\n on that pale afternoon.\n ```\n\n - ..args (arguments): Accepts up to two positional arguments: `[mark][body]`.\n - mark-type (auto, str): The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.\n - id (none, str, label): Names the original annotation created by this wrapper. Without id, its identity is private.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - numbering (auto, none, str, function, dictionary): The numbering style for the marker.\n - marker (auto, none, content): A hardcoded marker, or none to hide it; numbering still controls counter allocation.\n - target (auto, int, label, str): Creation uses the current scope; of inherits the original's rendering instance.\n - series (auto, str): Original counter series, defaulting to `\"default\"`. Omit with of; attachments inherit.\n - marker-style (auto, function, dictionary): Marker styling; component dictionaries style mark and body separately.\n - inline-mode (auto, str): Decoration of the passage; an inline aside reuses it.\n - inline (bool): Inline aside (default) or a callout block after the line.\n - backlink (auto, bool, str): Whether to generate a clickable backlink returning to the mark.",
      "args": {
        "..args": {
          "description": "Accepts up to two positional arguments: `[mark][body]`. With one,\n a solo marker precedes the explanation. With of, accepts only [body].",
          "types": [
            "arguments"
          ]
        },
        "mark-type": {
          "description": "The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "id": {
          "description": "Names the original annotation created by this wrapper. Without id, its identity is private.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "numbering": {
          "description": "The numbering style for the marker.\n A record `(restart: \"page\", pattern: \"1\")` restarts displayed markers per original page; assigned counters stay unchanged.\n `none` disables automatic markers and counter allocation.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "marker": {
          "description": "A hardcoded marker override; `none` hides the marker but still counts\n unless `numbering` resolves to `none`.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "content"
          ]
        },
        "target": {
          "description": "Auto uses the current scope for creation and inherits the original's\n exact rendering instance with of.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Original counter series, defaulting to `\"default\"` for creation.\n Omit with of; an attachment inherits and cannot redefine the series.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker, or a mark/body component dictionary.",
          "default": "auto",
          "types": [
            "auto",
            "function",
            "dictionary"
          ]
        },
        "marker-position": {
          "description": "Mark marker placement.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "stroke": {
          "description": "The decoration stroke, shared by passage and aside unless split by component.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none",
            "dictionary"
          ]
        },
        "fill": {
          "description": "The decoration fill.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none",
            "dictionary"
          ]
        },
        "radius": {
          "description": "The decoration radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "inline-mode": {
          "description": "The visual decoration applied to the marked passage; an inline aside\n reuses it. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` |\n `\"underline\"` | `\"text-fill\"` | `\"none\"`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "pins": {
          "description": "Array of pin names for a region mark.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "padding": {
          "description": "Internal padding for a region mark.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "str",
            "dictionary"
          ]
        },
        "region-shape": {
          "description": "Shape drawing function for a region mark.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "layer": {
          "description": "Rendering layer for a region mark. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "inline": {
          "description": "True places the explanation inline after the passage, in the same\n paragraph (a region passage is boxed inline too). False places a callout\n block after the line, which ends the paragraph.",
          "default": "true",
          "types": [
            "bool"
          ]
        },
        "breakable": {
          "description": "False keeps the rendered explanation in one native frame, selectable by\n explicit connections.",
          "default": "true",
          "types": [
            "bool"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "render-single": {
          "description": "A custom render function for a callout body (inline: false).",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A custom container for a callout body (inline: false).",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to a callout body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-footnote-body",
      "description": "A standalone body content of a footnote.\n\n Page-targeted bodies use the native page footer. Block-targeted bodies collect\n after all main content of their owning block, including a multi-page block.\n The collection can paginate; every valid layer resolves to native flow there.\n Use an explicit `target: \"page\"` to allocate a page footer from inside a block.\n\n ```info\n Native `#std.footnote` owns page allocation. The `flow` body layer uses native\n pagination; overlay layers reserve geometry and paint short complete bodies.\n Empty overlay markers need a following visible layout anchor. A dropped\n native allocation is diagnosed: put the declaration before visible text in\n the same paragraph, or use `layer: \"flow\"`. Flow calls within prose preserve\n the surrounding paragraph and spaces. An isolated body-only declaration can still create a native empty paragraph.\n Source indentation is folded by native layout; explicit initial paragraph\n breaks and line breaks are preserved. Breakable containers are required for\n long bodies: use `block` with `container-args: (breakable: true)`; `rect` and\n the alert container are unbreakable, just as in native Typst.\n Parent-scope floats cannot allocate page footnotes in any layer. Keep the\n mark in that float and declare its body in main flow. Ordinary column-scope\n floats support native allocation.\n ```\n\n ```example\n The evening sky was painted in a deep, haunting\n #deixis-inline-mark(id: <smalt>)[smalt]\n that made the first stars appear like diamonds on velvet.\n\n #deixis-footnote-body(of: <smalt>)[A deep blue pigment made from powdered glass colored with cobalt oxide.]\n ```\n\n - body (content): The actual text or content of the note.\n - id (none, str, label): Names a standalone body. Use of to attach this body to an original mark.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - target (auto, int, label, str): Body rendering scope. Auto inherits the original mark's exact instance, or uses the current scope for standalone bodies.\n - series (auto, str): Collection series for a standalone body. Omit with of; attachments inherit the original's series.\n - marker-style (auto, function): A custom styling function for the marker.\n - backlink (auto, bool, str): Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n - stroke (auto, stroke, none): The border stroke.\n - fill (auto, color, none): The background fill color.\n - radius (auto, length, dictionary): The border radius.\n - render-single (auto, function): A custom render function for the inner layout of the body.\n - container-func (auto, str, function): A custom container wrapper for the body block, or a preset name (\"plain\", \"rect\", \"alert\", \"stripe\", \"tinted\").\n - ..args (arguments): Additional arguments are rejected; put custom container options in `container-args`.",
      "args": {
        "body": {
          "description": "The actual text or content of the note.",
          "types": [
            "content"
          ]
        },
        "id": {
          "description": "Names a standalone body. Use of to attach this body to an original mark.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "target": {
          "description": "Body rendering scope. Auto inherits the original mark's exact instance,\n or uses the current scope for a standalone body. An explicit override\n changes body rendering without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Collection series for a standalone body. Omit with of; attachments\n inherit their original's series and reject explicit series arguments.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "layer": {
          "description": "Page bodies: flow uses native pagination; overlays reserve space.\n Block bodies collect in native flow for every valid layer request.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "dictionary"
          ]
        },
        "render-single": {
          "description": "A custom render function for the inner layout of the body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "..args": {
          "description": "Additional arguments are rejected; put custom container options in `container-args`.",
          "types": [
            "arguments"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-footnote",
      "description": "A wrapper for generating footnotes.\n\n This function creates a mark in the text and delegates the body to ```ref #deixis-footnote-body```.\n\n ```example\n The library\u2019s atmosphere was defined by a subtle\n #deixis-footnote[bibliosmia][The smell of old books.]\n that seemed to settle on the skin like a light dust.\n ```\n\n - ..args (arguments): Accepts up to two positional arguments: `[mark][body]`. All named arguments are forwarded to ```ref #deixis-footnote-body```.\n - mark-type (auto, str): The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.\n - id (none, str, label): Names the original annotation created by this wrapper. Without id, its identity is private.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - numbering (auto, none, str, function, dictionary): The numbering style for the footnote marker.\n - marker (auto, content): A hardcoded marker to use instead of the automatic counter.\n - target (auto, int, label, str): Creation uses the current scope; of inherits the original's rendering instance. Explicit values override the body scope.\n - series (auto, str): Original counter series, defaulting to `\"default\"`. Omit with of; attachments inherit.\n - marker-style (auto, function): A custom styling function `(string) => content` for the footnote marker.\n - marker-position (auto, alignment, dictionary): Mark marker placement.\n - stroke (auto, stroke, none): The border stroke.\n - fill (auto, color, none): The background fill color.\n - radius (auto, length, dictionary): The border radius.\n - inline-mode (auto, str): The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n - pins (array): Array of pin names for the region mark.\n - padding (auto, length, str): Internal padding for the region mark.\n - region-shape (auto, function): Shape drawing function for the region mark.\n - layer (auto, str): Rendering layer for the region mark. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n - inline (bool): If `true`, force the region mark into an inline box.\n - backlink (auto, bool, str): Whether to generate a clickable backlink returning to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n - render-single (auto, function): A custom render function for the inner layout of the body.\n - container-func (auto, str, function): A custom container wrapper for the body block, or a preset name (\"plain\", \"rect\", \"alert\", \"stripe\", \"tinted\").",
      "args": {
        "..args": {
          "description": "Accepts up to two positional arguments: `[mark][body]`.\n With of, accepts only [body] and body options. Configure the original\n mark separately; non-default mark-only options are rejected.",
          "types": [
            "arguments"
          ]
        },
        "mark-type": {
          "description": "The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "id": {
          "description": "Names the original annotation created by this wrapper. Without id, its identity is private.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "numbering": {
          "description": "The numbering style for the marker.\n A record `(restart: \"page\", pattern: \"1\")` restarts displayed markers per original page; assigned counters stay unchanged.\n `none` disables automatic markers and counter allocation.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "marker": {
          "description": "A hardcoded marker override.",
          "default": "auto",
          "types": [
            "auto",
            "content"
          ]
        },
        "target": {
          "description": "Auto uses the current scope for creation and inherits the original's\n exact rendering instance with of. Explicit values override the body scope\n when attached, without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Original counter series, defaulting to `\"default\"` for creation.\n Omit with of; an attachment inherits and cannot redefine the series.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "marker-position": {
          "description": "Mark marker placement.\n\n See `deixis-inline-mark.marker-position` and `deixis-region-mark.marker-position`.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "inline-mode": {
          "description": "The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n\n See `deixis-inline-mark.inline-mode`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "pins": {
          "description": "Array of pin names for the region mark.\n\n See `deixis-region-mark.pins`.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "padding": {
          "description": "Internal padding for the region mark.\n\n See `deixis-region-mark.padding`.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "str",
            "dictionary"
          ]
        },
        "region-shape": {
          "description": "Shape drawing function for the region mark.\n\n See `deixis-region-mark.region-shape`.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "layer": {
          "description": "Rendering layer for the region mark. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n\n See `deixis-region-mark.layer`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "inline": {
          "description": "If `true`, force the region mark into an inline box.\n\n See `deixis-region-mark.inline`.",
          "default": "false",
          "types": [
            "bool"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "render-single": {
          "description": "A custom render function for the inner layout of the body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-endnote-body",
      "description": "A standalone body content of an endnote.\n\n Body content is preserved. Built-in single renderers fold source indentation\n with native weak marker spacing and retain explicit paragraph/line breaks.\n\n The body of the endnote is completely invisible when declared.\n It is stored as metadata and will only be rendered when you explicitly call ```ref #deixis-print-endnotes()```.\n\n ```example\n //| sandbox-mode: \"page\"\n The abandoned cathedral was a monument to #deixis-inline-mark(id: <sciamachy>, series: \"endnote\")[sciamachy], its crumbling walls silent witnesses to a forgotten struggle.\n Within its hallowed nave, a single #deixis-inline-mark(id: <glabella>, series: \"endnote\")[glabella] on a marble statue caught the moonlight, the only smooth surface left untouched by the decay of time.\n\n #deixis-endnote-body(of: <sciamachy>)[*Sciamachy:* A battle against an imaginary enemy; literally _shadow-fighting_.]\n #deixis-endnote-body(of: <glabella>)[*Glabella:* The smooth part of the forehead between the eyebrows and just above the nose.]\n ```\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-print-endnotes()\n ```\n\n ```memo\n Endnote wrappers and standalone bodies default to `series: \"endnote\"`.\n Attached bodies inherit their original mark's series. Set the series on the\n original mark, or use `deixis-print-endnotes.series` to select a collection.\n ```\n\n - body (content): The actual text or content of the note.\n - id (none, str, label): Names a standalone body. Use of to attach this body to an original mark.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - target (auto, int, label, str): Body rendering scope. Auto inherits the original mark's exact instance, or uses the current scope for standalone bodies.\n - series (auto, str): Collection series for a standalone body. Omit with of; attachments inherit the original's series.\n - marker-style (auto, function): A custom styling function for the marker.\n - backlink (auto, bool, str): Whether to generate a clickable backlink returning to the mark.\n - stroke (auto, stroke, none): The border stroke.\n - fill (auto, color, none): The background fill color.\n - radius (auto, length, dictionary): The border radius.\n - render-single (auto, function): A custom render function for the inner layout of the body.\n - container-func (auto, str, function): A custom container wrapper for the endnote when printed, or a preset name (\"plain\", \"rect\", \"alert\", \"stripe\", \"tinted\").\n - ..args (arguments): Additional arguments are rejected; put custom container options in `container-args`.",
      "args": {
        "body": {
          "description": "The actual text or content of the note.",
          "types": [
            "content"
          ]
        },
        "id": {
          "description": "Names a standalone body. Use of to attach this body to an original mark.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "target": {
          "description": "Body rendering scope. Auto inherits the original mark's exact instance,\n or uses the current scope for a standalone body. An explicit override\n changes body rendering without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Collection series for a standalone body. Omit with of; attachments\n inherit their original's series and reject explicit series arguments.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "render-single": {
          "description": "A custom render function for the inner layout of the body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "..args": {
          "description": "Additional arguments are rejected; put custom container options in `container-args`.",
          "types": [
            "arguments"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-endnote",
      "description": "A wrapper for generating endnotes.\n\n This function creates a mark in the text and delegates the body to ```ref #deixis-endnote-body```.\n\n ```example\n //| sandbox-mode: \"page\"\n The botanist spent years searching for the idiosyncratic\n #deixis-endnote[*Idiosyncratic:* Something peculiar or individual to a specific person, place, or thing.]\n wildflower that only bloomed in the valley\u2019s deepest shadows.\n As the sun dipped below the horizon, the forest floor began to glow with a soft bioluminescence\n #deixis-endnote[*Bioluminescence:* The production and emission of light by a living organism.]\n that guided her back to camp.\n ```\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-print-endnotes()\n ```\n\n See ```ref #deixis-print-endnotes```.\n\n - ..args (arguments): Accepts up to two positional arguments: `[mark][body]`. Put custom container options in `container-args`.\n - mark-type (auto, str): The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.\n - id (none, str, label): Names the original annotation created by this wrapper. Without id, its identity is private.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - numbering (auto, none, str, function, dictionary): The numbering style for the endnote marker.\n - marker (auto, content): A hardcoded marker override.\n - target (auto, int, label, str): Creation uses the current scope; of inherits the original's rendering instance. Explicit values override the body scope.\n - series (auto, str): Original counter series, defaulting to `\"endnote\"`. Omit with of; attachments inherit.\n - marker-style (auto, function): A custom styling function for the marker.\n - marker-position (auto, alignment, dictionary): Mark marker placement.\n - stroke (auto, stroke, none): The border stroke.\n - fill (auto, color, none): The background fill color.\n - radius (auto, length, dictionary): The border radius.\n - inline-mode (auto, str): The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n - pins (array): Array of pin names for the region mark.\n - padding (auto, length, str): Internal padding for the region mark.\n - region-shape (auto, function): Shape drawing function for the region mark.\n - layer (auto, str): Rendering layer for the region mark. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n - inline (bool): If `true`, force the region mark into an inline box.\n - backlink (auto, bool, str): Whether to generate a clickable backlink returning to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n - container-func (auto, str, function): A custom container wrapper for the endnote when printed, or a preset name (\"plain\", \"rect\", \"alert\", \"stripe\", \"tinted\").",
      "args": {
        "..args": {
          "description": "Accepts up to two positional arguments: `[mark][body]`.\n With of, accepts only [body] and body options. Configure the original\n mark separately; non-default mark-only options are rejected.",
          "types": [
            "arguments"
          ]
        },
        "mark-type": {
          "description": "The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "id": {
          "description": "Names the original annotation created by this wrapper. Without id, its identity is private.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "numbering": {
          "description": "The numbering style for the marker.\n A record `(restart: \"page\", pattern: \"1\")` restarts displayed markers per original page; assigned counters stay unchanged.\n `none` disables automatic markers and counter allocation.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "marker": {
          "description": "A hardcoded marker override.",
          "default": "auto",
          "types": [
            "auto",
            "content"
          ]
        },
        "target": {
          "description": "Auto uses the current scope for creation and inherits the original's\n exact rendering instance with of. Explicit values override the body scope\n when attached, without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Original counter series, defaulting to `\"endnote\"` for creation.\n Omit with of; an attachment inherits and cannot redefine the series.\n\n ```info\n Endnotes default to the `\"endnote\"` series, review comments to `\"review\"`,\n and other note wrappers to `\"default\"`.\n ```",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "marker-position": {
          "description": "Mark marker placement.\n\n See `deixis-inline-mark.marker-position` and `deixis-region-mark.marker-position`.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "inline-mode": {
          "description": "The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n\n See `deixis-inline-mark.inline-mode`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "pins": {
          "description": "Array of pin names for the region mark.\n\n See `deixis-region-mark.pins`.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "padding": {
          "description": "Internal padding for the region mark.\n\n See `deixis-region-mark.padding`.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "str",
            "dictionary"
          ]
        },
        "region-shape": {
          "description": "Shape drawing function for the region mark.\n\n See `deixis-region-mark.region-shape`.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "layer": {
          "description": "Rendering layer for the region mark. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n\n See `deixis-region-mark.layer`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "inline": {
          "description": "If `true`, force the region mark into an inline box.\n\n See `deixis-region-mark.inline`.",
          "default": "false",
          "types": [
            "bool"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "render-single": {
          "description": "A custom single-note body renderer, forwarded to the endnote body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-print-endnotes",
      "description": "Renders a collected list of endnote bodies at the current location in the document.\n\n This function selects unprinted endnotes matching the specified target\n and series, and prints them in a formatted list. Source boundaries can select\n the notes for a chapter or section.\n\n ````info\n Note bodies cannot be printed twice.\n The first matching printer owns each body, including when filtered ranges overlap.\n ```example\n //| sandbox-mode: \"page\"\n #deixis-print-endnotes()\n ```\n ````\n\n - target (int, label, str): The specific block/minipage target to pull notes from.\n - series (auto, str, array): Filters to notes belonging to a specific series or array of series.\n - after (none, location, label, str, dictionary, selector, function): Only prints bodies declared after this exclusive native or pin boundary.\n - before (none, location, label, str, dictionary, selector, function): Only prints bodies declared before this exclusive boundary. Defaults to the printer's location; an explicit future boundary can include later declarations.\n - marker-style (auto, function): Overrides the marker style for the printed list.\n - body-style (auto, function): Overrides the text styling of the printed bodies.\n - backlink (auto, bool, str): Overrides the backlink generation setting for these notes. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n - separator (auto, content, none): An optional separator to draw between the list of notes (e.g., a line).\n - clearance (auto, length): The spacing before the list of endnotes begins.\n - gap (auto, length): The vertical spacing between individual endnotes.\n - marker-gap (auto, length): The horizontal spacing between the endnote number and its text body.\n - indent (auto, length): Overrides the indentation applied to the note body.\n - render-single (auto, function): A custom rendering function `(note-data, ..args) => content` to override the local `render-single`.\n - render-group (auto, function): A custom rendering function `(notes-array, ..args) => content` to override the local `render-group`.\n - container-func (auto, str, function): Overrides the container for each printed body.",
      "args": {
        "target": {
          "description": "The specific block/minipage target to pull notes from.",
          "default": "0",
          "types": [
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Filters to notes belonging to a specific series or array of series.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "array"
          ]
        },
        "after": {
          "description": "Only prints bodies declared *after* this location, label, or `<deixis-pin>` name.\n Strings select the first global pin; structured name/scope/select/page\n targets require one selected occurrence. Native locations/labels also work.\n Native selectors use their first match, as native labels do.",
          "default": "none",
          "types": [
            "none",
            "location",
            "label",
            "str",
            "dictionary",
            "selector",
            "function"
          ]
        },
        "before": {
          "description": "Only prints bodies declared *before* this boundary. Defaults to the printer's location.\n An explicit future boundary can include bodies declared after this printer.\n Strings select the first global pin; structured name/scope/select/page\n targets require one selected occurrence. Forward pin declarations work.\n Native selectors use their first match, as native labels do.",
          "default": "none",
          "types": [
            "none",
            "location",
            "label",
            "str",
            "dictionary",
            "selector",
            "function"
          ]
        },
        "marker-style": {
          "description": "Overrides the marker style for the printed list.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "body-style": {
          "description": "Overrides the text styling of the printed bodies.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "backlink": {
          "description": "Overrides the backlink generation setting for these notes. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "separator": {
          "description": "An optional separator to draw between the list of notes (e.g., a line).",
          "default": "auto",
          "types": [
            "auto",
            "content",
            "none"
          ]
        },
        "clearance": {
          "description": "The spacing before the list of endnotes begins.",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "gap": {
          "description": "The vertical spacing between individual endnotes.",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "marker-gap": {
          "description": "The horizontal spacing between the endnote number and its text body.",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "indent": {
          "description": "Overrides the indentation applied to the note body.",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "render-single": {
          "description": "A custom rendering function `(note-data, ..args) => content` to override the local `render-single`.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "render-group": {
          "description": "A custom rendering function `(notes-array, ..args) => content` to override the local `render-group`.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "Overrides the container for each printed body: a preset name or a function.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "auto",
          "types": [
            "auto",
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-margin-note-body",
      "description": "A standalone body content of a margin note.\n\n Body content is preserved. Built-in single renderers fold source indentation\n with native weak marker spacing and retain explicit paragraph/line breaks.\n\n ```example\n //| sandbox-mode: \"page\"\n The old manor was a labyrinth of\n #deixis-inline-mark(id: <crepuscular>)[crepuscular]\n corridors, where the shadows seemed to stretch and breathe with the setting sun.\n\n #deixis-margin-note-body(of: <crepuscular>)[Relating to or resembling twilight.]\n ```\n\n - body (content): The actual text or content of the note.\n - id (none, str, label): Names a standalone body. Use of to attach this body to an original mark.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - target (auto, int, label, str): Body rendering scope. Auto inherits the original mark's exact instance, or uses the current scope for standalone bodies.\n - series (auto, str): Collection series for a standalone body. Omit with of; attachments inherit the original's series.\n - marker-style (auto, function): A custom styling function for the marker.\n - backlink (auto, bool, str): Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n - stroke (auto, stroke, none): The border stroke.\n - fill (auto, color, none): The background fill color.\n - radius (auto, length, dictionary): The border radius.\n - width (auto, length, relative): The width of the margin note body. Defaults to `90%` of the margin width.\n - dx (auto, length): Horizontal offset adjustment for the body.\n - dy (length): Vertical offset adjustment for the body. Defaults to `0pt`.\n - side (auto, alignment): Which margin to place the note in (`left` or `right`). If `auto`, uses the side nearest the mark.\n - side-strategy (auto, str): Strategy to select side for margin note. Choices: `\"nearest\"` | `\"strict\"`.\n - mark-align (auto, alignment, dictionary): How the note aligns vertically relative to its mark.\n - mark-align-strictness (auto, str): How strictly the engine attempts to keep the note exactly aligned with its mark. Choices: `\"strict\"` | `\"loose\"` | `\"none\"`.\n - spillover (auto, bool): Allow this note to spill over page boundary.\n - overflow (auto, str, dictionary): Final margin-frame policy: \"allow\" or \"error\".\n - anchor-pin (none, str, dictionary): Pin name or `(name:, scope:, select:, page:)` target; one selected occurrence anchors the body.\n - render-single (auto, function): A custom render function for the inner layout of the body.\n - container-func (auto, str, function): A custom container wrapper for the body block, or a preset name (\"plain\", \"rect\", \"alert\", \"stripe\", \"tinted\").\n - ..args (arguments): Additional arguments are rejected; put custom container options in `container-args`.",
      "args": {
        "body": {
          "description": "The actual text or content of the note.",
          "types": [
            "content"
          ]
        },
        "id": {
          "description": "Names a standalone body. Use of to attach this body to an original mark.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "target": {
          "description": "Body rendering scope. Auto inherits the original mark's exact instance,\n or uses the current scope for a standalone body. An explicit override\n changes body rendering without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Collection series for a standalone body. Omit with of; attachments\n inherit their original's series and reject explicit series arguments.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "connector": {
          "description": "Connector from the original mark to this body. A route name such as\n `\"curve\"` is shorthand for `(route: \"curve\")`; a record also sets ports,\n via/segments, heads, stroke, radius, layer and painters. It merges with\n `deixis-set(connector: ...)` defaults field by field; none disables it.\n Routes also accept settings records such as `(kind: \"curve\", tension: 2)`.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(connector: (route: \"right-angle\", heads: \"stealth\"))[A connected note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "dictionary"
          ]
        },
        "width": {
          "description": "The width of the margin note body. Defaults to `90%` of the margin width.\n\n ```example\n //| sandbox-mode: \"page\"\n #lorem(3)\n #deixis-margin-note(width: 50%)[A narrow 50% note.]\n ```",
          "default": "90%",
          "types": [
            "auto",
            "length",
            "relative"
          ]
        },
        "dx": {
          "description": "Horizontal offset adjustment for the body.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(dx: -30pt)[A horizontally shifted note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "dy": {
          "description": "Vertical offset adjustment for the body.\n\n ```info\n `dy` is applied pre-layout, meaning that the final coordinates of the note can change after the rubber band pass.\n ```\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(dy: -50pt)[A vertically shifted note.]\n ```",
          "default": "0pt",
          "types": [
            "length"
          ]
        },
        "side": {
          "description": "Which margin to place the note in (`left` or `right`). If `auto`, uses the side nearest the mark.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(side: left)[This is a left side note.]\n #deixis-margin-note(side: right)[This is a right side note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "alignment"
          ]
        },
        "side-strategy": {
          "description": "Strategy to select side for margin note. Choices: `\"nearest\"` | `\"strict\"`.\n\n - With `side-strategy: \"nearest\"`, notes will prefer the side that minimizes the vertical distance from the mark to the body.\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(side-strategy: \"nearest\")[Note A body.]\n #deixis-margin-note(side-strategy: \"nearest\")[Note B body.]\n ```\n\n - With `side-strategy: \"strict\"`, notes will prefer the more visually favorable side until it is overflow.\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(side-strategy: \"strict\")[Note A body.]\n #deixis-margin-note(side-strategy: \"strict\")[Note B body.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "mark-align": {
          "description": "How the note aligns vertically relative to its mark.\n - It can be an `alignment` or an equivalent `str`.\n ```example\n //| sandbox-mode: \"page\"\n #lorem(8)\n #deixis-margin-note(\n   mark-align: bottom,\n   connector: \"right-angle\",\n   stroke: red,\n   container-func: deixis-rect-container)[Top-aligned note body]\n ```\n - Or a component-scope `dictionary`, only useful with `mark-type: \"region\"`.\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(\n   mark-type: \"region\",\n   padding: \"text\",\n   mark-align: (mark: horizon, body: horizon),\n   connector: \"right-angle\",\n   stroke: red,\n   container-func: deixis-rect-container)[#lorem(8)][Horizon-aligned note body.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "mark-align-strictness": {
          "description": "How strictly the engine attempts to keep the note exactly aligned with its mark. Choices: `\"strict\"` | `\"loose\"` | `\"none\"`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "spillover": {
          "description": "Allow this note to spill over page boundary.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(spillover: false)[This is a very long note. #lorem(120)]\n #deixis-margin-note(spillover: false)[This is another extremely long note. #lorem(120)]\n #deixis-margin-note(spillover: true)[This is a spilled note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "bool"
          ]
        },
        "overflow": {
          "description": "Keep out-of-frame placement (\"allow\") or diagnose final margin bounds (\"error\").\n The default is inherited; factory behavior is \"allow\".",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "dictionary"
          ]
        },
        "anchor-pin": {
          "description": "A specific `#deixis-pin` name to anchor the body to, instead of the default layout logic.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(\n   anchor-pin: \"pin0\")[A note anchored to a pin.]\n #lorem(20)\n #deixis-pin(\"pin0\")\n ```\n\n Structured pin targets accept scope, select (first/last/unique), and page.\n Flow placement filters to the declaration page before selecting.",
          "default": "none",
          "types": [
            "none",
            "str",
            "dictionary"
          ]
        },
        "layer": {
          "description": "Body layer; flow is immediate placement with no spillover or collision pass.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "dictionary"
          ]
        },
        "render-single": {
          "description": "A custom render function for the inner layout of the body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "..args": {
          "description": "Additional arguments are rejected; put custom container options in `container-args`.",
          "types": [
            "arguments"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-margin-note",
      "description": "A wrapper for generating margin notes.\n\n This function creates a mark in the text and delegates the body to ```ref #deixis-margin-note-body```.\n\n ```example\n //| sandbox-mode: \"page\"\n The traveler felt a sudden sense of\n #deixis-margin-note[fernweh][A deep, aching longing for far-off places; literally _farsickness_.]\n as he watched the ships disappear beyond the horizon, bound for lands he had never seen.\n ```\n\n - ..args (arguments): Accepts up to two positional arguments: `[mark][body]`. All named arguments are forwarded to ```ref #deixis-margin-note-body```.\n - mark-type (auto, str): The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.\n - id (none, str, label): Names the original annotation created by this wrapper. Without id, its identity is private.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - numbering (auto, none, str, function, dictionary): The numbering style for the marker.\n - marker (auto, content): A hardcoded marker override.\n - target (auto, int, label, str): Creation uses the current scope; of inherits the original's rendering instance. Explicit values override the body scope.\n - series (auto, str): Original counter series, defaulting to `\"default\"`. Omit with of; attachments inherit.\n - marker-style (auto, function): A custom styling function for the marker.\n - marker-position (auto, alignment, dictionary): Mark marker placement.\n - stroke (auto, stroke, none): The border stroke.\n - fill (auto, color, none): The background fill color.\n - radius (auto, length, dictionary): The border radius.\n - inline-mode (auto, str): The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n - pins (array): Array of pin names for the region mark.\n - padding (auto, length, str, dictionary): Internal padding for the region mark.\n - region-shape (auto, function): Shape drawing function for the region mark.\n - layer (auto, str): Rendering layer for the region mark. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n - inline (bool): If `true`, force the region mark into an inline box.\n - backlink (auto, bool, str): Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n - width (auto, length, relative): The width of the margin note body. Defaults to `90%` of the margin width.\n - dx (auto, length): Horizontal offset adjustment for the body.\n - dy (length): Vertical offset adjustment for the body. Defaults to `0pt`.\n - side (auto, alignment): Which margin to place the note in (`left` or `right`). If `auto`, uses the side nearest the mark.\n - side-strategy (auto, str): Strategy to select side for margin note. Choices: `\"nearest\"` | `\"strict\"`.\n - mark-align (auto, alignment, dictionary): How the note aligns vertically relative to its mark.\n - mark-align-strictness (auto, str): How strictly the engine attempts to keep the note exactly aligned with its mark. Choices: `\"strict\"` | `\"loose\"` | `\"none\"`.\n - spillover (auto, bool): Allow this note to spill over page boundary.\n - overflow (auto, str, dictionary): Final margin-frame policy: \"allow\" or \"error\".\n - anchor-pin (none, str, dictionary): Pin name or structured target selecting one anchor occurrence.\n - render-single (auto, function): A custom render function for the inner layout of the body.\n - container-func (auto, str, function): A custom container wrapper for the body block, or a preset name (\"plain\", \"rect\", \"alert\", \"stripe\", \"tinted\").",
      "args": {
        "..args": {
          "description": "Accepts up to two positional arguments: `[mark][body]`.\n With of, accepts only [body] and body options. Configure the original\n mark separately; non-default mark-only options are rejected.",
          "types": [
            "arguments"
          ]
        },
        "mark-type": {
          "description": "The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "id": {
          "description": "Names the original annotation created by this wrapper. Without id, its identity is private.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "numbering": {
          "description": "The numbering style for the marker.\n A record `(restart: \"page\", pattern: \"1\")` restarts displayed markers per original page; assigned counters stay unchanged.\n `none` disables automatic markers and counter allocation.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "marker": {
          "description": "A hardcoded marker override.",
          "default": "auto",
          "types": [
            "auto",
            "content"
          ]
        },
        "target": {
          "description": "Auto uses the current scope for creation and inherits the original's\n exact rendering instance with of. Explicit values override the body scope\n when attached, without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Original counter series, defaulting to `\"default\"` for creation.\n Omit with of; an attachment inherits and cannot redefine the series.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "marker-position": {
          "description": "Mark marker placement.\n\n See `deixis-inline-mark.marker-position` and `deixis-region-mark.marker-position`.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "inline-mode": {
          "description": "The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n\n See `deixis-inline-mark.inline-mode`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "pins": {
          "description": "Array of pin names for the region mark.\n\n See `deixis-region-mark.pins`.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "padding": {
          "description": "Internal padding for the region mark.\n\n See `deixis-region-mark.padding`.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "str",
            "dictionary"
          ]
        },
        "region-shape": {
          "description": "Shape drawing function for the region mark.\n\n See `deixis-region-mark.region-shape`.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "layer": {
          "description": "Rendering layer for the region mark. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n\n See `deixis-region-mark.layer`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "inline": {
          "description": "If `true`, force the region mark into an inline box.\n\n See `deixis-region-mark.inline`.",
          "default": "false",
          "types": [
            "bool"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "connector": {
          "description": "Connector from the original mark to this body. A route name such as\n `\"curve\"` is shorthand for `(route: \"curve\")`; a record also sets ports,\n via/segments, heads, stroke, radius, layer and painters. It merges with\n `deixis-set(connector: ...)` defaults field by field; none disables it.\n Routes also accept settings records such as `(kind: \"curve\", tension: 2)`.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(connector: (route: \"right-angle\", heads: \"stealth\"))[A connected note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "dictionary"
          ]
        },
        "width": {
          "description": "The width of the margin note body.\n\n See `deixis-margin-note-body.width`.",
          "default": "90%",
          "types": [
            "auto",
            "length",
            "relative"
          ]
        },
        "dx": {
          "description": "Horizontal offset adjustment for the body.\n\n See `deixis-margin-note-body.dx`.",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "dy": {
          "description": "Vertical offset adjustment for the body.\n\n See `deixis-margin-note-body.dy`.",
          "default": "0pt",
          "types": [
            "length"
          ]
        },
        "side": {
          "description": "Which margin to place the note in (`left` or `right`).\n\n See `deixis-margin-note-body.side`.",
          "default": "auto",
          "types": [
            "auto",
            "alignment"
          ]
        },
        "side-strategy": {
          "description": "Strategy to select side for margin note. Choices: `\"nearest\"` | `\"strict\"`.\n\n See `deixis-margin-note-body.side-strategy`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "mark-align": {
          "description": "How the note aligns vertically relative to its mark.\n\n See `deixis-margin-note-body.mark-align`.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "mark-align-strictness": {
          "description": "How strictly the engine attempts to keep the note exactly aligned with its mark. Choices: `\"strict\"` | `\"loose\"` | `\"none\"`.\n\n See `deixis-margin-note-body.mark-align-strictness`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "spillover": {
          "description": "Allow this note to spill over page boundary.\n\n See `deixis-margin-note-body.spillover`.",
          "default": "auto",
          "types": [
            "auto",
            "bool"
          ]
        },
        "overflow": {
          "description": "Keep out-of-frame placement (\"allow\") or diagnose final margin bounds (\"error\").\n The default is inherited; factory behavior is \"allow\".",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "dictionary"
          ]
        },
        "anchor-pin": {
          "description": "A specific `#deixis-pin` name to anchor the body to, instead of the default layout logic.\n\n See `deixis-margin-note-body.anchor-pin`.",
          "default": "none",
          "types": [
            "none",
            "str",
            "dictionary"
          ]
        },
        "render-single": {
          "description": "A custom render function for the inner layout of the body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-sidenote-body",
      "description": "A ```ref #deixis-margin-note-body``` with default `side: \"outside\", mark-align-strictness: \"loose\"`.\n Uses margin-note configuration and query type. Explicit arguments override\n the preset; mark-align-strictness: auto inherits configured strictness.",
      "args": {
        "body": {
          "description": "The actual text or content of the note.",
          "types": [
            "content"
          ]
        },
        "id": {
          "description": "Names a standalone body. Use of to attach this body to an original mark.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "target": {
          "description": "Body rendering scope. Auto inherits the original mark's exact instance,\n or uses the current scope for a standalone body. An explicit override\n changes body rendering without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Collection series for a standalone body. Omit with of; attachments\n inherit their original's series and reject explicit series arguments.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "connector": {
          "description": "Connector from the original mark to this body. A route name such as\n `\"curve\"` is shorthand for `(route: \"curve\")`; a record also sets ports,\n via/segments, heads, stroke, radius, layer and painters. It merges with\n `deixis-set(connector: ...)` defaults field by field; none disables it.\n Routes also accept settings records such as `(kind: \"curve\", tension: 2)`.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(connector: (route: \"right-angle\", heads: \"stealth\"))[A connected note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "dictionary"
          ]
        },
        "width": {
          "description": "The width of the margin note body. Defaults to `90%` of the margin width.\n\n ```example\n //| sandbox-mode: \"page\"\n #lorem(3)\n #deixis-margin-note(width: 50%)[A narrow 50% note.]\n ```",
          "default": "90%",
          "types": [
            "auto",
            "length",
            "relative"
          ]
        },
        "dx": {
          "description": "Horizontal offset adjustment for the body.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(dx: -30pt)[A horizontally shifted note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "dy": {
          "description": "Vertical offset adjustment for the body.\n\n ```info\n `dy` is applied pre-layout, meaning that the final coordinates of the note can change after the rubber band pass.\n ```\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(dy: -50pt)[A vertically shifted note.]\n ```",
          "default": "0pt",
          "types": [
            "length"
          ]
        },
        "side": {
          "description": "Which margin to place the note in (`left` or `right`). If `auto`, uses the side nearest the mark.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(side: left)[This is a left side note.]\n #deixis-margin-note(side: right)[This is a right side note.]\n ```",
          "default": "\"outside\"",
          "types": [
            "auto",
            "alignment"
          ]
        },
        "side-strategy": {
          "description": "Strategy to select side for margin note. Choices: `\"nearest\"` | `\"strict\"`.\n\n - With `side-strategy: \"nearest\"`, notes will prefer the side that minimizes the vertical distance from the mark to the body.\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(side-strategy: \"nearest\")[Note A body.]\n #deixis-margin-note(side-strategy: \"nearest\")[Note B body.]\n ```\n\n - With `side-strategy: \"strict\"`, notes will prefer the more visually favorable side until it is overflow.\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(side-strategy: \"strict\")[Note A body.]\n #deixis-margin-note(side-strategy: \"strict\")[Note B body.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "mark-align": {
          "description": "How the note aligns vertically relative to its mark.\n - It can be an `alignment` or an equivalent `str`.\n ```example\n //| sandbox-mode: \"page\"\n #lorem(8)\n #deixis-margin-note(\n   mark-align: bottom,\n   connector: \"right-angle\",\n   stroke: red,\n   container-func: deixis-rect-container)[Top-aligned note body]\n ```\n - Or a component-scope `dictionary`, only useful with `mark-type: \"region\"`.\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(\n   mark-type: \"region\",\n   padding: \"text\",\n   mark-align: (mark: horizon, body: horizon),\n   connector: \"right-angle\",\n   stroke: red,\n   container-func: deixis-rect-container)[#lorem(8)][Horizon-aligned note body.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "mark-align-strictness": {
          "description": "How strictly the engine attempts to keep the note exactly aligned with its mark. Choices: `\"strict\"` | `\"loose\"` | `\"none\"`.",
          "default": "\"loose\"",
          "types": [
            "auto",
            "str"
          ]
        },
        "spillover": {
          "description": "Allow this note to spill over page boundary.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(spillover: false)[This is a very long note. #lorem(120)]\n #deixis-margin-note(spillover: false)[This is another extremely long note. #lorem(120)]\n #deixis-margin-note(spillover: true)[This is a spilled note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "bool"
          ]
        },
        "overflow": {
          "description": "Keep out-of-frame placement (\"allow\") or diagnose final margin bounds (\"error\").\n The default is inherited; factory behavior is \"allow\".",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "dictionary"
          ]
        },
        "anchor-pin": {
          "description": "A specific `#deixis-pin` name to anchor the body to, instead of the default layout logic.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(\n   anchor-pin: \"pin0\")[A note anchored to a pin.]\n #lorem(20)\n #deixis-pin(\"pin0\")\n ```\n\n Structured pin targets accept scope, select (first/last/unique), and page.\n Flow placement filters to the declaration page before selecting.",
          "default": "none",
          "types": [
            "none",
            "str",
            "dictionary"
          ]
        },
        "layer": {
          "description": "Body layer; flow is immediate placement with no spillover or collision pass.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "dictionary"
          ]
        },
        "render-single": {
          "description": "A custom render function for the inner layout of the body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "..args": {
          "description": "Additional arguments are rejected; put custom container options in `container-args`.",
          "types": [
            "arguments"
          ]
        }
      },
      "parent": {
        "name": "deixis-margin-note-body",
        "pos": [],
        "named": {
          "side": "\"outside\"",
          "mark-align-strictness": "\"loose\""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-sidenote",
      "description": "A ```ref #deixis-margin-note``` with default `side: \"outside\", mark-align-strictness: \"loose\"`.\n Uses margin-note configuration and query type, without a separate sidenote\n engine. Set mark-align-strictness: auto to inherit configured strictness.",
      "args": {
        "..args": {
          "description": "Accepts up to two positional arguments: `[mark][body]`.\n With of, accepts only [body] and body options. Configure the original\n mark separately; non-default mark-only options are rejected.",
          "types": [
            "arguments"
          ]
        },
        "mark-type": {
          "description": "The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "id": {
          "description": "Names the original annotation created by this wrapper. Without id, its identity is private.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "numbering": {
          "description": "The numbering style for the marker.\n A record `(restart: \"page\", pattern: \"1\")` restarts displayed markers per original page; assigned counters stay unchanged.\n `none` disables automatic markers and counter allocation.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "marker": {
          "description": "A hardcoded marker override.",
          "default": "auto",
          "types": [
            "auto",
            "content"
          ]
        },
        "target": {
          "description": "Auto uses the current scope for creation and inherits the original's\n exact rendering instance with of. Explicit values override the body scope\n when attached, without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Original counter series, defaulting to `\"default\"` for creation.\n Omit with of; an attachment inherits and cannot redefine the series.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "marker-position": {
          "description": "Mark marker placement.\n\n See `deixis-inline-mark.marker-position` and `deixis-region-mark.marker-position`.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "inline-mode": {
          "description": "The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n\n See `deixis-inline-mark.inline-mode`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "pins": {
          "description": "Array of pin names for the region mark.\n\n See `deixis-region-mark.pins`.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "padding": {
          "description": "Internal padding for the region mark.\n\n See `deixis-region-mark.padding`.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "str",
            "dictionary"
          ]
        },
        "region-shape": {
          "description": "Shape drawing function for the region mark.\n\n See `deixis-region-mark.region-shape`.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "layer": {
          "description": "Rendering layer for the region mark. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n\n See `deixis-region-mark.layer`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "inline": {
          "description": "If `true`, force the region mark into an inline box.\n\n See `deixis-region-mark.inline`.",
          "default": "false",
          "types": [
            "bool"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "connector": {
          "description": "Connector from the original mark to this body. A route name such as\n `\"curve\"` is shorthand for `(route: \"curve\")`; a record also sets ports,\n via/segments, heads, stroke, radius, layer and painters. It merges with\n `deixis-set(connector: ...)` defaults field by field; none disables it.\n Routes also accept settings records such as `(kind: \"curve\", tension: 2)`.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-margin-note(connector: (route: \"right-angle\", heads: \"stealth\"))[A connected note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "dictionary"
          ]
        },
        "width": {
          "description": "The width of the margin note body.\n\n See `deixis-margin-note-body.width`.",
          "default": "90%",
          "types": [
            "auto",
            "length",
            "relative"
          ]
        },
        "dx": {
          "description": "Horizontal offset adjustment for the body.\n\n See `deixis-margin-note-body.dx`.",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "dy": {
          "description": "Vertical offset adjustment for the body.\n\n See `deixis-margin-note-body.dy`.",
          "default": "0pt",
          "types": [
            "length"
          ]
        },
        "side": {
          "description": "Which margin to place the note in (`left` or `right`).\n\n See `deixis-margin-note-body.side`.",
          "default": "\"outside\"",
          "types": [
            "auto",
            "alignment"
          ]
        },
        "side-strategy": {
          "description": "Strategy to select side for margin note. Choices: `\"nearest\"` | `\"strict\"`.\n\n See `deixis-margin-note-body.side-strategy`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "mark-align": {
          "description": "How the note aligns vertically relative to its mark.\n\n See `deixis-margin-note-body.mark-align`.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "mark-align-strictness": {
          "description": "How strictly the engine attempts to keep the note exactly aligned with its mark. Choices: `\"strict\"` | `\"loose\"` | `\"none\"`.\n\n See `deixis-margin-note-body.mark-align-strictness`.",
          "default": "\"loose\"",
          "types": [
            "auto",
            "str"
          ]
        },
        "spillover": {
          "description": "Allow this note to spill over page boundary.\n\n See `deixis-margin-note-body.spillover`.",
          "default": "auto",
          "types": [
            "auto",
            "bool"
          ]
        },
        "overflow": {
          "description": "Keep out-of-frame placement (\"allow\") or diagnose final margin bounds (\"error\").\n The default is inherited; factory behavior is \"allow\".",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "dictionary"
          ]
        },
        "anchor-pin": {
          "description": "A specific `#deixis-pin` name to anchor the body to, instead of the default layout logic.\n\n See `deixis-margin-note-body.anchor-pin`.",
          "default": "none",
          "types": [
            "none",
            "str",
            "dictionary"
          ]
        },
        "render-single": {
          "description": "A custom render function for the inner layout of the body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        }
      },
      "parent": {
        "name": "deixis-margin-note",
        "pos": [],
        "named": {
          "side": "\"outside\"",
          "mark-align-strictness": "\"loose\""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-comment",
      "description": "A review comment: a ```ref #deixis-margin-note``` in the `\"review\"` series\n with lettered markers and `author`/`status` fields. Remove these comments\n from a final copy with `deixis-set(omit: (series: (\"review\",)))`.\n\n ```example\n The #deixis-comment(author: \"Ada\", status: \"open\")[proposed method][\n   State the conditions under which this claim holds.]\n preserves the argument.\n ```\n\n - author (none, str, content): Stored as `note.data.author`; shown in the header.\n - status (none, str, content): Stored as `note.data.status`; shown in the header.\n - data (dictionary): Further annotation fields, merged with author/status.\n - series (str): The counter/omission series. Defaults to `\"review\"`.\n - numbering (auto, none, str, function, dictionary): Marker numbering; letters by default.\n - header (auto, none, function): Body heading. auto shows the present fields in bold, joined by \" \u00b7 \";\n   a function receives the merged data dictionary.\n - ..args (arguments): `[comment]` or `[passage][comment]` and other margin-note options. Creates an original; of is rejected.",
      "args": {
        "author": {
          "description": "Stored as `note.data.author`; shown in the header.",
          "default": "none",
          "types": [
            "none",
            "str",
            "content"
          ]
        },
        "status": {
          "description": "Stored as `note.data.status`; shown in the header.",
          "default": "none",
          "types": [
            "none",
            "str",
            "content"
          ]
        },
        "data": {
          "description": "Further annotation fields, merged with author/status.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "series": {
          "description": "The counter/omission series.",
          "default": "\"review\"",
          "types": [
            "str"
          ]
        },
        "numbering": {
          "description": "Marker numbering; letters keep comments apart from source notes.\n `none` disables automatic markers and counter allocation.",
          "default": "\"A\"",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "header": {
          "description": "Body heading: auto, none, or a function of the merged data.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "function"
          ]
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-inset-note-body",
      "description": "A standalone body content of an inset note.\n\n Body content is preserved. Built-in single renderers fold source indentation\n with native weak marker spacing and retain explicit paragraph/line breaks.\n\n The body of inset notes are placed at precise geometric coordinates relative an anchor (its mark or a specific pin).\n They are perfect for callouts.\n\n ```example\n The artist spent months wandering the dense pine forests, completely captivated by the local #deixis-inline-mark(id: <apricharity>)[apricharity].\n\n #deixis-inset-note-body(\n   of: <apricharity>,\n   dx: 2.5em,\n   dy: 2em,\n )[\n   warmth of the sun in winter.\n ]\n ```\n\n - body (content): The actual text or content of the note.\n - id (none, str, label): Names a standalone body. Use of to attach this body to an original mark.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - target (auto, int, label, str): Body rendering scope. Auto inherits the original mark's exact instance, or uses the current scope for standalone bodies.\n - series (auto, str): Collection series for a standalone body. Omit with of; attachments inherit the original's series.\n - marker-style (auto, function): A custom styling function for the marker.\n - backlink (auto, bool, str): Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n - stroke (auto, stroke, none): The border stroke.\n - fill (auto, color, none): The background fill color.\n - radius (auto, length, dictionary): The border radius.\n - width (auto, length, relative): The width of the inset note body.\n - placement (none, function): A custom floating placement function (e.g., Typst's native `place`).\n - dx (none, length): Absolute horizontal offset for placing the note.\n - dy (none, length): Absolute vertical offset for placing the note.\n - anchor (dictionary): A dictionary defining how the note aligns to its anchor point (e.g., `(mark: horizon + right, body: horizon + left)`).\n - anchor-pin (none, str, dictionary, array): Pin names or structured targets; selected matches supply bounds and the first selected pin determines the overlay page.\n - layer (auto, str): The rendering layer context. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n - render-single (auto, function): A custom render function for the inner layout of the body.\n - container-func (auto, str, function): A custom container wrapper for the body block, or a preset name (\"plain\", \"rect\", \"alert\", \"stripe\", \"tinted\").\n - ..args (arguments): Additional arguments are rejected; put custom container options in `container-args`.",
      "args": {
        "body": {
          "description": "The actual text or content of the note.",
          "types": [
            "content"
          ]
        },
        "id": {
          "description": "Names a standalone body. Use of to attach this body to an original mark.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "target": {
          "description": "Body rendering scope. Auto inherits the original mark's exact instance,\n or uses the current scope for a standalone body. An explicit override\n changes body rendering without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Collection series for a standalone body. Omit with of; attachments\n inherit their original's series and reject explicit series arguments.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "connector": {
          "description": "Connector from the original mark to this body. A route name such as\n `\"curve\"` is shorthand for `(route: \"curve\")`; a record also sets ports,\n via/segments, heads, stroke, radius, layer and painters. It merges with\n `deixis-set(connector: ...)` defaults field by field; none disables it.\n Routes also accept settings records such as `(kind: \"curve\", tension: 2)`.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-inset-note(dx: 4em, dy: 3em, layer: \"flow\", connector: (route: \"right-angle\", heads: \"stealth\"))[Marked][A connected note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "dictionary"
          ]
        },
        "width": {
          "description": "The width of the inset note body.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "relative"
          ]
        },
        "placement": {
          "description": "A custom floating placement function (e.g., Typst's native `place`).\n\n ```example\n #let place-func(it) = {\n   std.place(top + right, it)\n }\n #deixis-inset-note(placement: place-func)[Mark][Inset note placed by `placement`.]\n ```",
          "default": "none",
          "types": [
            "none",
            "function"
          ]
        },
        "dx": {
          "description": "Absolute horizontal offset for placing the note.\n\n ```example\n #deixis-inset-note(dx: 10pt, dy: 10pt)[Mark][Inset note placed with `dx`, `dy`.]\n ```",
          "default": "none",
          "types": [
            "none",
            "length"
          ]
        },
        "dy": {
          "description": "Absolute vertical offset for placing the note.\n\n See `deixis-inset-note.dx`.",
          "default": "none",
          "types": [
            "none",
            "length"
          ]
        },
        "anchor": {
          "description": "A dictionary defining how the note aligns to its anchor point (e.g., `(mark: horizon + right, body: horizon + left)`).\n\n ```example\n #deixis-inset-note(\n   anchor: (mark: bottom + right, body: top + left),\n   dx: 0pt, dy: 0pt)[Mark][Inset note anchored to the mark.]\n ```",
          "default": "(mark: horizon + right, body: horizon + left)",
          "types": [
            "dictionary"
          ]
        },
        "anchor-pin": {
          "description": "A specific `#deixis-pin` name to anchor the inset note to.\n\n ```example\n #deixis-inset-note(\n   anchor-pin: \"anchor-pin\",\n   anchor: (mark: horizon, body: horizon + left),\n   layer: auto,\n   dx: 0pt, dy: 0pt)[Mark][Inset note anchored to a pin.]\n\n #lorem(3)#deixis-pin(\"anchor-pin\")\n ```\n\n See `deixis-pin`.\n\n Structured targets accept name, scope, select (all/first/last/unique), and\n page. Flow placement filters to its declaration page before selecting.",
          "default": "none",
          "types": [
            "none",
            "str",
            "dictionary",
            "array"
          ]
        },
        "layer": {
          "description": "The rendering layer context. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n\n ```warning\n Similar to `deixis-region-mark.layer`, the `\"flow\"` layer will trigger a `#parbreak` and disrupt your paragraph.\n However, it is still recommended to use `layer: \"flow\"` whenever possible for stability.\n ```",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "render-single": {
          "description": "A custom render function for the inner layout of the body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "..args": {
          "description": "Additional arguments are rejected; put custom container options in `container-args`.",
          "types": [
            "arguments"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-inset-note",
      "description": "A wrapper for generating inset notes.\n\n This function creates a mark in the text and delegates the body to ```ref #deixis-inset-note-body```.\n\n ```example\n The city council has voted to pave the trail with\n #deixis-inset-note(dx: 10pt, dy: 30pt, width: 100pt)[\n   permeable pavement\n ][\n   A porous surface that lets rainwater filter directly into the ground.\n ].\n ```\n\n - ..args (arguments): Accepts up to two positional arguments: `[mark][body]`. All named arguments are forwarded to ```ref #deixis-inset-note-body```.\n - mark-type (auto, str): The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.\n - id (none, str, label): Names the original annotation created by this wrapper. Without id, its identity is private.\n - data (dictionary): Custom annotation fields, kept under note.data. Configure on creation or a standalone body; omit with of.\n - numbering (auto, none, str, function, dictionary): The numbering style for the marker.\n - marker (auto, content): A hardcoded marker override.\n - target (auto, int, label, str): Creation uses the current scope; of inherits the original's rendering instance. Explicit values override the body scope.\n - series (auto, str): Original counter series, defaulting to `\"default\"`. Omit with of; attachments inherit.\n - marker-style (auto, function): A custom styling function for the marker.\n - marker-position (auto, alignment, dictionary): Mark marker placement.\n - stroke (auto, stroke, none): The border stroke.\n - fill (auto, color, none): The background fill color.\n - radius (auto, length, dictionary): The border radius.\n - inline-mode (auto, str): The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n - pins (array): Array of pin names for the region mark.\n - padding (auto, length, str, dictionary): Internal padding for the region mark.\n - region-shape (auto, function): Shape drawing function for the region mark.\n - inline (bool): If `true`, force the region mark into an inline box.\n - backlink (auto, bool, str): Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.\n - width (auto, length, relative): The width of the inset note body.\n - placement (none, function): A custom floating placement function (e.g., Typst's native `#std.place`).\n - dx (none, length): Absolute horizontal offset for placing the note.\n - dy (none, length): Absolute vertical offset for placing the note.\n - anchor (dictionary): A dictionary defining how the note aligns to its anchor point (e.g., `(mark: horizon + right, body: horizon + left)`).\n - anchor-pin (none, str, dictionary, array): Pin names or structured targets selecting anchor bounds.\n - layer (auto, str, dictionary): Rendering layer for the region mark and/or the body. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n - render-single (auto, function): A custom render function for the inner layout of the body.\n - container-func (auto, str, function): A custom container wrapper for the body block, or a preset name (\"plain\", \"rect\", \"alert\", \"stripe\", \"tinted\").",
      "args": {
        "..args": {
          "description": "Accepts up to two positional arguments: `[mark][body]`.\n With of, accepts only [body] and body options. Configure the original\n mark separately; non-default mark-only options are rejected.",
          "types": [
            "arguments"
          ]
        },
        "mark-type": {
          "description": "The type of mark to render in the text. Choices: `\"inline\"` | `\"region\"` | `\"phantom\"`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "id": {
          "description": "Names the original annotation created by this wrapper. Without id, its identity is private.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "data": {
          "description": "Custom annotation fields for creation or a standalone body. Omit with of.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        },
        "of": {
          "description": "Existing original annotation to attach this body to, instead of declaring a new note.",
          "default": "none",
          "types": [
            "none",
            "str",
            "label"
          ]
        },
        "numbering": {
          "description": "The numbering style for the marker.\n A record `(restart: \"page\", pattern: \"1\")` restarts displayed markers per original page; assigned counters stay unchanged.\n `none` disables automatic markers and counter allocation.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "function",
            "dictionary"
          ]
        },
        "marker": {
          "description": "A hardcoded marker override.",
          "default": "auto",
          "types": [
            "auto",
            "content"
          ]
        },
        "target": {
          "description": "Auto uses the current scope for creation and inherits the original's\n exact rendering instance with of. Explicit values override the body scope\n when attached, without moving the original counter.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "label",
            "str"
          ]
        },
        "series": {
          "description": "Original counter series, defaulting to `\"default\"` for creation.\n Omit with of; an attachment inherits and cannot redefine the series.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function for the marker.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "stroke": {
          "description": "The border stroke.",
          "default": "auto",
          "types": [
            "auto",
            "stroke",
            "none"
          ]
        },
        "fill": {
          "description": "The background fill color.",
          "default": "auto",
          "types": [
            "auto",
            "color",
            "none"
          ]
        },
        "radius": {
          "description": "The border radius.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "dictionary"
          ]
        },
        "z-index": {
          "description": "Overlay paint priority; higher integers paint later within a layer.\n Native flow retains its order. Component dictionaries are supported.",
          "default": "auto",
          "types": [
            "auto",
            "int",
            "dictionary"
          ]
        },
        "marker-position": {
          "description": "Mark marker placement.\n\n See `deixis-inline-mark.marker-position` and `deixis-region-mark.marker-position`.",
          "default": "auto",
          "types": [
            "auto",
            "alignment",
            "dictionary"
          ]
        },
        "inline-mode": {
          "description": "The visual decoration applied to the marked inline text. Choices: `\"highlight\"` | `\"box\"` | `\"parentheses\"` | `\"underline\"` | `\"text-fill\"` | `\"none\"`.\n\n See `deixis-inline-mark.inline-mode`.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        },
        "pins": {
          "description": "Array of pin names for the region mark.\n\n See `deixis-region-mark.pins`.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "padding": {
          "description": "Internal padding for the region mark.\n\n See `deixis-region-mark.padding`.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "str",
            "dictionary"
          ]
        },
        "region-shape": {
          "description": "Shape drawing function for the region mark.\n\n See `deixis-region-mark.region-shape`.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "inline": {
          "description": "If `true`, force the region mark into an inline box.\n\n See `deixis-region-mark.inline`.",
          "default": "false",
          "types": [
            "bool"
          ]
        },
        "backlink": {
          "description": "Whether to generate a clickable backlink returning the reader to the mark. Choices: `bool` | `\"always\"` | `\"none\"` | `\"never\"` | `\"multiple\"`.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "connector": {
          "description": "Connector from the original mark to this body. A route name such as\n `\"curve\"` is shorthand for `(route: \"curve\")`; a record also sets ports,\n via/segments, heads, stroke, radius, layer and painters. It merges with\n `deixis-set(connector: ...)` defaults field by field; none disables it.\n Routes also accept settings records such as `(kind: \"curve\", tension: 2)`.\n\n ```example\n //| sandbox-mode: \"page\"\n #deixis-inset-note(dx: 4em, dy: 3em, layer: \"flow\", connector: (route: \"right-angle\", heads: \"stealth\"))[Marked][A connected note.]\n ```",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "dictionary"
          ]
        },
        "width": {
          "description": "The width of the inset note body.",
          "default": "auto",
          "types": [
            "auto",
            "length",
            "relative"
          ]
        },
        "placement": {
          "description": "A custom floating placement function (e.g., Typst's native `#std.place`).\n\n See `deixis-inset-note-body.placement`.",
          "default": "none",
          "types": [
            "none",
            "function"
          ]
        },
        "dx": {
          "description": "Absolute horizontal offset for placing the note.\n\n See `deixis-inset-note-body.dx`.",
          "default": "none",
          "types": [
            "none",
            "length"
          ]
        },
        "dy": {
          "description": "Absolute vertical offset for placing the note.\n\n See `deixis-inset-note-body.dy`.",
          "default": "none",
          "types": [
            "none",
            "length"
          ]
        },
        "anchor": {
          "description": "A dictionary defining how the note aligns to its anchor point (e.g., `(mark: horizon + right, body: horizon + left)`).\n\n See `deixis-inset-note-body.anchor`.",
          "default": "(mark: horizon + right, body: horizon + left)",
          "types": [
            "dictionary"
          ]
        },
        "anchor-pin": {
          "description": "A specific `#deixis-pin` name to anchor the inset note to.\n\n See `deixis-inset-note-body.anchor-pin`.",
          "default": "none",
          "types": [
            "none",
            "str",
            "dictionary",
            "array"
          ]
        },
        "layer": {
          "description": "Rendering layer for the region mark and/or the body. Choices: `\"flow\"` | `\"foreground\"` | `\"background\"`.\n\n See `deixis-region-mark.layer` and `deixis-inset-note-body.layer`.\n\n ```tip\n Since both `deixis-region-mark` and `deixis-inset-note-body` shares this parameter, you can pass `layer: (mark: \"flow\", body: \"foreground\")` to assign different layer to each component.\n ```",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "dictionary"
          ]
        },
        "render-single": {
          "description": "A custom render function for the inner layout of the body.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "container-func": {
          "description": "A body wrapper function or preset name: \"plain\", \"rect\", \"alert\",\n \"stripe\" or \"tinted\". Forward wrapper options through container-args.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "function"
          ]
        },
        "container-args": {
          "description": "Native/custom options forwarded only to the body container.",
          "default": "(:)",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-plain-container",
      "description": "Returns the supplied body content without a wrapper.\n - body (content): The rendered note content.\n - ..args (arguments): Ignored formatting arguments.",
      "args": {
        "body": {
          "description": ""
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-alert-container",
      "description": "A simple alert (admonition) container.\n - body (content): The rendered note content.\n - ..args (arguments): Formatting arguments.",
      "args": {
        "body": {
          "description": ""
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-rect-region",
      "description": "A rectangular region mark. Use `deixis-region-mark(stroke: none)` for a\n fill-only highlight.",
      "args": {
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-ellipse-region",
      "description": "An elliptical region mark. Select with `region-shape: deixis-ellipse-region`\n on `deixis-region-mark`; add `stroke: none` for a fill-only highlight.",
      "args": {
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-generate-backlinks",
      "description": "Returns backlink buttons for the original mark, reused marks and references.\n This is explicit generation: it does not apply the data.backlink policy.\n Built-in renderers apply that policy before calling it. It emits no body\n destination or live body span. Live origins require setup and context.\n Detached measurement suppresses links, and normally the buttons too; internal\n measure-backlinks requests retain their dimensions without active links.\n - data (dictionary): Note data.",
      "args": {
        "data": {
          "description": "Supplied body-renderer record, including internal-id and original return label.",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-generate-body-meta",
      "description": "Publishes the invisible body destination, without a marker or content span.\n Emit this OR deixis-generate-body-marker once in live custom output, not both.\n Measurement records with disable-links suppress destination metadata.\n - data (dictionary): Note data.",
      "args": {
        "data": {
          "description": "Supplied renderer record; preserves public/private body destinations and measurement flags.",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-generate-body-marker",
      "description": "Formats the body marker and publishes its destination through\n deixis-generate-body-meta. Marker-less bodies still publish the destination.\n Use once together with deixis-generate-body-content; do not also emit meta.\n - data (dictionary): Note data.",
      "args": {
        "data": {
          "description": "Supplied renderer record, with marker-str and optional body-marker-style.",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-generate-body-content",
      "description": "Returns the note's body content with live start/end metadata.\n\n Pair with `deixis-generate-body-marker` or `deixis-generate-body-meta` once in\n a custom renderer to retain navigation, catalogue spans, page-note queries,\n and body-point connections. This helper does not add a marker, destination,\n text styling, or backlinks. It preserves anonymous palette decoration belonging\n to this annotation. Pass the renderer's data record unchanged, or replace\n its body field with the content you actually render.\n\n With `disable-links: true`, returns the body without live metadata, matching\n the built-in measurement path. Do not render a second copy of the body.\n\n - data (dictionary): The supplied body-renderer record, including body and internal-id.",
      "args": {
        "data": {
          "description": "Supplied renderer record, including body and internal-id; preserve measurement flags.",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-native-render-single",
      "description": "A rendering function that formats the note body closely matching Typst's native footnote style.\n Native weak marker spacing folds source indentation without trimming content.\n Explicit paragraph/line breaks are preserved; pagination needs a breakable container.",
      "args": {
        "data": {
          "description": ""
        },
        "inner-width": {
          "description": "",
          "default": "auto"
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-aligned-render-single",
      "description": "The default rendering function, formatting the note body with the marker aligned to the side.\n Weak marker spacing folds indentation through native layout; authored breaks survive.",
      "args": {
        "data": {
          "description": ""
        },
        "inner-width": {
          "description": "",
          "default": "auto"
        },
        "max-marker-width": {
          "description": "",
          "default": "auto"
        },
        "max-marker-gap": {
          "description": "",
          "default": "auto"
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-native-render-group",
      "description": "Render a group of notes by vertical stacking, similar to Typst's native footnote stacking.",
      "args": {
        "notes-data": {
          "description": ""
        },
        "gap": {
          "description": "",
          "default": "auto"
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-aligned-render-group",
      "description": "Render a group of notes by vertical stacking while aligning body markers.\n Should be used in combination with ```ref #deixis-aligned-render-single```.",
      "args": {
        "notes-data": {
          "description": ""
        },
        "gap": {
          "description": "",
          "default": "auto"
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-grid-render-group",
      "description": "Render a group of notes by putting them into a `grid` layout.\n\n ```info\n Factory single renderers use aligned marker/body cells. A group containing\n a custom single renderer delegates to native stacking, preserving each\n note's renderer, container and gap.\n ```",
      "args": {
        "notes-data": {
          "description": ""
        },
        "gap": {
          "description": "",
          "default": "auto"
        },
        "..args": {
          "description": ""
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-rect-container",
      "description": "An alias of the standard Typst `#std.rect`.\n - body (content): The rendered note content.\n - ..args (arguments): Forwarded to `rect`."
    },
    {
      "name": "deixis-chicago-render-single",
      "description": "Render a Chicago Notes & Bibliography endnote as an indented paragraph.\n The full-size, linked marker is followed by a period; unnumbered notes omit\n both. Only the first line is indented, by the explicitly resolved indent or\n 0.5in. Inherited paragraph leading, spacing and justification are preserved,\n as are authored paragraph breaks, body styling, containers and backlinks.\n Select with `deixis-print-endnotes(render-single: deixis-chicago-render-single)`\n or `deixis-set(render-single: (endnote: deixis-chicago-render-single))`.\n The default grid group stacks custom single renderers using the normal gap.\n HTML uses the native semantic renderer without paragraph indentation.",
      "args": {
        "data": {
          "description": "Supplied live body-renderer record; preserve measurement and ownership fields.",
          "types": [
            "dictionary"
          ]
        },
        "inner-width": {
          "description": "Width of the note's paragraph block.",
          "default": "auto",
          "types": [
            "auto",
            "relative"
          ]
        },
        "..args": {
          "description": "Additional group-renderer arguments, ignored.",
          "types": [
            "arguments"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-ref",
      "description": "A styled, clickable cross-reference to a specific note.\n\n - ..targets (arguments): The positional target label (e.g., `<my-note>`) to reference.\n - supplement (auto, content, function, none): The prefix, or a function receiving the selected note's metadata element. Set to `none` for just the number.\n - form (str): `\"normal\"` for note markers or `\"page\"` for native page references to the selected destination.\n - marker-style (auto, function): A custom styling function `(string) => content` for the reference number. If `auto`, it inherits the note's original marker style.\n - celibate-marker (str): The marker displayed for celibate notes.",
      "args": {
        "..targets": {
          "description": "The positional target `label` (e.g., `<my-note>`) to reference.\n\n ```example\n //| sandbox-mode: \"page\"\n Let's create some test notes\n #deixis-margin-note(id: <note-a>)[Test note A.]\n #deixis-margin-note(id: <note-b>)[Test note B.]\n #deixis-margin-note(id: <note-c>)[Test note C.]\n\n Single reference: #deixis-ref(<note-a>)\n ```\n\n - Compatible automatic decimal markers are sorted; consecutive runs of three or more become ranges.\n   Mixed counters, series, numbering rules, or styles retain the input order.\n ```example\n Multiple reference: #deixis-ref(<note-a>, <note-b>, <note-c>)\n ```\n\n - The last positional argument, if of type `content` or `str`, will be interpreted as `deixis-ref.supplement`.\n ```example\n #deixis-ref(<note-b>)[Comment]\n ```",
          "types": [
            "arguments"
          ]
        },
        "supplement": {
          "description": "The prefix to display before the number (e.g., `[Note]`). Set to `none` for just the number.\n\n ```example\n #deixis-ref(<note-c>, supplement: [Todo])\n ```\n\n A function receives the selected mark/body metadata element, as with native\n references. An unprinted standalone body supplies unlocated metadata.",
          "default": "auto",
          "types": [
            "auto",
            "content",
            "function",
            "none"
          ]
        },
        "form": {
          "description": "`\"normal\"` displays note markers; `\"page\"` uses Typst's page reference\n formatting at the selected body/mark destination. An unprinted standalone\n body has no destination and displays the celibate marker.",
          "default": "\"normal\"",
          "types": [
            "str"
          ]
        },
        "marker-style": {
          "description": "A custom styling function `(string) => content` for the reference number. If `auto`, it inherits the note's original marker style.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "celibate-marker": {
          "description": "The marker displayed for celibate notes.",
          "default": "\"?\"",
          "types": [
            "str"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-plain",
      "description": "Shows content again without its annotations.\n\n Marked passages remain; marks, markers, note bodies and connections inside\n the content are not created a second time. Native outlines already apply\n this to heading and figure-caption entries. Use it wherever a document\n repeats content, such as a running header that shows the current heading.\n\n ```example\n #set page(header: context {\n   let previous = query(selector(heading).before(here()))\n   if previous.len() > 0 { deixis-plain(previous.last().body) }\n })\n ```",
      "args": {
        "body": {
          "description": "Content that may contain annotations, such as a heading body.",
          "types": [
            "content"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-note-outline",
      "description": "A dynamically styled outline (Table of Contents) for your annotations.\n\n The outline extracts static text from note bodies without executing them again.\n Each entry features a dynamic visual badge that inherits\n the styling of the specific note it represents.\n They act as clickable hyperlinks, returning the reader to the mark's location.\n Entries follow original mark order, or body declaration order for standalone\n bodies. Bounds select those source locations; scope filters use body rendering\n ownership when a body exists. Target and thread filters combine.\n Reused marks stay in the same entry. Page links list distinct physical pages\n in mark source order and use native page numbering at each painted destination.\n Standalone bodies link to their live destination, or declaration if unprinted.\n For custom layouts or one row per occurrence, use deixis-query-notes.\n\n ```example\n #deixis-inset-note(dx: 10pt, dy: 0pt, stroke: red)[This is a note!]\n\n #deixis-inset-note(dx: 10pt, dy: 0pt, stroke: green)[This is another note!]\n\n #deixis-inset-note(dx: 10pt, dy: 0pt, stroke: blue)[This is yet another note!]\n // `target: 0` restricts the search to notes inside this example block.\n #deixis-note-outline(target: 0)\n ```\n\n - title (content, none): The heading content to display above the outline. Set to `none` to disable the heading.\n - heading-level (int): The heading level for the outline's main title. Any dynamically generated group sub-headings will be rendered at `heading-level + 1`.\n - target (auto, label, str, int): Filters the outline to notes belonging to a specific target block or minipage.\n - thread (auto, str, label): Filters the outline to only show notes belonging to a specific thread of minipages.\n - include-types (auto, str, array): One note type or a union of types. Auto includes all; an empty array includes none.\n - exclude-types (str, array): One note type or a union of types to exclude.\n - series (auto, str, array): Filters the outline to notes belonging to a specific series or array of series.\n - include-unpaired (bool, str): Also include marks without bodies, standalone bodies, or both. Values: false, true, \"mark\", \"body\".\n - after (none, location, label, str, dictionary, selector, function): Exclusive source boundary: a native location/label/selector or a pin name/target.\n - before (none, location, label, str, dictionary, selector, function): Exclusive source boundary, with the same selection rules as after.\n - group-by (none, str, function): Categorizes the notes under sub-headings. Accepts `\"type\"` (e.g., \"Margin Notes\"), `\"series\"`, or a custom `function(note) => string`.\n - fill (none, content): Fills the space between the excerpt and the page number. Commonly set to `repeat[.]` for standard TOC styling.\n - gap (auto, length): The vertical spacing between individual note rows in the outline.\n - summary (auto, function): A callback `(note) => content` for each excerpt. By default, extracts up to 160 characters of static text without executing contextual content.",
      "args": {
        "title": {
          "description": "The heading content to display above the outline. Set to `none` to disable the heading.\n\n ```example\n #deixis-note-outline(target: 0, title: [Liste des Notes])\n ```",
          "default": "[List of Notes]",
          "types": [
            "content",
            "none"
          ]
        },
        "heading-level": {
          "description": "The heading level for the outline's main title. Any dynamically generated group sub-headings will be rendered at `heading-level + 1`.\n\n ```example\n #deixis-note-outline(target: 0, heading-level: 3)\n ```",
          "default": "1",
          "types": [
            "int"
          ]
        },
        "target": {
          "description": "Filters by rendering scope (body scope when attached, original scope for\n marks without bodies). Combines with thread if both are supplied.",
          "default": "auto",
          "types": [
            "auto",
            "label",
            "str",
            "int"
          ]
        },
        "thread": {
          "description": "Filters the outline to only show notes belonging to a specific thread of minipages.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "label"
          ]
        },
        "include-types": {
          "description": "One note type or an array of types to include. Auto includes all; an empty\n array includes none. Unknown names select no matching records.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "array"
          ]
        },
        "exclude-types": {
          "description": "One note type or an array of types to exclude. An empty array excludes none.",
          "default": "()",
          "types": [
            "str",
            "array"
          ]
        },
        "series": {
          "description": "Filters the outline to notes belonging to a specific series or array of series.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "array"
          ]
        },
        "include-unpaired": {
          "description": "Also include unpaired marks or bodies. False includes paired notes only;\n true includes both unpaired kinds; mark or body adds that kind.",
          "default": "false",
          "types": [
            "bool",
            "str"
          ]
        },
        "after": {
          "description": "Only includes notes after this location, label, pin name, or structured\n name/scope/select/page pin target. A pin boundary needs one occurrence.\n Native selectors use their first match, as native labels do.",
          "default": "none",
          "types": [
            "none",
            "location",
            "label",
            "str",
            "dictionary",
            "selector",
            "function"
          ]
        },
        "before": {
          "description": "Only includes notes before this location, label, pin name, or structured\n name/scope/select/page pin target. Forward pin declarations work.\n Native selectors use their first match, as native labels do.",
          "default": "none",
          "types": [
            "none",
            "location",
            "label",
            "str",
            "dictionary",
            "selector",
            "function"
          ]
        },
        "group-by": {
          "description": "Categorizes the notes under sub-headings. Accepts `\"type\"`, `\"series\"`, or a custom `function(note) => string`.\n\n ```example\n //| margin: (right: 0.6in, rest: 0.05in)\n #deixis-footnote(stroke: red)[This is a footnote!]\n #deixis-margin-note(stroke: green)[This is a margin note!]\n #deixis-inset-note(dx: 10pt, dy: 0pt, stroke: blue)[This is an inset note!]\n\n #deixis-note-outline(target: 0, group-by: \"type\")\n ```",
          "default": "none",
          "types": [
            "none",
            "str",
            "function"
          ]
        },
        "fill": {
          "description": "Fills the space between the excerpt and the page number. Commonly set to `repeat[.]` for standard TOC styling.\n\n ```example\n #deixis-inset-note(dx: 10pt, dy: 0pt, stroke: red)[This is a note!]\n\n #deixis-inset-note(dx: 10pt, dy: 0pt, stroke: green)[This is another note!]\n\n #deixis-inset-note(dx: 10pt, dy: 0pt, stroke: blue)[This is yet another note!]\n\n #deixis-note-outline(target: 0, fill: repeat[.])\n ```",
          "default": "none",
          "types": [
            "none",
            "content"
          ]
        },
        "gap": {
          "description": "The vertical spacing between individual note rows in the outline.",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "summary": {
          "description": "A callback `(note) => content` for each excerpt. The default extracts static\n text without running the body; contextual-only notes get a placeholder.\n Receives the structured query record plus its presentation badge. Use\n note.summary for the safe default excerpt; note.body is a location record.",
          "default": "auto",
          "types": [
            "auto",
            "function"
          ]
        },
        "..args": {
          "description": "Unknown options are rejected; include-celibates was renamed to include-unpaired.",
          "types": [
            "arguments"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-query-notes",
      "description": "Returns one structured record per selected annotation without rendering it.\n Call inside context. Use the records for tables, cards, or occurrence indexes;\n deixis-note-outline is the ready-made outline presentation of the same data.\n\n Each record has id, data, accent, type, series, count, marker, styles, loc, dest, order,\n summary, marks, and body. Summary content is extracted statically. Marks is\n an array of original/reused locations with destinations, types, occurrence\n names, source orders, and safe summaries. Body is none or a declaration record\n with declaration loc/order, render-order (none without a unique live start),\n dest (none until painted), complete start/end\n locations, and summary.\n Accent is the saved palette color or none; explicit component styles may\n override its appearance without changing that semantic color.\n Executable note bodies and marked passages are never returned or replayed.\n Data is the author's opaque dictionary, inherited from the original or\n supplied by a standalone body. It is returned unchanged, never traversed or\n rendered by the query; custom content/callbacks in data remain the caller's.\n Optional page selects complete live body spans on one physical page, including\n continuations. Page queries default to native body order and include standalone\n bodies. Without page, defaults retain source order and paired annotations,\n including unprinted bodies. Explicit order/include-unpaired override those\n defaults. Incomplete/duplicate spans cannot supply page coverage.",
      "args": {
        "target": {
          "description": "Rendering domain to select. Auto selects all; 0 selects the current scope.\n For attached notes, filtering uses the body domain, preserving mark ownership.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "label",
            "int"
          ]
        },
        "thread": {
          "description": "Optional thread filter. Combines with target.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "label"
          ]
        },
        "include-types": {
          "description": "A literal type or union of types; auto includes all, an empty array none.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "array"
          ]
        },
        "exclude-types": {
          "description": "A literal type or union of types to exclude.",
          "default": "()",
          "types": [
            "str",
            "array"
          ]
        },
        "series": {
          "description": "A literal series or union of series; auto includes all, an empty array none.",
          "default": "auto",
          "types": [
            "auto",
            "str",
            "array"
          ]
        },
        "include-unpaired": {
          "description": "Auto includes standalone bodies in a page query, otherwise paired notes only.\n False includes only paired notes; true also includes both unpaired kinds.\n Mark or body includes that unpaired kind in addition to paired notes.",
          "default": "auto",
          "types": [
            "auto",
            "bool",
            "str"
          ]
        },
        "after": {
          "description": "Exclusive original-source boundary, or body declaration for standalone\n bodies. Reused marks do not move originals into a range. All selected\n notes retain their complete marks array, including marks outside the range.",
          "default": "none",
          "types": [
            "none",
            "location",
            "label",
            "str",
            "dictionary",
            "selector",
            "function"
          ]
        },
        "before": {
          "description": "Exclusive upper source boundary with the same rules as after. Native\n labels/selectors choose their first match; strings/records choose pins.",
          "default": "none",
          "types": [
            "none",
            "location",
            "label",
            "str",
            "dictionary",
            "selector",
            "function"
          ]
        },
        "page": {
          "description": "Physical body page to select; positive integer, independently of displayed\n numbering/resets. Auto does not filter. Unprinted/incomplete spans do not\n match a page. Marks on that page alone do not make a body match.",
          "default": "auto",
          "types": [
            "auto",
            "int"
          ]
        },
        "order": {
          "description": "Auto selects body order with page, source order without page. Source follows\n original declarations; body follows unique live start spans, retaining\n continuations before later starts. Unprinted/missing/ambiguous starts sort\n last in source order. Neither mode sorts marker values or visual coordinates.",
          "default": "auto",
          "types": [
            "auto",
            "str"
          ]
        }
      },
      "return-types": [
        "array"
      ]
    },
    {
      "name": "deixis-arrowhead",
      "description": "Defines a reusable connector head. A custom render(request) returns\n (body: content, trim: length, bounds: (left:, top:, right:, bottom:)).\n The local tip is (0pt, 0pt), forward is +x, and positive y points down.\n Native stealth is a filled triangular tip with an open notch;\n vee is the separate constant-width stroked V. Both accept length/width.",
      "args": {
        "shape": {
          "description": "Native stealth, triangle, vee, circle, diamond or bar. Stealth is a filled tip with a notched rear.",
          "default": "\"stealth\"",
          "types": [
            "str"
          ]
        },
        "length": {
          "description": "Positive head length along the shaft; auto derives a minimum size from shaft thickness.",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "width": {
          "description": "Positive transverse head width; auto derives a minimum size from shaft thickness.",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "fill": {
          "description": "Head fill; auto inherits shaft paint. Open vee/bar shapes use strokes.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "color"
          ]
        },
        "stroke": {
          "description": "Head outline; auto fills closed shapes and strokes open shapes using shaft styling.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "stroke",
            "color",
            "length",
            "dictionary"
          ]
        },
        "trim": {
          "description": "Nonnegative shaft shortening at this endpoint; auto uses native/custom renderer trim.",
          "default": "auto",
          "types": [
            "auto",
            "length"
          ]
        },
        "render": {
          "description": "Optional callback(request) returning body, trim and ordered tip-local bounds; can adapt third-party drawing code.",
          "default": "none",
          "types": [
            "none",
            "function"
          ]
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-render-head",
      "description": "Paints a prepared head from a connector renderer request in its local frame.\n A none head or a zero direction emits no content.",
      "args": {
        "head": {
          "description": "Prepared head from a connector painter request, or none; not a raw head specification.",
          "types": [
            "none",
            "dictionary"
          ]
        },
        "tip": {
          "description": "Tip position in the current source-local painting plane.",
          "types": [
            "array"
          ]
        },
        "forward": {
          "description": "Nonzero forward tangent vector; a zero vector suppresses the head.",
          "types": [
            "array"
          ]
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-render-connector",
      "description": "Paints a connector renderer request with the native backend, in the request's\n source-local frame. Paints the trimmed shaft, optional gap marks, then heads;\n it does not route, measure, trim, cut, or register anything again.\n Override request.stroke for a second shaft pass, or set heads to\n (mark: none, body: none) when painting a halo without repeating heads.\n Also set gap-marks to none for a shaft-only halo pass.",
      "args": {
        "request": {
          "description": "Prepared painter request from deixis-prepare-connector or a connector render callback. Place numeric output at route.origin yourself.",
          "types": [
            "dictionary"
          ]
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-connect",
      "description": "Draws an independent connection between attached nodes/pins, or from an original/named mark\n or pin to a margin/inset body, framed inline body, live body's point, or pin.\n Declarations may precede either endpoint or a collected body's printer.\n It adds no body, counter increment, placement anchor, or PDF return origin.\n\n ```example\n #deixis-inset-note(id: <shared>, connector: none,\n   layer: \"foreground\", width: 90pt, dx: 100pt, dy: 40pt)[First][One body.]\n #deixis-mark(of: <shared>, occurrence: <again>)[Again]\n #deixis-connect(from: (mark: <shared>, occurrence: <again>), to: <shared>)\n ```\n\n Inside deixis-routing, declarations capture the innermost scope's policy.\n manual uses native paths, avoid searches obstacles independently, and\n separate repairs a page/layer group. The scoped default route is sharp\n orthogonal. Outside, the default is straight.\n Attached nodes use `(node: id)`, optionally scope/page; no note is created.\n continuation accepts auto/none, dot/portal, a shape/size/stroke/fill/link\n record, or a callback. Native portals trim only the painted shaft and can\n link to the real peer or accepted counterpart; they are not endpoint heads.\n\n - from (str, label, dictionary): Original ID, `(mark: id, occurrence: name)`, `(node: id, scope: ..., page: ...)`, or `(pin: target)`. Pin targets accept a name or the shared name/scope/select/page record and must select one occurrence.\n - to (str, label, dictionary): Body frame ID, `(body: id)`, `(body: id, point: \"start\" | \"end\")`, an attached node, or `(pin: target)`. Collected bodies must actually be printed.\n - connector (auto, none, dictionary): Route/ports/via/heads/cuts/crossings/gap-marks/style/render/layer settings. Route accepts a string or `(kind: \"curve\", tension: 2)`; catmull-rom also selects centripetal/uniform parameterization. Hobby uses global tension (minimum 0.75) and free-end curl (default 1). B-spline records use controls for coordinate/framed/pin influences, distinct from exact via points. A custom port `(pin: target, side: left, gap: 2pt)` keeps node bounds; a waypoint `(pin: target, offset: (2pt, 0pt))` visits a point exactly. The default route is straight; none disables the declaration. Optional cuts hide original-route arc-length intervals without changing curve geometry. Optional crossings: \"gap\" cuts lower-priority native shafts where participating routes cross in one overlay. Optional gap-marks (slash/bar) decorate surviving internal gaps; page-continuation dots remain separate. Optional scene accepts a prepared routing scene or a read-only page-fragment callback, applying sharp avoidance or native cut/cross events before head preparation; see docs/guides/routing-scenes.md.",
      "args": {
        "from": {
          "description": "Original mark ID, named occurrence record, attached node selector, or pin target. Forward declarations are allowed.",
          "default": "none",
          "types": [
            "str",
            "label",
            "dictionary"
          ]
        },
        "to": {
          "description": "Body ID/frame, live body start/end point, attached node, or pin target. Collected bodies must be printed.",
          "default": "none",
          "types": [
            "str",
            "label",
            "dictionary"
          ]
        },
        "connector": {
          "description": "Route, ports, via, heads, cuts, crossing/gap marks, continuation, scene, style, layer and painter options. A route name is shorthand for `(route: name)`. Auto enables defaults; none disables.",
          "default": "auto",
          "types": [
            "auto",
            "none",
            "str",
            "dictionary"
          ]
        }
      },
      "return-types": [
        "content"
      ]
    },
    {
      "name": "deixis-route",
      "description": "Constructs native line/cubic geometry without setup, layout context, queries,\n measurement, head callbacks or painting. All input points/controls use one\n caller-defined x-right/y-down plane and finite absolute lengths.\n\n from/to accept (x, y) or (point: (x, y), normal: right). Normals point outward\n at both ends; a target curve arrives opposite its normal. A nonzero numeric\n vector also works. Orthogonal routes require cardinal endpoint normals.\n via visits exact points; segments groups route/via sections just as connectors\n do. B-spline controls influence the curve without becoming exact visits.\n\n Returns source-local geometry: origin is from, start is (0pt, 0pt), end and\n segments are relative to origin. Bounds conservatively include control handles;\n length is approximate drawable arc length. Without a scene, styles, pages\n and bodies are absent. Scene routes additionally carry status/page/search data.\n\n Builds resolved numeric geometry, optionally against a reusable page-local\n scene. With avoid nodes use sharp orthogonal routing. Scene routes return\n status: ok or an explicit non-drawable failure; see docs/guides/routing-scenes.",
      "args": {
        "from": {
          "description": "Source point (x, y), or point/normal record; with scene, a node/socket selector also works.",
          "default": "none",
          "types": [
            "array",
            "dictionary",
            "str",
            "label"
          ]
        },
        "to": {
          "description": "Target in the same x-right/y-down plane. Endpoint normals point outward at both ends.",
          "default": "none",
          "types": [
            "array",
            "dictionary",
            "str",
            "label"
          ]
        },
        "route": {
          "description": "Native route name or complete algorithm record. Scene avoidance requires sharp orthogonal routing.",
          "default": "\"straight-line\"",
          "types": [
            "str",
            "dictionary",
            "none"
          ]
        },
        "via": {
          "description": "Exact absolute visits, optionally interleaved with native route switches; exclusive with segments.",
          "default": "none",
          "types": [
            "none",
            "array"
          ]
        },
        "segments": {
          "description": "Typed route/via sections; exclusive with via. B-spline controls influence rather than visit points.",
          "default": "none",
          "types": [
            "none",
            "array"
          ]
        },
        "radius": {
          "description": "Finite nonnegative absolute corner radius; searched scene routes require zero.",
          "default": "0pt",
          "types": [
            "length"
          ]
        },
        "scene": {
          "description": "Prepared routing scene. Numeric bounds need no setup; document-derived scene selectors need setup/context when resolved.",
          "default": "none",
          "types": [
            "none",
            "dictionary"
          ]
        },
        "page": {
          "description": "Positive physical page plane within a scene; omit for automatic unambiguous selection.",
          "default": "none",
          "types": [
            "none",
            "int"
          ]
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-prepare-connector",
      "description": "Prepares a deixis-route result for native or custom painting. Routing is not\n repeated. Head callbacks run once here; their returned content runs when painted.\n Styles/font lengths/custom heads can require a Typst context. No page/layer,\n registration, automatic crossings or state defaults are consulted.\n Paint with deixis-render-connector(request), placed at route.origin yourself.",
      "args": {
        "route": {
          "description": "Successful source-local geometry returned by deixis-route or an accepted route-group entry.",
          "types": [
            "dictionary"
          ]
        },
        "stroke": {
          "description": "One shaft stroke, or none. A disabled shaft may still have independently styled heads.",
          "default": "black + 1pt",
          "types": [
            "stroke",
            "color",
            "length",
            "dictionary",
            "none"
          ]
        },
        "heads": {
          "description": "Native head name, reusable head record/callback, or (mark: ..., body: ...); a single head selects the target.",
          "default": "none",
          "types": [
            "none",
            "str",
            "dictionary",
            "function"
          ]
        },
        "cuts": {
          "description": "Optional original-route arc-length cut records. Cutting preserves the underlying curve.",
          "default": "none",
          "types": [
            "none",
            "array",
            "dictionary"
          ]
        },
        "gap-marks": {
          "description": "Optional slash/bar marks or settings record for surviving internal gaps; separate from page continuations.",
          "default": "none",
          "types": [
            "none",
            "str",
            "dictionary"
          ]
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-route-group",
      "description": "Plans up to sixteen explicit sharp orthogonal page fragments together.\n Each edge uses from/to scene endpoints, optional exact via points, page and\n caller id. Anonymous edges need no identity. Array order sets priority/ties.\n\n spacing measures centerline proximity, not stroke/head clearance. Accepted\n repairs preserve successful routes, independent detour limits and per-page\n contact/crossing/overlap guards. Budgets retain checked incumbent geometry;\n complete separation and globally optimal packing are not guaranteed.\n\n Returns routes in input order, native-length before/after quality, and work\n statistics. Successful entries are ordinary deixis-route geometry, ready for\n deixis-prepare-connector. No setup, registration or painting is performed.",
      "args": {
        "edges": {
          "description": "Up to sixteen from/to fragment records, optional exact via, page and caller ID; array order sets priority.",
          "types": [
            "array"
          ]
        },
        "scene": {
          "description": "Prepared routing scene shared by all edges; none supplies an empty scene.",
          "default": "none",
          "types": [
            "none",
            "dictionary"
          ]
        },
        "spacing": {
          "description": "Positive absolute centerline proximity distance; separate from ink/head clearance.",
          "default": "3pt",
          "types": [
            "length"
          ]
        },
        "weight": {
          "description": "Finite nonnegative proximity penalty weight.",
          "default": "4",
          "types": [
            "int",
            "float"
          ]
        },
        "max-detour": {
          "description": "Finite nonnegative ratio limiting additional length relative to each independent route.",
          "default": "25%",
          "types": [
            "ratio"
          ]
        },
        "rounds": {
          "description": "Integer repair-round budget from zero through four; zero retains the initial independent and soft planning.",
          "default": "2",
          "types": [
            "int"
          ]
        },
        "max-searches": {
          "description": "Positive integer shared search budget; checked incumbent geometry survives exhausted budgets.",
          "default": "64",
          "types": [
            "int"
          ]
        },
        "max-expansions": {
          "description": "Positive integer shared expansion budget for the group.",
          "default": "50000",
          "types": [
            "int"
          ]
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-routing-scene",
      "description": "Prepares reusable rectangular nodes in independent caller-defined page planes.\n behavior is avoid (default), ignore, cut, or cross. Cut hides the shaft inside\n the node; cross reports entry/exit only, without enabling visual decorations.\n Document mark/body/pin selectors read accepted geometry in a context with\n setup. Resolved bounds stay query-free. No live content is executed/measured.",
      "args": {
        "nodes": {
          "description": "Up to 128 node records with numeric bounds or accepted document selectors, optional IDs and avoid/ignore/cut/cross behavior.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "clearance": {
          "description": "Nonnegative absolute padding around avoidance rectangles; checks centerlines, not full painted ink.",
          "default": "4pt",
          "types": [
            "length"
          ]
        },
        "escape": {
          "description": "Positive absolute endpoint escape distance for automatic orthogonal sockets.",
          "default": "4pt",
          "types": [
            "length"
          ]
        },
        "bend-cost": {
          "description": "Nonnegative absolute turn penalty in the orthogonal search cost.",
          "default": "12pt",
          "types": [
            "length"
          ]
        },
        "bounds": {
          "description": "Optional left/top/right/bottom search rectangle for the default plane.",
          "default": "none",
          "types": [
            "none",
            "dictionary"
          ]
        },
        "pages": {
          "description": "Explicit page-plane records, each with a positive physical page and required bounds rectangle.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "max-cells": {
          "description": "Positive integer grid-cell budget for each search.",
          "default": "65536",
          "types": [
            "int"
          ]
        },
        "max-expansions": {
          "description": "Positive integer search expansion budget.",
          "default": "50000",
          "types": [
            "int"
          ]
        }
      },
      "return-types": null
    },
    {
      "name": "deixis-routing",
      "description": "Scopes the routing policy for independent and margin/inset shorthand edges.\n Attach geometry where it is rendered with deixis-attach(id: ...)[...]. Nodes\n stay fixed; searched connections in this lexical scope are planned per\n physical page and overlay layer, independently of declaration position.\n Nested wrappers form separate groups. All explicitly attached routing nodes\n on a page supply its obstacles. Optional nodes adds existing scene selectors\n for accepted notes/pins or literal bounds with an explicit physical page.\n The list belongs to this wrapper, with geometry resolved only for searched\n groups. Padding lengths freeze in the wrapper's declaration font context.\n Shorthand captures at the body declaration;\n it keeps its enabled state and geometry, and body placement stays unchanged.\n policy is manual (native geometry, no automatic registered-scene search),\n avoid (independent obstacle routing) or separate (checked group repair).\n Search policies require sharp orthogonal routes; manual also permits curves\n and exact mixed sections. Heads/cuts/renderers retain the connector API.\n Requires setup. No automatic discovery of other ink.",
      "args": {
        "body": {
          "description": "Content in this lexical routing scope; native content brackets alone do not establish a policy.",
          "types": [
            "content"
          ]
        },
        "policy": {
          "description": "manual uses native routes, avoid searches obstacles independently, separate repairs a page/layer group.",
          "default": "\"separate\"",
          "types": [
            "str"
          ]
        },
        "nodes": {
          "description": "Additional accepted note/pin selectors or literal bounds with physical page; attached routing nodes are included automatically.",
          "default": "()",
          "types": [
            "array"
          ]
        },
        "clearance": {
          "description": "Nonnegative avoidance padding, resolved in the declaration font context. Centerline clearance only.",
          "default": "4pt",
          "types": [
            "length"
          ]
        },
        "escape": {
          "description": "Positive endpoint escape distance.",
          "default": "4pt",
          "types": [
            "length"
          ]
        },
        "bend-cost": {
          "description": "Nonnegative orthogonal turn penalty.",
          "default": "12pt",
          "types": [
            "length"
          ]
        },
        "spacing": {
          "description": "Positive centerline proximity distance for separate groups.",
          "default": "3pt",
          "types": [
            "length"
          ]
        },
        "weight": {
          "description": "Finite nonnegative proximity penalty weight.",
          "default": "4",
          "types": [
            "int",
            "float"
          ]
        },
        "max-detour": {
          "description": "Finite nonnegative ratio limiting additional length per independent route.",
          "default": "25%",
          "types": [
            "ratio"
          ]
        },
        "rounds": {
          "description": "Integer repair-round budget from zero through four.",
          "default": "2",
          "types": [
            "int"
          ]
        },
        "max-searches": {
          "description": "Positive integer shared group search budget.",
          "default": "64",
          "types": [
            "int"
          ]
        },
        "max-expansions": {
          "description": "Positive integer expansion budget.",
          "default": "50000",
          "types": [
            "int"
          ]
        },
        "max-cells": {
          "description": "Positive integer per-search grid-cell budget.",
          "default": "65536",
          "types": [
            "int"
          ]
        }
      },
      "return-types": null
    }
  ],
  "exports": [
    "deixis-setup-notes",
    "deixis-page-overlay",
    "deixis-set",
    "deixis-configure",
    "deixis-note-counter",
    "deixis-update-note-counter",
    "deixis-block",
    "deixis-minipage",
    "deixis-place-anchored",
    "deixis-absolute-place",
    "deixis-margin-note-exact-layout",
    "deixis-margin-note-adaptive-layout",
    "deixis-margin-note-flow-layout",
    "deixis-inline-mark",
    "deixis-phantom-mark",
    "deixis-mark",
    "deixis-region-mark",
    "deixis-pin",
    "deixis-attach",
    "deixis-inline-note",
    "deixis-inline-note-body",
    "deixis-footnote",
    "deixis-footnote-body",
    "deixis-endnote",
    "deixis-endnote-body",
    "deixis-print-endnotes",
    "deixis-margin-note",
    "deixis-margin-note-body",
    "deixis-sidenote",
    "deixis-sidenote-body",
    "deixis-comment",
    "deixis-inset-note",
    "deixis-inset-note-body",
    "deixis-plain-container",
    "deixis-rect-container",
    "deixis-alert-container",
    "deixis-rect-region",
    "deixis-ellipse-region",
    "deixis-generate-backlinks",
    "deixis-generate-body-meta",
    "deixis-generate-body-marker",
    "deixis-generate-body-content",
    "deixis-native-render-single",
    "deixis-aligned-render-single",
    "deixis-native-render-group",
    "deixis-aligned-render-group",
    "deixis-grid-render-group",
    "deixis-chicago-render-single",
    "deixis-ref",
    "deixis-note-outline",
    "deixis-plain",
    "deixis-query-notes",
    "deixis-arrowhead",
    "deixis-render-head",
    "deixis-render-connector",
    "deixis-connect",
    "deixis-route",
    "deixis-prepare-connector",
    "deixis-route-group",
    "deixis-routing-scene",
    "deixis-routing",
    "short"
  ],
  "version": "0.2.0"
}
