# styling
CDS includes powerful and flexible APIs for styling components. Easily access values from the theme, or go rogue with full customization.
import { media } from '@coinbase/cds-web/styles/media';
### `StyleProps` API
Most components support the StyleProps API. StyleProps automatically have access to the values in the theme, and some StyleProps are limited to only the theme values.
[See the full list of StyleProps here →](/components/layout/Box/?platform=web&tab=props)
```jsx
// ✅ The `bgNegative` token will automatically update with the theme!
// ❌ Error: Type '"#0000ff"' is not assignable to type 'Color | undefined'.
```
:::tip
The docs page of every component has a props table listing all the available props!
:::
:::note
The StyleProps API applies static atomic classnames under the hood. These classnames reference CSS Variables set by the ThemeProvider to enable dynamic theming.
:::
#### Responsive styles
On web, all StyleProps support an optional responsive syntax for device-specific styles.
```jsx
```
- **base:** no media query
- **phone:** {media.phone}
- **tablet:** {media.tablet}
- **desktop:** {media.desktop}
It is not possible to customize the breakpoint values unless you compile CDS from the source code.
Import the `media` object to use CDS breakpoints and media queries in your own custom styles.
[See how breakpoints are defined in the `media` object →](https://github.com/coinbase/cds/blob/master/packages/web/src/styles/media.ts)
```jsx
import styled from 'styled-components';
import { media } from '@coinbase/cds-web/styles/media';
const MyCustomThing = styled.div`
${media.phone} {
width: 100px;
}
`;
```
### `style` and `styles` props
Most components support the native `style` prop for inline styles.
```jsx
```
Some complex components support passing inline styles to subcomponents with the `styles` prop.
```jsx
```
Styles are merged together as objects in order of specificity.
```jsx
```
In the example above, `backgroundColor` will be blue.
:::tip
We will continue to add the `styles` prop to more components over time. Please feel free to request specific components that you think would benefit from this API.
:::
### `className` and `classNames` props
Most components support the native `className` prop for inline styles.
```jsx
```
Some complex components support passing classnames to subcomponents with the `classNames` prop.
```jsx
```
:::tip
We will continue to add the `classNames` prop to more components over time. Please feel free to request specific components that you think would benefit from this API.
:::
### Component specific props
Many components have their own specific props that can affect styling.
```jsx
```
### Combining techniques
Mix and match these styling techniques for complete customization!
```jsx
```
### Global CSS reset
CDS web global styles include a CSS reset which override the browser default styles for some elements. This ensures that polymorphic components render correctly, regardless of their HTML element.
[See the global CSS reset here →](https://github.com/coinbase/cds/blob/master/packages/web/src/styles/global.ts)
### Polymorphic components
Many CDS web components have the polymorphic `as` prop, which allows you to change what component or element is being rendered under the hood.
Using the polymorphic `as` prop will change the component's type to allow the relevant native props.
```jsx
```