Skip to content
TDACorpIDENTITYSign in

Accessibility statement

What TDACorp Identity does for accessibility, how it is tested, and what is not yet verified. It describes the repository as it is, and it does not claim conformance with any standard.

Last reviewed October 5, 2026
On this page

About this statement

This statement covers the web pages of TDACorp Identity: the sign-in, registration and recovery flows, the account area, and the public trust pages. It says what the code does, which automated and manual checks exist, and what is still owed.

Note

TDACorp Identity is in pre-production. This statement describes behaviour that exists in the repository today. It is not a conformance report, not a VPAT, and not a claim that the product meets any accessibility law or standard.

Last reviewed 5 October 2026.

Scope

In scopeNotes
Sign-inIdentify step, password step, passkey offer, second-factor step, recovery-code step, an ended sign-in, magic-link pages
RegistrationRegistration, email verification, passkey set-up after registration
RecoveryStart recovery, continue recovery, cancel recovery, secure your account
Consent and sign-outThe OpenID Connect consent screen and the sign-out confirmation
Account areaAccount home, Profile, Security, Sessions, Activity, Notifications, Privacy and data, Access tokens, Connected apps, Developer, Organizations
Trust pagesOverview, security, vulnerability disclosure, privacy, cookies, retention, terms, data processing, subprocessors, incident response, accessibility
Error pagesThe 404 page and the generic error page
EmailSecurity and sign-in messages sent by the platform, each with an HTML part and a plain-text part
Out of scopeWhy
tdacorp.in, the marketing websiteA separate product with its own statement
Other TDACorp products that use this platformEach product renders its own pages and is responsible for its own accessibility
The administrative console and the operator command-line toolNot part of the end-user pages covered by the automated matrix described below
Authenticator hardware, platform passkey prompts, mail clientsProvided by your device and software, outside this platform's control

Conformance target

The repository's target is WCAG 2.2 level AA. The automated checks use the rule tags wcag2a, wcag2aa, wcag21a, wcag21aa and wcag22aa.

QuestionAnswer
Is there a stated target?Yes. WCAG 2.2 AA, as recorded in the repository's accessibility review and test configuration
Is conformance claimed?No. Automated scans cannot establish conformance, and manual checks are still owed (see known limitations)
Has an independent accessibility audit been done?No
Is a VPAT or accessibility conformance report published?No
Is any legal compliance claimed?No. This page is not legal advice

What is tested

Automated scans

An end-to-end suite runs axe-core in a real Chromium browser against a real running instance of the platform. The same scan runs in four combinations for every page.

DimensionValues
Colour-scheme preferenceLight and dark, set with browser media emulation
Viewport width1280 CSS pixels and 320 CSS pixels
RulesWCAG 2.0, 2.1 and 2.2, levels A and AA
Extra assertionThe page must not scroll sideways, which checks WCAG 1.4.10 reflow
Failure behaviourAny violation fails the test, and the message carries the rule, the impact and the offending selectors

The scanner is axe-core 4.13.0 through @axe-core/playwright 4.13.0, as recorded in the repository's review.

Pages and states covered

GroupCovered by the axe matrix
Public flow pagesSign-in, register, recover, signed-out, sign-out, step-up, error page, and the pages a mailed token opens (shown in their "not valid" state)
Trust pagesAll eleven: the overview, security, vulnerability disclosure, privacy, cookies, retention, terms, data processing, subprocessors, incident response and accessibility
Sign-in statesThe password step, the refused-password error state, the client-side validation error on the identify step, the passkey offer, the second-factor step, the recovery-code step, an ended sign-in
ConsentThe consent screen of a relying-party sign-in
Account areaEvery page in the account area except a single developer client's detail page, signed in
Open overlaysThe account All settings menu and the notifications bell dialog (opened at desktop width), plus the component gallery with a dialog open
Error pagesThe 404 page
Redirect behaviourA signed-out visit to an account page is sent to sign-in, with the page kept for after

