Skip to content
The Centaur7 logo: a hand-drawn centaur archer loosing a flame-tipped arrow

Living Style Guide

Fantasy meets sci-fi: a mythic centaur and expressive type meet portal geometry, precise interfaces, and visible evidence. Start with the studio's character, follow the tokens and text roles, then compose the shared components.

The Centaur7 Brand System

Centaur7 is an independent technology studio with a fantasy meets sci-fi aesthetic. The hand-drawn archer, Fraunces, and Oatmeal bring myth, craft, and human judgment. The portal, MoonStars control, Yale Blue and Portal Blue, precise layouts, and analytical displays bring exploration and computational power. Together they make the work feel imaginative and dependable.

Use that character in studio framing while keeping professional introductions and project evidence direct and readable. Bitting supplies the website's reusable components; it is not the Centaur7 brand. Each marquee project keeps its own artwork. Orbital lines and star details remain design-study ideas until a shared, documented composition earns them through brand expression or useful structure.

Fantasy Meets Sci-Fi

Pair mythic, human craft with precise, exploratory technology: the centaur and Fraunces beside portal geometry, the moon, and clear analytical evidence.

Keep Character Purposeful

Use the studio's four colors and existing artwork to express its character. Keep supporting ornament quiet, respect reduced motion, and make project facts and actions easy to read.

Use Bitting First

Use a Bitting component when it supports the required content and behavior.

Apply the Centaur7 Theme

Set brand colors and type through semantic tokens instead of changing package markup.

Compose for Studio Content

Arrange Bitting components around Centaur7 project data and editorial content.

Support Understanding

Every component should help someone understand the work or take a useful action.

Component Responsibilities

Bitting Reusable Interface Components

  • Structure: tiles, headers, lockups, navigation, and footer faces.
  • Actions: pill links, pill buttons, selectable controls, and toggles.
  • Meaning: key-value facts, labels, tooltips, alerts, and empty states.
  • Evidence: charts, scores, tables, legends, and data-display primitives.

Centaur7 Brand, Content, and Composition

  • Identity: the centaur mark, Fraunces, and the four brand colors.
  • Content: project facts, case-study arguments, status, and studio voice.
  • Composition: page hierarchy, responsive grid, prose measure, and editorial sequence.
  • Semantics: native document elements where the package has no equivalent.

Use Bitting Before Adding Local UI

  1. Use the Bitting component when it already owns the job.
  2. Extend Bitting when a general-purpose capability is missing.
  3. Compose Bitting components when Centaur7 needs a studio-specific arrangement.
  4. Add local visual chrome only for a brand asset or a semantic requirement Bitting cannot express.

Current exceptions: the hand-drawn mark, its hero lockup, the keyboard skip link, editorial typography, and pre-Blazor loading and error recovery. NativePillButton supplies a real HTML button around Bitting’s non-interactive pill presentation. The same owner supports menu and theme actions before WebAssembly loads; site.js owns their state.

Centaur7 Logo

Centaur7 hero mark
Hero
Centaur7 compact mark
Compact

Logo Rules

  • Use the canonical SVG. Redrawing changes the gesture.
  • The StudioHero composition provides --bitting-md clear space beside the mark and --bitting-xl above and below it.
  • Use two sizes: Compact (--c7-mark-compact) is the default and minimum size for navigation, footer, and standalone marks. Hero (--c7-mark-hero) scales with the viewport for the studio lockup and loading screen.
  • Preserve proportions, colors, and direction. CentaurMark reserves the canonical square aspect ratio before its SVG loads; the two size tokens choose its display size. Dark surfaces use the shared mark’s light backing; never recolor the artwork.
  • Project logos preserve their canonical artwork too. ProjectMark delegates Card and Hero rendering to ConceptVisual and reserves a square frame. Dark surfaces use --c7-logo-backing; object-fit containment preserves proportions.
  • Use empty alternative text when adjacent words already name Centaur7.
  • The pre-Blazor loading shell may use the same canonical SVG directly; the component library is not running yet.
