# Kornwolf Brand

Kornwolf Research builds trading systems and market research.

## Identity

Zero to 100×, and beyond. Again.

## Modes

Default preference: `auto`. Available compiled modes: `dark`, `light`.

## Palette

- `ground`: `#11131A`
- `button`: `#13111A`
- `surface`: `#1D1A27`
- `surface-raised`: `#302C3F`
- `muted`: `#B7B4C7`
- `white`: `#FFFFFF`
- `forage`: `#49BFA8`
- `signal`: `#0088CC`
- `grain`: `#FC9A00`
- `grain-warm`: `#FA9800`

## Typography

- **Thicccboi** — system, fallback: Geist, Inter, Helvetica Neue, Arial, sans-serif
- **Commit Mono** — system, fallback: Berkeley Mono, JetBrains Mono, ui-monospace, monospace

## Experience contract

Responsiveness is a Freak invariant, not an application afterthought. Design for available space, zoom, text size, input capability, platform chrome, safe areas, and user preferences rather than named device classes.

### Layout and reflow

- Preserve information and functionality through the WCAG 2.2 320 CSS pixel reflow case. Ordinary page content must not require two-dimensional scrolling.
- Prefer intrinsic Grid and Flexbox, wrapping, `minmax()`, `min()`, `max()`, `clamp()`, logical properties, and container queries over fixed application widths or device breakpoints.
- Let components respond to their own available inline size. Reserve viewport queries for genuine page- or environment-level concerns.
- Treat fixed geometry as presumptively wrong until it earns an exception. Fixed pixels, fixed font sizes, hard upper bounds on fluid scales, fixed component widths, and screen-ratio assumptions require a reviewable reason. Hairlines, raster/data coordinates, and standards-defined target measurements are exceptions, not defaults.
- Use large displays deliberately through readable scale, more context, columns, visualization area, or whitespace. Do not let a 5K/6K/8K or ultrawide canvas grow while controls, labels, HUDs, and side rails freeze at laptop scale.
- Keep unavoidable two-dimensional data views locally scrollable and preserve an obvious path to all data and controls.

### Type and density

- Preserve browser zoom and text resizing. Never disable pinch zoom or make text microscopic merely because the container narrowed.
- Use font-relative and container-aware type scales. A `clamp()` is not automatically responsive: hard pixel bounds or low fixed-rem ceilings can still freeze type at laptop scale. Constrain prose by readable measure, not by a fixed application width.
- Reduce or recompose chrome before shrinking important labels into illegibility. Keep glyph size separate from interactive hit-area size.
- Expect long labels, large values, localization growth, missing imagery, and user-selected text sizes without breaking the layout.

### Input and navigation

- Keyboard, touch, pen, fine pointer, coarse pointer, and assistive technology are first-class. Hover may enrich an interaction but must not be its only path.
- Query `pointer`, `any-pointer`, `hover`, and `any-hover` capabilities instead of inferring input from viewport width.
- Meet the WCAG 2.2 24 by 24 CSS pixel target-size floor or its spacing exceptions. Give primary coarse-pointer controls a roughly 44 CSS pixel or platform-equivalent hit area where practical.
- Preserve native scrolling and zoom. Use `touch-action: none` only inside bounded direct-manipulation regions that genuinely own the gesture, with an equivalent control path for essential actions.
- Never hide navigation at a narrow width without replacement. Collapsed navigation uses a real disclosure button with an accessible name and synchronized `aria-expanded` state. A hamburger glyph is optional; reachable navigation is not.

### Preferences and acceptance

- Respect reduced motion, forced colors/high contrast, light/dark host preferences, visible keyboard focus, and semantic native controls. Color or motion must not be the sole carrier of important state.
- Validate continuously across narrow, ordinary, wide, 5K-class ultrawide/high-resolution, and unusually wide containers, plus short-wide and tall-narrow compositions. Include browser zoom/text enlargement, keyboard-only use, no-hover coarse input, fine-pointer hover, reduced motion, and high-contrast/forced-color cases.
- Treat horizontal page overflow, unreachable controls, clipped focus, accidental gesture hijacking, disappearing information, and microscopic type as acceptance failures.
- Run `freak audit .` in product repositories. Treat its errors as blockers and its warnings/review findings as design debt that needs an explicit disposition. Compiled Brand artifacts carry the active machine-readable rule profile at `experience/audit-profile.json`. Narrow legitimate exceptions use `freak-audit-ignore-next-line <rule> -- <reason>` beside the code; blanket suppression is not acceptable.
- Review fixed pixel font sizes, hard font-size ceilings, fixed structural sizes in any unit, application/component width ceilings, fixed screen-ratio assumptions, device-named component breakpoints, width-based functionality hiding, broad `touch-action: none`, disabled zoom, legacy `100vh`-only shells, and hover-only essential actions as design smells that require an explicit reason.

