swift-calculator is a single-page calculator product. Its intent is deliberately narrow: one anonymous visitor opens one page, sees a calculator, presses keys, and reads the resulting number. The product is a small consumer utility — a household object rather than a software platform.
The audience is any person who needs to do quick arithmetic in a browser without installing anything, signing in, or navigating a multi-screen application. The experience should feel like a well-made mid-century appliance: warm, tactile, honest, and immediately legible.
The product is defined by two hard constraints carried from the authoritative requirement thread:
Everything in this document is subordinate to those two constraints. No account system, history archive, settings area, onboarding sequence, or secondary destination is in scope.
swift-calculator is delivered as a custom first-party web UI consisting of exactly one page, Calculator, which is anonymously reachable and requires no identity, session, or stored state. The page hosts the entire product: the calculator case, its display, its keypad, and the surrounding editorial framing described in the creative direction.
Actors
Accepted behavior
Ownership
Narrow exclusions
The authoritative request is to build "a simple single page design of calculator." That phrasing establishes both the product (a calculator) and the delivery shape (one page). The Planning Scope fixes the page count at exactly one and names that page Calculator; this document treats that as the final information architecture and does not add, split, rename, or reorder it.
Access is public and anonymous. The page is the public entry surface and the working surface at the same time. Because no accepted behavior requires a human to privately own or resume durable state, no application-owned identity is introduced. There is no anonymous pre-identity lifecycle separate from the calculator itself, because there is no protected state behind it.
The current horizon contains only the calculator page and its arithmetic behavior. Nothing in the source establishes a future roadmap; the future section records only that no future requirements are currently accepted.
Not applicable. No reference directive in this request declares a content_source, so no factual inventory is reproduced.
The sole page of the product. It is anonymously reachable, has no authentication gate, and contains the complete product experience.
Information and state
Primary actions
Supporting content and ornament
Domain entities
Component responsibilities
clamp(48px, 11vw, 96px) in Jost 500 with tabular figures and −0.02em tracking, right-aligned against the mustard hairline rule.:active over 90ms ease-out and releases without bounce.States
prefers-reduced-motion, the rise and the cross-fade are removed; only the 2px key press remains.FR-1 — Open the calculator As a Calculator User, I should open the single Calculator page and immediately see a working calculator, so that I can begin arithmetic without any setup.
explicit (single-page calculator) with required_inference for the anonymous entry surface.FR-2 — Enter digits As a Calculator User, I should press digit keys and see each digit appear in the display, so that I can build the number I want to calculate with.
explicit (calculator behavior) with required_inference for the specific key set.FR-3 — Enter a decimal point As a Calculator User, I should press the decimal key to begin a fractional part, so that I can calculate with non-integer values.
required_inference (indispensable for a usable calculator).FR-4 — Choose an arithmetic operation As a Calculator User, I should press +, −, ×, or ÷ and see that operator become active, so that I know which operation is pending.
explicit (calculator behavior) with required_inference for the active-operator indication.FR-5 — Evaluate the expression As a Calculator User, I should press the equals key and see the result replace the expression in the display, so that I get my answer.
explicit (calculator behavior).FR-6 — Clear the calculator As a Calculator User, I should press AC and see the calculator return to zero with an empty tape, so that I can start a fresh calculation.
explicit (AC key named in the creative direction's function column) with required_inference for the full reset semantics.FR-7 — Toggle sign and apply percent As a Calculator User, I should press ± to flip the sign of the current value and % to convert it to a percentage, so that I can handle negative and percentage values.
explicit (± and % keys named in the creative direction's function column) with required_inference for their exact effect.FR-8 — See and recover from an error As a Calculator User, I should see a clear error indication when an operation cannot produce a number, and be able to recover, so that I am never stuck.
required_inference (indispensable failure handling for division and malformed expressions).FR-9 — Read the expression tape As a Calculator User, I should see the tokens I have entered strung along a ruled tape under the display, so that I can confirm what I am calculating before I commit.
explicit (the ruled expression tape is a named signature move in the creative direction).FR-10 — Perceive key press feedback As a Calculator User, I should feel each key depress when I press it, so that the calculator feels like a physical object and I trust that my input registered.
explicit (the 2px key press is specified in the creative direction).prefers-reduced-motion, the 2px press is retained while the load rise and display cross-fade are removed; continuation = the corresponding value change appears in the display.Product context. The Calculator User is an anonymous visitor who arrives at the single Calculator page with a small arithmetic task in mind — a total, a split, a percentage, a quick multiplication. They did not come to learn a tool, configure anything, or manage an account. They expect the page to be the calculator, fully usable on arrival.
Primary goal. Get a correct number quickly, with confidence that the keys they pressed were the keys that registered.
Distinct accepted responsibilities.
Relevant inputs and decisions. The user decides when an operand is complete (by pressing an operator or equals), which operation applies, and whether to clear and start over. Their inputs are key presses on the on-screen keypad.
Interactions with other accepted participants. None. The Calculator User is the only human actor in the product; there is no counterparty, recipient, approver, or administrator. The calculator's output is consumed by the same person who produced it.
Observable success. The display shows the expected number after equals; the tape shows the expression that produced it; every key press produced visible feedback; an error, if it occurred, was recoverable with AC.
What makes this role distinct. The role's entire work is a tight input–feedback loop measured in seconds, with no durable state, no collaboration, and no identity. Its quality bar is tactile responsiveness and legibility of the number, not workflow completeness.
Failure and recovery: if the user presses a second operator before entering a right operand, the pending operator is replaced and the tape updates accordingly — no error state is entered.
Muse and headline. Charles & Ray Eames — Warm modernism for a calculator you actually enjoy pressing. The register is everyday optimism: a well-made mid-century household appliance, not a tech demo.
Mode. Light only.
Color tokens (exact hex, by role)
| Role | Hex | Use |
|---|---|---|
| Background | #F3EADA | Warm cream page ground |
| Surface | #FBF5E9 | Calculator case, digit and operator keys |
| Text | #2B2620 | All numerals, labels, hairlines, key lips |
| Primary | #C4472A | Equals bar, active operator, "swift" dot, tape caret |
| Accent | #E0A32B | Function column (AC, ±, %), mustard rule under the display, half-disc |
| Muted | #7A6E5C | Secondary labels (4.9:1 on cream) |
| Teal | #3F7D74 | Quarter-arc decoration and material chip only — never behind text |
| Walnut | #6B4A32 | Material chip only — never behind text |
Typography
clamp(48px, 11vw, 96px); wordmark clamp(20px, 4vw, 28px); key labels clamp(20px, 3.2vw, 26px); micro-labels 11px uppercase tracked.system-ui are excluded from the type stack.Shape language. Organic-modern. The calculator is a single rounded rectangle — 28px radius at desktop, 20px at mobile — with no inner card borders. Keys are 14px-radius squarish capsules with a 2px ink bottom lip reading as a physical key throw. The equals key is a full-width tomato bar with a 999px pill end. One large quarter-circle teal arc bleeds off the top-right of the page; a mustard half-disc sits under the keypad. These are the only curves that are not part of the product.
Layout. Gallery-like single column on cream. A slim top bar holds the wordmark left and three material chips right. At 1280px an asymmetric two-panel stage places an oversized Fraunces editorial statement and the "how it works" line on the left, with the calculator body pinned to the top of the fold on the right. At 768px the panels stack with the calculator first. At 375px everything is one column, the calculator is full-bleed to a 16px gutter, and keys sit in a 4×5 grid with 8px gaps. Outer margins are 96px / 64px / 40px by breakpoint.
Imagery. No photography and no illustration of people. The visual material is the object itself plus three flat material chips (walnut #6B4A32, teal #3F7D74, mustard #E0A32B) rendered as 20px rounded squares with a 1px ink hairline, and the thin ruled expression tape under the display.
Accessibility of text and controls. Headlines, wordmarks, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling via clamp(...) to fit. Decorative shapes may bleed off edges but never cover readable text or controls.
"The number is the hero."
The first screen is a warm cream room with a single oversized product on the right: a cream calculator case, 420px wide at desktop, sitting on a soft offset shadow with a mustard half-disc peeking from behind its bottom edge and a large teal quarter-arc cropped by the top-right viewport corner.
Left of it, flush-left and spanning seven of twelve columns, a Fraunces statement at clamp(32px, 5vw, 64px) in ink reads "Numbers, handled well." — with a Jost uppercase micro-label above it and one Fraunces line of 16px helper below.
Inside the case, the display number is the largest type on the page at clamp(48px, 11vw, 96px), right-aligned against a hairline mustard rule, so the eye lands on the product's own output before the headline. Under it, the ruled expression tape strings the entered tokens with hairline ticks and a small tomato caret, like an Eames exhibition label strip. The tomato equals bar is the only saturated full-width element and anchors the bottom of the case.
At 375px the calculator moves above the statement and the teal arc drops to a 120px sliver behind it. The concept recomposes only accepted content — the display, the tape, the keypad, the wordmark, and the editorial line — and introduces no new behavior or destination.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: layered_2d
Landing Hero Motion Brief
prefers-reduced-motion removes the load rise and the display cross-fade. The 2px key press is retained, because it is the product's core tactile feedback rather than decoration. The page renders in its final composed arrangement immediately.explicit.explicit.required_inference from the absence of any accepted identity-bearing behavior.explicit (creative direction).prefers-reduced-motion, retaining only the 2px key press. Provenance: explicit (creative direction).explicit (creative direction states the 4.9:1 figure).required_inference for a usable calculator.explicit (creative direction).clamp() for the type scale, and media queries for the 375 / 768 / 1280 breakpoints and prefers-reduced-motion.Constraints (binding)
Assumptions (narrow, labeled)
Future requirements
No future requirements are currently accepted. The authoritative thread contains no roadmap, deferred feature, or future-horizon item. Any future addition — history, scientific mode, themes — would require a new explicit user requirement and would be evaluated against the single-page constraint at that time.
prefers-reduced-motion condition under which the load rise and display cross-fade are removed while the 2px key press remains.
Swift Calculator — Daily Arithmetic
Add, subtract, multiply and divide in one tap-driven pass. The ruled tape keeps your expression in view; press = to cross-fade to the answer.

Swift Calculator — Daily Arithmetic
Add, subtract, multiply and divide in one tap-driven pass. The ruled tape keeps your expression in view; press = to cross-fade to the answer.
No comments yet. Be the first!