feral-calculator is a simple, single-page calculator design. The product intent, taken directly from the authoritative requirement thread, is to present a working calculator — number entry, arithmetic operations, and a computed result — on exactly one page, with a design that is deliberately simple and fits within a single page.
The audience is everyday people doing quick sums: students, cooks, shoppers, and freelancers on a phone. The product is a lightweight utility, not a productivity suite. Its emotional register is playful and tactile — a glossy toy you want to poke — rather than spreadsheet-neutral or corporate.
The single hard constraint that governs the whole document is the exact one-page limit: the calculator itself lives on one page, and no additional product pages, modules, or adjacent capabilities are introduced.
feral-calculator is a single-page, client-side calculator. A single active human role — the Calculator User — opens the page, enters numbers and arithmetic operations, and reads the computed result. There is no account, no sign-in, no persistence requirement, and no server-side workflow described by the source.
The page is the product: a glossy white calculator capsule floating on a bubblegum-pink field, with an oversized live result readout as the hero, a 4×5 keypad of pill keys, and a stacked "FERAL / CALCULATOR" wordmark. All arithmetic is performed in the browser; the result is displayed immediately in the readout.
Delivery ownership. The calculator is a first-party, application-owned, custom-UI surface. It is delivered as a single page with no authentication and no account lifecycle. Access is anonymous and public: the Calculator User reaches the calculator directly and begins using it. No identity establishment, invitation, provisioning, or session continuity is required, because the accepted behavior creates no durable actor-specific state, commitment, entitlement, or value transfer that must remain bound to a participant.
Single-page boundary. The exact one-page constraint is a hard, source-stated limit. The calculator, its readout, its keypad, and its wordmark all live on that one page. There is no separate landing page, no separate results page, no settings page, and no history page as a distinct destination. Any recent-history display is an in-page strip within the same single page, not a separate route.
Current vs. future. Current scope is exactly: a simple single-page calculator design that performs basic arithmetic in one place. Nothing in the source accepts memory functions, scientific functions, unit conversion, currency conversion, tape export, sharing, accounts, or persistence across sessions. These are not current requirements and are not represented as pages or modules.
Exclusions. No blue or indigo anywhere in the interface. No stock photography or illustration of people. No dark admin chrome or spreadsheet-neutral grey UI. No sharp corners or flat rectangular keys. No additional product pages beyond the single calculator page.
Not applicable. No reference directive in the supplied material declares a content_source; the creative direction supplies visual and tonal guidance only, not factual product content.
The page contract is exact and contains one page. The calculator itself is the single page; the wordmark, readout, keypad, and any recent-history strip are components of that one page, not separate destinations.
Purpose and information/state. The single page presents the calculator as a product on a pedestal: a glossy white calculator capsule on a bubblegum-pink ground, with the live result readout as the dominant element. The page holds the current entry state (the number being typed or the running expression), the last computed result, and an optional thin ruled strip of recent-history values beneath the wordmark at desktop widths.
Primary actions.
Supporting actions.
Domain entities.
Component responsibilities.
clamp(56px, 9vw, 112px).States.
0; no pending operation; history strip empty or hidden.0; the user can immediately begin a new calculation.prefers-reduced-motion, all press, pop, and blob-morph animation collapses to instant state changes and a static blob.FR-1 — Single-page calculator presentation (explicit) As a Calculator User, I should see the calculator presented on one single page, so that I can do a quick sum in one place without navigating anywhere.
FR-2 — Simple design that fits on a single page (explicit) As a Calculator User, I should experience a simple design that fits within a single page, so that the tool stays uncluttered and immediately understandable.
clamp rather than overflowing.FR-3 — Enter numbers (explicit) As a Calculator User, I should enter digits and a decimal point, so that I can build the number I want to calculate with.
FR-4 — Choose arithmetic operations (explicit) As a Calculator User, I should choose an arithmetic operator (add, subtract, multiply, divide), so that I can tell the calculator what to do with my numbers.
FR-5 — Compute and read the result (explicit) As a Calculator User, I should press equals and read the computed result, so that I get the answer to my sum.
0.FR-6 — Clear and reset (explicit) As a Calculator User, I should clear the current entry and reset the calculation, so that I can start a fresh sum without reloading.
0 and any pending operation is discarded.0 and no operator is pending.FR-7 — Read recent history in-page (required_inference) As a Calculator User, I should see a thin strip of recent computed values beneath the wordmark at desktop widths, so that I can glance back at what I just calculated without leaving the page.
FR-8 — Tactile press feedback and motion (explicit, from creative direction) As a Calculator User, I should feel each key respond when I press it, so that the calculator feels like a glossy toy rather than a spreadsheet.
prefers-reduced-motion, all of this collapses to instant state changes and a static blob.Product context. The Calculator User is an everyday person — a student, a cook, a shopper, or a freelancer — doing a quick sum on a phone or laptop. They arrive with a number problem in mind and want an answer in seconds. They are not configuring software, managing an account, or building a workflow; they are poking a glossy toy that happens to do arithmetic.
Primary goal. Enter numbers and arithmetic operations and read the computed result, all in one place, without friction.
Distinct accepted responsibilities.
Relevant inputs or decisions. Which digits to type, which operator to apply, when to press equals, and when to clear. The user decides the expression; the calculator decides the arithmetic.
Interactions with other accepted participants. None. The Calculator User is the only active human role; there is no counterparty, recipient, or beneficiary whose state changes. The calculator itself is a system actor that computes and displays.
Observable success. The readout shows the correct result of the entered expression, the keypad responded tactilely to each press, and the user can immediately start another sum or clear the page.
What makes this role different. The role's work is entirely local, ephemeral, and anonymous: no identity, no persistence, no handoff. Its success is measured by the speed and satisfaction of a single sum, not by any durable record or shared state.
0, and the 4×5 keypad are all present on the single page.0 and begin again.Failure and recovery. If the user presses equals on an incomplete expression, the readout shows a clear error state rather than a silent failure. If the user divides by zero, the readout shows an error state. In either case, pressing clear returns the readout to 0 and discards the pending operation, and the user can immediately start a new sum.
0 and any pending operation is discarded.prefers-reduced-motion enabled on their device.Muse and headline. Karim Rashid — "Sensual pop minimalism for a feral little calculator." A utilitarian object turned into a desirable one: organic capsule forms, glossy candy colour, optimism as a material.
Mode. Light mode only.
Colour tokens (exact hex by role).
| Role | Hex | Usage |
|---|---|---|
| Background | #F7E9F4 | Bubblegum-pink ground |
| Surface | #FFFFFF | Glossy white display capsule and digit keys |
| Text | #2B0F2E | Deep plum for all readable type and numerals |
| Primary | #FF4FA3 | Hot pink for operator keys and the primary CTA |
| Accent | #C6FF3D | Acid lime, reserved for the equals key and live-result flash; under 10% of surface |
| Muted | #8A6B8F | Muted mauve for secondary labels at 16px+ only |
No blue anywhere — no #2563EB, #4F46E5, #7C3AED or neighbours.
Typography.
clamp(56px, 9vw, 112px).clamp(22px, 4.5vw, 34px).Shape language. Capsules and blobs everywhere: every key is a fully rounded pill or circle; the display sits in a glossy white capsule with a soft inner highlight; section edges curve gently; one oversized pink blob bleeds off the right edge of the hero as a decorative anchor. Buttons have a glossy top highlight and a soft offset shadow that reads as candy plastic. No sharp corners or flat rectangular keys.
Layout.
Imagery style. No photography. The imagery is the interface itself: glossy 3D-ish CSS blobs, a pink organic shape bleeding off the hero edge, and candy-like keys with highlights. Optionally one soft lime blob peeking behind the equals key.
Readability rule. Headlines, wordmarks, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit. Decoration may bleed, crop, or overlap, but never covers readable text or controls.
The calculator as a product on a pedestal.
The first screen is a single oversized glossy white calculator capsule floating on a bubblegum-pink ground. A huge organic pink blob bleeds off the top-right corner; a smaller lime blob tucks behind the keypad's bottom-left. The dominant element is the live result readout — a 112px plum numeral set inside the capsule's top third, with a soft inner highlight making the display look like polished plastic.
The wordmark "FERAL CALCULATOR" sits above the capsule in Comfortaa 800, stacked on two lines at mobile and set flush-left as a 96px block at desktop. There is no centred headline, no subtext, and no gradient blob behind a blue button — the calculator itself is the hero.
Every key is a fully rounded pill or circle with a glossy top highlight and soft offset shadow: operators hot pink, equals acid lime, digits white with plum numerals. The composition recomposes only accepted content — the wordmark, the readout, the keypad, and the decorative blobs — into a single, tactile, product-like presentation.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: layered_2d
Landing Hero Motion Brief.
0, the keypad at rest, the pink blob bleeding off the top-right, and the lime blob tucked behind the keypad's bottom-left.prefers-reduced-motion, all press, pop, and blob-morph animation collapses to instant state changes and a static blob; the layout remains fully usable and every key remains reachable.NFR-1 — Single-page constraint (explicit) The product must present the calculator on exactly one page. No additional product pages, routes, or destinations may be introduced. Rationale: the source states "simple single page design of calculator" as a hard constraint.
NFR-2 — Simplicity (explicit) The design must be simple: uncluttered, immediately understandable, and free of adjacent capabilities. Rationale: the source states "simple" as a hard constraint.
NFR-3 — Responsive readability (explicit, from creative direction) Readable text and controls must stay whole and inside the viewport and their container at 375px, 768px, and 1280px. Decoration may bleed or overlap but must never cover readable text or controls. Rationale: the creative direction's readability rule.
NFR-4 — Reduced motion (explicit, from creative direction)
With prefers-reduced-motion, all animation must collapse to instant state changes and a static blob, while the calculator remains fully usable. Rationale: the creative direction's motion rule.
NFR-5 — No blue or indigo (explicit, from creative direction) No blue or indigo may appear anywhere in the interface. Rationale: the creative direction's palette and avoid list.
NFR-6 — No stock photography (explicit, from creative direction) No stock photography or illustration of people. Rationale: the creative direction's imagery rule.
NFR-7 — Client-side arithmetic (required_inference) Arithmetic is performed in the browser with no network dependency, so the calculator is available immediately on page load. Rationale: the accepted behavior is a simple single-page calculator with no server-side workflow described; client-side computation is the indispensable mechanic that makes the result observable without a backend.
NFR-8 — Anonymous access (required_inference) The calculator is publicly reachable with no sign-in, account, or session continuity. Rationale: the accepted behavior creates no durable actor-specific state, commitment, entitlement, or value transfer that must remain bound to a participant.
clamp() for responsive type, and CSS keyframes/transitions for the press, pop, and blob-morph motion, gated by prefers-reduced-motion.Assumptions.
Constraints.
0.prefers-reduced-motion state in which all animation collapses to instant state changes and a static blob.
Tap the candy keys. Equals lights up lime.

Tap the candy keys. Equals lights up lime.
No comments yet. Be the first!