Site Identity and Asset Ownership

The canonical centaur artwork is rendered by CentaurMark in production. favicon.svg carries the same artwork and is the only declared browser icon. The web manifest references that same SVG. There is no separate Apple touch icon or PNG fallback. Icon and manifest URLs are root-relative because Centaur7 is hosted at the domain root.

When adding a raster or Apple variant, derive it from the canonical SVG, update every declaration together, and check the final rendered head and every eligible asset on a deep route.

One Visual for Each Named Destination

A project earns its canonical logo; About uses Adam's portrait; Colophon uses Bitting's publication bookmark. The words remain visible and speak for the visual. ConceptIdentity keeps the name and its single visual together; ConceptLabel carries that pairing into navigation and the actions that open the concept. The symbol is hidden from assistive technology, so a link is announced once.

ProjectCatalog owns each project's name and canonical logo. The same identity appears in project rows, About's project connections, brief openings, and project actions. Bitting's branded title wordmark remains its approved heading variant. About's portrait identifies the person behind the studio; Colophon's reserved bookmark identifies the publication's making and credits and also accompanies its page title.

ConceptVisual owns Inline, Card, and Hero sizes. Inline uses --c7-concept-mark, a Bitting icon-size alias, and the shared small gap. Navigation aligns the visual frames and labels to the left; text may wrap inside its own column at narrow widths. A stable Oatmeal backing keeps logos legible in both themes and selected controls. Inline and Card frames clip their image backgrounds to the shared circle. The package symbol uses --c7-concept-symbol-size, half a base unit smaller than the frame, for breathing room on every side. Portraits retain a circular crop; project artwork stays contained and keeps its colors. Topic headings use words without an added symbol; recurring destination concepts retain their one canonical visual. No extra concept color or status meaning is assigned. Generic actions keep their conventional symbols.

Dollop's approved D-and-whisk monogram is the compact mark in navigation, actions, and project rows; the full wordmark is reserved for Hero and print branding. The monogram is copied unchanged from Dollop's icon-192.png. Bitting's existing pip and B retain their colors, proportions, and relative placement; its SVG viewBox balances the surrounding clear space so the artwork sits centrally in the shared frame. Sting's viewBox centers the visible hornet from the top of its wing to the bottom of its stinger, with equal clear space on opposite sides. Center painted artwork, rather than an export canvas's empty margins; keep the canonical paths and shared frame sizing unchanged.

Owners: ConceptIdentity and StudioDestinations, ProjectCatalog, ConceptLabel, and ConceptVisual.

Brand Colors

Centaur7 has four brand colors. The logo draws Yale Blue, Portal Blue, and Athletic Red, and stands on Oatmeal. Bitting's semantic tokens map to these colors so package components use the Centaur7 theme without component-level overrides.

Yale Blue:
--c7-ink
A nod to education. Line work, text, and decisive actions.
Portal Blue:
--c7-ice
The look to the future and technology. Supporting fields, borders, and quiet emphasis.
Athletic Red:
--c7-flame
Homage to the Florida Panthers and sports. Limited use for emphasis, warnings, and the arrow tip.
Oatmeal:
--c7-oatmeal
The look to tradition and the human level. The ground the other three stand on.

The light page is Oatmeal at half strength. Yale Blue body text measures Lc 84.5 on full Oatmeal, under the floor of 90, and Lc 90.8 on the page. Keep full Oatmeal for ground that carries no body text.

Surfaces and Control States

White is the neutral surface color in light mode. Cards and resting controls use it; the page uses the light Oatmeal tint. Fill communicates priority and state. Apply these roles through the shared tokens and Bitting components.

Page:
--c7-canvas: light Oatmeal tint in light mode; dark canvas in dark mode
Cards:
--bitting-surface: white in light mode; dark canvas in dark mode
Resting Controls:
Secondary appearance pairs Surface fill with Primary text: white and Yale Blue in light mode; dark canvas and Oatmeal in dark mode
Primary and Active Controls:
Primary appearance pairs Primary fill with OnAccent text: Yale Blue and white in light mode; Oatmeal and dark canvas in dark mode

