CSS Doctor / Rule reference 1.0.0

Active diagnostic rules

Read what each of the 21 rules detects, the evidence it uses, its patch safety, and where manual review remains necessary.

Open CSS Doctor
CSS-CASCADE-002Tier B

Specificity conflict

Multiple declarations match the same element and property, and a stronger or later rule wins.

HYBRID · v1.0.0
CSS-CASCADE-003Tier A

Duplicate declaration

The same property appears more than once in one rule, so the later value overrides the earlier value.

STATIC · v1.0.0
CSS-CASCADE-006Tier B

Unscoped global selector

A bare element selector affects every matching element on the page.

STATIC · v1.0.0
LAYOUT-001Tier C

Document horizontal overflow

The preview has a scroll width larger than its viewport.

RUNTIME · v1.0.0
LAYOUT-002Tier C

Element outside the viewport

An element boundary extends beyond the current viewport.

RUNTIME · v1.0.0
LAYOUT-003Tier B

Fixed width exceeds its container

A fixed pixel width or minimum width can exceed the selected viewport.

HYBRID · v1.0.0
LAYOUT-004Tier A

Flex item cannot shrink

A flex item keeps its automatic minimum size and cannot shrink around long content.

HYBRID · v1.0.0
LAYOUT-006Tier B

Unbreakable content overflow

A long URL or unbroken string exceeds its content box.

RUNTIME · v1.0.0
LAYOUT-007Tier A

Intrinsic media overflow

Media is wider than its container and lacks a maximum-width constraint.

HYBRID · v1.0.0
POSITION-001Tier A

Sticky element has no inset

The element uses position: sticky without an inset such as top.

HYBRID · v1.0.0
POSITION-002Tier C

Overflow ancestor constrains sticky

An ancestor with overflow auto, scroll, or hidden changes the sticky container.

RUNTIME · v1.0.0
POSITION-003Tier C

Sticky element has no scroll range

The sticky container is not taller than the sticky element, leaving no travel range.

RUNTIME · v1.0.0
STACK-001Tier C

Element is trapped in a stacking context

A high z-index remains constrained by an ancestor stacking context.

RUNTIME · v1.0.0
STACK-002Tier B

z-index has no effect

The element has z-index but is neither positioned nor a flex/grid item.

HYBRID · v1.0.0
VIEWPORT-001Tier B

Mobile 100vh risk

A lone 100vh height can misalign with dynamic mobile browser chrome.

HYBRID · v1.0.0
A11Y-001Tier B

Keyboard focus is not visible

Focusing an interactive element produces no observable visual indicator.

RUNTIME · v1.0.0
A11Y-004Tier C

Duplicate HTML ID

The same ID appears more than once, making labels and anchors ambiguous.

STATIC · v1.0.0
MOTION-001Tier B

Reduced-motion alternative is missing

Animation is present without a prefers-reduced-motion alternative.

STATIC · v1.0.0
WP-001Tier A

Leading dot in Gutenberg class field

Enter the class without a dot in Gutenberg and use the dot only in CSS.

STATIC · v1.0.0
WP-002Tier B

Unscoped WordPress block override

A bare .wp-block-* selector affects every matching core block.

STATIC · v1.0.0
WP-004Tier B

WordPress theme CSS collision

A WordPress selector or important declaration wins over the custom rule.

HYBRID · v1.0.0