Behavioural tests

TestWhat it checks
Keyboard sign-inThe whole password sign-in is completed with Tab, typing and Enter and no pointer (WCAG 2.1.1, 2.4.3, 2.4.7). When a step changes, the step title takes focus so a screen reader announces it
Focus indicator and trapsFor the first 14 Tab presses on the sign-in page, every focused control shows a visible indicator (outline or ring), focus moves through more than three distinct controls, and focus is not pinned on one
Reduced motionWith the reduce preference set, no element has a CSS animation, no animation is running, and no transition outlasts one frame, on sign-in, register, the privacy page, the component gallery, and the signed-in account shell with its notifications bell open. The same measurement with the preference off must find a real transition, so the check cannot pass by looking at nothing
Phone layoutOn a 412 pixel phone profile, public pages and account pages do not scroll sideways. The account area is reached through a horizontal navigation strip of eight links under the bar, with the current page marked by aria-current. There is no bottom bar and no More sheet
Contrast tokensA unit test parses the stylesheet and asserts WCAG contrast for both colour schemes: the three text tiers at 4.5:1 on the page and surface grounds, accent, status and info text and the button label on the accent fill at 4.5:1, and the focus ring at 3:1. The field line is only pinned to its approved value with a floor of 1.5:1, which is below 3:1 (see limitations)
Component markupComponent tests assert label wiring and ARIA attributes, and that no component renders an inline style

Note

These are descriptions of what the tests assert. This page does not publish the result of the latest run. Run the suite yourself, or ask, if you need the current result.

Defects the automated checks found and fixed

PageRuleCauseFix
Subprocessors page at 320 pxWCAG 1.4.10A long unbreakable table cell made the page scroll sidewaysTable cells wrap anywhere
Account security pageTarget size (WCAG 2.5.8)Link-style buttons such as remove passkey were under 24 pxMinimum block size of 24 px
Account tables at 320 pxScrollable region focusable (WCAG 2.1.1)A table wrapper that scrolls was not reachable by keyboardWrapper given a region role, a tab stop and an accessible label

These came from the earlier generation of the pages. The matrix now runs against the current web application, and the repository's review does not record a separate list of defects for it.

Keyboard and focus behaviour

BehaviourWhat the code does
Skip linkEvery page begins with a "Skip to content" link, rendered by the shared layout, and the error boundary page has one too
Visible focusOne global rule gives every link, button, input, select, textarea, summary and element with a tab index a 2 pixel outline in the focus-ring colour with a 1 pixel offset on keyboard focus
Focus ring contrastThe focus ring colour is asserted at 3:1 against its ground in both schemes
Step changesIn the sign-in flow the step title takes focus when the step changes, so the next Tab reaches the first field of the new step
DialogsDialogs use the native dialog element, so focus trapping and Escape are the browser's own behaviour
MenusMenus use the browser's native popover, with keyboard handling in a shared helper. The account All settings menu is scanned open
NotificationsThe notifications bell opens a dialog, which is scanned open and closes with Escape
SwitchesA switch is a native checkbox with the switch role, so Space works and the value submits with the form
Touch targetsWith a fine pointer, controls are 24, 26 or 30 px high. On coarse pointers buttons, form fields, menu items and navigation items grow to at least 44 px, and checkboxes and radio buttons to 24 px
No pointer-only actionsThe keyboard test completes sign-in with no pointer. Other flows are covered only by the automated scans, not by a keyboard script

Forms and error handling

