{
	"$comment": "Single source of truth for the ultimate_cursor_settings allowlist. Consumed by Ultimate_Cursor_Settings_Schema (PHP REST input gate). 'topLevel' fields exist only on the stored option root; 'config' fields exist both on the root (legacy single-cursor format) and inside each cursorConfigurations[] entry. Types map to sanitizer callbacks in class-settings-schema.php. A field missing here is DROPPED from REST writes — keep in sync with the admin UI (src/admin/constants DEFAULT_VALUES, cursor panels, config-list mapping).",
	"topLevel": {
		"cursorName": "text",
		"enableMultipleCursors": "bool",
		"cursorConfigurations": "configs",
		"respectReducedMotion": "bool"
	},
	"config": {
		"cursorType": "token-null",
		"effect": "token",

		"cursorScope": "token",
		"pagesList": "text-long",
		"cssSelectors": "text-long",
		"htmlElements": "text-long",

		"hideCursorOnTouch": "bool",
		"hideCursorOnMobile": "bool",
		"hideCursorOnTablet": "bool",
		"defaultCursor": "bool",
		"enableTransition": "bool",

		"hoverEnabled": "bool",
		"hoverScale": "float",
		"hoverSpeed": "float",
		"hoverColor": "color",
		"hoverTextColor": "color",
		"hoverMagneticStrength": "float",
		"hoverGlowSize": "float",
		"hoverGlowColor": "color",
		"hoverLabelsEnabled": "bool",
		"hoverBlendMode": "token",
		"hoverCustomSelectors": "text-long",

		"padding": "float",
		"paddingLeftRight": "float",
		"borderRadius": "float",
		"borderStyle": "token",
		"borderWidth": "float",
		"borderColor": "color",
		"shapeSize": "float",
		"shapeColor": "color",
		"cursorShape": "token",
		"blur": "float",
		"size": "float",
		"fontSize": "float",
		"color": "color",
		"background": "color",

		"lineHeight": "float",
		"weight": "text",
		"decoration": "token",
		"transform": "token",
		"imageBorderStyle": "token",
		"imageBorderColor": "color",
		"imageBorderWidth": "float",

		"text": "text",
		"textStyle": "token",
		"circularBackground": "bool",
		"circularBackgroundSize": "float",
		"circularTextPreset": "token",
		"circularTextRadius": "float",
		"circularTextRotate": "float",
		"circularTextDirection": "token",
		"circularTextShowCircle": "bool",
		"circularTextCircleSize": "float",
		"circularTextAutoRotate": "bool",
		"circularTextRotationSpeed": "float",

		"imageUrl": "url",
		"cursorIcon": "text-long",
		"imageSize": "float",
		"imageHotspotPreset": "token",
		"imageHotspotX": "float",
		"imageHotspotY": "float",

		"bubbleSize": "float",
		"bubbleFillColor": "color",
		"bubbleStrokeColor": "color",
		"characters": "text-list",
		"charactersColors": "color-list",
		"colors": "color-list",
		"delay": "float",
		"speed": "float",
		"length": "float",
		"particleColor": "color",
		"particleSpeed": "float",
		"snowflakeEmojis": "text-list",
		"snowflakeSize": "float",
		"snowflakeCount": "float",
		"snowflakeLifespan": "float",
		"snowflakeFallSpeed": "float",
		"splashRadius": "float",
		"splashForce": "float",
		"splashColors": "color-list",
		"sparkColor": "color",
		"sparkSize": "float",
		"sparkRadius": "float",
		"sparkCount": "float",
		"duration": "float",
		"easing": "token",
		"extraScale": "float",
		"trailEmoji": "text",
		"trailEmojiSize": "float",
		"trailParticleCount": "float",
		"trailSpeed": "float",
		"trailOpacity": "float"
	}
}