Primary actions, the current navigation destination, settings that are on, and expanded disclosures use the active pair. Secondary actions, unselected destinations, settings that are off, and collapsed disclosures use the resting pair. Unavailable controls announce their disabled state. Plain text links use the current text color with no fill or pill elevation.

Enabled pills use SolidDrop. Unavailable and informational specimens use Solid. Bitting owns pill geometry, type, hover, focus, and pointer targets. Page CSS may arrange a control; it must not invent a fill, outline, radius, shadow, or type treatment.

Menu and the theme control both use Bitting's small pill. Their appearance comes from BittingPillAppearance and its ForSelection mapping. Menu announces aria-expanded and aria-controls; the theme control announces aria-pressed. Their state changes the fill pair, while their shared anatomy stays consistent.

Bitting Tokens Use Centaur7 Colors

--bitting-primary / secondary:
The active ink role
--bitting-info:
The active ice role
--bitting-danger:
--c7-red-text
--bitting-surface / canvas:
The active surface roles
--bitting-md:
Centaur7's readable fluid anchor

Literal colors live only in the root token block. A test rejects a hex value anywhere else in the stylesheet.

One Brand in Light and Dark

Control:
NativePillButton with aria-pressed in the site toolbar
Default:
Light mode on a first visit
Return visits:
The visitor's explicit choice

Both schemes use the same four colors. In dark mode Oatmeal carries the text and the plate behind the logo. The dark map changes semantic text, surface, border, focus, and chart tokens instead of styling individual components. Every production route must pass the same automated accessibility scan in both schemes.

Every Text Role Has One Contract

Bitting owns the fluid type scale. Centaur7 maps each text role to one of its five size tokens, then adds only the brand typeface, weight, tracking, and rhythm.

The anchor interpolates from 1rem to 1.125rem across 320 to 1120 CSS pixels at the default root size. Its rem intercept preserves reader font preferences. The browser owns the root size; the body consumes the anchor once. Other steps retain Bitting’s phi relationships.

A Question Worth Building

Page Title

bitting-text-display · --bitting-xl

Fraunces, medium. StudioHero and BittingPageHeader identify each route.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-xl

Rhythm and emphasis: No role margin; the page-header lockup owns its gap. Title case.

Implementation owner
The Decision Behind the Work

Content Heading

bitting-text-heading · --bitting-lg

System UI, bold. BittingSectionHeader names a content group on every route.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-lg

Rhythm and emphasis: No role margin; section lockup provides --c7-section-gap before, --bitting-md after. Title case.

Implementation owner
Project Title

Card Title

c7-type-card-title · --bitting-md

Fraunces, medium. ProjectCard and About roster captions identify projects and teams.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-md

Rhythm and emphasis: No internal margin; the identity or caption composition owns the gap. Preserve proper names.

Implementation owner
Decision and Evidence

Interface Heading

bitting-text-compact-heading · --bitting-md

System UI, heavy. Bitting headers and explanatory subsections label the working interface.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-md

Rhythm and emphasis: Package roles have no margin; native h3 has --bitting-xs after. Title case.

Implementation owner
Explain the choice, then show the evidence.

Editorial Body

c7-prose · --bitting-md

Fraunces, regular. Home introduction, About narrative, and every case-study story.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-md

Rhythm and emphasis: --bitting-md between story paragraphs. Bold marks emphasis; sentence case.

Implementation owner
Updated October 18, 2026

Interface Body

c7-interface-body · --bitting-md

System UI, regular. The body default carries interface explanations; bold marks emphasis.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-md

Rhythm and emphasis: The containing composition owns paragraph spacing. Sentence case.

Implementation owner
The result and its explanation stay together.

Reading Body

bitting-text-body · --bitting-md

System UI, regular. Bitting feedback and empty-state explanations.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-md

Rhythm and emphasis: Relaxed line-height; the containing feedback component owns the gap. Bold may mark emphasis.

Implementation owner
Components

Fact Label

