shiny-page is a simple calculator delivered as a single page. The product intent is narrow and complete: a person opens the page, enters numbers and arithmetic operators, sees the current input and the computed result on the page, and can clear the calculator to start a new calculation. There is no account, no saved history, and no second screen — the calculator is the page.
The audience is anyone who needs fast, unambiguous everyday arithmetic in a browser. The design language is a quiet precision instrument: a single graphite-and-aluminium calculator body floating on a warm near-white ground, with oversized light-weight tabular numerals, hairline dividers, and one restrained amber accent reserved for the equals key and the active operator. The interface is calm and trustworthy rather than playful; the numbers, not decoration, are the subject.
The product is one anonymous, publicly reachable page that contains the entire calculator. A visitor arrives with no identity, no prior state, and no setup step; the calculator is immediately usable. All arithmetic entry, evaluation, result display, and clearing happen on that single page.
The page is a first-party React surface served by the application. Because the calculator's working state is ephemeral — a current expression and a current result — no application-owned identity, sign-in, session continuity, or persistent storage is required or introduced. The provisioned backend and database exist as shared infrastructure but carry no calculator domain requirement: the arithmetic lifecycle is owned entirely by the page.
Current scope is exactly the single calculator page and its arithmetic behavior. Nothing beyond it — history, accounts, sharing, scientific functions, unit conversion — is part of this delivery. No future requirements have been stated.
Not applicable — no reference directive with content_source was supplied.
The single page of the product, anonymously reachable, owning the complete arithmetic lifecycle: expression entry, evaluation, result display, and clearing.
Information and state
clamp(56px, 12vw, 128px)), tracking −0.02em.0 and the pending expression line is empty or shows 0.0, empty expression).Primary actions
Supporting actions and controls
Domain entities
Component responsibilities
States
0, empty expression) is the empty state.FR-1 — Single-page calculator (explicit) As a Calculator User, I should find the entire calculator on one page, so that I can do arithmetic without navigating anywhere.
FR-2 — Enter numbers and operators (explicit) As a Calculator User, I should enter numbers and arithmetic operators, so that I can build the calculation I want.
FR-3 — See current input and computed result (explicit) As a Calculator User, I should see the current input and the computed result on the page, so that I always know what I have entered and what it evaluates to.
FR-4 — Evaluate with equals (explicit) As a Calculator User, I should press the equals key to compute the result of my expression.
FR-5 — Clear to start a new calculation (explicit) As a Calculator User, I should clear the calculator, so that I can start a fresh calculation.
0, empty expression) and any error indication is removed.FR-6 — Memory row controls (required_inference) As a Calculator User, I should use the memory keys (MC / MR / M+) beneath the keypad, so that I can store, recall, and accumulate a single value while calculating.
Product context. The Calculator User arrives at shiny-page with a small, concrete arithmetic task — a sum, a difference, a product, a quotient — and wants the answer quickly and without ceremony. They are anonymous: no account, no profile, no saved history. The page is the whole product, and the calculator is the whole page.
Primary goal. Enter numbers and operators, see the running input and the computed result, and clear the calculator to start again — all on one page, with no ambiguity about what has been entered or what it evaluates to.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which numbers and operators to enter; when the expression is complete enough to evaluate; whether to continue from a result or clear; whether to store or recall a value in memory.
Interactions with other participants. None. The Calculator User is the only active human actor; there is no counterparty, recipient, or approver. The calculator's evaluation is a system response to the user's own action, not a separate participant.
Observable success. The result area shows the correct computed value for the entered expression; the pending expression line matches what was entered; clear returns the page to 0 with an empty expression; an invalid expression produces a clear error indication that the user can recover from.
0, the pending expression line is empty, and the keypad and memory row are visible.0, the pending expression line is empty, and any error indication is removed.The creative direction is authoritative for this section.
Muse and headline. Quiet precision after Jony Ive: one perfectly lit calculator. The emotional register is calm, trustworthy, and tactile — a precision instrument on a desk, not a colourful consumer toy.
Mode. Light mode only.
Colour tokens (exact hex, by role)
| Role | Hex | Usage |
|---|---|---|
| Background | #F2F0EC | Warm aluminium off-white page ground (~70% of the composition) |
| Surface | #FAF9F6 | Calculator body surface |
| Text | #1C1D1F | Body text and numerals |
| Primary | #2B2C2E | Graphite keypad shell (~25% of the composition) |
| Accent | #C97B2E | Restrained amber — equals key, active operator, thin focus rule only (~5%) |
| Muted | #8A8B8E | Secondary labels and hairline dividers |
| Divider | #E4E1DB | Hairline 1px dividers |
The accent is never used as a decorative wash. No colour outside the warm-neutral-plus-amber system is permitted; blue and indigo are forbidden.
Typography
clamp(56px, 12vw, 128px).clamp(22px, 4vw, 32px).clamp(20px, 3.2vw, 28px).Shape language
#E4E1DB.Layout and spacing rhythm
Imagery style. No photography or illustration. The calculator itself is the subject; texture comes from 1px top-edge highlights and the soft ambient shadow.
Readability constraint. Headlines, wordmarks, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling with clamp(...) to fit; no element covers any part of them.
The first screen is not a marketing hero — it is the instrument. A warm aluminium-white ground (#F2F0EC) fills the viewport. Dead centre, a single graphite calculator body (#2B2C2E shell on #FAF9F6 surface, 28px radius) floats with one soft ambient shadow beneath it.
Its display well is recessed with a hairline aluminium frame, holding a huge light-weight tabular numeral (clamp(56px, 12vw, 128px), right-aligned, #1C1D1F) with the pending expression in 11px uppercase muted type above it. The keypad is a strict 4×5 grid of flat graphite keys with 1px lighter top-edge highlights; the equals key is the only amber surface (#C97B2E) in the frame. A tiny light-weight wordmark sits top-left, a single quiet line of copy top-right, and a hairline rule with three memory keys (MC / MR / M+) anchors the bottom — turning a functional divider into the page's only secondary navigation.
The composition is framed like a product plate, not a hero headline: no gradient, no blob, no centred headline-plus-button stack, no cards. Dominant element: the oversized result numeral inside the recessed display.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: layered_2d
Landing Hero Motion Brief
scale(0.98) with a brief amber flash on the active operator — and every result change is a 160ms crossfade of the digits. The outcome is always the same: the instrument responds to the hand and the number changes.0, 4×5 keypad with the amber equals key, hairline rule and memory row at the bottom.prefers-reduced-motion, all transitions collapse to instant state changes: the body appears without the reveal, key presses change state without scale, and result digits swap without crossfade.prefers-reduced-motion collapses all transitions to instant state changes while preserving full usability.frontend, backend, and database services as provisioned.
A quiet instrument for everyday arithmetic — plain numbers, plainly done.

A quiet instrument for everyday arithmetic — plain numbers, plainly done.
No comments yet. Be the first!