AspectBehaviour
LabelsA field's label, hint and error are tied to one control by generated for and id, aria-describedby and aria-invalid attributes, not written by hand per page
Required fieldsaria-required is set from the form's required flag
ErrorsAn error message is rendered in a paragraph with the alert role, so it is announced when it appears. Errors name the problem in words, and the page does not rely on colour alone
StatusStatus always has an icon or a word (alerts and status pills), never colour alone
AutocompleteSign-in fields carry autocomplete hints: username webauthn for the identifier, current-password for the password. The recovery-code field turns autocomplete off and disables capitalisation and spell-check
Numeric codesThe one-time code input uses numeric input mode
Live regionsThe sign-in, registration and recovery flows use live regions. Whether the announcements read well in a screen reader has not been checked by hand (see limitations)
Destructive actionsDeactivating an account needs a typed phrase, "delete my account", with a hint to type it exactly as shown, and a confirmation dialog
Time limitsA sign-in in progress lasts at most 10 minutes. A step-up proof lasts 10 minutes. A magic link is valid for 15 minutes. These are security limits. No control to extend them exists

Colour contrast and themes

AspectBehaviour
ThemesDark and light. The light scheme follows the operating-system preference (prefers-color-scheme) with no script. The stylesheet also honours a theme attribute on the root element, but nothing in the product sets it
Manual theme switchNone. To change the theme, change your operating-system or browser preference. A site-level toggle is not built
DefaultDark for browsers that express no light preference
Browser chromeThe theme colour meta tag matches the page ground of each scheme
Text contrastThree text tiers asserted at 4.5:1 on page and surface grounds, in both schemes
Status and accent textAccent, status and info text asserted at 4.5:1 on the page ground, and the button label on the accent fill at 4.5:1
Non-text contrastFocus ring asserted at 3:1. The field line is the approved kit value, pinned with a floor of 1.5:1, which is below the 3:1 of WCAG 1.4.11. This is an open owner decision
Colour aloneNever the only signal. Status carries an icon or a word, and activity events carry a word: Routine, Review or Review now
FontsIBM Plex Sans and Plex Mono, self-hosted, latin subset, with size-adjusted local fallbacks. No third-party font is requested
Forced colours and high contrastNot specially handled. The stylesheet has no forced-colours or contrast-preference rules

Motion

AspectBehaviour
Feedback motion120 ms for hover, press and switch feedback
Disclosure motion200 ms for menus and sheets
Sign-in pagesNo entrance motion, no film grain, no entrance keyframes
Reduced motionWhen the browser reports a reduce preference, animation is turned off and transitions are cut to 0.01 ms globally, and smooth scrolling is disabled
VerificationAn end-to-end test measures this, as described above

Responsive layout and zoom

AspectBehaviour
ViewportThe viewport meta sets the device width and does not restrict zoom
ReflowPages are scanned at 320 CSS pixels and asserted not to scroll sideways
TablesWide tables on the account pages scroll inside a keyboard-focusable, labelled region rather than scrolling the page. The subprocessor table wraps long text
Phone navigationA horizontal strip of eight navigation links under the bar at 760 px and below
Text zoom to 200 percentNot yet checked by hand (see limitations)

Language

AspectBehaviour
Page languageEvery page sets lang="en"
Available languagesEnglish only
Locale and time zoneAn account can store a locale and a time zone, and times are shown through a local-time component. The interface text itself is not translated
Plain languageCopy is written to be short and direct, and error messages say what to do next
EmailMessages are in English, with a plain-text part and an HTML part

Email

CheckResult
FormatEvery message carries a plain-text part and an HTML part rendered from one block list, so they cannot diverge. The HTML is a table layout with inline styles, a dark colour scheme, a document language and a title
ImagesNone. The header is a text wordmark, and a test fails if a template carries an image. There are no tracking pixels or remote images, so alt text does not apply
LinksAll use https://, are separated by whitespace and do not end in punctuation. No tracking parameters
Bearer linksA link that carries a secret opens a confirmation page and acts only on a form submission, so a mail scanner prefetching the link changes nothing
Subject linesDescriptive
RecipientsOne recipient per message
EnforcementA deliverability test in the email package enforces these properties

Assistive technology