bitting-key-value-text__key · --bitting-md

System UI, regular. BittingKeyValueText names the value; Size.Small selects the small token.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-md

Rhythm and emphasis: Inline key/value uses --bitting-line-height; Stacked uses --bitting-line-height-tight with no extra gap.

Implementation owner
99

Fact Value

bitting-key-value-text__value · --bitting-md

System UI, bold. BittingKeyValueText keeps the number beside its canonical label.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-md

Rhythm and emphasis: Inline values have --bitting-qtr-md before; Stacked removes it. Size follows the same selection as the key.

Implementation owner

BittingPillLink Size.Small · --bitting-sm

System UI, regular. Navigation, footer, and toolbar use the compact size; main actions use Medium.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-sm

Rhythm and emphasis: The pill owns padding, target, focus, disabled state, and selected emphasis. Title Case.

Implementation owner
Components by Release

Figure Label

bitting-chart-label bitting-font-sm · --bitting-sm

System UI, bold. ChartLabelPlan selects one of the five fluid steps for the measured label group.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-sm

Rhythm and emphasis: Measured SVG geometry selects size and wrapping; all labels in one axis share its plan. The frame measures the reader’s actual root.

Implementation owner
Arlington, Virginia

Supporting

bitting-text-supporting · --bitting-sm

System UI, regular. Header context, roster places, and supporting descriptions.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-sm

Rhythm and emphasis: No role margin; its paired lockup owns the gap. Sentence case.

Implementation owner
Evidence

Micro

bitting-text-micro · --bitting-sm

System UI, medium. Bitting’s brief metadata labels; never long reading copy.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-sm

Rhythm and emphasis: No role margin. Sentence case; use body for instructions.

Implementation owner
--bitting-md

Inline Code

code · --bitting-md

System UI. Code inherits its surrounding role’s clamped size, weight, and line height; this specimen uses the body anchor. A token-backed wash identifies a literal.

Rendered Contract and Uses

Exact Fluid Expression: --bitting-md

Rhythm and emphasis: Inline, with no outer margin; --bitting-eighth-md horizontal inset. Long identifiers wrap; preserve literal case.

Implementation owner

Each expression contains the same clamp, either directly or inside Bitting’s scale calculation. Its minimum is the role at 320px, its preferred rem-plus-vw value interpolates to 1120px, and its maximum applies from there. Values assume a 16px root; increasing the reader’s root increases every bound and intercept.

Reading roles use --c7-ink-current, directly or through Bitting’s primary, secondary, and gray aliases: Yale Blue in light mode and Oatmeal in dark mode. Supporting context may use --bitting-muted (Ink at the documented opacity, or Silver). Actions use the package’s typed BittingPillAppearance: Primary pairs the active ink with the canvas; Secondary reverses them. Native links retain underlines, including visited links. Focus adds the shared ring; disabled actions retain their words and use Bitting’s disabled opacity and non-operable semantics.

Supporting and Micro share Bitting’s small step. Supporting explains context; Micro is a short metadata label with medium weight. Keep both meanings, with no extra size scale. The Card Title is Fraunces for project identity; interface headings remain system UI. Refining the Card Title updates both project cards and the About roster captions.

Use Space to Group Content

--bitting-xs
--bitting-sm
--bitting-md
--bitting-lg
--bitting-xl
Internal Space Stays Smaller Than External Space
A header sits close to its content. Tiles use Bitting’s single --bitting-tile-padding inset. Host grid gaps map to the Bitting scale. Sections receive the largest gap. That repeated rhythm tells the eye what belongs together before the copy has to.

Live Token Reference

Values below are read from the running stylesheets in the active theme. Resize the page or change the theme, then refresh the reading. Type expressions retain the package’s calculations; no specimen maintains its own scale.

Refresh Live Values
Color and Theme

Semantic roles keep text, canvas, surfaces, and chart categories coherent in both themes.

