CSS custom properties, also known as CSS variables, allow authors to store reusable values that can be used throughout a document. Custom properties are defined with a double hyphen prefix like --main-color and accessed with the var() function like color: var(--main-color). They can be used to create reusable themes, dynamic UIs that respond to user input, and more accessible interfaces. CSS variables provide inheritance, fallbacks, and other advantages over preprocessors. They are supported in all modern browsers but polyfills exist for older environments.