Tenants
Every QI organisation on the platform. 631 active exchanges · $934.2M under qualified escrow.| Organisation | Tier | Plan | Exchanges | Under escrow | Health | Onboarding | |
|---|---|---|---|---|---|---|---|
|
org_meridian · 8 offices
|
QI Hub | Scale | 412 1,180 YTD |
$684.2M | Healthy | Live since Mar 2025 |
|
|
org_harborpoint · 2 offices
|
Standard | Growth | 96 271 YTD |
$118.9M | Degraded 14 signing envelopes queued |
Live since Sep 2025 |
|
|
org_kestrel · 1 office
|
Standard | Growth | 74 205 YTD |
$91.4M | Healthy | Live since Jan 2026 |
|
|
org_aldercreek · 1 office
|
Standard | Core | 31 88 YTD |
$27.6M | At risk webhook signature failing since Aug 17 |
Live since Apr 2026 |
|
|
org_vantageridge · 1 office
|
Standard | Core | 18 40 YTD |
$12.1M | Healthy | Pilot day 22 of 60 |
|
|
org_copperline · 3 offices
|
Standard | Core | — | — | Not yet live | Provisioning 3 of 6 steps · escrow accounts pending |
|
|
org_sablefork · 1 office
|
Standard | Core | 0 12 YTD |
$0 | Suspended non-payment, day 39 |
Read-only export rights retained |
Suspension never touches escrow. A suspended tenant loses platform access and the
ability to open new exchanges. Client funds stay in that tenant's qualified escrow accounts, statutory
45/180-day clocks keep running, and the tenant keeps the right to export its records. Nothing on this
screen can debit, net against, or freeze a qualified escrow account.
Meridian National Exchange Services
org_meridian · QI Hub tier · 8 offices · 214 seats · US-east residency
Healthy
| Office | Active | Under escrow | Seats | Officer coverage |
|---|---|---|---|---|
| Denver | 104 | $191.4M | 38 | 4 approvers |
| Phoenix | 87 | $142.0M | 31 | 3 approvers |
| Sacramento | 71 | $118.7M | 29 | 3 approvers |
| Boise | 52 | $88.3M | 24 | 2 approvers |
| 4 smaller offices | 98 | $143.8M | 92 | 9 approvers |
Boise has two fund approvers. Four-eyes needs at least two people who can
approve and are not the proposer; two is the floor, and a single absence stalls disbursements.
Surfaced here as a platform observation — the staffing decision belongs to the tenant, and
Platform Operations cannot approve in their place.
What "NPI read" means here. The
platform_admin_read_sensitive policy
grants Platform Operations SELECT only on profiles_sensitive, and that table
holds a Social Security number as last-4 plus a hash — never the full number. No UPDATE and no
DELETE grant exists for this role, so no editable control over these fields may ever be rendered.
Each read is a separate audit-log entry naming the operator, the subject, and the stated reason.
PlanScalerenews Mar 31, 2027
Seats in use198 / 225
Workflow runs · 7d27,390
Documents stored812 GB
Single sign-onEnforcedSCIM provisioning active
Data residencyUS-eastno cross-region replica
Tenant isolation
0 cross-tenant rowsnightly probe, 43 tables, 03:12 UTC
NPI reads by platform
2 in 30 daysSELECT last-4 + hash only
Open support tickets31 view-as session in 30d
Primary contactsR. Pell, org adminsecurity: T. Bottenberg · billing: L. Marchetti
Platform health
Availability against a 99.9% objective, and every dependency an exchange leans on. 1 degraded Sev-2 openDependencies
30-day error budget: 17m 18s consumed of 43m 12s · 60% remaining
60%
| Dependency | State | 30-day availability | Now | Exchanger-visible | |
|---|---|---|---|---|---|
| Application API Cloudflare Workers · 3 regions |
Healthy | 99.96% | p95 214 ms | — | |
| Primary database Postgres · row-level security |
Healthy | 99.99% | p95 18 ms | — | |
| Vectr workflow runtime durable execution · 24 workflows |
Healthy | 99.94% | 3,912 runs / 24h | — | |
| E-signature provider third party · envelope create + callback |
Degraded | 98.71% | 14% of creates → 502 | Yes — signing delayed | |
| Identity verification provider third party · KYC + document check |
Healthy | 99.97% | p95 4.1 s | — | |
| Bank verification provider third party · account ownership |
Healthy | 99.95% | maintenance Sat 02:00 UTC | — | |
| Document storage object store · versioned, encrypted |
Healthy | 100.00% | p95 96 ms | — |
Sev-2 · open 2h 05m
INC-2026-0043
E-signature provider returning 502 on envelope create — opened 09:19 UTC by the availability watcher.
Envelope-create success, last 24 hours
11:00 yesterday09:12 onsetnow
Envelopes queued for retry23
Tenants affected3Harbor Point, Kestrel, Meridian
Next retry11:42 UTCexponential backoff, 6 attempts left
Envelopes lost0
There is no manual workaround, by design. An envelope cannot be completed on a
signer's behalf: the eSign Act and UETA require the signer's own intent, so no "sign for them"
path exists for a coordinator, a QI officer, or Platform Operations. The only remedy is retry.
4 exchanges have a 45-day identification deadline inside 72 hours and an
unsigned designation notice in the queue. Their coordinators have been notified in the QI console.
A statutory deadline is not extended by an outage — the clock is tracked, never waived, and any
adjustment would be a four-eyes override with a written legal basis in the tenant's console.
Workflow runs & dead letters
Vectr, last 24 hours · dead-letter alarm threshold is 10
7 in dead letter
| Workflow | Runs | Failed | Retrying | Dead letter | p95 |
|---|---|---|---|---|---|
| deadline-watcher-45 | 1,204 | 0 | 0 | 0 | 1.2 s |
| deadline-watcher-180 | 1,204 | 0 | 0 | 0 | 1.1 s |
| esign-orchestration | 288 | 23 | 24 | 0 | 8.4 s |
| document-extraction | 612 | 3 | 0 | 3 | 21.7 s |
| ofac-screening | 431 | 0 | 0 | 0 | 2.9 s |
| audit-forward | 38,410 | 4 | 0 | 4 | 180 ms |
| irs-8824-prefill | 46 | 0 | 0 | 0 | 3.3 s |
Dead letters are inspected, never silently dropped. The 3 extraction failures are
scanned PDFs with no text layer; the 4 audit-forward failures were retried and reconciled at 03:12 —
the source rows were written to the platform's own audit table first, so no state change went unlogged.
Webhook delivery
Last 24 hours, both directions
Inbound from providers4,118 / 4,118100% signature-verified
Outbound to tenants2,904 / 2,9084 rejected by the receiver
Median delivery312 ms
4 signature rejections, all from Alder Creek 1031. Their endpoint is still
verifying against the secret rotated on Aug 17. This is a failed verification, not an accepted
unsigned payload — nothing was delivered unverified. Notify the tenant to pick up the new secret.
Scheduled job lag
Against each job's own schedule
Nightly database backupOn time02:10 UTC · restore tested Aug 3
Audit-log reconciliationOn time03:12 UTC · 0 divergence
Cross-tenant isolation probeOn time03:12 UTC · 0 rows
Retention purgeNext Sep 1monthly
Dead-letter retry sweep18 min latequeued behind the e-sign retries
Certificate rotation checkOn time04:00 UTC
Releases & feature flags
What is deployed where, and which tenant sees which behaviour.Deployed builds
Migrations are forward-only — a rollback reverts code, never schema or data
| Environment | Build | Commit | Deployed | By | |
|---|---|---|---|---|---|
| Production | v2026.8.19+4 | 9f3c2a1 | Today 08:41 UTC | CI · promoted from staging | |
| Staging | v2026.8.20 | 2504a6c | Today 10:02 UTC | CI · merge to staging | |
| Dev | v2026.8.20+7 | c81de44 | Today 11:05 UTC | CI · merge to dev |
Flag matrix
9 of 11 flags · 5 of 7 tenants — Copperline and Sable Fork are not live and inherit defaults. Changes take effect within 60 seconds and are audited with a reason.
| Flag | Meridian | Harbor Pt | Kestrel | Alder Ck | Vantage | Rollout | |
|---|---|---|---|---|---|---|---|
|
workspace.deadline_tracks_v2
Dual 45/180 clock tracks on the exchange workspace
|
On | On | On | On | On | General | |
|
crm.bidirectional_sync
Two-way contact and file sync with a tenant's CRM
|
On | On | Off | Off | Off | Pilot · 2 tenants | |
|
neela.voice_intake
Voice intake for a new exchange, with transcript retention
|
25% | Off | Off | Off | Off | Staged · ring 2 | |
|
reports.builder_v2
Rebuilt report designer
|
Off | Off | Off | Off | Off | Internal only | |
|
marketplace.tombstones
Public offering tombstones behind accreditation gating
|
On | Held off | On | On | On | General | |
|
escrow.ledger_preview
Read-only ledger view — no write path exists behind this flag
|
Off | Off | Off | Off | Off | Internal only | |
|
compliance.four_eyes_disbursement
Approver must not be the proposer on any fund movement
|
Always on — not flaggable | Control | |||||
|
compliance.kyc_gate
Identity and sanctions screening before anything else on a file
|
Always on — not flaggable | Control | |||||
|
audit.write
Every state change on an exchange, document, or fund movement is logged
|
Always on — not flaggable | Control | |||||
A flag may change what the product does, never whether a control runs. Four-eyes on
disbursements, the KYC gate, and audit writing are not represented as flags that happen to be on — there
is no configuration surface that can turn them off, for any tenant, by any role, including this one.
Locked rows are shown rather than hidden so the absence of a switch is visible.
Staged rollout · neela.voice_intake
Advance one ring at a time; each advance needs a named owner and a stated reason
Ring 1 · Open1031 staff org
Ring 2 · 25% of Meridian coordinators · day 6
Ring 3 · General
Ring 2 exit criteria: 14 days, zero intake-abandonment regression, and a signed
tenant sign-off from Meridian. Day 6 of 14 · abandonment 4.1% against a 4.6% baseline · sign-off not
yet requested. Advance to ring 3 stays available but records that criteria were unmet.
Security posture
Read-only. Identity policy is set in the identity provider and flows back here. No controls are editable on this pageMulti-factor coverage by role
Enforced as an identity-provider policy, not in application code
| Role | Users | Enrolled | Policy | Gap |
|---|---|---|---|---|
| Platform operator | 6 | 6 | Hardware key required | None |
| QI officer (fund approver) | 41 | 41 | Required | None |
| QI coordinator | 128 | 121 | Required | 7 enrolling |
| Org admin | 12 | 12 | Required | None |
| Exchanger | 3,914 | 2,802 | Offered, step-up on sensitive views | By design |
The 7 unenrolled coordinators cannot propose or approve a fund movement until enrolment
completes — the policy blocks the session, so there is no partially-privileged state to police here.
Exchangers are never a fund-movement path at all: no exchanger role can direct money out of escrow,
which is what keeps constructive receipt off the table.
Notable authentication events
Last 24 hours · dispositions recorded by the on-call operator
| Event | Role · tenant | When | Disposition |
|---|---|---|---|
| Sign-in from two countries in 40 minutes | QI coordinator · Harbor Point | 04:12 | Sessions revoked user notified · SEC-2026-118 open |
| 6 failed sign-ins, then success | Org admin · Kestrel | Yesterday 22:41 | Closed known device, password-manager retry |
| New device, new country | QI officer · Meridian | Yesterday 19:03 | Closed step-up satisfied with hardware key |
| Directory deprovision burst — 5 users | SCIM · Meridian | 08:02 | Closed matches an offboarding batch |
Platform Operations can revoke a session and open a case. It cannot reset a tenant user's credential,
change their role, or enrol a factor on their behalf — those are identity-provider actions performed by
the tenant's own administrator.
Secret rotation
Owner-assigned, with a due date per secret class
1 overdue
| Secret | Scope | Rotated | Due | Status |
|---|---|---|---|---|
| Database service-role key | Platform | Feb 14, 2026 | Aug 14, 2026 | 5 days overdue owner: platform on-call · SEC-2026-115 |
| Field-encryption key | Platform | Jan 9, 2026 | Jan 9, 2027 | On schedule annual · re-wrap required, not re-encrypt |
| Workflow webhook signing key | Platform | May 2, 2026 | Nov 2, 2026 | On schedule |
| Tenant webhook secret | Per tenant | Aug 17, 2026 | Feb 17, 2027 | Alder Creek not picked up causes the 4 signature rejections above |
| E-signature provider key | Per tenant | varies | varies | All current |
Dependency vulnerabilities
Continuous scanning across app, API and workflow packages
Critical0
High2both dev-only, not reachable in production · patch PR open
Medium14
Low31
Secret scanningCleanfull history, last run 08:44
Assessment status
Stated exactly as it is — no attestation is claimed that does not exist
Continuous application scanningActive
Independent penetration testNot completedscoped; no clean target environment agreed
SOC 2 Type IIIn progressevidence collection only · no report issued
CIS Controls v8.1 self-assessmentCompleteself-reported, not third-party verified
Vendor risk reviews9 of 11 current2 renewals due Oct
Everything on this card is self-reported platform status. Where a tenant needs an attestation for
their own examiners, the honest answer today is that none has been issued.
Compliance operations
Evidence, audit-log integrity, subject requests, retention. 1 control overdue4 subject requests openSOC 2 evidence collection
75 controls across five trust services criteria
| Control family | Controls | Current | Due ≤30d | Overdue | Collection |
|---|---|---|---|---|---|
| CC1 · Control environment | 9 | 9 | 0 | 0 | Manual |
| CC2 · Communication | 6 | 6 | 0 | 0 | Manual |
| CC3 · Risk assessment | 5 | 4 | 1 | 0 | Manual |
| CC6 · Logical access | 22 | 20 | 1 | 1 | Automated |
| CC7 · Operations monitoring | 14 | 14 | 0 | 0 | Automated |
| CC8 · Change management | 8 | 7 | 1 | 0 | Automated |
| A1 · Availability | 6 | 6 | 0 | 0 | Automated |
| C1 · Confidentiality | 5 | 5 | 0 | 0 | Manual |
Overdue: CC6.2 quarterly access review for Q3 is assembled but unsigned. The reviewer
is the tenant-side org admin for each org, not Platform Operations — this console can chase, and cannot
sign in their place.
Audit-log integrity
Two independent stores, reconciled nightly
Entries written · 24h38,410
Forwarded to the independent store38,4104 retried, all reconciled
Divergence0last reconciliation 03:12 UTC
Deletes or updates observed0the role has no UPDATE or DELETE grant
Oldest retained entryMar 4, 20257-year retention, never purged by job
Say what this does and does not prove. Reconciliation detects a row that went
missing or was never forwarded. It does not prove a row was never edited in place —
that is what per-entry hash chaining covers. This card claims
tamper-evidence by divergence, not tamper-proof.
Consumer privacy requests
CCPA / CPRA · 45 days to respond, one 45-day extension available
| Request | Type | Tenant | Received | Due | Status |
|---|---|---|---|---|---|
| DSAR-0091 | Access | Harbor Point | Aug 4 | Sep 18 | Package assembled awaiting tenant review |
| DSAR-0092 | Deletion | Kestrel | Aug 11 | Sep 25 | Partly refused retention obligation — see note |
| DSAR-0093 | Correction | Meridian | Aug 16 | Sep 30 | In progress |
| DSAR-0094 | Access | Alder Creek | Aug 18 | Oct 2 | Verifying requester no disclosure before identity is proven |
Subjects are shown by request ID only. Resolving a request to a person happens inside
the tenant's console by someone with a relationship to that file; this queue tracks the clock, not the
identity. DSAR-0092 is a lawful partial refusal: exchange records carry a seven-year
books-and-records obligation and §1031 substantiation value, so marketing data was deleted while the
transaction record moved to restricted processing, with the basis stated in the response letter.
Retention jobs
Purge runs monthly; legal holds always win
| Record class | Policy | Next run | Held |
|---|---|---|---|
| Exchange transaction records | 7 years after close | Sep 1 | 12 |
| Document originals | 7 years after close | Sep 1 | 12 |
| Identity & screening artifacts | 5 years after relationship end | Sep 1 | 0 |
| Audit log | 7 years, append-only | Never purged by job | — |
| Session & auth telemetry | 13 months | Sep 1 | 0 |
| Support session records | 7 years, append-only | Never purged by job | — |
A retention job never deletes a record under legal hold, and never deletes an audit entry — including
the audit entries a deletion itself produces.
Support & view-as
Entering a tenant's account is a named, time-boxed, fully attributed act — never an ambient privilege. 1 session activeActive session
Started 11:06 UTC · ticket SUP-4471 · read-only scope
Time-boxed server-side
Support session in progress.
Dana Whitmore of Open1031 Platform Operations is viewing this account as Sandra Osman.
Read-only. Every action is recorded against Dana Whitmore.
18:42 left
This band is the specimen of what renders inside the tenant's app — full width, above all chrome, on
every page, for the whole session. It is not dismissible, and it is shown to the impersonated user and
to any colleague who opens a record touched during the session.
OperatorDana WhitmorePlatform Operations · hardware key
Tenant · user contextMeridian NationalSandra Osman, QI officer
Reason"Documents tab renders empty for this officer on two files; reproducing before escalating to engineering."
AuthorisationTenant-approvedorg admin approved in-app at 11:05
ScopeRead-onlyno write path enabled
Expires11:36 UTC30 minutes, hard stop
Actions so far9 reads · 1 blocked
Audit shape — every request inside a session, success or refusal.
Constant on every row: actor=ops:d.whitmore ·
session=imp_7c41 · on_behalf_of=user:8f21…
11:06:02 session.start tenant=org_meridian ttl=30m
11:06:04 session.approved by=orgadmin:r.pell
11:07:41 exchange.view EX-2026-000203 outcome=success
11:09:18 document.list EX-2026-000203 outcome=success
11:12:55 disbursement.propose_impersonation_blocked
outcome=failure
11:14:03 profiles_sensitive.read fields=ssn_last4
outcome=denied_by_policy
Attribution never borrows the tenant's identity. The actor on every row is the
operator. The impersonated user appears as on_behalf_of, never as the
author. A tenant reading their own history can tell exactly which rows were theirs.
One blocked attempt this session, at 11:12. Opening Funds → Propose disbursement was
refused by policy and written to the log as
disbursement.propose_impersonation_blocked with
outcome=failure. A blocked attempt is not a silent no-op: it is evidence, it
is visible to the tenant, and it is reviewed.
Request a new session
Nothing here is optional — a session cannot start without all four
Must resolve to an open ticket raised by this tenant. Free text is rejected.
Shown verbatim to the tenant, in the banner tooltip and in their audit export. Minimum 40 characters.
Duration *
Authorisation *
Scope
Disabled until a ticket, a reason of 40+ characters and a user context are present.
Withheld inside every session
Regardless of scope, tenant approval, or incident severity
Propose a disbursement
Refused and logged as
disbursement.propose_impersonation_blockedEnforced in code
Approve a disbursement
Four-eyes counts two tenant officers. An operator is neither of them.
Enforced in code
Change a 45- or 180-day deadline
Override requests are refused and logged as
deadline_override.request_impersonation_blockedEnforced in code
Sign, countersign, or send for signature
A signature needs the signer's own intent. No product surface offers signing on
another person's behalf, so there is nothing to withhold in a session — the capability does not
exist anywhere.
Clear identity or sanctions screening
KYC is the first gate on every file and only a tenant reviewer dispositions it.
Nobody clears it for someone else, and nobody skips it.
Read or export personal financial identifiers
Social Security and date-of-birth fields render masked for the duration.
Build honestly or not at all. The first three locks exist in the API today and refuse
the call server-side. Session-scoped NPI masking applies for the duration of the session, so an
impersonating operator never inherits the target user's view of an exchanger's last-4 SSN.
Session ledger
Last 30 days · exported to every affected tenant monthly, unprompted
| Session | Tenant | Operator | Mode | Length | Outcome |
|---|---|---|---|---|---|
| imp_7c41 | Meridian | D. Whitmore | Tenant-approved | running | 1 blocked 9 reads · SUP-4471 |
| imp_7b90 | Harbor Point | M. Osei | Tenant-approved | 12 m | Clean 14 reads · SUP-4402 |
| imp_7b41 | Alder Creek | D. Whitmore | Break-glass | 9 m | Reviewed 2nd approver: E. Ford · Sev-1 INC-2026-0038 |
| imp_7a88 | Kestrel | M. Osei | Tenant-approved | 4 m | Clean 3 reads · SUP-4390 |
| imp_7a12 | Meridian | J. Rask | Refused by tenant | — | Never started org admin declined · reason recorded |
A refused request is kept in the ledger. Deleting the record of a request that a tenant turned down
would be the single easiest way to make this whole model untrustworthy.
Billing & usage
Platform revenue, per tenant. Entirely separate from client escrow. 1 past due$35,700 monthly recurring| Tenant | Plan | Seats | Exchanges MTD | Storage | Workflow runs | Overage | Monthly | Invoice |
|---|---|---|---|---|---|---|---|---|
| Meridian National | Scale | 198 / 225 | 96 / 150 | 812 GB | 27,390 | $0 | $18,400 | Paid Aug 1 |
| Harbor Point | Growth | 44 / 50 | 31 / 40 | 190 GB | 9,840 | $0 | $6,200 | Paid Aug 1 |
| Kestrel | Growth | 29 / 40 | 24 / 40 | 141 GB | 7,110 | $0 | $6,200 | Paid Aug 1 |
| Alder Creek | Core override to 15/mo until Sep 30 | 12 / 15 | 14 / 15 | 61 GB | 2,930 | $99 | $2,450 | Due Sep 1 storage overage · 11 GB over plan |
| Vantage Ridge | Core | 7 / 15 | 6 / 12 | 22 GB | 1,120 | $0 | $0 | Pilot — not billed |
| Copperline | Core | 0 / 15 | — | — | — | $0 | $0 | Starts at go-live |
| Sable Fork | Core | 9 / 15 | 0 / 12 | 38 GB | 0 | $0 | $2,450 | 39 days past due access suspended Aug 10 |
This screen cannot touch a qualified escrow account. Platform fees are charged to the
tenant's own commercial payment method. They are never netted against, debited from, or reconciled with
client funds — that separation is what a qualified intermediary's escrow arrangement requires, and no
billing action here has a code path into it. Suspension for non-payment removes platform access only:
escrow balances stand, statutory clocks keep running, and the tenant keeps its export rights.
Build contract — platform operations, tier 0
1 · The negative claim is the product. Platform Operations runs the software and holds no
fiduciary authority. Every withheld capability is refused at the API and at the database — never by hiding a
control. An operator who calls the endpoint directly gets the same refusal, and the refusal is written to the
audit log with outcome=failure. If a capability can only be withheld in the UI, it is not
withheld.2 · View-as is a named act, not a privilege. A session requires four things and starts without none of them: a resolvable support ticket, a reason in the operator's own words, an explicit duration with a 60-minute ceiling, and an authorisation — tenant approval by default, break-glass only for a Sev-1 and only with a second Open1031 approver who is not the requester. Expiry is enforced server-side; an expired token is refused even with the tab still open. Extension does not exist — start a new session with a new reason.
3 · Attribution never borrows the tenant's identity. Every row inside a session records
actor as the operator and on_behalf_of as the tenant user. The tenant user is never
the author. A tenant reading their own history can separate their own actions from ours without asking us.4 · The banner is not dismissible and is not private. It renders full-width above all chrome for the whole session, carries the operator's name, the reason, the scope and a live countdown, and appears for the impersonated user and for colleagues who open a record the session touched. An invisible support session is the failure mode this design exists to prevent.
5 · Blocked attempts are evidence, not noise. A refusal inside a session is logged, surfaced in the session ledger, and shown to the tenant. A refused request — a tenant admin declining — stays in the ledger permanently. Never garbage-collect a decline.
6 · A flag may change behaviour, never whether a control runs.
compliance.four_eyes_disbursement, compliance.kyc_gate and audit.write
are rendered as locked rows precisely so the absence of a switch is visible. Do not implement them as flags
defaulted to on.7 · Reflect the RLS as it is. Platform read access to sensitive fields is the
platform_admin_read_sensitive policy: SELECT only, on a table that stores a Social Security
number as last-4 plus a hash. No UPDATE and no DELETE grant exists for this role, and the UI must never
render an editable control over a field the role cannot write.8 · An overdue or degraded thing never renders as satisfied. A degraded dependency stays red while it is degraded. An outage never extends a statutory 45- or 180-day clock — the clock is tracked, and any adjustment is a four-eyes override with a written legal basis, taken in the tenant's own console.
9 · Provenance pills are load-bearing. Solid Enforced in code marks a claim that is true in the API today. Dashed pills mark a design that is not built: session-scoped NPI masking, per-entry audit hash chaining, and automated authentication-anomaly scoring. Do not remove a dashed pill by deleting the pill — remove it by shipping the code.
10 · Tokens only. No raw hex; the view-as chrome uses the
--impersonate-*
family added to tokens.css, deliberately outside the good/warn/bad triad so a support session
never reads as an error and never dilutes red. Light and dark are both designed. Every interactive element
carries hover, focus-visible, active and disabled states, and all motion is state-conveying and respects
prefers-reduced-motion.All tenants, people, amounts, tickets and identifiers on this page are synthetic.