--c7-ink
Read after the page opens.
--c7-ice
Read after the page opens.
--c7-flame
Read after the page opens.
--c7-oatmeal
Read after the page opens.
--c7-canvas
Read after the page opens.
--c7-surface
Read after the page opens.
--bitting-primary
Read after the page opens.
--bitting-muted
Read after the page opens.
--bitting-on-accent
Read after the page opens.
--c7-series-ice
Read after the page opens.
--c7-series-flame
Read after the page opens.
Implementation owner
Palette and Project Identity

Color names retain one value in both themes. Semantic assignments select from this palette; project accents identify artwork, never status.

--c7-white
Read after the page opens.
--c7-light-oatmeal
Read after the page opens.
--c7-pale-ice
Read after the page opens.
--c7-deep-red
Read after the page opens.
--c7-charcoal
Read after the page opens.
--c7-slate
Read after the page opens.
--c7-silver
Read after the page opens.
--c7-muted-teal
Read after the page opens.
--c7-slate-teal
Read after the page opens.
--c7-salmon
Read after the page opens.
--c7-deep-teal
Read after the page opens.
--c7-bright-teal
Read after the page opens.
--c7-rose
Read after the page opens.
--c7-sting-gold
Read after the page opens.
--c7-dollop-cream
Read after the page opens.
--c7-bitting-ember
Read after the page opens.
--c7-bitting-blue
Read after the page opens.
--c7-bitting-sky
Read after the page opens.
--c7-bitting-peach
Read after the page opens.
Implementation owner
Type Scale and Rhythm

The clamped anchor has rem bounds and a rem-plus-vw preferred term. The remaining steps compose that anchor.

--bitting-md
Read after the page opens.
--bitting-phi
Read after the page opens.
--bitting-xs
Read after the page opens.
--bitting-sm
Read after the page opens.
--bitting-lg
Read after the page opens.
--bitting-xl
Read after the page opens.
--c7-font-display
Read after the page opens.
--c7-font-ui
Read after the page opens.
--bitting-font-weight-medium
Read after the page opens.
--bitting-font-weight-heavy
Read after the page opens.
--bitting-text-display-line-height
Read after the page opens.
--bitting-line-height-relaxed
Read after the page opens.
--c7-section-gap
Read after the page opens.
--c7-measure
Read after the page opens.
Implementation owner
Borders, Radius, and Elevation

BittingTile owns boundaries; selectable pills use SolidDrop and disabled pills use Solid. Avoid nested surfaces without a grouping need.

--bitting-tile-padding
Read after the page opens.
--bitting-border-width
Read after the page opens.
--bitting-border-subtle
Read after the page opens.
--bitting-radius
Read after the page opens.
--bitting-radius-sm
Read after the page opens.
--bitting-radius-pill
Read after the page opens.
--bitting-muted-gray
Read after the page opens.
--bitting-muted-gray-80
Read after the page opens.
--bitting-muted-gray-40
Read after the page opens.
Implementation owner
Focus, Targets, and Motion

Keyboard focus uses a visible ring. Targets follow the package floor; reduced motion collapses decorative transitions.

--bitting-focus-ring
Read after the page opens.
--bitting-focus-width
Read after the page opens.
--bitting-focus-offset
Read after the page opens.
--bitting-target-min
Read after the page opens.
--bitting-duration-fast
Read after the page opens.
--bitting-duration
Read after the page opens.
--bitting-ease
Read after the page opens.
--c7-motion-reduced
Read after the page opens.
Implementation owner
Logo and Iconography

CentaurMark owns studio sizes; ConceptVisual owns concept frames and inner symbol clearance. BittingIcon supplies the single interface icon family; project logos remain canonical project assets.

--c7-mark-compact
Read after the page opens.
--c7-mark-hero
Read after the page opens.
--c7-concept-mark
Read after the page opens.
--c7-concept-symbol-size
Read after the page opens.
--c7-logo-backing
Read after the page opens.
--bitting-icon-xs
Read after the page opens.
--bitting-icon-sm
Read after the page opens.
--bitting-icon-md
Read after the page opens.
--bitting-icon-xl
Read after the page opens.
--bitting-content-max-width
Read after the page opens.
Implementation owner

