honest-calculator is a single-page arithmetic calculator delivered as one web page. The product intent, taken directly from the authoritative requirement thread, is to create a simple single page design of the calculator: a person opens one page, enters numbers and operations, and reads the computed result. There is no second page, no navigation, no marketing surface, and no account.
The audience is broad and anonymous — students, engineers, shoppers, anyone who needs arithmetic done without ceremony. The design register is trust through transparency: the tool should read as a precision instrument rather than a product, with no learning curve and no decoration that implies a brand story.
This document defines the single page, the single active human role, the arithmetic behavior, the visual system, and the delivery boundary for the current release.
honest-calculator is a browser-delivered, single-page utility. The page is the product: a typographic display band showing the current value, a strict 4-column keypad grid for digits and operators, and a muted operation-history line beneath the keypad. All arithmetic is performed in the browser; there is no server-side computation, no persistence of user data, and no cross-session state.
Actors
Accepted behavior
Ownership
The single page, named Calculator, is owned by the application and is anonymously reachable. No identity, session, or account is established or required.
Narrow exclusions
The whole product is one anonymously reachable page. A visitor arrives, the calculator is already usable, and nothing stands between arrival and arithmetic. Because the accepted requirement is an exact one-page constraint, the page also serves as the public entry: there is no separate landing surface, no sign-in gate, and no onboarding step. The page explains itself by being the instrument.
Delivery is first-party custom UI rendered in the browser. Arithmetic evaluation happens client-side in the same page; no backend service, queue, or external provider participates in producing a result. Nothing about the accepted behavior requires durable state bound to a person, so no identity establishment, verification, or account management is in scope for the current release.
Future ideas, if any arise, are out of scope for this release and are not represented on the page.
Not applicable. No reference directive in this project declares a content_source, so no source content inventory is produced.
The page inventory is exactly one page, per the explicit one-page constraint.
The single page, anonymously reachable, serving as both the public entry and the working instrument.
Information and state
Primary actions
Supporting actions
Domain entities
Component responsibilities
HONEST CALCULATOR, and a right-aligned uppercase micro-label 01 — ARITHMETIC.States
0 in the display band and an empty history line.Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance.
FR-1 — Open the calculator As a Calculator User, I should open a single page that presents a working calculator, so that I can begin arithmetic immediately.
0, the full 4×5 keypad visible, and an empty history line.FR-2 — Enter a number As a Calculator User, I should enter digits and a decimal point so that I can build the operand I want to compute with.
FR-3 — Choose an operator As a Calculator User, I should choose one of ÷ × − + so that I can specify the operation to perform.
FR-4 — Evaluate the expression As a Calculator User, I should press equals so that I can see the computed result.
FR-5 — Clear the entry and the calculation As a Calculator User, I should clear my input so that I can start over without reloading the page.
0; a second clear action resets the whole calculation, including any armed operator and the history line.FR-6 — Toggle sign and convert to percent As a Calculator User, I should negate or percent-convert the current entry so that I can handle common arithmetic forms without retyping.
0 leaves the display at 0 rather than producing an invalid state.FR-7 — Read the operation history As a Calculator User, I should see a muted line describing the last completed operation so that I can confirm what was just computed.
FR-8 — Press feedback on keys As a Calculator User, I should receive immediate mechanical confirmation when I press a key so that I trust the instrument registered my input.
Product context. The Calculator User arrives at a single page with a task already in mind — a sum, a split, a unit price, a remainder — and no interest in the tool itself. They may be a student checking homework, an engineer sanity-checking a figure, or a shopper working out a total. They are anonymous: the product never learns who they are, and they never expect it to.
Primary goal. Obtain a correct computed result from the single-page calculator interface, quickly, without ceremony.
Distinct accepted responsibilities. This role is the sole active human actor. It enters operands, arms operators, evaluates expressions, clears entries, toggles sign, converts to percent, and reads the result and the history line. It is both the initiator and the sole beneficiary of every accepted capability — no other human participant is affected by the outcome, and no commitment, entitlement, or value transfer is created for anyone else.
Relevant inputs and decisions. The role decides which numbers to enter, which operator to arm, when to evaluate, and when to clear. Its inputs are key presses on the keypad; its decisions are entirely about the arithmetic it wants performed.
Interactions with other accepted participants. None. There is no second human participant, no counterparty, and no recipient. The only other actor is the browser runtime, which evaluates the expression and renders the page — a system actor, not a participant.
Observable success. The display band shows the correct computed result as the largest element on the page, and the history line confirms the operation that produced it. The role can immediately continue with the result or clear and start again.
Constraints carried from source. The role works within an exact one-page product with a simple design; it has no account, no saved state, and no surface other than the Calculator page.
HONEST CALCULATOR, the right-aligned micro-label 01 — ARITHMETIC, the display band showing 0, the 4×5 keypad plate, and an empty history line. No sign-in, gate, or onboarding appears.0; the key inverts for its instant 80ms press state.0 and the history line is empty.0 or the new operand.The creative direction is authoritative for this section. The muse is Josef Müller-Brockmann, and the headline idea is Swiss geometric honesty — a calculator as a grid-locked instrument. The calculator is literally a grid of keys and a column of numbers; the Swiss grid turns that structure into the identity. The display becomes a typographic composition, the keypad becomes a modular grid, and the operator keys become colour-coded zones.
Colour tokens — light mode
| Role | Hex | Use |
|---|---|---|
| Background | #F4F2ED | Warm off-white paper ground for the whole page |
| Surface | #FFFFFF | Pure white keypad plate so the grid reads as a printed sheet |
| Text | #111111 | Near-black ink for all type and display numerals |
| Primary | #111111 | Rules, wordmark, and the black fill of a pressed key |
| Accent | #E63329 | Swiss poster red: the equals key and the operator zone rules, roughly 5% of the surface, never a background wash |
| Muted | #8C8C8C | Secondary labels and the operation-history line |
No gradients, no shadows, no tints. Blue, indigo, and violet are forbidden anywhere, including focus rings; focus rings use black or red.
Typography
-0.02em, uppercase for micro-labels at 11px with 0.14em letterspacing.clamp(56px, 12vw, 128px); wordmark clamp(28px, 5vw, 44px); key labels clamp(20px, 3.2vw, 28px); micro-labels 11px; body 16px.Shape language
Hard edges only. Zero border-radius anywhere. Keys are perfect squares in a strict 4-column grid, separated by 1px hairlines rather than gaps, so the keypad reads as one continuous ruled plate. The display sits in a full-width band bounded by a 2px top rule and a 1px bottom rule. Operator keys are marked by a 3px red left rule, not by fill.
Layout
Single centred column, max-width 520px, vertically centred in the viewport at 1280px and top-aligned with breathing room at 375px. Above the calculator: a 2px black rule spanning the full column, the wordmark HONEST CALCULATOR flush-left in uppercase, and a right-aligned micro-label 01 — ARITHMETIC. The display band sits directly beneath the rule with right-aligned numerals. The 4×5 keypad sits below, flush to the column edges with no outer margin so the grid bleeds to the column boundary. A single 1px rule and a small muted line of operation history sit under the keypad. Nothing else on the page — no footer, no nav, no marketing copy.
Imagery
None. Typography and the grid are the image. The only graphic elements are hairline rules, the red operator rule, and the tabular numerals themselves. No icons, no illustrations, no photography, no textures.
Readable text and controls
Headlines, the wordmark, labels, numbers, and keypad controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling via the clamp() sizes above. No element covers any part of them.
The answer as a poster headline.
The first screen is the calculator itself — there is no marketing hero. The dominant element is the result numeral, set in Archivo at up to 128px, right-aligned against the full column width, sitting on the warm off-white ground with a 2px black rule above it. Above the rule, a small uppercase wordmark and a red micro-label. Below, the keypad as a single white ruled plate divided by 1px hairlines, with the equals key marked by a red rule.
The composition reads like a Swiss concert poster that happens to be a working calculator: asymmetric, grid-locked, typographic, with the largest number on the page being the user's own answer. The signature moves that carry the concept are:
This concept recomposes only accepted content, states, and controls. It introduces no new behavior, page, or destination.
Interaction Model: Static (direction) Motion Tempo: still Hero Dimensionality: flat
Landing Hero Motion Brief
#F4F2ED fills the viewport. A 2px black rule spans the 520px column. Above it, the flush-left uppercase wordmark HONEST CALCULATOR and the right-aligned red micro-label 01 — ARITHMETIC. Below it, the display band showing 0 in near-black Archivo at the largest size on the page, right-aligned. Beneath the 1px bottom rule, the white keypad plate divided by hairlines, with the red left rules marking the operator column and the equals key.prefers-reduced-motion: reduce, the 120ms history-line fade is removed and the line changes instantly. The 80ms press inversion is retained as an instantaneous state change, since it is a state indicator rather than motion. The layout is otherwise unchanged and fully usable.NFR-1 — Single page, exact. The product is exactly one page. No additional route, tab, modal surface, or navigation element may be introduced. Provenance: explicit. Rationale: the authoritative requirement states a simple single-page design and the planning scope fixes an exact page count of one.
NFR-2 — Anonymous access. The Calculator page is reachable without identity, sign-in, or any gate. No account, session, or personal data is established. Provenance: required inference. Rationale: no accepted capability creates durable state bound to a person, and the one-page constraint leaves no room for an access boundary.
NFR-3 — Client-side evaluation. Arithmetic is evaluated in the browser. No server round-trip is required to produce a result, and no user input is transmitted. Provenance: required inference. Rationale: the accepted behavior is a self-contained single-page instrument with no persistence or cross-session state.
NFR-4 — Responsive integrity. The page is fully usable and all readable text and controls remain whole at 375px, 768px, and 1280px. Provenance: explicit. Rationale: the creative direction's readable-text-and-controls rule.
NFR-5 — Accessibility of state. The display value, the armed operator, and the error state are conveyed by text and not by colour alone. Focus indicators use black or red, never blue, indigo, or violet. Provenance: explicit. Rationale: the creative direction's colour restriction and the requirement that the display be readable.
NFR-6 — No decorative motion. Only the 80ms press inversion and the 120ms history-line fade are permitted. Provenance: explicit. Rationale: the creative direction's still tempo.
NFR-7 — No persistence. No calculation, history, or preference is stored beyond the life of the page. Provenance: required inference. Rationale: no accepted capability requires durable state.
No database, container orchestration, or additional service is introduced, because no accepted requirement calls for one.
Constraints (explicit, binding)
Assumptions (narrow, labeled)
Explicit exclusions
Calculator User — the single active human role: a person who opens the Calculator page and performs arithmetic.
Calculator page — the one and only page of the product, anonymously reachable, serving as both the public entry and the working instrument.
Display band — the full-width region bounded by a 2px top rule and a 1px bottom rule that shows the current value or result in right-aligned Archivo numerals.
Keypad plate — the 4-column, 5-row grid of perfect squares, flush to the column edges and divided by 1px hairlines, that carries all input keys.
Operator key — one of ÷ × − +, identified by a 3px red left rule rather than a fill.
Equals key — the key that evaluates the pending expression; marked by the Swiss poster red #E63329.
Operand — a numeric value entered by the user or produced by evaluation.
Expression — the pending left operand, armed operator, and right operand.
Result — the numeric outcome of evaluating an expression, shown as the largest element on the page.
History line — the single muted line beneath the keypad reflecting the last completed operation, fading in over 120ms.
Armed operator — an operator that has been selected and is awaiting its right-hand operand.
Swiss poster red — the accent colour #E63329, used at roughly 5% of the surface for the equals key and operator zone rules.

01 — Arithmetic

01 — Arithmetic
No comments yet. Be the first!