{
  "code": "S95",
  "name": "Sign-up panel",
  "shape": "signup",
  "family": "Openers and endings",
  "fits": "An ask to join: a small form beside three short reasons to sign up.",
  "use_when": "At the end of a piece or a deck when the next step is to subscribe or register; the reasons sit beside the form so the reader sees what they get.",
  "slots": [
    {
      "name": "form-title",
      "holds": "the header bar riding over the card's top edge",
      "budget": "under 5 words"
    },
    {
      "name": "form",
      "holds": "three stacked fields (placeholder text only); drawn, not wired: nothing submits",
      "budget": "3 fields, 1-3 words each"
    },
    {
      "name": "button",
      "holds": "the full-width action",
      "budget": "1-3 words"
    },
    {
      "name": "benefits",
      "holds": "three reasons stacked between hairlines, each a bold title over one line",
      "budget": "title under 5 words, line under 10 words"
    }
  ],
  "columns": 2,
  "density": "airy",
  "surface": "barley",
  "works_on": [
    "deck",
    "page"
  ],
  "library": "WebSlides",
  "dir": "S95-signup-panel",
  "semantic": {
    "audience_question": "Why should I sign up, and what would submission mean?",
    "intent": "Understand a join request together with its benefits and handling terms.",
    "reasoning_relation": "benefit-led invitation and input",
    "message_pattern": "Join to receive [specific benefit]; we ask for [information] and will [next step].",
    "required_content": [
      "Names the thing the reader would join.",
      "Three labelled information requests, collecting only what the real workflow needs; current implementation is illustrative divs.",
      "A truthful action label; the current element is not an operable submit button.",
      "Three specific reasons to join, each with a short explanatory line."
    ],
    "narrative_positions": [
      "call to action"
    ],
    "requires_before": [
      "Explain the workshop or service."
    ],
    "enables_after": [
      "Use a real consent and submission workflow only after implementing it separately."
    ],
    "slot_roles": {
      "form-title": "Names the thing the reader would join.",
      "form": "Three labelled information requests, collecting only what the real workflow needs; current implementation is illustrative divs.",
      "button": "A truthful action label; the current element is not an operable submit button.",
      "benefits": "Three specific reasons to join, each with a short explanatory line."
    },
    "avoid_when": [
      "A production registration flow using this static markup unchanged.",
      "Sensitive information collection without a real handling policy."
    ],
    "layout_specific_contract": "An ask to join: a small form beside three short reasons to sign up.",
    "provenance": {
      "basis": "interpretation of the existing layout and slot contracts",
      "review": "Tessel model-authored guidance; implementation approved by Nic, 2026-10-10",
      "corpus_evidence_status": "not yet established",
      "guide": "../SEMANTICS.md"
    },
    "reader_outcome": "Understand a join request together with its benefits and handling terms.",
    "matching": {
      "audience_question": "Why should I sign up, and what would submission mean?",
      "reader_outcome": "Understand a join request together with its benefits and handling terms.",
      "reasoning_relation": "benefit-led invitation and input",
      "content_shape": {
        "composition": "An ask to join: a small form beside three short reasons to sign up.",
        "selected_state": "An ask to join: a small form beside three short reasons to sign up.",
        "density": "airy",
        "columns": 2,
        "column_note": "Base metadata only; selected option can replace the base geometry."
      },
      "required_slots": [
        {
          "name": "form-title",
          "reader_question": "What does the form title contribute to this page’s reader outcome?",
          "semantic_role": "Names the thing the reader would join.",
          "content_unit_count": {
            "min": 1,
            "max": 1,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[REAL CONTENT · form-title · the header bar riding over the card's top edge]",
          "layout_budget": {
            "authored": "under 5 words",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "form-title",
            "occurrences": 1,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              3
            ]
          }
        },
        {
          "name": "form",
          "reader_question": "What action is actually available, and what does taking it change?",
          "semantic_role": "Three labelled information requests, collecting only what the real workflow needs; current implementation is illustrative divs.",
          "content_unit_count": {
            "min": 1,
            "max": 1,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[REAL CONTENT · form · three stacked fields (placeholder text only); drawn, not wired: nothing submits]",
          "layout_budget": {
            "authored": "3 fields, 1-3 words each",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "form",
            "occurrences": 1,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              10
            ]
          }
        },
        {
          "name": "button",
          "reader_question": "What action is actually available, and what does taking it change?",
          "semantic_role": "A truthful action label; the current element is not an operable submit button.",
          "content_unit_count": {
            "min": 1,
            "max": 1,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[REAL CONTENT · button · the full-width action]",
          "layout_budget": {
            "authored": "1-3 words",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "button",
            "occurrences": 1,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              3
            ]
          }
        },
        {
          "name": "benefits",
          "reader_question": "What does the benefits contribute to this page’s reader outcome?",
          "semantic_role": "Three specific reasons to join, each with a short explanatory line.",
          "content_unit_count": {
            "min": 3,
            "max": 3,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[REAL CONTENT · benefits · three reasons stacked between hairlines, each a bold title over one line]",
          "layout_budget": {
            "authored": "title under 5 words, line under 10 words",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "benefits",
            "occurrences": 1,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              31
            ]
          }
        }
      ],
      "rejection_constraints": [
        "A drawn form represented as connected signup, missing consent or unsupported benefits.",
        "A prototype form that implies a working subscription or data collection service."
      ],
      "option_guidance": {
        "option": "default",
        "composition_delta": "An ask to join: a small form beside three short reasons to sign up.",
        "semantic_change": "retains base content relationship; changes presentation or disclosure",
        "matching_instruction": "Select S95 default when the supplied material answers “Why should I sign up, and what would submission mean?” through benefit-led invitation and input. Respect this state: An ask to join: a small form beside three short reasons to sign up."
      },
      "provenance": {
        "status": "inferred composition evidence",
        "author_intent": "not independently confirmed",
        "basis": [
          "retained source composition where available",
          "authored layout and slot contracts",
          "static implementation inspection"
        ],
        "source_visual_count": 1,
        "source_visual_sha256": [
          "ebd972cbf75dbf15b29e90862c07ee5490cdeb888f97547398a177490d15a5a9"
        ],
        "source_export": "private source images remain outside this draft site",
        "markup_sha256": "69b5165e0e3817f61ee0a4a86b009d5c437dfb7958168db1c5fc06e02f976688",
        "limits": [
          "Static parsing inventories authored nodes; it does not certify rendered visibility, responsive fit or interactive state.",
          "Budgets are authored layout guidance, not a content-writing limit or proof of fit.",
          "Matching guidance is a draft inference; it does not establish facts, endorsement, causation or source author intent."
        ]
      },
      "adaptation_rules": [
        "Choose by audience question, reasoning relation and required content before aesthetic preference.",
        "Supply every required semantic role; retain visible unknowns as labelled real-content placeholders.",
        "A number needs source, scope and units; a quotation needs faithful wording and attribution.",
        "Do not infer importance from area, colour, depth or movement unless the content explicitly defines that encoding.",
        "Keep colour token roles, structural objects, licences and source records; changing content does not authorize changing them."
      ]
    },
    "rejection_constraints": [
      "A drawn form represented as connected signup, missing consent or unsupported benefits.",
      "A prototype form that implies a working subscription or data collection service."
    ],
    "markup_inventory": {
      "file": "spread.html",
      "sha256": "69b5165e0e3817f61ee0a4a86b009d5c437dfb7958168db1c5fc06e02f976688",
      "method": "static lxml markup plus authored option description; no rendered-visibility claim",
      "all_markup_slot_counts": {
        "form": 1,
        "form-title": 1,
        "button": 1,
        "benefits": 1
      },
      "slot_evidence": {
        "form": [
          {
            "tag": "div",
            "classes": "su-card",
            "sample_word_count": 10,
            "repeated_children": 5
          }
        ],
        "form-title": [
          {
            "tag": "span",
            "classes": "su-head",
            "sample_word_count": 3,
            "repeated_children": 0
          }
        ],
        "button": [
          {
            "tag": "div",
            "classes": "su-btn",
            "sample_word_count": 3,
            "repeated_children": 0
          }
        ],
        "benefits": [
          {
            "tag": "ul",
            "classes": "su-list",
            "sample_word_count": 31,
            "repeated_children": 3
          }
        ]
      },
      "option_selectors": [],
      "linked_implementation": [
        {
          "file": "../spreads.css",
          "sha256": "32da94472b0c9131e4d5dae7d5bf0498b09202a9e66294b4e4f23e6ddfbf37ba"
        },
        {
          "file": "../spread.js",
          "sha256": "3d99948b83f750bd4ae95dac08e3e50a395de7c149c90a6f1a1c0ea36a2634a4"
        }
      ]
    },
    "variations": {},
    "narrative_profile": {
      "central_point": "An invitation places the requested information beside the reasons someone might choose to provide it.",
      "communication_job": "Explain a sign-up ask and its value while representing the actual submission behaviour truthfully.",
      "audience_value": "Offers decision support about joining. It addresses “Why give this information?”; the displayed arrangement does not establish a working form, privacy protection or consent.",
      "reading_path": [
        "Read the invitation title and benefits.",
        "Inspect the information being requested.",
        "Read the action as a proposal or real submission only according to the implementation’s disclosed state."
      ],
      "adaptation": {
        "required_inputs": [
          "Names the thing the reader would join.",
          "Three labelled information requests, collecting only what the real workflow needs; current implementation is illustrative divs.",
          "A truthful action label; the current element is not an operable submit button.",
          "Three specific reasons to join, each with a short explanatory line."
        ],
        "slot_guidance": {
          "form-title": "Names the thing the reader would join.",
          "form": "Three labelled information requests, collecting only what the real workflow needs; current implementation is illustrative divs.",
          "button": "A truthful action label; the current element is not an operable submit button.",
          "benefits": "Three specific reasons to join, each with a short explanatory line."
        },
        "can_change": [
          "Replace the fictional subject and its supported content while retaining the roles and relationship described here."
        ],
        "must_survive": [
          "Current fields and action are static illustrations, not inputs or submit controls.",
          "Any implemented form needs truthful purpose, handling and outcome text.",
          "Benefits cannot promise unimplemented behaviour."
        ]
      },
      "worked_example": {
        "fictional": true,
        "scenario": "Fictional Cedar sketches a workshop mailing-list invitation; no personal data is collected by this spread.",
        "slot_fills": {
          "form-title": "Join the workshop list",
          "form": "Name | Email | Preferred session — fictional non-submitting example",
          "button": "Illustrative sign-up",
          "benefits": [
            "Preparation | Receive the safety checklist before attending.",
            "Places | Hear when a new session opens.",
            "Control | Choose whether to receive further notices."
          ]
        },
        "reasoning": "The reasons correspond to the proposed ask; the form must not appear to have submitted anything when it has no backend.",
        "qualification": "Fictional teaching example. Replace invented details with authorised content and keep any source, scope, status or uncertainty that affects interpretation."
      },
      "narrative_fit": {
        "before": "Explain the workshop or service.",
        "after": "Use a real consent and submission workflow only after implementing it separately.",
        "good_uses": [
          "A sign-up concept in a pitch.",
          "A UI arrangement reference."
        ],
        "poor_fits": [
          "A production registration flow using this static markup unchanged.",
          "Sensitive information collection without a real handling policy."
        ]
      },
      "evidence": {
        "observations": [
          "Viewed source: three fields and a sign-up action face three reasons to join.",
          "Current HTML explicitly labels the form illustration-only and uses divs for fields and action."
        ],
        "interpretations": [
          "An invitation places the requested information beside the reasons someone might choose to provide it. This is an interpretation of the inspected composition, not a verified claim of author intent."
        ],
        "not_verified": [
          "Original author intent, historical claims, persuasion and archive-wide frequency have not been independently verified."
        ],
        "references": [
          "02_product/spreads/S95-signup-panel/source.webp",
          "02_product/spreads-semantics-2026-10-13/dist/S95-signup-panel/spread.html",
          "02_product/spreads-semantics-2026-10-13/dist/S95-signup-panel/spread.json",
          "https://webslides.tv/demos/components#slide=91"
        ]
      },
      "review": {
        "status": "reviewed",
        "basis": "Viewed the retained base source capture and inspected current HTML and matching slots; reviewed the fictional adaptation at layout-contract level."
      },
      "variation_relationship": "base"
    }
  },
  "options": [],
  "also_seen_in": [],
  "source": {
    "ref": "WebSlides components 91",
    "url": "https://webslides.tv/demos/components#slide=91"
  }
}