The host grid uses 36em for the roster’s third column and a horizontal studio hero, 48em for paired content, 62em for desktop navigation and five roster photos, and 75em for paired charts. Bitting’s contents control now switches at 100em, following the same font-relative convention. Every Centaur7 query uses the listed em values; the reader’s font preference therefore moves the layout thresholds. Type remains fluid between them.

Use Bitting Components First

These are live Bitting components from the pinned package, shown in the Centaur7 theme. The guide demonstrates behavior and composition instead of redrawing their anatomy.

BittingPillLink States

Enabled pills use SolidDrop. Unavailable and informational specimens use Solid. The page-contents rail owns a flatter navigation variant in Bitting.

Tile, Header, Value, Tooltip

Package policy:
Bitting first
Local chrome:
Exception only

Selection Is Visible and Announced

Identity
Evidence
Action
Selected specimen:
Identity
Feedback States
Success, information, warning, and danger use the same BittingAlert anatomy and semantic role.
No Results Available
Empty states explain what happened and provide a useful next action.

Bitting Component Families

Components in the four largest Bitting families and the remaining families
Family Components
Charts20
Primitives14
Drop downs8
Headers8
20 more families49

Named Lockups and Site Components

Recurring titles are never reassembled page by page. Each lockup below names its production primitive, order, spacing, and responsive rule.

Studio Hero

StudioHero + CentaurMark + BittingPageHeader. Mark, page title, editorial supporting copy, then optional actions. --bitting-md internal gap, --bitting-xl vertical padding. Left aligned; the mark stacks above the copy below 36em or when the reader’s text size needs more room. Its 6–10.5rem width interpolates across 320–1120px; project artwork likewise grows 4.5–6.75rem over that range.

Implementation owner · Home and this guide’s opening.

Page Title

BittingPageHeader. One visible h1, optional lead, description, then actions. --bitting-sm internal gap; --bitting-lg top and --bitting-md bottom padding. The studio and project containers own their outer rhythm.

Implementation owner · Every content route; Bitting’s TitleMark slot keeps the wordmark inside h1.

Section Header

BittingSectionHeader. Section title, then rule. Eyebrows are omitted. Centaur7 omits optional topic icons; named concepts use their canonical visuals. Left aligned; package-owned internal gap, --c7-section-gap above, --bitting-md below. Reflows at narrow widths.

Implementation owner · Production sections and both guides.

Instrument Header

BittingHeader or BittingChartHeader. Compact title, then rule. Eyebrows are omitted. Topic labels remain plain. The enclosing BittingTile owns outside space. Use the chart header for large figures; pip emphasis remains a separate choice.

Implementation owner · Project screenshots, capability tiles, and Bitting charts.

Centaur7 components arrange recurring studio content with Bitting components.

BittingDisclosure

The package owns native details/summary, its persistent label, target, focus, and supporting-content spacing. It works without JavaScript; the host supplies only outside rhythm and stable destinations.

Implementation owner · All expandable contracts in this guide and the Bitting brief’s chart-data tables.

ProjectPreview

One BittingHeaderTile composition owns linked project screenshots, image boundaries, responsive sizing, and accessible link labels. Screenshot paths come from ProjectCatalog.

Implementation owner · Sting Coverage and Weekly Dollop briefs.

Stacked Tiles

Bitting’s bitting-stack owns vertical alignment and the standard gap. Compact, cozy, and relaxed variants select existing spacing steps; the tile keeps its shared inset.

Implementation owner · Site content tiles and portfolio compositions.

ThemeToggle

NativePillButton shows Bitting's MoonStars glyph, announces Dark Mode with aria-pressed, defaults to light mode, and remembers an explicit choice. Its shared browser handler works on static and WebAssembly routes; the selected state uses the shared Primary color pair. The control glyph inherits that pair's foreground in either state.

Implementation owner · SiteNav on every route, including this guide.

NativePillButton

