Surfaces & depth
Soft depth, not frames
Depth comes from five surface utilities in globals.css: a faint top highlight, a hairline border and a drop of a few percent. Round the container, not the rows inside it; full-bleed layout regions (sidebar, top bars, split panes) stay square.
softContent: cards, tiles, settings sections
raisedControls: buttons, selects, the segmented chip
raised-primaryThe one primary action in a view
wellRecessed tracks: segmented controls, input groups
floatingMenus, popovers, dialogs, toasts
soft · raised · raised-primary · well · floatingshadow-softResting cards
shadow-raiseControls, hovered cards
shadow-pressPressed and recessed, inset
shadow-floatAnything above the page
shadow-soft · shadow-raise · shadow-press · shadow-floatKey caps, inline code
rounded-[6px] · 6pxSmall buttons, menu items
rounded-[10px] · 10pxButtons, inputs, nav items
rounded-[11px] · 11pxCode blocks, small cards
rounded-[14px] · 14pxCards and panels
rounded-[18px] · 18pxDialogs, sheets, the content panel
rounded-[22px] · 22pxcontrols 10–13px · cards 18px · dialogs 22px · pills rounded-fullanimate-fade-inContent swapping in place
180ms · opacity
animate-rise-inPanels and lists entering
220ms · 6px up + opacity
animate-pop-inPopovers, chips, confirmations
180ms · scale 0.97 + opacity
animate-fade-in · animate-rise-in · animate-pop-inAnimate only transform, opacity, shadow and colour — never size or position properties that reflow. Buttons press to 0.97; clickable cards lift a pixel and take shadow-raise.
ease-out-soft · ease-spring · active:scale-[0.97] · 120–220mshover:-translate-y-px hover:shadow-raise hover:border-border-strong