TITLE: Brutal Calc MK.049 — concrete, steel and a paper tape PROMPT: Build a single self-contained HTML page containing a fully working brutalist calculator, centred on a concrete background (#d9d6cf) made of a 1px 5px repeating grid in both axes plus a soft white top bloom. The body is a max-width 420px slab with a 3px #1a1a1a border and a hard 10px offset black shadow. Header row: a 900-weight system-ui wordmark "BRUTAL CALC" over a tracked monospace "MK.049 · concrete series", and on the right a hazard-stripe power switch built from a repeating-linear-gradient of #1a1a1a and #ffd400 with a concrete knob that slides on transform, plus a pulsing #e8531f LED that goes grey when off. Display: near-black panel with a 1px scanline overlay, a monospace label row, a right-aligned monospace expression line in grey, and a huge clamp(28px,10vw,46px) amber #ffd400 dot-matrix value line with layered text-shadows for glow. Keypad: 4x5 CSS grid of chunky keys at height clamp(50px,12.5vw,68px), background #e7e4dd, 2px black border, hard 4px black shadow, system-ui 800; operators #ffd400, function keys #7a7f87 with white text, equals #e8531f; pressing translates the key 4px down-right on a steps(2) transition so the shadow vanishes. Below: a dashed-rule paper tape with a monospace "history" toggle button, a #f7f6f1 receipt strip in Courier New with dotted-line rows that feed in from above with a steps(6) transform, and a collapsible history list. Footer shows "no eval · parser v1" and a sound toggle. The calculator is genuinely functional: tokens are collected into an expression string, then a hand-written recursive-descent parser (expr → term → factor, with unary minus and parentheses) evaluates it — never eval. Live preview shows the running result while typing. C clears, CE removes the last number, the backspace key deletes a character, ± toggles the sign of the trailing number, and = commits the result to the tape and history. Full keyboard support maps digits, operators, Enter, Backspace, Escape and Delete to the same press path with a visible key flash. Every key press synthesises a short square-wave click through a WebAudio context created lazily inside the first gesture and wrapped in try/catch. The power switch disables input, dims the display and collapses the keypad with a transform. Respect prefers-reduced-motion. DESCRIPTION: A machine you can hear and feel. The calculator sits like a piece of poured concrete on a gridded surface, its keys rising off the face on hard black shadows and slamming flat when pressed. The display is a dot-matrix amber window with faint scanlines, previewing the answer as you type, while a receipt strip below keeps a printed record of every calculation in Courier New. A hazard-stripe switch cuts the power and the whole keypad visibly sinks. Nothing is rounded, nothing is subtle: it is a tool with a bad attitude and a working brain. TECHNIQUES: hand-written recursive-descent expression parser with unary minus (no eval); live preview evaluation on every keystroke; CSS grid keypad with hard offset box-shadows and steps() press transforms; dot-matrix display via layered text-shadows plus a repeating-linear-gradient scanline overlay; hazard-stripe repeating-gradient power switch with transform-driven knob; WebAudio square-wave click created and resumed inside the first user gesture, guarded by try/catch; receipt rows injected via innerHTML with a steps() feed-in transform; collapsible history via max-height transition; full keyboard mapping with visual key flash; reduced-motion media query. INTERACTION: Click or tap any key to build an expression — the display previews the result live. Press = to commit it to the paper tape and history list. Use C to clear everything, CE to clear just the current number, the backspace key to delete one character, and ± to flip the sign of the last number. Type on the keyboard for the same behaviour with the matching key flashing. Toggle the power switch to disable input and watch the keypad collapse; toggle history to open the record; toggle sound to mute the mechanical clicks.