A native button supplies keyboard activation while an actual BittingPillButton, configured as non-interactive, owns the appearance. Typed pressed and expanded inputs become ARIA; the browser handler changes state and the named label slot. State tokens choose the Primary or Secondary semantic pair. The wrapper makes the fill transition immediate so its text never crosses a low-contrast intermediate color. This follows the native-wrapper precedent in BittingFirstOpenGuide.

Implementation owner · ThemeToggle and SiteNav on every route.

Action Group

c7-action-group arranges BittingPillLink actions with at most one primary action. Selectable pills use SolidDrop; non-selectable pills use Solid.

Implementation owner · Home, Colophon, footer, and failure recovery.

BittingPipHeader

Reserve the pip for governing principles and next actions. Ordinary tile titles use BittingHeader; large figures use BittingChartHeader.

Implementation owner · Home’s person tile and this guide’s governing principles.

ProjectCard

A semantic article in the project list uses ProjectMark, the shared Card Title and Editorial Body roles, and a Supporting status line. The logo and name form one native underlined link to the brief. Summary and status align with its words using the shared logo-size and gap tokens. There is no separate button, repeated mark, review-date field, or enclosing tile. Keep the canonical tagline for project branding; the catalog's Summary explains what the product does.

Implementation owner · Home’s selected work and the live example below.

InstrumentPanel

BittingTile and BittingKeyValueText provide facts with visible supporting captions and an optional chart slot.

Implementation owner · All three project briefs.

Fixed Tooltip Adapter

ci.73 supplies rendering and viewport placement. site.js extends the public bittingTooltipFixed attach/detach boundary so Escape dismisses without moving focus and pointer inspection persists across the gap. The bridge uses --bitting-duration-fast. Retire this adapter when an upstream release passes the focused tooltip regression without it.

Implementation owner · Corner explanations on the Bitting brief and this guide; light and dark keyboard/pointer checks.

BittingFamilyTable

One comparison composition consumes BittingInventory.FamilySummary through BittingSummaryTable. The family name and count share a row; no color key or legend override is needed.

Implementation owner · The Bitting brief and this guide’s inventory specimen.

CaseStudyLayout

One sequence of Bitting page title, surfaces, instruments, story, and a consequential choice. Technical Evidence uses native document navigation to the guide anchor, including when leaving an interactive page. The summary and catalog-owned role sentence use editorial body text; the live-site action follows on its own line. Reserve key-value components for short facts, rather than wrapping a long role description beside a large label.

Implementation owner · All three /work routes.

SiteNav

BittingPillLink owns active fill and aria-current. ConceptLabel supplies the destination's canonical visual and visible name. NativePillButton supplies the disclosure. The shared site.js handler opens it, closes it after a destination is chosen, and restores trigger focus on Escape. During interactive startup it also preserves a focused skip link across replacement of the initial HTML; activated skip and deep evidence destinations remain owned by FocusOnNavigate through PageFragments. The ci.73 key-on-current-state adapter remains necessary.

Implementation owner · Every route.

ConceptLabel and ConceptVisual

ConceptIdentity keeps a recurring name and its one visual together. ConceptLabel composes the hidden visual and visible words with the shared small gap. ConceptVisual renders the canonical image or actual Bitting symbol; typed Inline/Card/Hero sizes own geometry and backing. ProjectMark delegates to this same visual owner for established project compositions.

Implementation owner · Primary navigation, project actions, project rows and openings, About connections, the Colophon title, and both living guides.

BittingPageTableOfContents

A typed outline renders a page rail or a compact disclosure, with native hash destinations and a current-location enhancement. Centaur7 supplies the Title Case trigger and omits the optional context eyebrow and topic icon.

Implementation owner · Style Guide and Domain Guide.

Feedback and Recovery

BittingAlert explains status. BittingEmptyState owns the Telescope illustration for missing content and a next action; Centaur7 inherits that illustration rather than assigning it to topics. The static boot error offers Reload Page and a keyboard-operable Dismiss Error.

Implementation owner · Not Found, this guide, and boot failure.

Portfolio Exports