TechnologyStatus
Screen readers (NVDA, VoiceOver, JAWS, TalkBack)No supported combination is claimed. A manual pass of sign-in, consent and authenticator enrolment is still owed
Keyboard onlyThe password sign-in is tested keyboard-only. Other flows are scanned automatically but not scripted by keyboard
Browser zoom and text resizeReflow at 320 px is tested. 200 percent text zoom is not yet checked by hand
Voice controlNot tested
Switch accessNot tested
Screen magnifiersNot tested
Passkey promptsProvided by your browser and operating system. How they announce is outside this platform's control

Note

This statement does not list supported browsers, screen readers or devices, because none has been verified by a person using it. The automated checks run in Chromium only.

Known limitations

LimitationDetailStatus
No manual screen reader passNVDA or VoiceOver testing of sign-in, consent and authenticator enrolment, including how the error note and passkey prompt state are announced, has not been doneOwed
Live-region announcements unverifiedThe sign-in, registration and recovery flows use live regions, and whether the announcements are timely and clear is not checked by handOwed
Focus order on consentThe visible order of Allow and Deny on the consent screen is a product decision that has not been settledOwner decision pending
200 percent text zoomNot yet checked by handOwed
Windows forced coloursNot yet checked, and no forced-colours styling existsOwed
No light and dark switchThe theme follows the operating system. There is no on-page controlNot built
Field line contrastThe border of form fields is below the 3:1 non-text contrast of WCAG 1.4.11, by an approved kit valueOwner decision pending
axe cannot judge focus order or trapsAutomated tools cannot decide whether focus order is logical. Only the sign-in keyboard test covers itPartly covered
Chromium onlyThe automated scans and behavioural tests run in Chromium. Other browsers are not tested by the suiteKnown
Error page not scannedThe 500 page needs a fault-injection instance and is not in the scan. It is static markup on the same shell as the pages that are scannedKnown gap
Email round trips not scannedStates that need a mailed link beyond the "check your email" step are scanned only in their invalid-token stateKnown gap
English onlyNo translations existNot built
No independent auditNo third-party accessibility audit and no user testing with people who use assistive technologyNot done
Security time limitsSign-in, step-up and magic-link time limits cannot be extended, because they are security controlsBy design
Other productsProducts built on the platform may have their own barriersOut of scope

How to report an accessibility problem

Email security@tdacorp.in. The address is the published contact for the trust pages, and no separate accessibility mailbox exists yet.

What helpsWhy
The page address, and what you were trying to doSo the problem can be found and reproduced
What went wrong, and what you expectedSo the barrier is clear
The browser, operating system and any assistive technologySo it can be reproduced under the same conditions
Whether you can use the platform at allSo the problem is prioritised against what blocks you

Note

No response time is promised. TDACorp runs no round-the-clock rota, and the disclosure policy's response times are intentions rather than commitments. Do not send a password, a recovery code or a one-time code in a report.

Alternatives

If you cannot useAlternative available today
A password fieldA passkey, or a one-time sign-in link sent by email
A passkey promptA password, followed by an authenticator code or a recovery code where a second factor is set
An authenticator appA recovery code (batches of 10, each works once), or a passkey
The web page for a security actionEmail security@tdacorp.in. Nothing guarantees an out-of-band alternative for every action, because each action acts only on a signed-in account
A data export downloadRequest it again from Privacy and data. The download is available for 7 days

Note

No telephone, chat, or postal alternative is published.

What this page does not claim

Not claimedDetail
ConformanceNo claim of WCAG 2.2 AA conformance, EN 301 549, Section 508 or any legal accessibility compliance
AuditNo independent accessibility audit, no VPAT, no user testing with assistive technology users
Assistive technology supportNo screen reader, browser or device combination is declared supported
Latest test resultThe description of the tests is not a publication of their latest run
CompletenessAutomated tools find only part of the barriers a person can meet
Other surfacestdacorp.in, the administrative console, and products built on the platform are not covered
Future featuresA theme switch, translations, forced-colours styling and a dedicated accessibility mailbox are not built and are not promised

See also the trust overview, the security practices and the privacy policy.