pearl-calculator is a simple calculator delivered as a single-page design. The product intent is narrow and complete: one quiet surface where a person can perform everyday arithmetic — entering numbers and operators, seeing the running expression and the result, and clearing or correcting input to start a new calculation.
The audience is anyone who needs quick, everyday arithmetic in a browser. There is no account, no saved history, no scientific function set, and no second page. The calculator is the product, and the page is the calculator.
The visual and emotional register is drawn from Kenya Hara's aesthetics of white and emptiness: a paper-white field, one softly lit object, whispering type, and restraint in place of decoration. The tool should feel like an object on a desk rather than a dashboard.
pearl-calculator is a first-party, browser-delivered single-page calculator. The one accepted page, Calculator, is the anonymous public entry and the entire product surface. A visitor arrives, the calculator is already present and usable, and every calculator interaction — expression entry, expression and result display, clearing and correcting input — happens on that page.
There is no application-owned identity, no sign-in, no session continuity requirement, and no protected destination. Nothing about the calculator requires a person to be recognized across visits, because no calculation state is persisted or resumed. Access is open and anonymous by design.
All arithmetic evaluation and display state live in the browser on the single page. The provisioned backend and database exist as shared application infrastructure and are not required by any accepted calculator behavior; no calculator capability depends on a server round trip, and no calculation data is stored. The delivery boundary is therefore: one page, client-side arithmetic, no persistence, no accounts.
Nothing in this document describes a future release. The accepted scope is the current and complete product.
Not applicable — no reference directive supplies a content_source.
The single page of the product, and the anonymous public entry. It presents the calculator as one object in emptiness on a paper-white ground.
Information and state
Primary actions
Supporting actions and content
Domain entities
Component responsibilities
States
FR-1 — Single-page calculator delivery (explicit) As a Calculator user, I should get the whole calculator on one page, so that I can do arithmetic without navigating anywhere.
FR-2 — Digit entry (explicit) As a Calculator user, I should press digit keys 0–9 to build a number, so that I can enter the operands of my calculation.
FR-3 — Decimal entry (required_inference) As a Calculator user, I should enter a decimal point to build a fractional operand, so that everyday arithmetic with decimals is possible.
FR-4 — Operator selection and active-operator indication (explicit) As a Calculator user, I should choose an operator (÷ × − +) and see which one is active, so that I know what operation is pending.
FR-5 — Expression display (explicit) As a Calculator user, I should see the running expression above the result, so that I can confirm what I have entered before evaluating it.
FR-6 — Result display (explicit) As a Calculator user, I should see the result as the dominant numeral on the page, so that the answer is immediately readable.
FR-7 — Evaluation with equals (explicit) As a Calculator user, I should press equals to evaluate my expression, so that I get the answer.
FR-8 — Clear and correct input (explicit) As a Calculator user, I should clear the calculator to reset it, so that I can start a new calculation or recover from a mistake.
FR-9 — Key press feedback (explicit) As a Calculator user, I should feel a quiet acknowledgement when I press a key, so that the object feels tactile without being bouncy.
FR-10 — Anonymous open access (required_inference) As a Calculator user, I should use the calculator immediately without signing in, so that quick arithmetic is never gated.
Product context. A person who needs quick, everyday arithmetic — a sum, a difference, a product, a division — and wants it without ceremony. They arrive at pearl-calculator on a browser, likely for a single short task, and expect the tool to be ready the moment the page appears.
Primary goal. Get a correct answer to a simple arithmetic expression with as little friction as possible, and be able to correct or restart without thinking about it.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which numbers and operators to enter; whether the expression as displayed matches their intent; whether to evaluate, continue, or clear.
Interactions with other accepted participants. None. The calculator is a single-person, single-page tool with no counterparty, recipient, or shared state; the only other actor is the browser evaluating arithmetic locally.
Observable success. The result numeral shows the correct answer, the expression line confirms what was evaluated, and the person can clear and start again in one press.
What makes this role distinct. The work is entirely local, ephemeral, and anonymous: there is no account, no history to manage, and no collaboration. The persona's whole responsibility is entry, confirmation, evaluation, and reset on one surface.
Failure and recovery. If the user mistypes an operand, they press clear and re-enter, or continue appending to correct the current operand. If they choose the wrong operator before entering the next operand, choosing another operator replaces the pending one and moves the active marking.
The creative direction is authoritative for this section. Muse: Kenya Hara — "Emptiness as the interface." Headline idea: a pearl-white calculator after Hara, where the drama is the amount of white around one precise object.
Mode. Light only.
Colour tokens (exact hex, by role)
#F4F1EA — covers roughly 70% of the viewport.#FBF9F4 — one object, slightly lighter than the ground.#D9D4C8 — 1px borders and the display/keypad divider.#2B2A27 — all numerals and labels; also the primary colour.#B4552F — unbleached terracotta, reserved only for the equals key and the active operator (underline and numeral).#8C877C — the expression line and secondary labels.Typography
0.18em.clamp(44px, 9vw, 88px), Light 300, tabular figures, tracking -0.02em, right-aligned.Shape language. Square proportions and thin rules. The calculator is a tall rounded-square block with radius 4px only — almost sharp — with a 1px hairline border. Keys are flat squares with 1px rules, no shadows, no pills. One thin horizontal rule separates display from keypad. Nothing decorative that is not a boundary.
Spacing rhythm. Centered single column on a vast paper ground; at least 15vw of untouched margin on desktop; the block offset to roughly 60/40 of the viewport rather than centered. Keypad is a strict 4×5 grid with even gutters. At 375px the block fills the width minus 24px margins; at 768px the block is 420px wide; at 1280px the block is 440px wide, floating in white space.
Imagery style. No photography, no illustration, no icons beyond typographic operators (÷ × − + =). Texture comes only from the paper-white ground and hairline rules; a single faint unbleached paper grain may be applied at 3% opacity to the background. The calculator is the only object in the frame.
Avoided. Gradient blobs, glassmorphism or frosted panels; rounded pill buttons and drop shadows on keys; blue or indigo accents of any kind; Inter, Roboto, Arial, Helvetica or system-ui; decorative illustration, icons or stock photography; a centred marketing headline with subtext and a CTA button above the calculator; bouncy or springy key animations; dense dashboard chrome, history panels or scientific-function clutter.
The first screen is not a marketing hero: it is the calculator as a single object in emptiness.
A paper-white field (#F4F1EA) fills the viewport. The calculator block (#FBF9F4, 1px #D9D4C8 hairline, 4px radius) sits slightly right of optical center at roughly 60/40 of the viewport, about 440px wide at desktop, surrounded by at least 15vw of untouched paper-white. Inside the block, the oversized result numeral — up to 88px, Light 300, ink #2B2A27, tabular figures, right-aligned — is the dominant element, with the running expression set small and muted directly above it. A thin 1px rule runs the full width of the block between display and keypad, echoing MUJI dividers. A tiny tracked wordmark "PEARL / CALCULATOR" sits above the block at 13px uppercase with 0.18em tracking, and one line of muted helper copy — "Everyday arithmetic, quietly." — sits below.
The terracotta accent (#B4552F) appears only as the equals key and the active operator's underline and numeral — colour as a quiet signal, not a filled button. There is no gradient, no button stack, no illustration. The drama is the amount of white around one precise object, and the number is the hero of the page.
Interaction Model: Static (direction) Motion Tempo: still Hero Dimensionality: flat
Landing Hero Motion Brief
prefers-reduced-motion, all transitions become instant and the load fade is removed; the composed first frame is identical and fully usable.clamp() as needed; no element covers any readable text or control.prefers-reduced-motion removes the load fade and makes all transitions instant while preserving a fully usable static arrangement.#2B2A27 on #FBF9F4 and muted #8C877C on #FBF9F4 are used for readable text; the terracotta accent is never the sole carrier of meaning beyond the active-operator underline, which is paired with the operator glyph itself.frontend, backend, database).No additional services, queues, or workers are needed for the accepted scope.
#F4F1EA background field that fills most of the viewport.#D9D4C8 boundary used for the block edge, key rules, and the display/keypad divider.
PearlCalculator
Everyday arithmetic, quietly.

PearlCalculator
Everyday arithmetic, quietly.
No comments yet. Be the first!