PortfolioPage composes BittingSlide, BittingPageHeader, and BittingPillLink. Centaur7 exports consume the site’s tokens and mark; project pages load their production theme snapshots. The fixed print canvas is a deliberate format variant.

Implementation owner · Both downloadable portfolio editions.

Charts and Facts

BittingChartFrame measures each chart. Typed series select Centaur7Series tokens; chart legends retain readable text. KPIs use BittingKeyValueText.

Implementation owner · Bitting’s three charts, family table, and case-study facts. Numeric geometry is supplied by the package’s measured frame; the host’s --c7-chart-height is shared by the four figure containers.

BittingWordmark

The package owns its pip and approved sizes. Centaur7 uses Hero inside the Bitting page’s h1 and the portfolio without rebuilding the artwork.

Implementation owner · /work/bitting.

Bitting

A reusable library of charts and controls for Blazor applications.

Maintained

Read the Project, Then Choose a Next Step

This is the production ProjectCard. Its linked logo and name open the brief; a concrete summary explains the product, followed by a quiet status line. Space groups the list without another surface, border, or button. Review dates and release details belong in the project evidence.

Review the Action Family

The selected navigation pill is inverted and announces the current page. Other destinations stay secondary. Disabled specimens are unavailable by mouse and keyboard. The theme control keeps its name while its pressed state changes.

Use BittingHeader for ordinary tile identity, BittingChartHeader for large figures, and BittingPipHeader for a governing principle or next action. A pip is emphasis, so repeating it on every specimen weakens the distinction.

Interaction Requirements

Keyboard First

Every action is reachable and focus is visible. The skip link stays on the current route and query and moves focus into main content. Escape closes the mobile menu and returns focus to its trigger. Route navigation focuses the named fragment, or the new h1 when no fragment is supplied.

Test Both Schemes

Every route clears the same WCAG scan in light and dark mode. Text and controls meet AA contrast in both.

Let Bitting Size the Targets

Every pill takes its hit area from the package's own target token. The menu and theme controls both use the small Bitting pill.

Use Fluid Sizing

Type and spacing follow the Bitting scale. Layout breaks only when content requires it.

Explain Every State

Feedback and empty states explain what happened and offer a useful next move. The pre-Blazor failure shell uses native semantics because components cannot run there. No form or modal dialog is currently part of this app; add labels, instructions, keyboard and focus contracts at the shared owner when introducing one.

Clear, Direct, and Specific

Use Title Case for Titles, Headings, and Controls

Capitalize principal words in titles, headings, buttons, and menu labels; keep articles, conjunctions, and short prepositions lowercase unless they begin or end the title.

Use Sentence Case for Body Copy

Body copy, help, and messages use sentence case. Buttons and menu labels use Title Case. Eyebrows are banned across the Centaur7 brand, regardless of case. Put the useful words in the heading or body; project status follows its description as supporting context rather than sitting above its name.

Lead with the Claim

State the point on the front foot. Use a question only when the question itself matters.

Put Nouns First

Name the project, component, metric, or decision before describing it.

Use One Name

Use the same word for the same concept across every page.

Run the Deletion Test

Keep only words that identify, explain a decision, provide evidence, or support an action.

Use Evidence

Prefer a number, model, interface, or specific tradeoff to an unsupported adjective.

Make the Plain Reading Correct

The simplest interpretation of a sentence should also be the intended one.

Write Like a Person

Use straightforward language and remove slogans, jargon, and unnecessary cleverness.

Keep the Guide Current

Component source:
Exact Bitting version and SDK
Theme source:
The root token block in app.css
Content source:
ProjectCatalog, ProfessionalProfile, and page copy
Enforcement:
Build, bUnit, accessibility, token, package, and route tests

A package upgrade starts with the component library. The pinned package owns typed pill appearances. Its active-link background still caches across state changes, so SiteNav keys a link on its current state. Adam stewards this adapter; remove it only after the navigation contrast regression passes without it. Centaur7 then removes any local workaround the package has made obsolete, refreshes this page, and runs the complete suite. The examples on this page must match the production implementation.