cosmic-calculator is a simple calculator delivered as a single-page design. The product intent is narrow and explicit: one page, one instrument, arithmetic performed and read on that page. The user asked for a simple single page design of the calculator — no multi-page application, no account system, no navigation, no secondary surfaces.
The audience is anyone who needs to do arithmetic. The name "cosmic-calculator" sets the emotional register: the calculator is presented as a luminous instrument on a dark cosmic stage rather than a beige keypad, with the computation itself driving a generative particle field. Simplicity is delivered as one calm black stage with one luminous subject — not as a stripped neutral panel.
cosmic-calculator is a single full-viewport page containing a working calculator. The page presents:
There is exactly one human actor: the Calculator User. There is no sign-in, no account, no saved history across sessions, and no second page, modal, or scrollable section. The page is publicly reachable and stateless between visits.
Delivery ownership. The calculator is first-party custom UI, delivered as one page. All arithmetic, keypad interaction, readout, expression line, and the particle field are owned by that single page. There is no backend service, no provider surface, and no external destination involved in the accepted behavior.
Access ownership. The page is public and requires no identity. The accepted workflow — enter numbers and operations, read the result — creates no durable relationship, obligation, entitlement, value transfer, or commitment that must remain bound to a particular person, and no actor-specific state must be privately owned or resumed. Application-owned identity is therefore neither required nor inferred. No sign-in, sign-up, invitation, provisioning, or account-management capability exists.
Current boundary. Current scope is exactly: one page, a working calculator on it, and the visual and motion treatment described in this document.
Future boundary. Nothing beyond the current scope is accepted. No history persistence, no scientific functions, no unit conversion, no sharing, no theming, and no additional pages are part of this generation.
The single page of the product. It is the public entry surface and the only destination. It is a full-viewport, non-scrolling layout split into two zones: an open black stage on the left (62%) and a full-height graphite keypad plate on the right (38%), flush to the viewport edge.
Information and state
128 × 47. Displayed as a single small muted line in the lower-left of the particle field.=. Displayed at the top of the keypad plate, right-aligned, bleeding left over the particle field.DEG or RAD.Primary actions
.) — begin or extend the fractional part of the current entry.+, −, ×, ÷) — commit the current entry as an operand, set the pending operator, and highlight that operator key in magenta.=) — evaluate the pending expression and replace the readout with the result in magenta.CLEAR) — reset the current entry, pending operator, and expression line to their initial empty state.Supporting actions
±) — negate the current entry or result.MEMORY) — store the current value to memory and recall it into the current entry.Domain entities
DEG or RAD, a display-level setting for the instrument.Component responsibilities
MEMORY, HISTORY, DEG/RAD at Space Grotesk Medium 11px, uppercase, tracking 0.16em, muted grey.Keypad layout (4-column grid, top to bottom)
MEMORY / CLEAR / ± / ÷7 / 8 / 9 / ×4 / 5 / 6 / −1 / 2 / 3 / +0 / . / tall cyan = spanning two rowsStates
0) immediately; the particle field initializes asynchronously and fades in as it becomes ready. The calculator is usable before the field finishes initializing.0, the expression line is blank, no operator is highlighted, and the memory indicator is off.CLEAR returns the page to the empty state from any state, including error. Pressing a digit after an error begins a fresh entry. No error state is terminal.FR-1 — Single-page calculator delivery (explicit) As a Calculator User, I should get the calculator as a single page, so that everything I need is on one screen.
FR-2 — Enter digits and decimal values (explicit) As a Calculator User, I should enter digits and a decimal point, so that I can build the numbers I want to compute with.
0–9 or the . key.. when the current entry already contains a decimal point does not add a second one; the entry is unchanged.=.FR-3 — Select an arithmetic operation (explicit) As a Calculator User, I should choose an arithmetic operation, so that the calculator knows how to combine my numbers.
+, −, ×, or ÷.FR-4 — Compute and display the result (explicit) As a Calculator User, I should press equals and see the computed result, so that I get the answer to my expression.
=.CLEAR to start over, or press a digit to begin a fresh entry, or press an operator to continue computing from the result.FR-5 — Clear the calculator (explicit) As a Calculator User, I should clear the calculator, so that I can start a new calculation from a known state.
CLEAR.0; no operator key remains highlighted.CLEAR works identically from the empty state, a mid-expression state, a result state, and an error state.FR-6 — Toggle the sign of the current value (explicit) As a Calculator User, I should toggle the sign of the current value, so that I can enter negative numbers and negate results.
±.± with no current entry leaves the readout unchanged.=.FR-7 — Store and recall a value in memory (explicit) As a Calculator User, I should store a value to memory and recall it, so that I can reuse a number without retyping it.
MEMORY key.FR-8 — See the expression in progress (explicit) As a Calculator User, I should see the expression I am building, so that I can verify what I am about to compute.
128 × 47.= and the line retains the evaluated expression.FR-9 — Distinguish inputs from the answer (explicit) As a Calculator User, I should be able to tell at a glance which number is the answer, so that I read the right value.
FR-10 — Live generative particle field (explicit) As a Calculator User, I should see a living particle field that responds to my arithmetic, so that the computation itself is the visual.
FR-11 — Result digit transition (explicit) As a Calculator User, I should see the result change clearly, so that I notice when the answer updates.
FR-12 — Reduced-motion behavior (required_inference) As a Calculator User who prefers reduced motion, I should still be able to use the calculator without continuous animation, so that the instrument does not cause discomfort.
Product context. The Calculator User arrives at cosmic-calculator with a number problem and no interest in setup. There is no onboarding, no account, and no configuration step between opening the page and doing arithmetic. The page is the whole product.
Primary goal. Enter an arithmetic expression and read a correct result, on one screen, without leaving it.
Distinct accepted responsibilities. The Calculator User is the sole human actor and holds every human-facing responsibility in the product: entering digits and decimal values, selecting an arithmetic operation, committing the expression with =, reading the result, clearing the calculator to start over, toggling the sign of a value, and storing and recalling a value in memory. No other human participant exists, and no responsibility is delegated to a second person.
Relevant inputs and decisions. The user decides what to compute and in what order; the inputs are keypresses on the keypad plate. The user's decisions are: which digits to enter, which operator to apply, when to commit with =, and whether to clear, negate, or use memory. The user reads two outputs to verify their work — the expression line showing what they have built, and the readout showing the current entry or the computed answer.
Interactions with other accepted participants. None. The Calculator User is the only accepted human participant; there is no counterparty, recipient, approver, or beneficiary. The particle field is a visual response to the user's own input, not a participant.
Observable success. The readout shows the correct value for the entered expression, in magenta, at display size, right-aligned to the keypad's right edge; the expression line shows the expression that produced it; and the particle field's colour composition reflects the expression that was entered. Success is visible on the same page where the work was done, with no navigation and no confirmation step.
What makes this role's work different. The Calculator User's work is a tight, self-contained loop of input and immediate readback with no handoff, no waiting on another person, and no durable state. The role is defined by the speed and legibility of that loop — the answer must be unmistakable at a glance, and the expression that produced it must remain visible — rather than by any coordination, approval, or record-keeping responsibility.
0, and the expression line blank.1, 2, 8. Each digit appends to the current entry; the readout shows 128 in cyan; the expression line shows 128; each keypress injects a small cyan particle burst into the field.×. The current entry 128 is committed as the left operand, × becomes the pending operator and its key highlights in magenta, and the expression line shows 128 ×. A magenta particle burst enters the field.4 and 7. The readout shows 47 in cyan and the expression line shows 128 × 47.=. The expression is evaluated. The readout replaces the entry with 6,016, rendered in magenta at display size, right-aligned and bleeding slightly over the particle field. The expression line retains 128 × 47. The digits morph with a 240ms upward slide-and-fade.6,016 is visible in magenta, distinct in colour and size from the cyan inputs, with the expression that produced it still readable in the lower-left of the stage.CLEAR to begin a new calculation, or presses an operator key to continue computing from 6,016.8 ÷ 0, and presses =.8 ÷ 0, so the user can see exactly what failed. The pending operator state is not corrupted.CLEAR. The readout returns to 0, the expression line clears, and no operator key remains highlighted. Alternatively, the user presses a digit key, which begins a fresh entry and replaces the error indication.= to get a valid result. No error state is terminal and no navigation is required to escape it.6,016, shown in magenta in the readout.MEMORY key to store the value. The memory indicator reflects that a value is held.CLEAR and begins a new expression, entering a digit and an operator.MEMORY key to recall. The stored value 6,016 is placed into the current entry and the readout updates.= to complete the new expression.47, shown in the readout.±. The value is negated and the readout updates immediately to -47.± with no current entry, the readout is left unchanged.= to continue.=. Keypress particle bursts are suppressed and the result digit transition is suppressed, so the readout updates instantly.=, CLEAR, ±, and memory — works exactly as in Flow 1.Muse and headline. Refik Anadol — cosmic arithmetic as a data sculpture: a calculator that computes inside a living particle field. The computation is the artwork; the calculator's own arithmetic drives the visual.
Mode. Dark mode only. The page is a dark cosmic stage, never a light utility panel.
Color tokens
| Role | Hex | Usage |
|---|---|---|
| Background | #05060B | Near-black cosmic ground covering the whole page |
| Surface | #0D1018 | Graphite keypad plate |
| Text | #F2F4FA | Cold near-white for all text |
| Primary | #7DE3FF | Cyan — digits, equals key, operators, particle field's dominant hue |
| Accent | #FF6BD6 | Magenta — reserved for the currently-pressed operator and the result value |
| Muted | #6B7488 | Labels, memory keys, expression history line |
| Hairline | rgba(255,255,255,0.12) | 1px luminous dividers between keys and around the keypad plate |
Proportion. 80% black, 12% cyan, 6% graphite, 2% magenta. Restraint makes the magenta land.
Typography
MEMORY, HISTORY, DEG/RAD).Shape language. Rectilinear and instrument-like. Keys are 1px-hairline rectangles with a 4px radius, never pills. The keypad is one continuous bordered plate divided by hairlines rather than a grid of floating buttons. The particle field is the only organic form on the page — everything built by hand is hard-edged so the generative motion reads as the single soft, living element.
Spacing rhythm. The keypad plate is a continuous grid; keys are separated by 1px hairlines rather than gaps, so the plate reads as one instrument face. The readout sits at the top of the keypad plate with generous vertical breathing room above the first key row. The expression line sits in the lower-left corner of the stage, well clear of the readout.
Imagery style. No photography, no illustration, no icons beyond typographic operators. The single image is the generative particle field itself — a WebGL point cloud of 20–40k particles, softly bloomed, drifting in a slow curl-noise flow, tinted cyan with magenta highlights on interaction. It is derived from the calculator's own input stream, so the visual is literally the data.
Explicitly avoided. White or near-white background; blue-indigo primaries (#0057FF, #2563EB, #4F46E5, #6366F1, #7C3AED) anywhere in the UI; Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Poppins, or system-ui for any text; gradient-blob hero or centred headline + subtext + button composition; grids of identical hover-lift cards; rounded pill buttons, drop-shadowed keypad tiles, or skeuomorphic calculator chrome; confetti, bouncy easing, or particle effects that fire on hover rather than on computation; photography, stock people, or decorative illustration; any second page, modal, or scrollable section.
The instrument and the nebula.
The first screen is a full-bleed near-black stage (#05060B). There is no centred headline, no subtext, no blue button, no gradient blob. The dominant element is the particle field itself, at viewport scale, drifting like a slow nebula across the left two-thirds of the viewport.
Over it, bottom-left, a single small muted line reads

last result
128 × 47

last result
128 × 47
No comments yet. Be the first!