j3w1/theme implementation brief — checkbox theme: j3w1-theme 1.1.0 profile: default sourceDigest: sha256-C+iD5Q7l0XPU/boMj003wPbPLBOq3C3ZM7s4OfzJ6mc= pin: https://raw.githubusercontent.com/j3w1/theme/v1.1.0/exports/components/checkbox.json spec: spec/components/checkbox.md site: https://j3w1.github.io/theme/reference/#c-checkbox maturity: stable priority: R1 Summary: The native checkbox drawn as a 16px square that fills with the primary action colour and a ✓ or – glyph; single, or a fieldset group of independent choices. Use the pinned approved default profile. Pending roles in that profile use-and-report their decision IDs; this does not approve them. Proposed profiles are preview-only and blocked for delivery. Heritage profiles are historical-only. Deprecated or heritage roles are blocked for new approved-profile mappings. Consume roles within their documented scope, never primitives. Release numbering does not approve profiles or tokens. Tokens (resolved): box.bg #000000 ({color.surface.input}) use box.border #a3676b ({color.border.control}) use-and-report (D-007) box.bg-hover #1c0a09 ({color.interaction.hover.bg}) use box.ring #e53935 ({color.interaction.focus.ring}) use box.bg-checked #7d1310 ({color.action.primary.bg}) use box.bg-checked-hover #911410 ({color.action.primary.hover-bg}) use box.glyph #f4eeee ({color.action.primary.text}) use box.ring-checked #ffa2a7 ({color.interaction.focus.ring-container}) use box.border-invalid #e53935 ({color.status.danger.border}) use box.bg-disabled #160b0b ({color.interaction.disabled.bg}) use box.border-disabled #7d1310 ({color.border.disabled}) use box.glyph-disabled #8a5559 ({color.text.disabled}) use text.default #e99499 ({color.text.default}) use text.disabled #8a5559 ({color.text.disabled}) use legend.text #ffa2a7 ({color.text.bright}) use legend.required-mark #f73f35 ({color.status.danger.text}) use message.text #f73f35 ({color.status.danger.text}) use State dependency disclosures: D-007 States: default, hover, focus-visible, checked, mixed, checked+focus-visible, checked+disabled, disabled, invalid, required default: 16px box, 1px {color.border.control} on {color.surface.input}; text {color.text.default} [—] hover: box background → {color.interaction.hover.bg}; checked box → {color.action.primary.hover-bg} [cursor: pointer; hover-capable pointers only] focus-visible: ring 1px dashed {color.interaction.focus.ring} at −2px around the box [the ring] checked: box fills {color.action.primary.bg}; ✓ in {color.action.primary.text}; border stays {color.border.control} [the ✓ glyph; `checked`] mixed: box fills {color.action.primary.bg}; – in {color.action.primary.text} [the – glyph; `indeterminate` / `aria-checked="mixed"`] checked+focus-visible: the fill and a ring in {color.interaction.focus.ring-container} [glyph and ring] checked+disabled: box {color.interaction.disabled.bg} with 1px {color.border.disabled}; ✓ and text in {color.text.disabled} [glyph; `disabled`; cursor: not-allowed] disabled: box {color.interaction.disabled.bg} with 1px {color.border.disabled}; text {color.text.disabled} [`disabled`; cursor: not-allowed] invalid: box border 2px {color.status.danger.border}; message with the ✕ glyph [border width 1 → 2px; glyph; `aria-invalid`] required: `*` after the text or legend in {color.status.danger.text} plus visually hidden "required" [`required`; the mark] Keyboard: Tab / Shift+Tab: Moves through every checkbox; each is its own tab stop. Space: Toggles; a mixed box becomes checked. ARIA: native with