Skip to content

CSS variables

Every --aparte-* theme variable, straight from the stylesheet — 226 in total. Override any of them as shown in Theming. This page is generated from the source, so it can never drift from the code.

VariableDefaultNotes
--aparte-primary#b07d33
--aparte-primary-hover#a06f28
--aparte-secondary#9a8fb0
--aparte-neutral#6d6479
VariableDefaultNotes
--aparte-bg#f6f2ea
--aparte-surface-1#fffdf8Bubbles, cards
--aparte-surface-2#f1ebdfCode blocks, headers
--aparte-surface-3#e7dfceSkeletons, disabled
VariableDefaultNotes
--aparte-text#241f2b
--aparte-text-muted#6d6479
--aparte-text-inverse#fffdf8
VariableDefaultNotes
--aparte-border#e5ddce
--aparte-border-focusvar(--aparte-primary)
--aparte-border-width1px
VariableDefaultNotes
--aparte-info#3b82f6
--aparte-success#10b981
--aparte-warning#f59e0b
--aparte-error#ef4444
VariableDefaultNotes
--aparte-radius-xs2px
--aparte-radius-sm4px
--aparte-radius-md6px
--aparte-radius-lg8px
--aparte-radius-xl12px
--aparte-radius-full9999px

Component-specific radius (overridable per app)

Section titled “Component-specific radius (overridable per app)”
VariableDefaultNotes
--aparte-radius-inputvar(--aparte-radius-lg)
--aparte-radius-input-footervar(--aparte-radius-lg)
--aparte-radius-send-btnvar(--aparte-radius-md)
--aparte-radius-action-btnvar(--aparte-radius-sm)
--aparte-radius-selectvar(--aparte-radius-md)
--aparte-radius-avatarvar(--aparte-radius-md)
--aparte-radius-bubblevar(--aparte-radius-lg)
--aparte-radius-codevar(--aparte-radius-lg)
--aparte-radius-thinkingvar(--aparte-radius-lg)
--aparte-radius-terminalvar(--aparte-radius-lg)
--aparte-radius-errorvar(--aparte-radius-md)
--aparte-radius-file-treevar(--aparte-radius-lg)
--aparte-space-12px
--aparte-space-24px
--aparte-space-36px
--aparte-space-48px
--aparte-space-510px
--aparte-space-612px
--aparte-space-714px
--aparte-space-816px

Font-size scale — component text sizes reference these (no raw px sizes).

Section titled “Font-size scale — component text sizes reference these (no raw px sizes).”
VariableDefaultNotes
--aparte-font-size-2xs10px
--aparte-font-size-xs11px
--aparte-font-size-sm12px
--aparte-font-size-md13px
--aparte-font-size-lg14px
--aparte-font-size-base15px

Font-weight scale — every font-weight references these (no raw weights).

Section titled “Font-weight scale — every font-weight references these (no raw weights).”
VariableDefaultNotes
--aparte-font-weight-normal400
--aparte-font-weight-medium500
--aparte-font-weight-semibold600
--aparte-font-weight-bold700

Line-height scale — every line-height references these (no raw values).

Section titled “Line-height scale — every line-height references these (no raw values).”
VariableDefaultNotes
--aparte-line-height-none1
--aparte-line-height-tight1.25
--aparte-line-height-normal1.5
--aparte-line-height-relaxed1.6
--aparte-line-height-loose1.7
VariableDefaultNotes
--aparte-font-familysystem-ui, -apple-system, sans-serif

Text/icon over a —aparte-primary (brass) fill — send button, run button.

Section titled “Text/icon over a —aparte-primary (brass) fill — send button, run button.”
VariableDefaultNotes
--aparte-on-primary#ffffffFocus ring — derived from the accent so it themes automatically.
--aparte-focus-ring0 0 0 3px color-mix(in srgb, var(--aparte-primary) 15%, transparent)Outline width for keyboard focus + drag-over indicators.
--aparte-focus-outline-width2pxScrollbars rendered by the library.
--aparte-scrollbar-width6pxComfortable hit-area on coarse (touch) pointers.
--aparte-touch-target-size44px
VariableDefaultNotes
--aparte-message-gap12px
--aparte-message-padding16px 12px
--aparte-message-max-width800px
--aparte-message-content-bg-user#efe7f6
--aparte-message-content-bg-assistanttransparent
--aparte-message-content-text-uservar(--aparte-text)
--aparte-message-content-text-assistantvar(--aparte-text)
--aparte-message-content-padding10px 14px
--aparte-message-content-radius14px
--aparte-surfacevar(--aparte-surface-1)
--aparte-surface-hovervar(--aparte-surface-2)
--aparte-text-secondaryvar(--aparte-text-muted)
--aparte-accentvar(--aparte-primary)
--aparte-success-bordervar(--aparte-success)
--aparte-success-surfacecolor-mix(in oklch, var(--aparte-success) 12%, transparent)
--aparte-error-border-softvar(--aparte-error)
--aparte-error-surfacecolor-mix(in oklch, var(--aparte-error) 12%, transparent)

