clever-calculator is a simple calculator delivered as a single-page design. Its product intent is narrow and complete: a person opens one page, enters numbers and operators, sees the computed result, and can clear the entry to start a new calculation. There is no onboarding, no marketing surface, and no second destination — the calculator is the page.
The audience is anyone who needs quick arithmetic: a single human role, the Calculator User, who wants honest, instantly responsive controls rather than a web form. The design intent is a well-made instrument — calm, tactile, precise — in the spirit of Dieter Rams: strict grid, aligned label/value pairs, muted warm surfaces, and one signal colour marking the operation keys.
clever-calculator is a single-page, anonymous, client-side calculator. The entire product is one destination, Calculator, which is publicly reachable with no account, no sign-in, and no stored identity. All arithmetic entry, operator selection, result display, and clearing happen on that page.
Actors
Accepted behavior
Ownership
access_requirement: none). There is no application identity, no session continuity requirement, and no differentiated permissions — every visitor sees the same calculator.Exclusions
Removed from scope
The user asked for a simple single-page calculator design. That is the whole current product: one anonymously reachable page that is immediately usable, with no gate, no account, and no surrounding application shell. The calculator is the hero — it is already usable on first paint.
Delivery is first-party custom UI owned by the application, rendered entirely in the browser. Because no accepted behavior requires durable actor-specific state, commitments, entitlements, or value transfer, no application-owned identity is introduced. Nothing is deferred to a provider or external destination, and nothing is planned for a future horizon beyond the current single page.
The single page of the product. Anonymous public entry; no identity, no gating. Everything below lives inside one bounded card on a warm off-white field.
Information and state
Primary actions
Supporting actions and controls
Domain entities
Component responsibilities
States
FR-1 — Open the calculator As a Calculator User, I should open the single Calculator page and immediately see a usable calculator, so that I can begin arithmetic without any setup.
FR-2 — Enter numbers As a Calculator User, I should enter digits and a decimal point into the display, so that I can compose the number I want to calculate with.
FR-3 — Select an operator As a Calculator User, I should select an operator (+, −, ×, ÷), so that I can specify the operation to perform.
FR-4 — See the computed result As a Calculator User, I should press equals and see the computed result in the display, so that I get the answer to my calculation.
FR-5 — Clear to start over As a Calculator User, I should clear the entry, so that I can start a new calculation from a clean state.
FR-6 — Review recent calculations As a Calculator User, I should see the last three calculations in the left rail, so that I can glance back at what I just computed like an instrument readout.
FR-7 — Use secondary function keys As a Calculator User, I should use the sign toggle and percent keys, so that I can adjust the current entry without retyping it.
Product context. A person who needs quick arithmetic and opens clever-calculator directly. They arrive with a number in mind, not a task list. The page is the whole product: there is no account, no dashboard, and no surrounding application. The emotional register the product aims for is calm trust and tactile precision — a well-made object picked up, not a web form.
Primary goal. Get an arithmetic answer quickly and start over cleanly for the next one.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which digits to enter, which operator applies, when to press equals, and when to clear. The user decides when a calculation is finished and when to begin the next.
Interactions with other participants. None. The Calculator User is the only human actor; arithmetic is performed within the page and no other participant is affected by the outcome.
Observable success. The result appears instantly in the oversized display on equals; the selected operator is visibly marked; clear returns the page to a clean starting state; the last three calculations read back in monospace in the rail.
What makes this role distinct. The role is defined by direct, uninterrupted manipulation of a single instrument — every action is a key press with immediate mechanical feedback, and there is no collaboration, no saved state, and no permission boundary to navigate.
Failure/recovery: if the calculation is undefined (for example division by zero), the display shows that truthfully rather than a silent number; the user presses clear and starts a new calculation.
Failure/recovery: not applicable; clear always succeeds. A page reload also returns the page to the empty state, since nothing is persisted.
Failure/recovery: clear resets the entry if the adjustment was unintended.
Failure/recovery: a reload returns the readout to empty; nothing is persisted.
Muse and headline. Dieter Rams — Less, but better: a calculator as a Braun instrument.
Mode. Light only.
Colour tokens (exact hex, by role)
| Role | Hex | Use |
|---|---|---|
| Background | #EDEAE3 | Warm off-white page field |
| Surface | #F7F5F0 | Cream calculator card and key faces |
| Text | #1C1C1A | Near-black type, display figures, hairline rules at 12% opacity |
| Primary | #E8551F | Braun orange — equals key and active operator only |
| Accent | #F2B705 | Amber — secondary function keys (clear, sign, percent) |
| Muted | #8C8880 | Labels and small caps |
Colour proportion: ~85% warm neutrals, ~12% orange/amber signals, ~3% black rules. No blue anywhere.
Typography
Shape language. Rounded-rectangle controls with a consistent 10px radius; hairline 1px dividers (#1C1C1A at 12% opacity); strict modular grid; aligned label/value pairs. Keys are flat with a 2px bottom edge shadow for physical depth — no gradients, no blobs.
Spacing rhythm. Modular grid with aligned label/value pairs; 12px gutters in the mobile 4-column keypad; everything inside one bounded card, no full-bleed sections.
Imagery style. Diagrammatic only: a small pictogram row of the four operators above the keypad rendered as thin-stroke line art, and a faint ruled grid marking section divisions. No photography, no illustration, no 3D.
Layout. Centred two-column composition at 1280px: narrow left rail (wordmark, small-caps "CALCULATOR" label, last-three history in monospace) and a right-hand 4×5 keypad panel on the cream surface. At 768px the rail stacks above the keypad; at 375px it collapses to a single column with the display at top and the keypad filling the width in a 4-column grid with 12px gutters.
Readability constraint. Headlines, wordmarks, labels, numbers, card text, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example font-size: clamp(...) with its mobile size) to fit; no other element covers any part of them.
The first screen is the instrument itself, not a marketing hero. A full-width warm off-white field (#EDEAE3) holds a single cream calculator card (#F7F5F0) occupying the right two-thirds. Its oversized Archivo display number — 64–96px desktop, 40px mobile, tabular, flush-left — sits above the keypad as the dominant element, with a hairline rule beneath it separating display from keys.
To the left, a narrow vertical rail carries the wordmark "CLEVER" in small caps, a hairline vertical rule, and the last-three history in IBM Plex Mono, reading like an instrument readout. Above the keypad, a thin-stroke pictogram row of the four operators.
A single Braun-orange equals key (#E8551F) anchors the bottom-right of the keypad — the only saturated element on the screen. All other keys are warm cream; the clear, sign, and percent keys are amber-marked (#F2B705). Keys are flat rounded rectangles with a 2px bottom edge shadow that compresses on press — physical, not glowing.
There is no centred headline, no subtext button, no gradient. The calculator is the hero and it is already usable.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
prefers-reduced-motion, the keypad appears without the 200ms fade and key presses register without the 1px depression transition; the display and operator state still update instantly, and the page remains fully usable.access_requirement: none; no account, sign-in, or identity is introduced.prefers-reduced-motion.clamp() for the responsive type scale and prefers-reduced-motion media query for the reduced-motion state.

No comments yet. Be the first!