mint-pdf is a browser-based PDF utility. It exists so that anyone who needs to handle a PDF quickly — and privately — can do so without an account, without uploading a file to a server, and without a dashboard's noise. The product's intent is calm utility: the file is the object, the interface is only the room it sits in.
The audience is freelancers, students, small-office workers, and designers who arrive with a document that must be fixed in the next two minutes. The product's emotional register is drawn from Kenya Hara's language of emptiness: vast quiet space, paper-toned grounds, one calm object, whispering type, and almost no motion.
Scope note on source material. The uploaded file 09dcc294_web_development_.pdf failed to load and is explicitly excluded. It must not be used as a source of requirements or content. The product intent above is therefore derived from the accepted product commitment (create a product named mint-pdf), the accepted creative direction, and the accepted planning scope — not from the excluded document.
mint-pdf is delivered as a first-party web application with a single public entry surface. A visitor arriving at the root reaches an explanatory page that introduces the product and lets them open and use it directly. There is no account, no sign-in, no server-side file handling, and no navigation bar.
Actors. One active human actor: the Visitor. There are no other accepted human personas. No system, provider, or external service is an accepted actor in the current scope; all PDF processing runs inside the visitor's own browser.
Accepted behavior. The product is a browser-based PDF tool covering merge, split, compress, convert, and sign, presented as one centered paper sheet with a square hairline drop zone. Results appear below the sheet as a horizontal ruled table (filename · pages · size · action), never as a grid of cards.
Ownership. All accepted human-facing behavior is owned by the single first-party page Landing. There is no separate tool page, no results page, and no account surface.
Narrow exclusions. No server upload. No account or sign-in. No navigation menu. No enterprise, team, or billing context. The excluded PDF supplies no requirements or content.
Delivery. mint-pdf is a client-side web utility. Files selected by the visitor are read and processed in the browser; nothing is transmitted to a server. This is a hard, source-stated property of the product and is stated to the visitor in the hero metadata line.
Access ownership. The Landing page is publicly reachable with no access requirement. Because no accepted behavior creates a durable, resumable, actor-specific state, no commitment bound to a participant, or any value transfer that must remain bound to a correct participant, application-owned identity is not required and is not introduced. There is no sign-in, no account creation, and no protected destination.
Current vs. future. Everything described in this document is current. No future-horizon requirements were accepted. The five tool capabilities (merge, split, compress, convert, sign) are current product context; their detailed per-operation behavior beyond the accepted presentation is not further specified by the source and is not invented here.
Omitted. The only reference directive declares uses: ["content_source"] for 09dcc294_web_development_.pdf, and that directive's instruction is "Excluded: the file failed to load and its content must not be used." No verified factual content exists to inventory.
Information and state. The page presents, in order: the wordmark mint-pdf at top-left above a full-width hairline rule; a single centered display line Handle a PDF, quietly.; a muted metadata line No upload to a server. No account. Your file stays in your browser.; a square hairline drop zone; and, once files are added, a lifted paper sheet containing a ruled results table. The only navigation is a small How it works text link at the far right of the header rule.
Primary action. Add a PDF to the drop zone — by dropping a file onto it or by activating the or choose a file text link, which opens the browser's file picker.
Supporting actions. Activate How it works to reach the explanatory section. Activate a row's action in the results table. Remove a file from the list.
Domain entities.
Component responsibilities.
Drop a PDF here, and the or choose a file text link in deep ink-mint with a 1px underline. A single faint mint paper-edge tint (#7FB8A4 at 8% opacity) sits behind it as the one decorative gesture.How it works section — explanatory content separated from the tool by a full-column 1px rule in #E2DFD6.States.
Each requirement carries its provenance: explicit (source-stated), basic_default (accepted default), or required_inference (indispensable inferred mechanics).
FR-1 — Product identity As a Visitor, I should encounter a product named mint-pdf, so that I know what I am using.
explicitmint-pdf is set small at top-left above a full-width hairline rule.FR-2 — Public entry and product explanation As a Visitor, I should reach an explanatory page that introduces the product and lets me open and use it, so that I can begin without prior knowledge.
required_inferenceHow it works link is available at the far right of the header rule.How it works or goes directly to the drop zone.FR-3 — Privacy and no-account statement As a Visitor, I should be told that my file is not uploaded and that no account is needed, so that I can trust the tool with a sensitive document.
explicitNo upload to a server. No account. Your file stays in your browser.FR-4 — Add a PDF by dropping it As a Visitor, I should drop a PDF onto the drop zone, so that I can hand the file to the tool without navigating anywhere.
explicitFR-5 — Add a PDF by choosing a file
As a Visitor, I should activate or choose a file, so that I can add a PDF through the browser's file picker when dragging is inconvenient.
explicitor choose a file text link in deep ink-mint #2E6B5E with a 1px underline.FR-6 — Handle a PDF: merge, split, compress, convert, sign As a Visitor, I should apply a PDF operation — merge, split, compress, convert, or sign — to my file, so that the document is fixed in the way I need.
explicit (the five operations are the accepted product context for a browser-based PDF tool)FR-7 — Read results as a ruled table As a Visitor, I should see my files and their results as a horizontal ruled table, so that I can read filename, pages, size, and action at a glance.
explicitFR-8 — Row hover feedback As a Visitor, I should see a row respond when I hover it, so that I know it is interactive.
explicitFR-9 — Learn how it works
As a Visitor, I should open How it works, so that I can understand the tool before committing a file to it.
explicitHow it works text link at the far right of the header rule.FR-10 — Reduced-motion operation As a Visitor who prefers reduced motion, I should still be able to use the tool, so that the product is usable without animation.
explicitprefers-reduced-motion: reduce.FR-11 — Readable text and controls at every viewport As a Visitor on a phone, tablet, or desktop, I should be able to read every headline, label, number, and control without it being cut off or covered, so that the tool works at any size.
explicitfont-size: clamp(...) with its mobile size) to fit. No other element covers any part of them. The display line scales from 44px on mobile to 96px on desktop; the drop zone is 320px on desktop and full-column at 375px.Product context. The Visitor arrives at mint-pdf with a document that must be fixed in the next two minutes. They may be a freelancer sending an invoice, a student submitting an assignment, a small-office worker preparing a form, or a designer assembling a proof. They did not come to browse, configure, or sign up. They came with one file and one problem.
Primary goal. Get the PDF handled — merged, split, compressed, converted, or signed — and get out, without the file leaving their machine and without creating an account.
Distinct accepted responsibilities.
or choose a file link.How it works before committing a file.Relevant inputs and decisions. The file itself; the choice of operation; the decision to trust the tool based on the no-upload, no-account statement; the decision to retry or abandon a failed row.
Interactions with other accepted participants. None. The Visitor is the only accepted human actor. There is no counterparty, recipient, approver, or administrator in the current scope. All processing happens in the Visitor's own browser.
Observable success. The file row appears in the ruled table with correct filename, page count, and size; the progress ring completes and holds; the result is available to download; the Visitor never created an account and never waited on a server upload.
What makes this role's work different. The Visitor's defining constraint is privacy under mild time pressure. Every accepted behavior is shaped by it: no upload, no account, no navigation, no dashboard. The interface must lower the temperature rather than add noise, because the Visitor arrives slightly anxious about a file.
mint-pdf at top-left above a full-width hairline rule, a single centered display line Handle a PDF, quietly., and beneath it the muted line No upload to a server. No account. Your file stays in your browser.or choose a file and picks it from the browser's file picker.Failure and recovery. If the dropped or chosen file cannot be read, its row reports the failure in muted type and the row's action stays available. The Visitor either retries the action or removes the row. The page never blocks and the drop zone stays usable, so recovery is a single gesture. If a job fails mid-run, the same applies: the failure is reported on the row, and the Visitor retries or removes it.
Reduced motion. With prefers-reduced-motion: reduce, the sheet reveal and row slide become instant; only the progress ring keeps a functional stepwise update so the Visitor can still read job progress.
How it works text link at the far right of the header rule.Muse: Kenya Hara. Headline idea: emptiness as content — the file is the object, the interface is only the room it sits in.
| Role | Hex | Use |
|---|---|---|
| Background | #F4F2EC | Unbleached paper ground; carries ~80% of every screen |
| Surface | #FBFAF6 | The single lifted sheet — drop zone, file row, result card |
| Text | #23231F | Warm charcoal, never pure black, so the page reads as paper |
| Primary | #2E6B5E | Deep ink-mint; the primary action and the active progress rule only |
| Accent | #7FB8A4 | Pale companion; hover fills, thin rules, paper-edge tint |
| Muted | #8C887C | Metadata and labels |
| Rule | #E2DFD6 | Full-column 1px section rules |
No gradients. No shadows beyond a 1px hairline and a single 2% warm tint under a lifted sheet. Blue, indigo, and violet are forbidden anywhere; the only chromatic notes are #2E6B5E and #7FB8A4.
#8C887C.clamp() mobile floors: display 44px mobile → 96px desktop; section head 28px → 40px; body 16px → 17px; label 11px → 12px.Square and near-square proportions everywhere. Cards are 1:1 or 3:4. Buttons are rectangles with 2px radius — not pills. The drop zone is a square with 1px hairline rules on all four sides and small corner ticks rather than a dashed border. No blobs, no large radii, no glass. The only curved element is the thin circular progress ring around the file glyph.
Single centered column, max 720px for reading and 1080px for the tool panel, with enormous vertical margins (clamp(96px, …, 200px) between sections) and a persistent 24px page margin. The header is not a bar: it is the wordmark mint-pdf set small at top-left with a hairline rule running the full width beneath it, and nothing else except the small How it works text link at the far right of that rule. Sections are separated by a single 1px rule in #E2DFD6 that spans the column, not the viewport. The tool is one centered paper sheet with the drop zone inside; results appear below it as a horizontal ruled table (filename · pages · size · action), never as a grid of cards.
No photography, no illustration of people, no 3D. The only imagery is the interface itself plus two small drawn artefacts in Hara's language: a single hairline paper-plane glyph for upload, drawn as a 1.5px stroke outline and not filled, and a thin ruled "page" diagram showing a document's pages as evenly spaced horizontal lines. A single faint mint paper-edge tint (#7FB8A4 at 8% opacity) sits behind the drop zone as the one decorative gesture. Everything else is type, rules, and empty space.
The first screen is a near-empty sheet of paper.
On the #F4F2EC ground, a single centered line of display type — Handle a PDF, quietly. — set in Zen Kaku Gothic New Light at clamp(44px, 8vw, 96px), tracking 0.02em, in #23231F, occupying roughly a third of the viewport width on desktop and wrapping to three lines on mobile.
Beneath it, 40px of empty space, then a 12px line of muted metadata in #8C887C: No upload to a server. No account. Your file stays in your browser.
Beneath that, the square drop zone: a 1px hairline square, 320px on desktop and full-column at 375px, with a centered hairline paper-plane glyph and the words Drop a PDF here in 15px #23231F, and a single text link or choose a file in deep ink-mint #2E6B5E with a 1px underline.
The wordmark mint-pdf sits top-left above a full-width hairline rule. There is no button, no gradient, no blob, no nav menu — the composition is a sheet of paper with one sentence and one square, and the empty space is the design.
This concept recomposes only accepted content, states, and controls. It introduces no new behavior, page, or destination.
Interaction Model: Static (direction) Motion Tempo: still Hero Dimensionality: flat
Focal subject. The square hairline drop zone with its centered 1.5px paper-plane glyph, sitting on the #F4F2EC paper ground beneath the single display sentence.
Input → transformation → outcome thesis. The visitor's file arrives (drop or file picker) → the paper sheet fades in over 600ms with a 12px rise and the file row slides in from 8px over 240ms → the row settles into the ruled table with its filename, pages, and size, and the thin circular progress ring in #2E6B5E draws its arc around the file's glyph until the job completes, holding a full mint ring for 400ms before fading. Every element of this thesis is accepted behavior; nothing is added.
Motion vocabulary. Almost none, by design. One purposeful reveal per screen: the paper sheet fades in over 600ms with a 12px rise and cubic-bezier(0.22, 0.61, 0.36, 1). File rows slide in from 8px with a 240ms ease-out as they are added. The progress ring draws its arc continuously while a job runs; on completion it holds a full mint ring for 400ms then fades. Hover on a row raises its background to #FBFAF6 with a 160ms transition — no lift, no shadow, no scale. No bouncy, springy, or celebratory motion.
Composed first frame. Paper ground #F4F2EC filling the viewport. Wordmark mint-pdf small at top-left, a full-width 1px hairline rule beneath it, and the small How it works text link at the far right of that rule. Centered below: Handle a PDF, quietly. in Light 300 at up to 96px. 40px of empty space. The muted metadata line. The square hairline drop zone with its paper-plane glyph, Drop a PDF here, and the underlined or choose a file link in ink-mint. Nothing else.
Reduced-motion state. With prefers-reduced-motion: reduce, all fades become instant and the sheet reveal and row slide are removed entirely. Only the progress ring keeps a functional stepwise update so job progress remains legible. The composed first frame is unchanged, and every control remains reachable and readable.
NFR-1 — Client-side processing. PDF files selected by the visitor are read and processed in the browser. No file is uploaded to a server. Provenance: explicit. Rationale: the product's stated privacy guarantee — "No upload to a server. No account. Your file stays in your browser." — is a hard product property, not a preference.
NFR-2 — No account or identity. The product requires no account, no sign-in, and no identity establishment. The Landing page is publicly reachable with no access requirement. Provenance: explicit. Rationale: stated in the hero metadata line and consistent with the accepted access contract.
NFR-3 — Responsive readability. At 375px, 768px, and 1280px, headlines, the wordmark, labels, numbers, and the table's text and controls stay entirely inside the viewport and their container, wrapping or scaling to fit. No other element covers any part of them. Provenance: explicit. Rationale: the tool must be usable on the phone a freelancer or student actually has.
NFR-4 — Reduced-motion support. With prefers-reduced-motion: reduce, all fades become instant and only the progress ring keeps a functional stepwise update. Provenance: explicit. Rationale: the product's only animation must remain functional, not decorative, for visitors who suppress motion.
NFR-5 — Motion restraint. The product's only animation is the progress ring and the 600ms sheet reveal, plus the 240ms row slide and the 160ms hover transition. No bouncy, springy, or celebratory motion. Provenance: explicit. Rationale: the creative direction's tempo is still; motion is functional only.
NFR-6 — Palette and type fidelity. The palette, type family, weights, tracking, and scale specified in Section 6 are fixed. Blue, indigo, and violet are excluded. Bold and uppercase display headlines are excluded. Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Poppins, and system-ui are excluded for headings and body. Provenance: explicit. Rationale: the creative direction is authoritative for this section and the generic indigo/blue-on-white SaaS template is forbidden for this project.
NFR-7 — No server-side file handling. Because no file leaves the browser, no server-side storage, queue, or file-processing service is required for the accepted behavior. Provenance: required_inference. Rationale: directly entailed by NFR-1; it prevents the introduction of infrastructure the product's privacy guarantee forbids.
Constraints (binding).
09dcc294_web_development_.pdf failed to load and is excluded. It must not be used as a source of requirements or content. Provenance: explicit.How it works text link at the far right of that rule as the only navigation. Provenance: explicit.Assumptions (narrow, labeled).
How it works section explains the tool's privacy guarantee and its five operations. Its exact copy is not specified by the source. [Default — not specified by user]Visitor — The single accepted active human actor. Arrives at the public entry, adds a PDF, selects an operation, reads the result, and leaves. No account, no identity, no recurring role.
Drop zone — The square hairline element on the Landing page with 1px rules on all four sides and small corner ticks, a centered 1.5px paper-plane glyph, the words Drop a PDF here, and the or choose a file text link. The visitor's entry point for adding a file.
Paper sheet — The single lifted surface (#FBFAF6, 1px hairline, 2% warm tint) that the file list lives inside. The product's only "card."
Ruled table — The horizontal results presentation with columns filename · pages · size · action. Never a grid of cards.
File row — One entry in the ruled table, representing a file the visitor has added, with its filename, page count, size, processing status, and available action.
Job — The in-browser processing operation applied to a file row, with a running state and a completed state.
Progress ring — The thin circular ring in #2E6B5E drawn around a file's glyph. The product's only motion: it draws its arc continuously while a job runs and holds a full mint ring for 400ms on completion.
Paper ground — The #F4F2EC background that carries roughly 80% of every screen.
Ink-mint — The deep signal colour #2E6B5E, used only for the primary action and the active progress rule.
Paper-edge tint — The single faint decorative gesture: #7FB8A4 at 8% opacity behind the drop zone.
Section rule — The full-column 1px rule in #E2DFD6 separating sections, with 96–200px of empty space above and below, so the page reads as a sequence of printed spreads.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!