Code typography — exposed so apps can swap in Geist Mono / Cascadia / …

Section titled “Code typography — exposed so apps can swap in Geist Mono / Cascadia / …”
VariableDefaultNotes
--aparte-code-font-familyui-monospace, 'Cascadia Code', 'JetBrains Mono', 'Geist Mono', SFMono-Regular, Consolas, 'Liberation Mono', monospace
VariableDefaultNotes
--aparte-attachment-chip-bgvar(--aparte-surface-2)
--aparte-attachment-chip-bordervar(--aparte-border)
--aparte-attachment-chip-radiusvar(--aparte-radius-sm)
--aparte-attachment-chip-colorvar(--aparte-text)
--aparte-attachment-image-size72px
--aparte-attachments-max-height140px

Attachment thumbnail tile (composer preview + sent-message strip)

Section titled “Attachment thumbnail tile (composer preview + sent-message strip)”
VariableDefaultNotes
--aparte-thumb-radiusvar(--aparte-radius-lg)
--aparte-thumb-name-color#ffffff
--aparte-thumb-name-scrimlinear-gradient(to top, rgba(0, 0, 0, 0.82), rgba(0, 0, 0, 0))
--aparte-thumb-name-padding14px 5px 4px
--aparte-thumb-remove-size18px
--aparte-thumb-remove-inset3px
--aparte-thumb-remove-bgrgba(0, 0, 0, 0.6)
--aparte-thumb-remove-bg-hoverrgba(0, 0, 0, 0.85)
--aparte-thumb-remove-color#ffffff
VariableDefaultNotes
--aparte-action-bar-gap4px
--aparte-action-bar-btn-size28px
--aparte-action-bar-btn-colorvar(--aparte-text-muted)
--aparte-action-bar-btn-hover-bgvar(--aparte-surface-2)
--aparte-action-bar-btn-hover-colorvar(--aparte-text)
VariableDefaultNotes
--aparte-branch-picker-gap4px
--aparte-branch-picker-btn-size20px
--aparte-branch-picker-btn-icon-size16px
--aparte-branch-picker-btn-colorvar(--aparte-text-muted)
--aparte-branch-picker-btn-hover-colorvar(--aparte-text)
--aparte-branch-picker-label-size12px
--aparte-branch-picker-label-colorvar(--aparte-text-muted)
--aparte-branch-picker-label-min-width32px
VariableDefaultNotes
--aparte-avatar-size32px
--aparte-avatar-font-size14px
--aparte-avatar-radiusvar(--aparte-radius-avatar)
--aparte-avatar-bg-uservar(--aparte-primary)
--aparte-avatar-text-uservar(--aparte-text-inverse)
--aparte-avatar-bg-assistantvar(--aparte-surface-3)
--aparte-avatar-text-assistantvar(--aparte-text-inverse)
--aparte-avatar-image-usernone
--aparte-avatar-image-assistantnone
--aparte-avatar-image-size90%
VariableDefaultNotes
--aparte-name-font-size14px
--aparte-name-colorvar(--aparte-text)
--aparte-timestamp-font-size12px
--aparte-timestamp-colorvar(--aparte-text-muted)
--aparte-content-font-size15px
--aparte-content-colorvar(--aparte-text)
VariableDefaultNotes
--aparte-input-bgvar(--aparte-surface-1)
--aparte-input-bordervar(--aparte-border)
--aparte-input-textvar(--aparte-text)
--aparte-input-placeholdervar(--aparte-text-muted)
--aparte-input-focus-bordervar(--aparte-primary)
--aparte-input-gap8px
--aparte-input-editor-font-size15px
--aparte-input-editor-max-height200px
--aparte-input-container-min-height44px
VariableDefaultNotes
--aparte-send-btn-size36px
--aparte-input-action-btn-size36px
--aparte-input-action-btn-icon-size20px
--aparte-select-min-width120px
VariableDefaultNotes
--aparte-status-colorvar(--aparte-text-muted)
--aparte-status-bgtransparent
--aparte-status-dot-size6px
VariableDefaultNotes
--aparte-thinking-bordervar(--aparte-border)
--aparte-thinking-bgvar(--aparte-surface-2)
--aparte-thinking-textvar(--aparte-text-muted)
--aparte-thinking-contentvar(--aparte-text)
--aparte-thinking-content-bgvar(--aparte-surface-1)
--aparte-thinking-content-max-height300px
--aparte-thinking-content-line-height1.55
--aparte-thinking-toggle-size9px
--aparte-thinking-rail-width2px
VariableDefaultNotes
--aparte-code-bgvar(--aparte-surface-1)
--aparte-code-header-bgvar(--aparte-surface-2)
--aparte-code-bordervar(--aparte-border)
--aparte-code-header-textvar(--aparte-text-muted)
--aparte-code-copy-hover-bgrgba(0, 0, 0, 0.05)
--aparte-code-copy-icon-size14px
--aparte-code-inline-font-size0.875em
VariableDefaultNotes
--aparte-terminal-bg#1e293b
--aparte-terminal-text#e2e8f0
--aparte-terminal-icon#64748b
--aparte-terminal-hover#334155
--aparte-terminal-running#22c55e
--aparte-terminal-output-bg#0f172a
--aparte-terminal-output-text#94a3b8
--aparte-terminal-copy-btn-size26px
--aparte-terminal-font-size13px
--aparte-terminal-output-max-height200px
VariableDefaultNotes
--aparte-progress-bar-bgvar(--aparte-surface-3)
--aparte-progress-bar-fillvar(--aparte-primary)
--aparte-progress-labelvar(--aparte-text)
VariableDefaultNotes
--aparte-scroll-btn-size36px
--aparte-scroll-btn-bgvar(--aparte-surface-1)
--aparte-scroll-btn-colorvar(--aparte-text)
--aparte-scroll-btn-bordervar(--aparte-border)
--aparte-scroll-btn-shadow0 2px 8px rgba(0, 0, 0, 0.12)
--aparte-scroll-btn-hover-bgvar(--aparte-surface-2)
VariableDefaultNotes
--aparte-file-tree-bgvar(--aparte-surface-1)
--aparte-file-tree-bordervar(--aparte-border)
--aparte-file-tree-header-bgvar(--aparte-surface-2)
--aparte-file-tree-hovervar(--aparte-surface-2)
--aparte-file-tree-titlevar(--aparte-text-muted)Git-status file colours reuse the semantic status tokens by default.
--aparte-file-status-addedvar(--aparte-success)
--aparte-file-status-modifiedvar(--aparte-info)
--aparte-file-status-deletedvar(--aparte-error)
VariableDefaultNotes
--aparte-error-bg#fef2f2
--aparte-error-border#fecaca
--aparte-error-solid#dc2626
--aparte-error-text#991b1b
--aparte-error-title#7f1d1d
--aparte-error-icon-size20px
--aparte-error-rail-width4px
VariableDefaultNotes
--aparte-prose-p-margin0.4em 0
--aparte-prose-h1-size1.4em
--aparte-prose-h2-size1.25em
--aparte-prose-h3-size1.1em
--aparte-prose-list-indent1.5em
--aparte-prose-list-margin0.4em 0
--aparte-prose-li-margin0.15em 0
--aparte-prose-blockquote-bordervar(--aparte-border)
--aparte-prose-blockquote-border-width3px
--aparte-prose-code-bgvar(--aparte-surface-2)
VariableDefaultNotes
--aparte-viewport-padding16px
VariableDefaultNotes
--aparte-content-line-heightvar(--aparte-line-height-loose, 1.7)
--aparte-cursor-colorvar(--aparte-primary)
VariableDefaultNotes
--aparte-status-font-size13px
VariableDefaultNotes
--aparte-input-font-size14px
--aparte-input-line-heightvar(--aparte-line-height-normal, 1.5)
--aparte-input-padding-x12px
--aparte-input-padding-y10px
VariableDefaultNotes
--aparte-conv-list-gap2px
--aparte-conv-item-padding7px 10px
--aparte-conv-item-radiusvar(--aparte-radius-md)
--aparte-conv-item-colorvar(--aparte-text-muted)
--aparte-conv-item-color-activevar(--aparte-text)
--aparte-conv-item-bg-hovervar(--aparte-surface-3)
--aparte-conv-item-bg-activevar(--aparte-surface-3)
--aparte-conv-item-font-size0.8125rem
--aparte-conv-item-font-weight-activevar(--aparte-font-weight-medium, 500)
--aparte-conv-delete-colorvar(--aparte-text-muted)
--aparte-conv-delete-bg-hovervar(--aparte-error)
--aparte-conv-delete-color-hovervar(--aparte-text-inverse)
--aparte-conv-delete-radiusvar(--aparte-radius-sm)
--aparte-conv-item-gap6px
--aparte-conv-action-btn-size20px