The expanded rationale and standards baseline live in [Freak's responsive experience contract](https://git.pulpfruition.com/pulp/freak/src/branch/main/docs/experience.md). Brand repositories may specialize this contract but must not weaken its floor.

## Human-facing design review

A human-facing surface is not finished merely because it compiles, responds correctly, passes accessibility checks, or satisfies `freak audit .`. Review the rendered experience as a product for people rather than as a projection of the implementation.

- Make purpose, current state, visual hierarchy, and the next useful action legible without requiring the user to infer the backend model.
- Shape copy and navigation around product/domain language. Operation names, route names, raw schema keys, UUIDs, scope strings, hashes, machine/model identifiers, and transport jargon stay secondary or hidden unless the user's task genuinely needs them.
- Keep human-facing copy subject-first. State the chosen object, model, state, action, relation, or consequence directly, then explain the concrete actors and cause-and-effect path. A cold reader should not need the prompt or its rejected framings to understand the artifact.
- Treat recurring correction-shaped rhetoric as a review smell: repeated antithesis, mirrored clauses, invisible-objection scaffolding, compliance-like qualification, or the same hinge vocabulary can expose model residue. Short public copy also needs review when it explains discarded alternatives through patterns such as repeated `No …, no …`, `does not become`, or `without becoming`. Words such as `not`, `no`, `rather`, `without`, and `instead` remain ordinary grammar; inspect local function and distribution instead of banning vocabulary.
- Reject prestige filler in human-facing copy. `provenance`, metaphorical `*-bearing` compounds, and model-favored abstractions such as `robust`, `holistic`, `nuanced`, `seamless`, `pivotal`, `leverage`, `underscore`, `landscape`, `realm`, `navigate`, `foundational`, and `transformative` need a literal domain reason or plainer replacement. Exact identifiers and standards stay exact.
- Count words and repeated phrases on substantial copy. Lexical spikes, recurring sentence openings, qualification density, and clustered prestige abstractions are corpus-level review failures even when isolated sentences look acceptable.
- Let Brand own product-specific cadence and character. Freak's floor is positive structure: concrete domain nouns and verbs, chosen models stated directly, real uncertainty expressed specifically, and cause and effect carried through people, systems, materials, events, and consequences.
- Use progressive disclosure.
- Give controls obvious affordances, understandable consequences, and recoverable states. Design loading, empty, stale, permission, validation, error, success, confirmation, cancellation, and offline states where they apply.
- Establish authored product character through the Brand's voice, rhythm, material, imagery, motion, humor, warmth, restraint, or other appropriate qualities. Do not let equal-weight cards, generic neutral panels, badge inflation, or terminal cosplay become a substitute for information design.
- Respect the target platform and host. Native applications should feel native; embedded surfaces should respect their host; dense expert instruments may stay dense without turning normal end-user UI into a debugger.
- Review realistic rendered states and task walkthroughs, not only source code or one polished happy-path screenshot. Static findings are supporting evidence, never proof of hierarchy, affordance quality, copy, emotional temperature, or taste.
- Human-facing acceptance needs an independent visually capable reviewer. A human or a frontier model with visual input may perform that review, but the authoring model must not be the sole aesthetic certifier of its own output. Different model families carry different visual priors, so cross-model review is useful when available.

Review question: would a normal intended user experience this as an authored product for their task, or as an agent/debug surface whose internal objects happened to receive styling?

The expanded rubric lives in [Freak's human-facing design review](https://git.pulpfruition.com/pulp/freak/src/branch/main/docs/design-review.md).

## MCP App contract

MCP App UI is a progressive enhancement, not a decorative duplicate of a tool result. Attach a rendered app only when it adds direct manipulation, visual explanation, persistent workflow state, rich-media interaction, live monitoring, or substantially better structured input.

- A widget must earn its iframe. Generic tables, field-for-field cards, branded text wrappers, and syntax-highlighted JSON dumps do not justify UI when the host already exposes the underlying tool result.
- Use tables when comparison, sorting, filtering, grouping, selection, or drill-down is the task. Do not convert every object array into a table by default.
- Shape the interface around the user task, not the server schema. Prefer charts, timelines, maps, ranked queues, diffs, inspectors, forms, media viewers, and focused decision instruments when they encode the work better.
- Keep model-facing text concise and semantically useful for graceful degradation. Put UI-optimized payloads in structured content rather than duplicating large presentation data into prose.
- Let app-local operations such as refresh, pagination, filtering, selection, and form submission remain app-local when they do not require model reasoning. Update model context when interaction changes information the model should reason about later.
- Brand owns semantic surface, control, form, focus, selection, status, data-visualization, motion, and density language. The host owns surrounding chrome and runtime context such as theme, locale, timezone, platform, display mode, and available dimensions.
- Adapt Brand semantics to negotiated host context without counterfeit host chrome or client-specific geometry. The same Brand should live naturally in ChatGPT, Claude, and other compliant hosts.
- Do not attach rich UI to rapid-fire machine-facing tools unless sustained human inspection or manipulation is part of the task. Rendering cost, layout pressure, animation, polling, and dependency weight must earn their place.
- The underlying tool remains useful without MCP App support. UI-capable and text-only hosts share the same business truth.

Review question: if the app were removed, what valuable interaction or comprehension would the user lose? If the answer is "none," remove the app.

The expanded contract lives in [Freak's MCP App experience](https://git.pulpfruition.com/pulp/freak/src/branch/main/docs/mcp-apps.md).

## Agent contract

Kornwolf Research uses the hamster wheel, dark Brand ground, teal-blue-orange gradients, Thicccboi, rural machinery, and exact market language.

### Do

- Use semantic Freak outputs across web, native, terminal, social, and agent surfaces.
- Keep the hamster wheel as the compact mark and loading primitive.
- Use the teal-blue-orange gradient for loud Brand moments.
- Pair important trading colors with words, shapes, or position.
- Draw the identity from the European hamster, grain, burrows, fields, farm buildings, and working machinery.
- Keep the visual world rural, technical, eccentric, and earth-bound.
- Let Kornwolf lineage read through the wheel, storage, appetite, and machine work.

### Avoid

- Generic crypto-finance shorthand such as glowing coin stacks, anonymous candlestick wallpaper, or luxury trading-terminal chrome.
- Cute mascot treatment that turns the European hamster into a disposable cartoon sticker or plush-brand trope.
- Decorative gradients detached from market state, machinery, material, or a deliberate Brand moment.
- Abstract rural nostalgia that hides the technical, operational, and research character of Kornwolf.
