heroic-start is a simple calculator delivered as a single-page design. The product intent is narrow and complete: a person opens one page, enters numbers and operators, and reads the computed result on that same page. There is no account, no saved history, no multi-page navigation, and no adjacent productivity suite.
The audience is broad — anyone who needs quick arithmetic — so the interface must stay instantly legible while the surrounding atmosphere carries the product's personality. The visual language is "data made physical, arithmetic made luminous": a near-black generative particle field behind a solid graphite calculator slab, with the result rendered as a luminous data readout.
The explicit hard constraint from the requester is that the design must be a single page. This document therefore describes exactly one page, one human role, and one core arithmetic lifecycle.
heroic-start is a single-page web calculator. The page presents a calculator module — a display and a keypad — inside a full-viewport dark canvas. A visitor enters an expression using the keypad, the display shows the expression as it is entered, and pressing equals computes and shows the result. All of this happens on one page with no navigation.
Current delivery consists of:
Actors: one human role, Calculator User. There are no system, provider, or external actors beyond the application's own frontend and backend.
Accepted behavior: entering digits and operators, clearing, deleting, and computing a result, all on the single page.
Narrow exclusions: no accounts, no authentication, no saved history, no memory keys, no scientific functions beyond the four basic operators and decimal input, no multi-page navigation, no sharing or export.
Removed from scope
heroic-start is a first-party, publicly reachable single-page application. The page is anonymously accessible: no identity is established, no session is owned, and no durable actor-specific state exists. Because the accepted calculator lifecycle is ephemeral — an expression is entered and a result is read within one visit — application-owned identity is neither required nor introduced.
The frontend owns all human interaction: keypad input, expression display, result display, and the visual particle field. The backend owns arithmetic evaluation only, exposed as an API the page calls when the user requests a result. The database is provisioned but carries no accepted product data.
Everything described in this document is current. No future-horizon features are accepted.
The single page of heroic-start. It is both the public entry and the calculator itself, kept cohesive by the explicit single-page constraint.
clamp(48px, 8vw, 96px).0–9 to append digits to the expression.. to append a decimal point.+, −, ×, ÷ to append an operator.= to evaluate the expression and show the result.C (clear) to reset the expression and result to empty.\xe2\x8c\xab (delete) to remove the last entered character.#08080C) WebGL particle field; 1200 points drifting through a Perlin-noise field; digits spawn clusters, operators tint the field toward coral (#FF5C3A); a faint topographic contour line traces beneath the result from the last computed value.#12121A slab, 28px outer radius, right 6 columns, vertically centered, max-width 640px.#F2F0EB with a soft coral outer glow; shows the live expression and, after =, the result. Separated from the keypad by a 1px hairline rule in #6E6A78 at 30% opacity.= key is the only solid coral element on the page.0 in #6E6A78).=, the result appears in the display with a 300ms ease-out count-up and the contour line redraws from the computed value.C clears the error and expression; pressing \xe2\x8c\xab edits the expression and clears the error state.FR-1 — Enter digits and operators As a Calculator User I should press digit and operator keys to build an arithmetic expression on the single page, so that I can compose the calculation I want.
FR-2 — Compute a result
As a Calculator User I should press = to evaluate my expression, so that I see the correct arithmetic result on the same page.
= → the page sends the expression to the backend evaluation endpoint → the backend returns the numeric result → the display shows the result with a 300ms ease-out count-up and the contour line redraws. Access: anonymous. Failure: malformed expression or division by zero returns an error shown in the display with the expression preserved. Continuation: the user may edit and re-evaluate, or clear.FR-3 — Clear the calculator
As a Calculator User I should press C to reset the expression and result, so that I can start a new calculation.
C → expression and result reset to empty → display shows the muted placeholder. Access: anonymous. Failure: none. Continuation: the user begins a new expression.C, the display shows the empty placeholder and no prior expression or result remains.FR-4 — Delete the last character
As a Calculator User I should press \xe2\x8c\xab to remove the last entered character, so that I can correct a mistake without clearing everything.
\xe2\x8c\xab → the last character of the expression is removed → the display updates; any error state is cleared. Access: anonymous. Failure: pressing \xe2\x8c\xab on an empty expression leaves it empty. Continuation: the user continues editing.FR-5 — Read the live expression and result As a Calculator User I should see my current expression and, after evaluation, the result in a large luminous display, so that I can verify what I entered and read the outcome.
= it shows the result. Access: anonymous. Failure: error state shown in the display. Continuation: the user reads and continues.FR-6 — Generative particle field derived from the expression As a Calculator User I should see the background particle field respond to my input, so that the page feels like a living instrument rather than a spreadsheet.
prefers-reduced-motion it freezes into a static gradient and the keypress pulse is removed.=, correcting mistakes with \xe2\x8c\xab, and resetting with C. They are the only human participant; there is no counterparty, recipient, or approver.0 placeholder.+, −, ×, or ÷). The operator is appended to the expression and the particle field's hue shifts toward coral.=. The page sends the expression to the backend evaluation endpoint. The backend returns the numeric result. The display shows the result in 72px tabular numerals with a coral glow, counting up over 300ms with an ease-out; the contour line redraws beneath the result from the computed value.C to clear and start a new calculation, or press \xe2\x8c\xab to edit the expression and evaluate again.\xe2\x8c\xab. The last character is removed and the display updates. Any error state is cleared.= to evaluate the corrected expression and reads the result.= on a malformed expression (for example a trailing operator) or one that divides by zero.\xe2\x8c\xab to remove the offending character, or C to clear entirely.= to read the result.prefers-reduced-motion enabled.= as in Flow 1. The result appears without count-up.The creative direction is authoritative for this section.
#08080C#12121A#F2F0EB#E8E4DA#FF5C3A#6E6A78clamp(48px, 8vw, 96px).#6E6A78 at 30% opacity separate the display from the keypad. The particle field is the only organic form.The public entry is a full-bleed near-black canvas carrying a slow-drifting particle field. A single oversized headline — "Numbers, made luminous" — sits flush-left at clamp(48px, 8vw, 96px), occupying the left 6 columns. The calculator module is a solid #12121A slab with a 28px radius, offset to the right 6 columns, vertically centered. Its display shows a live result in 72px tabular numerals with a coral glow; the keypad is a 4×5 grid of graphite keys with hairline dividers. The equals key is the only solid coral element on the page — a single hot rectangle in an otherwise monochrome dark field. A topographic contour line traces beneath the result, drawn from the last computed value, as a quiet data-sculpture gesture.
This concept recomposes only accepted content, states, and controls: the headline, the calculator shell, the display, the keypad, and the particle field derived from the calculator's own data.
Interaction Model: Animated Motion Tempo: cinematic Hero Dimensionality: webgl
= causes the result to count up over 300ms with an ease-out while the contour line redraws from the computed value. The field is derived entirely from the calculator's own data.0 placeholder in the display, particle field drifting at rest.A single crafted real-time WebGL scene: a particle field of 1200 points drifting through a Perlin-noise field on a near-black ground, with coral tinting near the result display and a topographic contour line tracing the last computed value. The scene shows the product's defining state — numbers flowing into a result — and reacts to the calculator's own data. With prefers-reduced-motion, the scene renders as a static gradient.
prefers-reduced-motion, the particle field freezes into a static gradient, the keypress pulse is removed, and the result appears without count-up.frontend, backend, and database services.+, −, ×, ÷), decimal input, clear, and delete. No scientific functions, memory keys, or parentheses grouping are accepted.
heroic-start · arithmetic instrument

heroic-start · arithmetic instrument
No comments yet. Be the first!