Foundations · Surfaces

Document reader

The long-form reading surface — the HTML/prose companion to DocumentViewer. A paper-like document column carries a display masthead, version & effective-date meta, and a prose body (headings, lists, a callout aside) tuned to a 62ch measure. Alongside it a sticky table-of-contents rail scroll-spies the section you're reading; a thin accent fill tracks reading progress.

Paper column · masthead + meta · prose body · TOC rail
Rescuer Network · Policy

Data Access Agreement

Version 2 Effective Jun 30, 2026 6 min read

01Purpose & scope#

The Rescuer Network roster exists so fosters, transport drivers, and intake coordinators can move a dog from a shelter to a safe home without re-keying the same details a dozen times. Access to that shared record is a privilege extended to vetted volunteers, and this agreement sets the terms on which it is granted.

It applies the moment you are added to a working team, and stays in force for as long as you can see another rescuer's contact details or a dog's intake file.

02What you can see#

Depending on your team role, the roster may surface:

  • Contact details for other rescuers — name, phone, and service area.
  • Intake records for dogs in your region — breed, age estimate, and medical flags.
  • Placements — the foster household's first name and cross-streets, and the transport leg.
  • Veterinary notes attached to an animal's care timeline.

None of this is public. Treat every field as if the person it describes were reading over your shoulder.

03How you must handle it#

By accepting, you agree to:

  1. Use the data only to coordinate rescue, rehoming, or care for a specific animal.
  2. Keep it inside the app or an approved working-team channel.
  3. Delete any local copy — screenshot, export, or note — once the placement closes.
  4. Report a suspected leak to your team lead within 24 hours.

Breach example

Pasting the roster into a public WhatsApp group to "ask around" exposes every rescuer's phone number. That is a reportable breach — even with good intent.

04Prohibited uses#

  • Contacting a rescuer for anything unrelated to an active case.
  • Selling, publishing, or sharing the roster outside the network.
  • Using a foster's address to show up unannounced.

05Breach & revocation#

Access is revoked immediately on a confirmed breach, and may be suspended during an investigation. Serious or repeated misuse ends your standing in the network and, where a law is broken, is referred to the relevant authority.

Questions? Reach the data steward at ops@savethedogs.io before you act, not after.

Signed acknowledgement required — you must accept this version before you can join a working team.

How you must handle it is pinned .is-active to show the scroll-spied rail state (accent left-bar + accent-soft wash); hover any other TOC link (or tab in) for the live hover / focus ring. The masthead's Open PDF hands off to the pdf.js DocumentViewer.

reader column
The paper surface — base surface tone (#12151a) at --radius-lg with an elev-card lift, a fixed height and its own overflow-y so the body scrolls under the pinned progress edge.
masthead · meta
Display-font title over a meta row: a Version pill (accent-soft), effective date, reading time, and a byline avatar. Right-aligned actions hand off to the PDF viewer / print.
prose typography
Fraunces headings + Mulish body at a 62ch measure; numbered <ol> and accent-dot <ul>, an inline .mark critical-fact highlight, and hover-revealed heading anchors.
callout aside
A note block set off from the prose on the raised surface-2 floor with a --warn left-rule — the reader's equivalent of a highlighted overlay.
TOC rail · scroll-spy
A sticky rail over a --border guide-rule; the active section paints an accent 2px left-bar + accent-soft wash (.is-active / aria-current), others fade in on :hover.
reading progress
A 3px accent fill on a surface-3 track, pinned to the document's top edge, advancing as the body scrolls (mirrored by the rail's "% read").

Source: src/app/design-system/surfaces/document/page.tsx + DocumentDemo.tsx (the pdf.js DocumentViewer/PdfThumbnail surface, SSR-safe via next/dynamic({ ssr:false })). This card renders the taxonomy's paired Prose / Article "long-form reading surface" (surface/taxonomy.ts) — the HTML reader the viewer's Open PDF hands off from.