[
	{
		"name": "--pie-answer-eliminator-strike-color",
		"owner": "@pie-players/pie-tool-answer-eliminator",
		"scope": "component-public",
		"category": "feedback",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/theme/src/components.css",
			"packages/tool-answer-eliminator/strategies/strikethrough-strategy.ts"
		],
		"documentedIn": [
			"packages/tool-answer-eliminator/README.md"
		],
		"fallbackPolicy": "Single colour for every part of an elimination: the text line-through, the diagonals over an image, and the line or diagonals over rendered math, so one choice reads as one treatment. Must fall back through canonical --pie-incorrect so a host that themes only the canonical feedback tokens still gets a coherent strike."
	},
	{
		"name": "--pie-background",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "surface",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical page or component surface background token; component hooks may fall back through this token."
	},
	{
		"name": "--pie-background-dark",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "surface",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical darker surface token for layered or recessed UI."
	},
	{
		"name": "--pie-black",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "neutral",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical neutral token that may invert in high-contrast schemes."
	},
	{
		"name": "--pie-blue-grey-100",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "neutral",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical blue-grey scale token for legacy neutral UI surfaces."
	},
	{
		"name": "--pie-blue-grey-300",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "neutral",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical blue-grey scale token for legacy neutral UI surfaces."
	},
	{
		"name": "--pie-blue-grey-600",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "neutral",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical blue-grey scale token for legacy neutral UI surfaces."
	},
	{
		"name": "--pie-blue-grey-900",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "neutral",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical blue-grey scale token for legacy neutral UI surfaces."
	},
	{
		"name": "--pie-border",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "border",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical border token for ordinary UI component outlines."
	},
	{
		"name": "--pie-border-dark",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "border",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical stronger border token for emphasized boundaries."
	},
	{
		"name": "--pie-border-gray",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "border",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical gray border token retained for existing neutral UI fallbacks."
	},
	{
		"name": "--pie-border-light",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "border",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical lighter border token for subtle boundaries."
	},
	{
		"name": "--pie-button-active-bg",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "button",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical active background for ordinary button controls; local trigger states should use component-scoped hooks when needed."
	},
	{
		"name": "--pie-button-background-color",
		"owner": "@pie-players/pie-tool-tts-inline",
		"scope": "component-public",
		"category": "button",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/tool-calculator-shared/CalculatorInlineTool.svelte",
			"packages/tool-tts-inline/tool-tts-inline.svelte"
		],
		"documentedIn": [
			"packages/tool-tts-inline/README.md",
			"packages/tool-calculator-inline-desmos/README.md",
			"packages/tool-calculator-shared/README.md"
		],
		"fallbackPolicy": "Compatibility alias retained for TTS inline button backgrounds; implementations must fall back through canonical --pie-button-bg before broad surface tokens."
	},
	{
		"name": "--pie-button-bg",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "button",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical ordinary button background token."
	},
	{
		"name": "--pie-button-border",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "button",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical ordinary button border token."
	},
	{
		"name": "--pie-button-color",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "button",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical ordinary button foreground token."
	},
	{
		"name": "--pie-button-focus-outline",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "focus",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical focus outline token for ordinary button controls."
	},
	{
		"name": "--pie-button-hover-background-color",
		"owner": "@pie-players/pie-tool-calculator-shared",
		"scope": "component-public",
		"category": "button",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/tool-calculator-shared/CalculatorInlineTool.svelte"
		],
		"documentedIn": [
			"packages/tool-calculator-inline-desmos/README.md",
			"packages/tool-calculator-shared/README.md"
		],
		"fallbackPolicy": "Compatibility alias retained for calculator inline button hover backgrounds; implementations must fall back through canonical --pie-button-hover-bg before broad surface tokens."
	},
	{
		"name": "--pie-button-hover-bg",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "button",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical ordinary button hover background token."
	},
	{
		"name": "--pie-button-hover-border",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "button",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical ordinary button hover border token."
	},
	{
		"name": "--pie-button-hover-color",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "button",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical ordinary button hover foreground token."
	},
	{
		"name": "--pie-calculator-series-1",
		"owner": "@pie-players/pie-calculator-cortex",
		"scope": "component-public",
		"category": "data-visualization",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/calculator-cortex/src/GraphView.svelte"
		],
		"documentedIn": [
			"packages/calculator-cortex/README.md"
		],
		"fallbackPolicy": "Graph series 1 colour. The line style remains a redundant non-colour cue; hosts overriding the colour must preserve 3:1 contrast against the graph surface and keep it distinguishable from the other series colours."
	},
	{
		"name": "--pie-calculator-series-2",
		"owner": "@pie-players/pie-calculator-cortex",
		"scope": "component-public",
		"category": "data-visualization",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/calculator-cortex/src/GraphView.svelte"
		],
		"documentedIn": [
			"packages/calculator-cortex/README.md"
		],
		"fallbackPolicy": "Graph series 2 colour. The dashed line style remains a redundant non-colour cue; hosts overriding the colour must preserve 3:1 contrast against the graph surface and keep it distinguishable from the other series colours."
	},
	{
		"name": "--pie-calculator-series-3",
		"owner": "@pie-players/pie-calculator-cortex",
		"scope": "component-public",
		"category": "data-visualization",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/calculator-cortex/src/GraphView.svelte"
		],
		"documentedIn": [
			"packages/calculator-cortex/README.md"
		],
		"fallbackPolicy": "Graph series 3 colour. The dotted line style remains a redundant non-colour cue; hosts overriding the colour must preserve 3:1 contrast against the graph surface and keep it distinguishable from the other series colours."
	},
	{
		"name": "--pie-calculator-series-4",
		"owner": "@pie-players/pie-calculator-cortex",
		"scope": "component-public",
		"category": "data-visualization",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/calculator-cortex/src/GraphView.svelte"
		],
		"documentedIn": [
			"packages/calculator-cortex/README.md"
		],
		"fallbackPolicy": "Graph series 4 colour. The line style remains a redundant non-colour cue; hosts overriding the colour must preserve 3:1 contrast against the graph surface and keep it distinguishable from the other series colours."
	},
	{
		"name": "--pie-calculator-series-5",
		"owner": "@pie-players/pie-calculator-cortex",
		"scope": "component-public",
		"category": "data-visualization",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/calculator-cortex/src/GraphView.svelte"
		],
		"documentedIn": [
			"packages/calculator-cortex/README.md"
		],
		"fallbackPolicy": "Graph series 5 colour. The dashed line style remains a redundant non-colour cue; hosts overriding the colour must preserve 3:1 contrast against the graph surface and keep it distinguishable from the other series colours."
	},
	{
		"name": "--pie-calculator-series-6",
		"owner": "@pie-players/pie-calculator-cortex",
		"scope": "component-public",
		"category": "data-visualization",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/calculator-cortex/src/GraphView.svelte"
		],
		"documentedIn": [
			"packages/calculator-cortex/README.md"
		],
		"fallbackPolicy": "Graph series 6 colour. The dotted line style remains a redundant non-colour cue; hosts overriding the colour must preserve 3:1 contrast against the graph surface and keep it distinguishable from the other series colours."
	},
	{
		"name": "--pie-content-styles",
		"owner": "@pie-players/pie-theme",
		"scope": "package-private",
		"category": "diagnostics",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/theme/src/components.css"
		],
		"documentedIn": [
			"packages/theme/README.md",
			"packages/item-player/README.md"
		],
		"fallbackPolicy": "Presence sentinel, not a themeable value. Declared by components.css so players can detect a copy the host loaded itself; hosts and components must not consume it for styling or depend on any specific value beyond it being non-empty."
	},
	{
		"name": "--pie-content-emphasis",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "content",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Red emphasis inside authored content (.content-emphasis). Mapped from the DaisyUI error slot through the legible correction, so it clears 4.5:1 against the page on every shipped theme; a bare red does not."
	},
	{
		"name": "--pie-correct",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "feedback",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical correct feedback token; do not reuse for unrelated decorative chrome."
	},
	{
		"name": "--pie-correct-icon",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "feedback",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical correct feedback icon token."
	},
	{
		"name": "--pie-correct-secondary",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "feedback",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical secondary correct feedback surface token."
	},
	{
		"name": "--pie-correct-tertiary",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "feedback",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical tertiary correct feedback token."
	},
	{
		"name": "--pie-disabled",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "state",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical disabled-state foreground token."
	},
	{
		"name": "--pie-disabled-secondary",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "state",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical secondary disabled-state token."
	},
	{
		"name": "--pie-disabled-text",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "state",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical foreground for text that is disabled but still has to be read - a non-editable label rather than a control - held to the 4.5:1 text minimum against --pie-background rather than the 3:1 --pie-disabled answers to as a state fill. Must fall back through canonical --pie-text so a host that themes only the canonical text token gets full contrast rather than an unreadable literal."
	},
	{
		"name": "--pie-dropdown-background",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "surface",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical dropdown or menu surface token."
	},
	{
		"name": "--pie-surface",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "surface",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical raised-surface token for answer pools and tool panels, with text and focus contrast against the active palette."
	},
	{
		"name": "--pie-faded-primary",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "action",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical low-emphasis primary-action token."
	},
	{
		"name": "--pie-fixed-hue-collapse",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "palette",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Share, as a percentage, by which a component's own fixed hues collapse into the palette's surface and ink. Not a colour: a component mixes its fixed value towards --pie-background-dark and --pie-text by this share, so 0% keeps the hue exactly as authored and 100% removes it. Base Themes set 0%; every colour scheme sets 100%, because a two-colour palette is a promise a fixed hue breaks -- the periodic table's category fills are the first consumer. A palette that keeps hue encodings must set 0% explicitly; a registered custom scheme that says nothing collapses them."
	},
	{
		"name": "--pie-focus-checked",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "focus",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical focus background token for checked controls."
	},
	{
		"name": "--pie-focus-checked-border",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "focus",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical focus border token for checked controls."
	},
	{
		"name": "--pie-focus-outline",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "focus",
		"status": "planned",
		"schemeParticipation": "excluded",
		"definedIn": [
			"docs/prds/pie-727-broad-theming-contract.md"
		],
		"documentedIn": [
			"docs/prds/pie-727-broad-theming-contract.md"
		],
		"fallbackPolicy": "Planned focus token decision gate; implementation must either define it canonically, alias an existing token, or keep focus hooks component-scoped."
	},
	{
		"name": "--pie-focus-ring-color",
		"owner": "@pie-players/pie-theme",
		"scope": "legacy",
		"category": "focus",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/theme/src/components.css"
		],
		"documentedIn": [
			"docs/prds/pie-727-broad-theming-contract.md"
		],
		"fallbackPolicy": "Legacy authored-content focus alias retained for image/table scroll wrappers; implementations must fall back through --pie-focus-outline and --pie-button-focus-outline."
	},
	{
		"name": "--pie-focus-unchecked",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "focus",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical focus background token for unchecked controls."
	},
	{
		"name": "--pie-focus-unchecked-border",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "focus",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical focus border token for unchecked controls."
	},
	{
		"name": "--pie-font-scale",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "typography",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical font scaling token used by PIE theme font-size utilities."
	},
	{
		"name": "--pie-incorrect",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "feedback",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical incorrect feedback token; do not reuse for unrelated decorative chrome."
	},
	{
		"name": "--pie-incorrect-icon",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "feedback",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical incorrect feedback icon token."
	},
	{
		"name": "--pie-incorrect-secondary",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "feedback",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical secondary incorrect feedback surface token."
	},
	{
		"name": "--pie-missing",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "feedback",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical missing-response feedback token."
	},
	{
		"name": "--pie-missing-icon",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "feedback",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical missing-response icon token."
	},
	{
		"name": "--pie-passage-header-background",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "surface",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionPassageCard.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Passage header surface. Documented host hook; falls back to the canonical surface tokens when unset."
	},
	{
		"name": "--pie-primary",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "action",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical primary action/selected color; component-local active states should use scoped hooks when host ergonomics require it."
	},
	{
		"name": "--pie-primary-dark",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "action",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical darker primary action token used for hover/emphasis fallbacks."
	},
	{
		"name": "--pie-primary-light",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "action",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical lighter primary action token used for low-emphasis action surfaces."
	},
	{
		"name": "--pie-scrollbar-thumb",
		"owner": "@pie-players/pie-section-player",
		"scope": "package-private",
		"category": "scrollbar",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/PieSectionPlayerSplitPaneElement.svelte",
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte",
			"packages/section-player/src/components/shared/SectionPlayerVerticalContent.svelte"
		],
		"documentedIn": [
			"docs/architecture/pie-727-theme-token-inventory.md"
		],
		"fallbackPolicy": "Scrollbar thumb on the three scrolling panes. Package-private: no theme or scheme sets it, so the fallback chain is the contract rather than the name. Falls back through --pie-border-gray, a boundary token hosts do not repoint to restyle button chrome; it defaulted through --pie-border until a host set that to transparent and every pane's thumb went invisible."
	},
	{
		"name": "--pie-scrollbar-thumb-hover",
		"owner": "@pie-players/pie-section-player",
		"scope": "package-private",
		"category": "scrollbar",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/PieSectionPlayerSplitPaneElement.svelte",
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte",
			"packages/section-player/src/components/shared/SectionPlayerVerticalContent.svelte"
		],
		"documentedIn": [
			"docs/architecture/pie-727-theme-token-inventory.md"
		],
		"fallbackPolicy": "Scrollbar thumb hover on the three scrolling panes. Package-private: the fallback chain is the contract rather than the name. Falls back through --pie-border-dark."
	},
	{
		"name": "--pie-scrollbar-track",
		"owner": "@pie-players/pie-section-player",
		"scope": "package-private",
		"category": "scrollbar",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/PieSectionPlayerSplitPaneElement.svelte",
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte",
			"packages/section-player/src/components/shared/SectionPlayerVerticalContent.svelte"
		],
		"documentedIn": [
			"docs/architecture/pie-727-theme-token-inventory.md"
		],
		"fallbackPolicy": "Scrollbar track on the three scrolling panes. Package-private: the fallback chain is the contract rather than the name. Falls back through --pie-background-dark, the surface one step off the page."
	},
	{
		"name": "--pie-secondary",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "action",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical secondary action token."
	},
	{
		"name": "--pie-secondary-background",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "surface",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical secondary surface background token."
	},
	{
		"name": "--pie-secondary-dark",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "action",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical darker secondary action token."
	},
	{
		"name": "--pie-secondary-light",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "action",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical lighter secondary action token."
	},
	{
		"name": "--pie-section-player-card-header-background",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-card",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionItemCard.svelte",
			"packages/section-player/src/components/shared/SectionPassageCard.svelte",
			"packages/assessment-toolkit/src/components/ItemToolBar.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public card header background hook; defaults to transparent and hosts must preserve contrast with card header content."
	},
	{
		"name": "--pie-section-player-card-header-background-dark",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-card",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionItemCard.svelte",
			"packages/section-player/src/components/shared/SectionPassageCard.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public card header fill applied under dark themes ([data-theme=\"dark\"] or pie-theme[theme=\"dark\"]); falls back to --pie-section-player-card-header-background so a host that sets only the light hook keeps today's behaviour. Hosts must preserve contrast with card header content on the dark ground."
	},
	{
		"name": "--pie-section-player-card-header-radius",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-card",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionItemCard.svelte",
			"packages/section-player/src/components/shared/SectionPassageCard.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public card header corner radius hook; defaults just inside the card radius and may be overridden when hosts style header fills."
	},
	{
		"name": "--pie-section-player-card-radius",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-card",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionItemCard.svelte",
			"packages/section-player/src/components/shared/SectionPassageCard.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public card radius hook shared by item and passage cards; geometry-only override with no color contrast impact."
	},
	{
		"name": "--pie-section-player-item-media-aspect-ratio",
		"owner": "@pie-players/pie-tool-sign-language",
		"scope": "component-public",
		"category": "section-card",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/tool-sign-language/src/SignLanguageMediaRegion.svelte"
		],
		"documentedIn": [
			"packages/tool-sign-language/README.md"
		],
		"fallbackPolicy": "Public sizing hook for the item card media region; defaults to 3 / 4 because signed content needs height for hands and face. Geometry-only, but hosts must keep signing legible when overriding."
	},
	{
		"name": "--pie-section-player-item-media-min-height",
		"owner": "@pie-players/pie-tool-sign-language",
		"scope": "component-public",
		"category": "section-card",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/tool-sign-language/src/SignLanguageMediaRegion.svelte"
		],
		"documentedIn": [
			"packages/tool-sign-language/README.md"
		],
		"fallbackPolicy": "Public legibility floor for the item card media region; defaults to 220px so a narrow content column cannot crush signed content. Geometry-only."
	},
	{
		"name": "--pie-section-player-item-media-max-height",
		"owner": "@pie-players/pie-tool-sign-language",
		"scope": "component-public",
		"category": "section-card",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/tool-sign-language/src/SignLanguageMediaRegion.svelte"
		],
		"documentedIn": [
			"packages/tool-sign-language/README.md"
		],
		"fallbackPolicy": "Public ceiling for the item card media region; defaults to 60vh so a tall recording cannot push question content off screen. Geometry-only."
	},
	{
		"name": "--pie-section-player-layout-max-width",
		"owner": "@pie-players/pie-section-player",
		"scope": "package-private",
		"category": "layout",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/PieSectionPlayerSplitPaneElement.svelte",
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte",
			"packages/section-player/src/components/shared/SectionPlayerVerticalContent.svelte"
		],
		"documentedIn": [
			"docs/architecture/pie-727-theme-token-inventory.md"
		],
		"fallbackPolicy": "Package-private layout handoff token set from component props; hosts should use documented max-width attributes instead of overriding this token directly."
	},
	{
		"name": "--pie-section-player-tab-active-background",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-tabs",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public tab active-state background hook; hosts must preserve contrast with --pie-section-player-tab-active-color."
	},
	{
		"name": "--pie-section-player-tab-active-color",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-tabs",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public tab active-state foreground hook; hosts must preserve contrast with --pie-section-player-tab-active-background."
	},
	{
		"name": "--pie-section-player-tab-background",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-tabs",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public ordinary tab background hook; default remains transparent and should inherit accessible surrounding surfaces."
	},
	{
		"name": "--pie-section-player-tab-color",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-tabs",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public ordinary tab foreground hook; hosts must preserve text contrast against ordinary tab backgrounds."
	},
	{
		"name": "--pie-section-player-tab-gap",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-tabs",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public tabbed-frame spacing hook; values must not reduce perceivable target separation below WCAG expectations."
	},
	{
		"name": "--pie-section-player-tab-padding-block",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-tabs",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public tab block padding hook; hosts should preserve keyboard target size when overriding."
	},
	{
		"name": "--pie-section-player-tab-track-padding",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-tabs",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public tab track padding hook; hosts should preserve target size and visible grouping when overriding."
	},
	{
		"name": "--pie-section-player-tab-track-radius",
		"owner": "@pie-players/pie-section-player",
		"scope": "component-public",
		"category": "section-tabs",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte"
		],
		"documentedIn": [
			"packages/section-player/README.md"
		],
		"fallbackPolicy": "Public tab track radius hook; geometry-only override with no color contrast impact."
	},
	{
		"name": "--pie-section-player-tab-zoom-comp",
		"owner": "@pie-players/pie-section-player",
		"scope": "package-private",
		"category": "layout",
		"status": "deprecated",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/section-player/src/components/shared/SectionPlayerTabbedContent.svelte"
		],
		"documentedIn": [
			"docs/architecture/pie-727-theme-token-inventory.md"
		],
		"fallbackPolicy": "Retired package-private handoff. Tabs follow browser zoom without automatic compensation; this name no longer changes layout."
	},
	{
		"name": "--pie-tertiary",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "action",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical tertiary action token."
	},
	{
		"name": "--pie-tertiary-light",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "action",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical lighter tertiary action token."
	},
	{
		"name": "--pie-text",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "text",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical foreground text token."
	},
	{
		"name": "--pie-annotation-underline",
		"owner": "@pie-players/pie-assessment-toolkit",
		"scope": "component-public",
		"category": "annotation",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/assessment-toolkit/src/services/HighlightCoordinator.ts",
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/tool-annotation-toolbar/README.md"
		],
		"fallbackPolicy": "Colour of the student annotation underline on a light page, default #4221d5. Deliberately does not fall through --pie-primary: a theme accent is chosen against one background and is illegible on the other, and a var() fallback could never override a host-set --pie-primary anyway. Paired with --pie-annotation-underline-dark, which HighlightCoordinator selects via [data-theme] rather than prefers-color-scheme. The data-color-scheme accessibility palettes set both to their own --pie-primary, because [data-theme] reports what the page declares rather than which scheme is active. Hosts overriding it must keep 3:1 against the content background (WCAG 2.2 SC 1.4.11)."
	},
	{
		"name": "--pie-annotation-underline-dark",
		"owner": "@pie-players/pie-assessment-toolkit",
		"scope": "component-public",
		"category": "annotation",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/assessment-toolkit/src/services/HighlightCoordinator.ts",
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/tool-annotation-toolbar/README.md"
		],
		"fallbackPolicy": "Colour of the student annotation underline on a dark page, default #9c89ec. The dark half of the pair described under --pie-annotation-underline; kept a separate token so overriding one state never silently moves the other. Hosts overriding it must keep 3:1 against the content background (WCAG 2.2 SC 1.4.11)."
	},
	{
		"name": "--pie-tool-annotation-toolbar-border",
		"owner": "@pie-players/pie-tool-annotation-toolbar",
		"scope": "component-public",
		"category": "border",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/tool-annotation-toolbar/tool-annotation-toolbar.svelte",
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/tool-annotation-toolbar/README.md"
		],
		"fallbackPolicy": "Outline of the floating annotation toolbar. Deliberately does not fall through --pie-border, which the DaisyUI bridge maps to the base-300 surface tint and which leaves the outline near 1.1:1; the component default is a measured light-dark(#5c5c5c, #949494) pair instead -- dark grey on light surfaces, light grey on dark ones, each measured against DaisyUI's real theme bases rather than pure white and black. The data-color-scheme accessibility palettes and the PIE dark theme set it explicitly so their own boundary colour wins. Hosts overriding it must keep 3:1 against both the toolbar surface and the content behind it (WCAG 2.2 SC 1.4.11)."
	},
	{
		"name": "--pie-tool-line-reader-control-color",
		"owner": "@pie-players/pie-tool-line-reader",
		"scope": "component-public",
		"category": "button",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/tool-line-reader/tool-line-reader.svelte"
		],
		"documentedIn": [
			"packages/tool-line-reader/README.md"
		],
		"fallbackPolicy": "Glyph colour of the line reader's close and resize controls. Registered as the required companion to --pie-tool-line-reader-frame-color rather than as a hook worth setting on its own: the controls sit on the frame, so this is paired with the fill and not with the page, and the #fff default only holds while the fill stays dark. A host that sets a light fill must set this too. Does not fall through --pie-text or the canonical button tokens, which track the page rather than the scrim the glyphs are drawn on. Must keep 3:1 against the resolved fill (WCAG 2.2 SC 1.4.11); the controls are fully opaque regardless of --pie-tool-line-reader-frame-opacity, so the fill alone determines the ratio."
	},
	{
		"name": "--pie-tool-line-reader-frame-color",
		"owner": "@pie-players/pie-tool-line-reader",
		"scope": "component-public",
		"category": "surface",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/tool-line-reader/tool-line-reader.svelte"
		],
		"documentedIn": [
			"packages/tool-line-reader/README.md"
		],
		"fallbackPolicy": "Fill of the line reader's obscuring frame, configured per deployment alongside --pie-tool-line-reader-frame-opacity. Deliberately does not fall through --pie-text or any canonical surface token, and deliberately does not follow data-color-scheme: masking works by collapsing the contrast of whatever it covers, and an ink-coloured scrim defeats that on its own scheme -- a yellow scrim over yellow-on-blue text hides nothing, and a white one glares in a dark scheme the reader chose to avoid glare. The #000 default dims in both directions instead, dropping covered text from 10.9-19.3:1 to 1.09-1.71:1 across the six built-in schemes. A host overriding it owns that verification for every scheme it ships, and must set --pie-tool-line-reader-control-color with it when picking a light fill, because the control glyphs default to white to pair with the dark scrim."
	},
	{
		"name": "--pie-tool-line-reader-frame-opacity",
		"owner": "@pie-players/pie-tool-line-reader",
		"scope": "component-public",
		"category": "surface",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/tool-line-reader/tool-line-reader.svelte"
		],
		"documentedIn": [
			"packages/tool-line-reader/README.md"
		],
		"fallbackPolicy": "Masking strength of the line reader's obscuring frame. A programme-level decision rather than a student one -- it sets how much surrounding context a test taker can still see -- so it is configured per deployment and the tool exposes no in-session control for it. Read as var() with a 0.8 default and never written inline by the component, so a host declaration wins without !important. Does not fall through any canonical token: this is unitless masking strength, not a palette value. Lowering it weakens the masking the tool exists to provide and invalidates the contrast figures recorded for --pie-tool-line-reader-frame-color, which were measured at the 0.8 default."
	},
	{
		"name": "--pie-tool-trigger-active-background",
		"owner": "@pie-players/pie-tool-tts-inline",
		"scope": "component-public",
		"category": "tool-trigger",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/tool-calculator-shared/CalculatorInlineTool.svelte",
			"packages/tool-tts-inline/tool-tts-inline.svelte"
		],
		"documentedIn": [
			"packages/tool-tts-inline/README.md",
			"packages/tool-calculator-inline-desmos/README.md",
			"packages/tool-calculator-shared/README.md"
		],
		"fallbackPolicy": "Component trigger active/open background hook; falls back through existing semantic tokens and must preserve WCAG contrast when overridden by hosts."
	},
	{
		"name": "--pie-tool-trigger-active-border-color",
		"owner": "@pie-players/pie-tool-tts-inline",
		"scope": "component-public",
		"category": "tool-trigger",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/tool-calculator-shared/CalculatorInlineTool.svelte",
			"packages/tool-tts-inline/tool-tts-inline.svelte"
		],
		"documentedIn": [
			"packages/tool-tts-inline/README.md",
			"packages/tool-calculator-inline-desmos/README.md",
			"packages/tool-calculator-shared/README.md"
		],
		"fallbackPolicy": "Component trigger active/open border hook; falls back through existing semantic tokens."
	},
	{
		"name": "--pie-tool-trigger-active-color",
		"owner": "@pie-players/pie-tool-tts-inline",
		"scope": "component-public",
		"category": "tool-trigger",
		"status": "active",
		"schemeParticipation": "optional",
		"definedIn": [
			"packages/tool-calculator-shared/CalculatorInlineTool.svelte",
			"packages/tool-tts-inline/tool-tts-inline.svelte"
		],
		"documentedIn": [
			"packages/tool-tts-inline/README.md",
			"packages/tool-calculator-inline-desmos/README.md",
			"packages/tool-calculator-shared/README.md"
		],
		"fallbackPolicy": "Component trigger active/open foreground hook; hosts are responsible for preserving contrast with the active trigger background."
	},
	{
		"name": "--pie-toolbar-tools-row-height",
		"owner": "@pie-players/pie-assessment-toolkit",
		"scope": "package-private",
		"category": "toolbar-layout",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/assessment-toolkit/src/components/ItemToolBar.svelte"
		],
		"documentedIn": [
			"docs/architecture/pie-727-theme-token-inventory.md"
		],
		"fallbackPolicy": "Package-private toolbar row sizing token; hosts should use documented toolbar size inputs rather than overriding this internal handoff."
	},
	{
		"name": "--pie-tts-controls-row-height",
		"owner": "@pie-players/pie-assessment-toolkit",
		"scope": "package-private",
		"category": "toolbar-layout",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/assessment-toolkit/src/components/ItemToolBar.svelte",
			"packages/tool-tts-inline/tool-tts-inline.svelte"
		],
		"documentedIn": [
			"docs/architecture/pie-727-theme-token-inventory.md"
		],
		"fallbackPolicy": "Package-private toolbar-to-inline-TTS row height handoff used to reserve reading controls space."
	},
	{
		"name": "--pie-tts-line-highlight",
		"owner": "@pie-players/pie-assessment-toolkit",
		"scope": "component-public",
		"category": "tts-highlight",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/assessment-toolkit/src/services/HighlightCoordinator.ts"
		],
		"documentedIn": [
			"packages/assessment-toolkit/README.md"
		],
		"fallbackPolicy": "Line-granularity reading highlight. HighlightCoordinator derives a value from the resolved theme and writes it inline on the document element, so a host declaration wins only with !important. Falls back through --pie-tts-sentence-highlight, then --pie-missing at 38%."
	},
	{
		"name": "--pie-tts-sentence-highlight",
		"owner": "@pie-players/pie-assessment-toolkit",
		"scope": "component-public",
		"category": "tts-highlight",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/assessment-toolkit/src/services/HighlightCoordinator.ts"
		],
		"documentedIn": [
			"packages/assessment-toolkit/README.md"
		],
		"fallbackPolicy": "Sentence-granularity reading highlight, and the fallback for --pie-tts-line-highlight. HighlightCoordinator derives a value from the resolved theme and writes it inline on the document element, so a host declaration wins only with !important. Falls back to --pie-missing at 38%."
	},
	{
		"name": "--pie-tts-word-highlight",
		"owner": "@pie-players/pie-assessment-toolkit",
		"scope": "component-public",
		"category": "tts-highlight",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/assessment-toolkit/src/services/HighlightCoordinator.ts"
		],
		"documentedIn": [
			"packages/assessment-toolkit/README.md"
		],
		"fallbackPolicy": "Current-word reading highlight. HighlightCoordinator derives a value from the resolved theme and writes it inline on the document element, so a host declaration wins only with !important. Falls back to --pie-missing at 68%."
	},
	{
		"name": "--pie-tts-word-shadow",
		"owner": "@pie-players/pie-assessment-toolkit",
		"scope": "component-public",
		"category": "tts-highlight",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/assessment-toolkit/src/services/HighlightCoordinator.ts"
		],
		"documentedIn": [
			"packages/assessment-toolkit/README.md"
		],
		"fallbackPolicy": "Text shadow carrying the current word over a saturated highlight. HighlightCoordinator derives a value from the resolved theme and writes it inline on the document element, so a host declaration wins only with !important. Falls back to --pie-text at 35%."
	},
	{
		"name": "--pie-tts-word-underline",
		"owner": "@pie-players/pie-assessment-toolkit",
		"scope": "component-public",
		"category": "tts-highlight",
		"status": "active",
		"schemeParticipation": "excluded",
		"definedIn": [
			"packages/assessment-toolkit/src/services/HighlightCoordinator.ts"
		],
		"documentedIn": [
			"packages/assessment-toolkit/README.md"
		],
		"fallbackPolicy": "Underline on the current word, the non-colour cue for schemes where the highlight hue washes out. HighlightCoordinator derives a value from the resolved theme and writes it inline on the document element, so a host declaration wins only with !important. Falls back to --pie-text at 70%."
	},
	{
		"name": "--pie-white",
		"owner": "@pie-players/pie-theme",
		"scope": "canonical-semantic",
		"category": "neutral",
		"status": "active",
		"schemeParticipation": "required",
		"definedIn": [
			"packages/theme/src/theme-definitions.ts"
		],
		"documentedIn": [
			"packages/theme/README.md"
		],
		"fallbackPolicy": "Canonical neutral token that may invert in high-contrast schemes."
	}
]
