Interaction

Consistent interaction patterns build user confidence. This page defines hover, focus, and active states, touch target sizes, gesture conventions, and keyboard navigation rules.

Interactive States

Every interactive element must express all five states below. Never suppress hover or focus styles — doing so breaks keyboard navigation and assistive technology.

Defaultdefault
Hoverhover
Active / Pressedactive
Keyboard focusfocus
Disableddisabled

Hover

--surface-hover

Applied on cursor enter. Transition at 150ms ease-out. Use background fill, not border change.

Active / Pressed

--surface-raised

Applied on mousedown or touchstart. Often a slight scale reduction (scale: 0.97) for buttons.

Focus (keyboard)

--nav-active-color

3px ring at 33% opacity. Never use outline: none without a custom focus style. WCAG 2.2 requires visible focus.

Disabled

opacity: 0.45

Reduces opacity — do not change the colour of individual elements. The element must still be visible enough to understand what it was.

Touch Targets

WCAG 2.2 requires a 24×24px minimum touch target for all interactive elements; Sitka sets 44×44px as the baseline. If the visual element is smaller (e.g. an icon), expand the hit area invisibly using padding or a pseudo-element.

28
Too small28px
44
Minimum44px
48
Comfortable48px

/* Expand hit area without affecting layout */
.icon-button {
padding: 10px; /* visual icon 24px → hit area 44px */
min-width: 44px; min-height: 44px;
}

Gesture Patterns (iOS)

Use platform-native gestures for their established meanings. Inventing custom gestures increases cognitive load and removes discoverability.

GestureUse for
TapActivate buttons, links, toggles
Long pressContext menus, selection mode on list items
Swipe leftReveal destructive actions (delete, archive)
Swipe rightReveal secondary actions (reply, star)
Pull to refreshReload content in scrollable lists only
PinchZoom — images and maps only
DragReorder only — avoid for navigation

Keyboard Navigation

All interactive functionality must be reachable by keyboard alone. Implement the keyboard shortcuts below consistently across all products.

KeyAction
Tab / Shift+TabMove focus forward / backward through interactive elements
Enter / SpaceActivate the focused button or link
EscapeClose modals, drawers, dropdowns, and popovers
Arrow keysNavigate within a component (radio group, tabs, menu)
Home / EndJump to first / last item in a list or menu
Ctrl+K / ⌘KOpen the command palette

Principles

Predictable, not surprising

Interactive elements behave the way users have learned to expect. Reserve creative interactions for the edges of the interface, not the core tasks.

Feedback within 100ms

Users perceive responses under 100ms as instantaneous. Hover and active states must appear immediately. Loading states should appear within 300ms.

No interaction-only affordances

If an element is interactive, it must look interactive. Don't rely on hover to reveal that something is clickable.