tough-single is a simple calculator delivered as a single page. A visitor opens the page, enters numbers and arithmetic operators, and reads the computed result on that same page. There is no account, no dashboard, no marketing site, and no second screen: the calculator is the product, and the product is one page.
The audience is broad and casual — anyone who needs quick everyday arithmetic on any device. The page must be immediately readable at any age and any viewport, and it must feel like a warm, hand-made, legible instrument rather than a corporate or futuristic tool.
This document is the System Requirements Document for the project named tough-single, requested by Diya Trivedi.
tough-single is a single-page, browser-delivered calculator. The page presents a calculator slab — a display area showing the current expression and the computed result, plus a keypad of digits, arithmetic operators, a clear control, and an equals control. The visitor enters numbers and operators, and the computed result appears on the same page.
Actors
Delivery and ownership
Current accepted behavior
Narrow exclusions
Removed from scope
The requester asked for a simple single page design of the calculator. That is read literally and completely: one page, one calculator, no surrounding product surface. The page is the entire delivery — it both introduces the calculator (a compact wordmark and a short plain-spoken line) and hosts the working instrument (display, expression line, keypad). There is no separate landing page, no onboarding, no settings, and no second destination.
Access is anonymous and public. Nothing on the page requires a visitor to identify themselves, and nothing persists between visits as an accepted requirement. The calculator is a self-contained instrument: entry, computation, and result all live on the one page.
Everything described in this document is current. No future-horizon capabilities are accepted, and none are planned here.
The single page of the product. It introduces the calculator and hosts the full arithmetic interaction: expression entry, operator selection, computation, and result display. Reachable anonymously; no access requirement.
Information and state
Primary actions
Supporting actions
Domain entities
Component responsibilities
States
prefers-reduced-motion, all transitions collapse to instant state changes and the pulse ring is removed; the page remains fully usable.FR-1 — Single-page calculator delivery (explicit) As a Calculator user, I should get the calculator as a simple single page design, so that the entire tool is available to me in one place without navigating anywhere.
FR-2 — Number and operator entry with computed result (explicit) As a Calculator user, I should enter numbers and arithmetic operators and see the computed result, so that I can perform everyday arithmetic quickly.
FR-3 — Clear and reset (required_inference) As a Calculator user, I should clear the current entry and expression, so that I can start a fresh calculation without reloading the page.
FR-4 — Live expression and result display (required_inference) As a Calculator user, I should see the expression I have entered and the result I have computed, so that I can confirm my input and read my answer.
Product context. A broad, casual visitor who needs quick everyday arithmetic. They arrive at the single page with no account, no prior setup, and no expectation of anything beyond a working calculator. They may be on a phone at 375px, a tablet at 768px, or a desktop at 1280px, and they may be any age.
Primary goal. Get a correct arithmetic result quickly, on the same page, without navigating away or signing in.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which digits to enter, which operator applies, when the expression is complete enough to compute, and whether to clear and start over.
Interactions with other accepted participants. None. The calculator user is the only active human participant; there is no counterparty, recipient, or approver in the accepted behavior.
Observable success. The computed result appears in the result readout on the same page, matching the entered expression, with no navigation away from the page.
What makes this role distinct. The role is defined by direct manipulation of a single instrument — pressing keys and reading a display — rather than by any account, workflow, or shared state. Its entire responsibility is entry, computation, and reading the answer.
Failure and recovery. If the expression is incomplete or cannot be computed (for example a trailing operator with no second operand), no computed result is presented. The user either completes the expression with the missing operand and presses equals again, or presses clear to reset and starts a fresh calculation. Normal entry and computation resume immediately.
Reduced motion. With prefers-reduced-motion, the key press, digit flip, and pulse ring all collapse to instant state changes; the flow is otherwise identical and fully usable.
Muse and headline. Susan Kare — Charming clarity: a calculator as a crisp, pixel-honest instrument.
Mode. Light mode only.
Colour tokens (exact hex, by role)
| Role | Hex | Use |
|---|---|---|
| Background (paper) | #F4EFE4 | Page ground — warm paper |
| Surface (slab) | #FFFDF7 | Calculator slab, cream-white |
| Text / ink | #1E1B16 | All type; solid digit key tiles |
| Primary | #1E1B16 | Ink tiles and outlines |
| Accent (signal) | #E4572E | Equals key fill, operator glyphs, live result underline — never large fills |
| Muted | #8A8175 | Labels, expression line, secondary chrome |
Colour proportion. Roughly 70% paper, 20% ink tiles, 10% orange signal. No gradients, no glass, no blue anywhere.
Typography
clamp(40px, 9vw, 96px); result readout clamp(48px, 12vw, 112px) in VT323 tabular; expression line 15–18px; key labels 20–26px; micro-labels 11px; body 15–17px.Shape language
Spacing rhythm. 4px baseline; 8px gutters; everything aligns to a 4-column / 8px-gutter subgrid so keys and type share one rhythm.
Layout
Imagery. No photography. The visual content is the interface itself: pixel-drawn inline SVG icons on a 16×16 grid with hard edges and no anti-aliased curves — a tiny smiling calculator glyph, a pixel arrow, a pixel clear X. A legend row of four pixel icons (numbers, operators, clear, equals) on cream chips with 2px ink borders is the page's only illustration.
Avoid. Blue, indigo, or violet anywhere; gradients, glassmorphism, blurred drop shadows, floating blobs; Inter, Roboto, Arial, Helvetica, Poppins, or system-ui for any type; a centred headline + subtext + button hero; a grid of identical hover-lift cards; rounded pill buttons and springy bouncy easing; photography or stock imagery; any reference to planning documents, specs, or success criteria on the page.
Readability constraint. Headlines, wordmarks, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example clamp(...) with its mobile size) to fit, with no other element covering any part of them.
The instrument on paper. The first screen is dominated by the calculator itself as a physical object: a cream slab with a thick ink border and a hard offset shadow, sitting off-centre on warm paper. At 1280px the oversized VT323 wordmark "TOUGH / SINGLE" is stacked in two tight lines to its left, with a short plain-spoken line and the four-icon pixel legend row beneath it; at mobile the wordmark sits above the slab. The result readout is the largest type on the page — tabular VT323 at up to 112px, right-aligned — with the current expression in muted warm grey beneath it and a 2px burnt-orange rule under the result that doubles as the live state indicator.
Signature moves
No centred headline, no subtext-and-button stack, no gradient. The composition is an editorial left column of type and pixel icons against a right-hand instrument.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
prefers-reduced-motion, all transitions collapse to instant state changes and the pulse ring is removed; the page remains fully usable and every readable element stays whole.prefers-reduced-motion, all transitions collapse to instant state changes and the pulse ring is removed, while the page remains fully usable.
Quick everyday arithmetic, right here on one page.
Press AC anytime to start over.

Quick everyday arithmetic, right here on one page.
Press AC anytime to start over.
No comments yet. Be the first!