starry-calculator is a single-page calculator design. The product intent, taken directly from the authoritative requirement thread, is to build a simple single page design of calculator: one page, presented as a calculator, with a deliberately simple design. The interface itself is the product — there is no surrounding application, no navigation, and no secondary destinations.
The audience is anyone who needs quick arithmetic — students, desk workers, engineers, shoppers — served by a calm, trustworthy, mechanical instrument rather than a toy or a dashboard. The design language is a Braun-panel calculator in the spirit of Dieter Rams: strict grid, honest controls, warm-grey panel, one signal colour, and functional clarity.
The current delivery is a single custom page, Calculator, which is the anonymous public entry to the product and the only destination. It hosts number and operator entry with computed output, presented as a physical instrument panel.
Actors
Accepted behavior
Ownership
Narrow exclusions
The product is a single, self-contained calculator page. A visitor arrives anonymously, sees the calculator instrument, and uses it directly. There is no gate, no onboarding, and no protected state: nothing about the calculator requires the application to know who the user is, and no durable user-specific state is created, so no identity establishment or verification journey exists.
The current horizon contains only the one-page calculator design. Anything beyond a simple calculator — persistence, accounts, additional tools, or additional pages — is outside the current delivery boundary and is not part of this document's acceptance.
Not applicable. No reference directive declares a content_source; the only source material is the user requirement thread and the creative direction.
The sole page. It is the anonymous public entry and the complete product surface: a centred instrument panel on a warm page ground.
Information and state
STARRY CALCULATOR, with a 1px rule running to the right edge of the panel. It is a small label, not a hero headline.#F7F4EE, 16px radius) on the warmer page ground (#EDE8E0), max-width 420px, centred, with a 96px top margin at desktop and 32px at mobile.#8A857C) 12px history expression stacked above the result.#D94F1E) — equals — anchoring the bottom-right of the grid; one amber key (#F2B705) — clear; the active operator key holds a solid orange fill; a tiny orange status dot appears in the header strip.Primary actions
Supporting actions
Domain entities
Component responsibilities
States
prefers-reduced-motion the fade is removed and the panel appears instantly.FR-1 — Single-page calculator presentation (explicit) As a Calculator User, I should see the calculator presented as one simple single page, so that I can use it immediately without navigating anywhere.
FR-2 — Number entry (required_inference) As a Calculator User, I should enter digits using the number keys, so that I can build the number I want to calculate with.
FR-3 — Operator selection (required_inference) As a Calculator User, I should select an operator (add, subtract, multiply, divide), so that I can specify the arithmetic to perform.
FR-4 — Evaluation and computed result (required_inference) As a Calculator User, I should press equals to compute the result of my expression, so that I can see the answer.
FR-5 — Clear (required_inference) As a Calculator User, I should clear the current entry or expression, so that I can start over without reloading the page.
FR-6 — Simple, instrument-panel design (explicit) As a Calculator User, I should experience a simple design that reads as a physical instrument, so that the tool feels honest, precise, and dependable.
Product context. The Calculator User is anyone who needs quick arithmetic — a student checking homework, a desk worker totalling figures, an engineer sanity-checking a value, a shopper comparing prices. They arrive at the single page anonymously, with no account and no prior state, and expect the calculator to be immediately usable.
Primary goal. Perform a simple arithmetic calculation and read a clear, trustworthy result on one page.
Distinct accepted responsibilities.
Relevant inputs or decisions. Which digits to enter, which operator to apply, when to evaluate, and when to clear. The user decides when an expression is complete enough to evaluate.
Interactions with other accepted participants. None. The Calculator User is the sole active human persona; no other participant is affected by the calculation, and no state is transferred to or awaited from anyone else.
Observable success. The result appears right-aligned in tabular figures with the originating expression above it; the active operator is visibly marked; the clear key returns the calculator to a clean state; the whole instrument reads as a single, simple, dependable panel at every viewport.
prefers-reduced-motion).STARRY CALCULATOR eyebrow with its 1px rule, the instrument panel with its header strip, the display showing a zero result with no history expression, and the 4×5 key grid with the orange equals key at bottom-right and the amber clear key.Muse and headline. Dieter Rams — Less, but better arithmetic. A Braun-panel calculator: a single-purpose utility whose interface is the product, calm, trustworthy, and mechanical.
Mode. Light only. No dark mode.
Colour tokens
| Role | Hex | Usage |
|---|---|---|
| Background | #EDE8E0 | Warm off-white page ground |
| Surface | #F7F4EE | Slightly lighter instrument panel body |
| Text | #1C1B18 | Ink text for all readable copy and key labels |
| Primary | #D94F1E | Braun orange — equals key, active operator, one thin rule, status dot |
| Accent | #F2B705 | Amber — clear key, secondary signal |
| Muted | #8A857C | Secondary labels and display history |
Proportion: ~70% warm neutrals, ~20% ink, ~10% signal colour.
Typography
Shape language
Layout
Imagery
Avoid
Instrument-panel hero. The calculator is the hero, treated as a physical instrument rather than a web card. A large warm off-white rounded rectangle (#F7F4EE, 16px radius) sits centred on the warmer page ground (#EDE8E0), with a 2px ink rule separating the display from the key grid. The dominant element is the display result, set in Archivo at 64px desktop / 44px mobile, right-aligned, with a small muted history expression above it. Above the panel, a single line of small-caps ink text reads STARRY CALCULATOR with a 1px rule running to the right edge of the panel — no centred marketing headline, no gradient, no blue button. The equals key is the only solid orange block in the composition, anchoring the bottom-right of the grid; the clear key is the only amber block. The eye learns the machine instantly: one orange key, one amber key, an otherwise ink-and-cream grid.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
prefers-reduced-motion removes the 200ms panel fade and keeps only instant state changes; key presses and display updates occur without transition. The static arrangement remains fully usable and every label, number, and control stays whole.NFR-1 — Single page (explicit) The product must be presented as exactly one page. No additional pages, routes, or navigable destinations may exist. Rationale: the authoritative requirement states "a simple single page design of calculator" and the planning scope fixes an exact page count of one.
NFR-2 — Simplicity (explicit) The design must be simple. The interface is the product; no surrounding application, navigation, or secondary destinations. Rationale: explicit hard constraint in the authoritative source.
NFR-3 — Anonymous access (required_inference) The Calculator page is anonymously reachable with no identity, account, or session continuity. No durable user-specific state is created, so no identity establishment or verification is required. Rationale: the calculator performs stateless arithmetic; no commitment, decision, entitlement, or value transfer is bound to a participant.
NFR-4 — Responsive readability (explicit)
Readable text and controls stay whole at every viewport: headlines, wordmarks, labels, numbers, 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, and no other element covers any part of them. Rationale: explicit readability constraint in the creative direction.
NFR-5 — Reduced motion (explicit)
With prefers-reduced-motion, provide a usable static arrangement: the panel fade is removed and only instant state changes remain. Rationale: explicit accessibility constraint in the creative direction.
NFR-6 — Palette and typography fidelity (explicit) The palette, fonts, surfaces, tone, and layout specified in Sections 6–8 must be preserved. The generic indigo/blue-on-white SaaS template is forbidden. Rationale: explicit user design constraints and creative direction.
Assumptions
Constraints
#F7F4EE, 16px radius) containing the header strip, display block, 2px ink rule, and key grid.#8A857C) 12px line above the result showing the expression that produced it.#D94F1E) fill.#D94F1E) used only on the equals key, the active operator, one thin rule, and the status dot; amber (#F2B705) on the clear key.STARRY CALCULATOR label above the panel with a 1px rule running to the panel's right edge.

No comments yet. Be the first!