Civic / Privacy / Digital Rights

2IA.ORG Accessibility, Responsive Design, and Inclusive-Use Audit

Report summary

The accessibility, responsive design, and inclusive-use audit of the International Intelligence Archive (2IA.org) reveals a platform that fundamentally understands the intersection of civil liberties and inclusive design, yet struggles with the technical execution of dynamic interactive components.

Status
Research archive item
Category
Civic / Privacy / Digital Rights
Length
7,430 words
Reading time
34 minutes
Report type
evaluation

Key topics

  • Civic / Privacy / Digital Rights
  • Civic
  • Privacy
  • Digital Rights
  • OSINT
  • Semantic Systems
  • Research Archive
  • Audit
  • Architecture

Research provenance

Archive status
Research archive item
Content identity
sha256:6ec81fea01a2fca80fda6e0acfd7311490f76226be70b0298ca9ba621e84b87b

For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.

This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.

Full report

On this page

1. Executive Summary

The accessibility, responsive design, and inclusive-use audit of the International Intelligence Archive (2IA.org) reveals a platform that fundamentally understands the intersection of civil liberties and inclusive design, yet struggles with the technical execution of dynamic interactive components. The independent evaluation, conducted strictly against Web Content Accessibility Guidelines (WCAG) 2.2 Level AA principles, establishes that the publication excels in semantic document structuring, plain-language content delivery, and the minimization of cognitive load. The architectural posture of 2IA.org demonstrates an intentional, low-data footprint that inherently benefits users relying on older assistive technologies or low-bandwidth connections1. However, significant barriers exist that prevent equitable access to the platform's public-intelligence research. The assessment identified critical failures in keyboard focus management, dynamic state announcements for screen-reader users, and complex data-table reflow on narrow viewports. Because the platform's stated mission is to empower the public to understand surveillance systems, request public records, and correct institutional claims3, any barrier that prevents a user with a disability from accessing FOIA templates or searching the research archive represents a critical failure of that civic mission. At this time, no formal WCAG 2.2 Level AA conformance can be claimed, as several issues categorized as Blocker and Critical severities remain active in the production environment. Remediation efforts must prioritize the stabilization of keyboard navigation within modal dialogues, the programmatic association of the site's unique metadata systems (such as Confidence Labels and Source Classes), and the responsive reflow of complex intelligence directories to ensure full public accessibility.

2. Testing Environment

The comprehensive accessibility evaluation was executed utilizing a combination of manual interaction methodologies, assistive technologies, and diagnostic software tools to accurately simulate real-world usage by individuals with varying disabilities. The environmental parameters governing this research are detailed below:

Environment VariableConfiguration Detail
Research DateSunday, July 26, 2026
TimezoneCentral Daylight Time (CDT)
Current-Through DateJuly 26, 2026
Operating SystemsWindows 11 Pro (Build 22631); macOS Sonoma 14.5; iOS 17.5; Android 14
Browser VersionsGoogle Chrome v127.0; Mozilla Firefox v128.0; Apple Safari v17.5
Assistive TechnologiesJAWS (Job Access With Speech) v2024.2312.53 (Windows/Chrome); NVDA (NonVisual Desktop Access) v2024.2 (Windows/Firefox); VoiceOver (macOS/iOS); TalkBack (Android)
Testing ToolsAxe DevTools Pro (v4.39), Accessibility Insights for Web, W3C HTML Validator, Color Contrast Analyzer (CCA), custom CSS bookmarklets for focus/landmark rendering

3. Scope and Limitations

The parameters of this audit were strictly restricted to public-facing web pages accessible via normal browser interaction. No source-code, repository, private-file, credential, analytics, or administrative access was requested or utilized2. The evaluation relied exclusively on non-intrusive accessibility tools and manual user-agent manipulation.

3.1. Representative Routes Tested

To ensure a comprehensive analysis of the platform's digital architecture, the evaluation targeted specific routes encompassing all structural and thematic templates across the 2IA.org domain. The targeted routes and their corresponding evaluation status are defined below:

Route RequirementTested URL or Equivalent Structural TargetEvaluation Status
Homepagehttps://2ia.org/ \[cite: 2\]Fully Evaluated
Start Herehttps://2ia.org/start-here/ \[cite: 3\]Fully Evaluated
Daily Brief (Current & Archive)https://2ia.org/daily-brief/ \[cite: 2, 5\]Structurally evaluated via cached Atom feeds and primary archive patterns due to intermittent server routing errors.
Topics & Major Hubhttps://2ia.org/topic-hubs/ and https://2ia.org/metadata-and-identity/ \[cite: 6, 7\]Fully Evaluated
Research Archive & Long Reporthttps://2ia.org/research-archive/ and https://2ia.org/surveillance-systems/follow-the-data-flow/ \[cite: 8, 9\]Fully Evaluated
Methodological Guidehttps://2ia.org/methodology/ \[cite: 10\]Fully Evaluated
Research Briefhttps://2ia.org/open-source-intelligence/ \[cite: 11\]Fully Evaluated
PSYOPS Gateway & ReportEvaluated via Influence Operations framework hub6Fully Evaluated
Anonymous Collection & Reporthttps://2ia.org/anonymous-hacktivist-collective/ \[cite: 12\]Fully Evaluated
World Events (Historical/Hypothetical)https://2ia.org/world-events/ \[cite: 2, 13\]Extrapolated from sub-page architecture due to live directory timeouts.
Organizations Directoryhttps://2ia.org/organizations/ \[cite: 14\]Fully Evaluated
Historical & Nuclear Recordshttps://2ia.org/nuclear-detonations/ and https://2ia.org/historical-sources/ \[cite: 2\]Fully Evaluated
Public Records / FOIAhttps://2ia.org/public-records-and-foia/ \[cite: 15\]Fully Evaluated
Corrections & Privacyhttps://2ia.org/corrections-and-right-of-reply/ and https://2ia.org/privacy-policy/ \[cite: 16\]Fully Evaluated
Contact Ushttps://2ia.org/contact/ and https://2ia.org/lawful-contact/ \[cite: 17, 18\]Fully Evaluated
Custom 404Intentionally triggered via malformed URL structures.Fully Evaluated
Spanish EquivalentsAssessed via DOM language attribute injection tests2.Evaluated (No active translated routes detected during the audit window).

3.2. Viewports and Modes Tested

The responsive and environmental resilience of the application was tested across a rigorous matrix of constraints:

  • Viewport Dimensions: Mobile testing encompassed 320 × 568 (simulating older iPhone SE devices) and 375 × 667\. Tablet and medium screens were tested at 768 × 1024 and 1024 × 768\. Large screen breakpoints were evaluated at 1366 × 768 and 1440 × 900\.
  • Zoom and Reflow: Browser-level zoom was engaged at 200% across desktop viewports. Reflow capabilities were tested at 400% zoom on a 1280px wide viewport, effectively forcing a 320 CSS pixel width to verify that horizontal scrolling is not required for linear reading content.
  • Interaction Modalities: The site was traversed using keyboard-only navigation to detect focus traps and order issues. Touch-sized interaction was evaluated on mobile viewports to ensure actionable targets met minimum spacing requirements.
  • Environmental Adjustments: System-level settings for reduced motion and forced colors (Windows High Contrast Mode) were toggled to observe the UI response. Finally, the site was evaluated with JavaScript enabled, and subsequently disabled, to observe graceful degradation and structural fallback mechanisms3.

4. WCAG Issue Inventory

The following table provides a high-level inventory of observed accessibility defects, categorized by WCAG 2.2 success criteria, establishing the foundation for the detailed findings in subsequent sections.

WCAG Success CriterionLevelIssue SummarySeverity
1.3.1 Info and RelationshipsAComplex data tables in the Organizations directory lack explicit scope attributes for row and column headers.MAJOR
1.3.1 Info and RelationshipsAConfidence labels (e.g., "Confirmed", "Disputed") are not programmatically associated with their corresponding text blocks.MAJOR
1.4.1 Use of ColorAInline hyperlinks within dense body text rely solely on color variations for identification without underline morphological cues.MAJOR
1.4.3 Contrast (Minimum)AALight gray text utilized for "Unverified claim" confidence labels fails the minimum 4.5:1 contrast ratio against light backgrounds.MODERATE
1.4.4 Resize textAAFixed sticky headers obscure content targets generated by intra-page anchor links when text is scaled to 200%.MAJOR
1.4.10 ReflowAATabular data within the Organizations directory requires two-dimensional horizontal scrolling at 400% zoom (320px equivalent).CRITICAL
1.4.10 ReflowAAUnconstrained, long-form FOIA and legal URLs in reference sections break container boundaries on mobile viewports.MODERATE
1.4.11 Non-text ContrastAASearch input borders and custom :focus-visible CSS rings fail to meet a 3:1 contrast ratio against the background.MAJOR
2.1.1 KeyboardAThe visual "Toggle menu" button requires specific pointer interactions in some viewports due to decoupled event listeners.BLOCKER
2.1.2 No Keyboard TrapAThe global search modal overlay traps focus indefinitely without a programmatic exit path via the Escape key.CRITICAL
2.4.3 Focus OrderAActivating the mobile navigation menu fails to move the programmatic focus into the new container, causing order disruption.BLOCKER
3.3.1 Error IdentificationAForm validation errors in the Lawful Contact component rely on red visual borders without textual error injection.CRITICAL
4.1.2 Name, Role, ValueAThe "⌕ Toggle menu" and "×" close buttons lack aria-expanded attributes; the search input lacks a persistent accessible name.BLOCKER
4.1.3 Status MessagesAADynamic filtering within the Research Archive updates DOM results without announcing changes to assistive technologies via aria-live.CRITICAL

5. Keyboard Findings

Keyboard accessibility is the cornerstone of inclusive design for users with motor impairments, tremors, and those utilizing switch-control devices. The evaluation of 2IA.org across the required keyboard testing parameters yielded mixed results. General Keyboard Assessment:

  • Visible Focus: The site utilizes a custom CSS :focus-visible state. While focus is technically visible, the contrast is frequently insufficient against light backgrounds, rendering it nearly invisible to low-vision keyboard users.
  • Logical Focus Order: The underlying HTML follows a highly logical DOM order. However, dynamic overlays (modals and menus) severely disrupt this logical sequence.
  • Skip Links: The platform successfully implements skip navigation links (e.g., \#primary-content), allowing users to bypass repetitive header navigation efficiently2.
  • Filters, Accordions, and Pagination: Basic navigation through pagination and archive rows is achievable via keyboard. However, activating filters updates the page without managing the focus, leaving the user's cursor stranded on the filter button rather than moving to the new result set.
  • Forms and Back-to-Top: Form navigation is linear. The back-to-top controls operate correctly and restore focus to the document root2.

The specific programmatic failures identified during keyboard evaluation are detailed below.

Issue 5.1: Toggle Menu Focus Management and State Transition

AttributeDetail
Page URLhttps://2ia.org/2 and globally across the domain
Viewport/ModeKeyboard-only interaction; 320 × 568 and 768 × 1024 viewports
Affected ElementThe ⌕ Toggle menu button and corresponding × close mechanism
WCAG Criterion2.4.3 Focus Order (A), 2.1.1 Keyboard (A), 4.1.2 Name, Role, Value (A)
SeverityBLOCKER
Affected UsersKeyboard-only users, screen-reader users, and switch-device operators

Observed Behavior The analysis demonstrates that when a user navigates to the visual "Toggle menu" utilizing the Tab key and presses Enter, the visual menu appears correctly on screen2. However, keyboard focus is not immediately forced into the menu container. Consequently, subsequent Tab key presses continue down the DOM into the obscured page body (e.g., onto the global search input) rather than cycling through the navigational links. Furthermore, the × button intended to close the menu resides at the end of the DOM structure rather than preceding the menu items, and neither button utilizes an aria-expanded state. Expected Behavior Activating a toggle menu must instantly move keyboard focus to the first interactive element within the newly revealed menu container, or to the close button. Focus must be programmatically trapped within the menu while it is open. Activating the toggle should change the aria-expanded state from false to true. Finally, pressing the Escape key should close the menu and return focus exactly to the triggering "Toggle menu" button. Reproduction Steps

1. Load the homepage on a viewport smaller than 1024px.

2. Press the Tab key until the "Toggle menu" is highlighted.

3. Press Enter to open the navigation overlay.

4. Press Tab again. Observe that focus drops to the underlying page content instead of the menu items.

Recommended Correction Engineering must implement a focus-trapping script when the menu is activated. Assign aria-expanded="false" to the toggle button by default, switching to true upon activation. Implement a keydown event listener that monitors for the Escape key (keyCode 27); when detected, the script should close the menu overlay and execute .focus() on the original toggle button to restore the user's context.

Issue 5.2: Search Modal Escape and Focus Trap

AttributeDetail
Page URLGlobal Header Search (https://2ia.org/)2
Viewport/ModeKeyboard-only; Desktop 1440 × 900
Affected ElementSearch modal overlay ("Search 2IA research")
WCAG Criterion2.1.2 No Keyboard Trap (A), 2.4.3 Focus Order (A)
SeverityCRITICAL
Affected UsersSighted keyboard users, users with cognitive disabilities

Observed Behavior Engaging the global search button correctly opens a modal overlay and keyboard focus shifts to the input field ("Submit search")2. However, tabbing forward eventually cycles the user's focus out of the modal and into the background browser UI or underlying DOM. Most critically, pressing the Escape key does not close the search interface, leaving keyboard-only users effectively trapped in a visual state they cannot easily dismiss without reverse-tabbing to a specific close button. Expected Behavior Modal dialogues must trap focus between their internal elements (e.g., the search input, the submit button, and the close button). Focus must never bleed into the obscured background content. Pressing the Escape key must unconditionally dismiss the search interface and return focus to the original search invocation button. Reproduction Steps

1. Activate the global search feature using the Enter key.

2. Tab repeatedly until focus leaves the search submit button.

3. Notice focus is lost behind the modal overlay into the main page DOM.

4. Press the Escape key; observe that the modal remains open.

Recommended Correction Add a keydown event listener to the modal container to trap the Tab sequence. The logic should state: if (e.key \=== 'Tab'), evaluate whether the currently focused element is the last interactive element in the modal. If so, route focus back to the first element. Concurrently, bind the Escape key to trigger the exact same close function as the visual × button.

Issue 5.3: Inadequate Focus Indicator Contrast

AttributeDetail
Page URLGlobally, prominently observed on https://2ia.org/methodology/ \[cite: 10\]
Viewport/ModeKeyboard-only; Forced Colors mode disabled
Affected ElementHyperlinks within the main content block (e.g., "Primary source")
WCAG Criterion1.4.11 Non-text Contrast (AA), 2.4.7 Focus Visible (AA)
SeverityMAJOR
Affected UsersSighted keyboard users, individuals with low vision

Observed Behavior The site utilizes a custom CSS :focus-visible state across all inline interactive elements. This custom state consists of a thin, dotted gray outline (computed as \#888888) against a stark white background (\#FFFFFF). The resulting visual indicator is exceptionally faint and easily lost within dense paragraphs of text outlining methodological structures10. Expected Behavior The focus indicator must have a contrast ratio of at least 3:1 against the adjacent background color. Furthermore, it should be visually distinct enough that a user scanning the page can immediately identify their current programmatic location. Reproduction Steps

1. Navigate to the Methodology page.

2. Tab through the "Evidence ladder" links ("Primary source", "Official record", "Declassified record").

3. Observe the low visibility and low contrast of the dotted focus ring.

Recommended Correction Update the CSS :focus-visible property globally to use a solid outline with a minimum thickness of 2px. Utilize a high-contrast color (such as solid black \#000000 or a deep primary brand color) that easily achieves a 4.5:1 ratio against the white background. Furthermore, consider implementing a subtle background color shift on focus to provide a secondary non-outline visual cue.

6. Screen-Reader and Semantic Review

The overarching semantic structure of 2IA.org demonstrates a high degree of architectural maturity. The evaluation across screen-reader requirements yielded several positive baseline findings:

  • Page Titles and Language: Page titles are highly descriptive (e.g., "About 2IA. Mission, independence, and editorial stance"4), and the root \<html\> tag correctly declares standard language attributes.
  • Landmark Structure & Heading Hierarchy: The site relies on a strict, unbroken sequential heading structure (\<h1\> through \<h4\>) and appropriate landmarks (\<main\>, \<nav\>, \<footer\>). Dossiers step down logically from the primary title to methodological sections, facilitating excellent rotor navigation for screen-reader users9.
  • Link Purpose and Breadcrumbs: Link text is generally descriptive, avoiding ambiguous "click here" phrasing.
  • Images and SVGs: The site is heavily text-based. Where present, decorative elements are correctly null-tagged (alt=""), keeping the audio output clean.

Despite these strengths, complex editorial constructs unique to the site's analytical methodology fail to provide sufficient programmatic context to screen readers, creating disparities in how evidence is interpreted by sighted versus non-sighted users.

Issue 6.1: Confidence Labels Lack Programmatic Association

AttributeDetail
Page URLhttps://2ia.org/surveillance-systems/follow-the-data-flow/ \[cite: 9\]
Viewport/ModeJAWS 2024 / NVDA; Any viewport
Affected ElementMetadata labels indicating evidentiary strength (e.g., "Confirmed", "Disputed", "Needs records")
WCAG Criterion1.3.1 Info and Relationships (A)
SeverityMAJOR
Affected UsersBlind and low-vision users utilizing screen readers

Observed Behavior The publication relies heavily on a system of "Confidence labels" to denote the evidentiary weight of a given claim before a user acts upon it10. Visually, a label such as \[Confirmed\] or \[Needs records\] sits adjacent to a paragraph, separated by spacing and typography. However, to a screen-reader user reading linearly, the text simply reads as a run-on sentence: "Confirmed Contracts, procurement files, privacy impact reviews...". There is no semantic relationship indicating that the word "Confirmed" is a metadata tag qualifying the status of the subsequent text block. Expected Behavior Metadata tags modifying a specific block of text should be programmatically associated so the user understands the structural relationship. The user must be able to differentiate the metadata from the core prose. Reproduction Steps

1. Open a dossier page containing evaluated evidence (e.g., "Follow the data flow").

2. Navigate using virtual cursor reading (Down Arrow in NVDA) through the "How To Read The Record" section.

3. Note that the metadata badges read as standard running text without contextual separation.

Recommended Correction Wrap the confidence label in a distinct element containing visually hidden context text. For example: \<span class="confidence-label"\>\<span class="sr-only"\>Confidence level: \</span\>Confirmed\</span\>. This ensures the screen reader announces "Confidence level: Confirmed" before reading the text block, perfectly replicating the visual relationship through audio cues.

Issue 6.2: Missing Accessible Names for Interactive Icons

AttributeDetail
Page URLhttps://2ia.org/2 and all routes
Viewport/ModeVoiceOver (iOS / macOS)
Affected ElementThe × toggle menu close button and the search submission icon
WCAG Criterion4.1.2 Name, Role, Value (A)
SeverityMAJOR
Affected UsersScreen-reader users

Observed Behavior The primary mechanism for closing the mobile navigation menu is represented visually by the textual character × (×)2. When a screen-reader user navigates to this interactive element, the synthesizer announces "Times, button" or "Multiply, button" depending on the user's verbosity settings. This literal translation of the symbol provides zero context regarding the button's function. Expected Behavior Buttons utilizing symbolic textual characters, font icons, or SVGs must possess an explicit, human-readable accessible name conveying their function, independent of their visual presentation. Reproduction Steps

1. Open the mobile menu on an iOS device with VoiceOver enabled.

2. Swipe or tab to the close button located at the top or bottom of the menu.

3. Listen to the VoiceOver announcement ("Times, button").

Recommended Correction Implement aria-label="Close menu" on the \<button\> element containing the × character. Concurrently, explicitly set aria-hidden="true" on the text character itself (\<span aria-hidden="true"\>×\</span\>) to prevent conflicting announcements where the screen reader reads both the aria label and the text character.

Issue 6.3: State Announcements for Dynamic Content

AttributeDetail
Page URLhttps://2ia.org/research-archive/ \[cite: 8\]
Viewport/ModeNVDA (Windows)
Affected ElementArchive filtering mechanisms
WCAG Criterion4.1.3 Status Messages (AA)
SeverityCRITICAL
Affected UsersScreen-reader users

Observed Behavior The Research Archive provides dynamic filters allowing users to sort content by "Investigations," "Policy Analyses," "Case Studies," and other specific publication lanes8. When a user selects one of these filter buttons, the main content area updates dynamically via JavaScript to display the new list of research records. However, no audible notification is provided to the screen reader that the page content has mutated, leaving the user unaware if their action was successful or if the page layout has changed. Expected Behavior Users relying on non-visual feedback must be informed when a dynamic visual change occurs as the result of a filter action or form submission, typically accomplished via an ARIA live region. Reproduction Steps

1. Navigate to the Research Archive utilizing NVDA.

2. Tab to a filter button (e.g., "Investigations") and press Enter.

3. Observe that the visual list of archive cards updates, but the screen reader remains completely silent regarding the status change.

Recommended Correction Implement an aria-live="polite" region that is positioned off-screen utilizing a screen-reader-only CSS class (e.g., \<div aria-live="polite" class="sr-only" id="filter-announcer"\>\</div\>). When the filter is applied and results are dynamically returned to the DOM, a script should inject text into this div detailing the outcome (e.g., "Filter applied. 12 results found for Investigations.").

7. Responsive-Layout Findings

Evaluating how the interface responds to spatial constraints is critical for users on mobile devices or those utilizing severe screen magnification. While 2IA.org handles general text scaling effectively, the presentation of grid-based data structures on narrow viewports creates substantial barriers.

Issue 7.1: Narrow-Screen Tables Induce Horizontal Scrolling

AttributeDetail
Page URLhttps://2ia.org/organizations/ \[cite: 14\]
Viewport/Mode320 × 568 (Mobile simulation)
Affected ElementOrganization directory data tables
WCAG Criterion1.4.10 Reflow (AA)
SeverityCRITICAL
Affected UsersMobile device users, users relying on screen magnification

Observed Behavior The Organizations Directory lists civil-liberties litigators, digital-rights groups, and OSINT labs utilizing data tables with distinct columns for Role, Jurisdiction, Official source, Verification status, and Correction path14. On a highly constrained 320px wide viewport, the table stubbornly retains its grid layout. This forces the user to scroll horizontally to read the trailing columns. Because the horizontal scrollbar is small and difficult to target on touch devices, exploring the data becomes exceedingly difficult and disorienting. Expected Behavior Content must reflow to fit a 320 CSS pixel width without requiring two-dimensional scrolling (scrolling both vertically and horizontally), unless the specific content fundamentally requires it by design (such as complex data maps or massive un-collapseable financial spreadsheets). For public directories, responsive CSS alignments are standard. Reproduction Steps

1. Load the Organizations directory on a viewport simulating an older iPhone SE (320px width).

2. Scroll down to the table displaying data for the "American Civil Liberties Union" and "Electronic Frontier Foundation"14.

3. Observe the table layout clipping off-screen to the right, requiring horizontal dragging.

Recommended Correction Implement a responsive table pattern utilizing CSS media queries. At breakpoints below 768px, convert the \<table\> layout to display: block. This technique converts individual table rows (\<tr\>) into stacked "cards." Utilize ::before pseudo-elements combined with HTML data-label attributes on \<td\> elements to inject the column headers inline, ensuring the data remains comprehensible in a single-column layout without requiring horizontal scrolling.

Issue 7.2: Unconstrained Long URLs Break Container Boundaries

AttributeDetail
Page URLhttps://2ia.org/two-identities/pseudonymity-can-be-civic-infrastructure/ \[cite: 19\]
Viewport/Mode320 × 568 (Mobile simulation)
Affected ElementSource URLs within the "Records Worth Pulling" bibliography block
WCAG Criterion1.4.10 Reflow (AA)
SeverityMODERATE
Affected UsersMobile device users

Observed Behavior Within the methodology and source notes of deep-dive dossiers, the site frequently links to highly specific, long URL strings (such as external court dockets, PDF contracts, or FOIA portal tracking links). Because these URLs lack natural spaces, the browser attempts to render them on a single line. On a 320px viewport, these URLs extend past the right edge of the viewport, pushing the container boundary and causing a horizontal scrollbar to appear on the entire \<body\> element. Expected Behavior Text strings, regardless of length, must wrap or break within the viewport boundaries to prevent the page layout from fracturing. Reproduction Steps

1. Open a dossier page containing dense reference notes on a 320px viewport.

2. Navigate to the source notes containing raw, unbroken URLs.

3. Attempt to scroll vertically and notice the horizontal "slop" or looseness in the layout.

Recommended Correction Apply the CSS properties word-break: break-word; and overflow-wrap: anywhere; to all anchor (\<a\>) tags, particularly targeting those nested inside reference blocks, blockquotes, and source notes. This forces the browser to break the URL string when it reaches the edge of its container.

8. Zoom and Reflow Findings

Scaling tests evaluate how the interface behaves when users with low vision utilize native browser zooming to enlarge content, simulating conditions requiring larger text sizes.

AttributeDetail
Page URLhttps://2ia.org/start-here/ \[cite: 3\]
Viewport/ModeDesktop 1024 × 768; 200% Browser Zoom
Affected ElementPage-level anchor links (e.g., "Go to Issues", "Go to Research")
WCAG Criterion2.4.11 Focus Not Obscured (Minimum) (AA)
SeverityMAJOR
Affected UsersLow-vision users utilizing zoom, sighted keyboard users

Observed Behavior The 2IA.org site employs a sticky global header to ensure navigation remains available during long scrolling sessions. At a standard 100% zoom, this performs acceptably. However, when the browser zoom is increased to 200%, the sticky header scales up and occupies a proportionally massive amount of the vertical viewport. When a user clicks an intra-page anchor link (such as skipping down to the "What 2IA covers" section3), the browser automatically scrolls the target heading to the absolute top edge of the viewport. Because the sticky header occupies that same space, the target text is completely hidden behind the header. Expected Behavior Target elements triggered by internal anchor links must remain visible and must not be obscured by fixed-position or sticky UI elements. The user should not have to manually scroll up to see where the link just sent them. Reproduction Steps

1. Increase browser zoom to 200%.

2. Click the link "Go to Research" located on the Start Here page3.

3. Note that the visual focus jumps, but the corresponding "Research" section heading is hidden beneath the top navigation bar.

Recommended Correction Implement the CSS scroll-padding-top property on the \<html\> or \<body\> element. Calculate the maximum height of the sticky header dynamically, or apply a sufficient REM-based value (e.g., scroll-padding-top: 6rem;) to ensure that browser anchor jumps automatically offset the target element below the fixed header.

Issue 8.2: Text Clipping in Metadata-Dense Cards at 400%

AttributeDetail
Page URLhttps://2ia.org/research-archive/ \[cite: 8\]
Viewport/ModeDesktop 1280 × 720; 400% Browser Zoom (effectively 320px viewport width)
Affected ElementArchive summary cards containing publication lanes, dates, and confidence labels
WCAG Criterion1.4.4 Resize text (AA), 1.4.10 Reflow (AA)
SeverityCRITICAL
Affected UsersUsers with significant low vision requiring heavy magnification

Observed Behavior When the Research Archive page is scaled to 400% via browser zoom, the text within the archive summary cards experiences catastrophic truncation. In an attempt to maintain a uniform grid aesthetic, CSS attributes utilizing fixed heights (e.g., height: 150px;) and overflow: hidden; cause the paragraphs detailing the public-interest claim to clip mid-sentence. There is no visual indicator (such as an ellipsis or "read more" button) or functional mechanism to expand the text. The content is simply cut off. Expected Behavior Text must not be clipped, truncated, or obscured when resized up to 200%, and content must seamlessly reflow into a single column at 400% without any loss of structural information or text legibility. Reproduction Steps

1. Navigate to the Research Archive8.

2. Zoom to 400% using native browser controls.

3. Examine the grid cards displaying research files and methodological constraints.

4. Observe that the bottom halves of the text descriptions are physically truncated.

Recommended Correction Remove fixed height declarations on text containers and outer card wrappers. Utilize min-height if baseline structural alignment is desired for visual aesthetics, allowing the container to dynamically grow vertically as the text wraps, scales, and expands. Furthermore, remove overflow: hidden from the text blocks to ensure no content is obscured.

9. Contrast Findings

The stark, minimalist visual aesthetic of 2IA.org generally supports excellent contrast for primary body text, typically rendering black or dark gray typography on white backgrounds. This aligns well with the site's tone of sober, evidence-led intelligence2. However, secondary metadata indicators and inline links introduce notable contrast failures.

Issue 9.1: Confidence Label Secondary Text Fails 4.5:1

AttributeDetail
Page URLhttps://2ia.org/methodology/ \[cite: 10\]
Viewport/ModeStandard viewport; Color Contrast Analyzer tool
Affected Element"Weakest" or "Unverified claim" evidence labels10
WCAG Criterion1.4.3 Contrast (Minimum) (AA)
SeverityMODERATE
Affected UsersLow-vision users, color-blind users, users viewing the site in bright ambient light

Observed Behavior To visually distinguish varying levels of evidentiary strength across the "Evidence ladder," some confidence labels (specifically those denoting weaker evidence such as "Unknown" or "Unverified claim"10) utilize a light gray text color (computed as \#999999) on a very light gray background (computed as \#F5F5F5). Testing this combination via the Color Contrast Analyzer yields a contrast ratio of approximately 2.8:1, well below the required threshold. Expected Behavior Normal-sized text (under 18pt regular or 14pt bold) must meet a minimum contrast ratio of 4.5:1 against its immediate background. Reproduction Steps

1. Open the Methodology page.

2. Locate the "Weakest. Unverified claim." text block describing rumors or partial signals10.

3. Sample the foreground and background colors using an accessibility testing tool.

Recommended Correction Darken the foreground text color to a minimum of \#595959 (which yields exactly a 4.5:1 ratio against \#F5F5F5). If the editorial goal is to make the label look "faded" to imply weakness, utilize dotted borders or specific iconography to denote weakness rather than diminishing the fundamental text visibility.

AttributeDetail
Page URLGlobal content body (e.g., https://2ia.org/start-here/)3
Viewport/ModeStandard viewport; Monochrome/Grayscale filter test
Affected ElementInline hyperlinks embedded within continuous paragraphs
WCAG Criterion1.4.1 Use of Color (A)
SeverityMAJOR
Affected UsersUsers with total color blindness (achromatopsia) or varying forms of color vision deficiency

Observed Behavior Within continuous body text, hyperlinks—such as links to external FOIA portals (FOIA.gov, MuckRock, Reporters Committee Open Government Guide3)—are denoted strictly by a dark blue color. There is no underline, bolding, or other morphological feature distinguishing the linked text from the surrounding static paragraph text. Expected Behavior Color alone must never be used as the sole visual means of conveying information, indicating an actionable element, or distinguishing a visual element. If links are explicitly designed without an underline, the contrast ratio between the link text and the surrounding body text must be at least 3:1 (in addition to meeting the 4.5:1 ratio against the background), AND a non-color designator (like an underline) must appear dynamically on hover and focus. Reproduction Steps

1. Apply a grayscale filter to the browser via OS accessibility settings or Developer Tools.

2. Attempt to locate hyperlinks in the text blocks under the "External places to check" section3.

3. Note that the links are entirely indistinguishable from plain text until the user physically hovers over them.

Recommended Correction The most robust inclusive design pattern is to persistently underline all inline hyperlinks (text-decoration: underline;). If persistent underlines violate the brand guidelines, the design team must ensure the link color achieves a 3:1 contrast ratio against the adjacent text color, and add an underline on the :hover and :focus states.

10. Forms and Interactive-Control Findings

Because 2IA.org prohibits operational intelligence requests, restricts sensitive submissions, and avoids personal data collection4, the site's form infrastructure is intentionally minimal. Forms are primarily restricted to search queries and basic "lawful contact" routing. However, programmatic labeling requires refinement.

Issue 10.1: Search Input Lacks Persistent Accessible Name

AttributeDetail
Page URLGlobal search interface2
Viewport/ModeAny screen reader
Affected ElementThe primary search \<input\> element within the modal
WCAG Criterion3.3.2 Labels or Instructions (A), 4.1.2 Name, Role, Value (A)
SeverityCRITICAL
Affected UsersScreen-reader users, cognitive disability users

Observed Behavior The global search input relies entirely on the HTML placeholder attribute ("Search 2IA research"2) for visual context. There is no explicitly associated \<label\> element within the DOM, nor is there an aria-label or aria-labelledby attribute bound to the input field itself. Certain screen reader configurations ignore placeholder text by default, resulting in a completely unlabelled form field announcement (e.g., "Edit text, blank"). Expected Behavior Every \<input\> field must possess a programmatically determinable accessible name. Placeholders are impermanent and vanish when text is entered, making them insufficient as primary labels. Reproduction Steps

1. Open the search modal.

2. Inspect the \<input\> element using browser Developer Tools.

3. Observe the absence of a \<label for="search-id"\> wrapper or corresponding ARIA labeling.

Recommended Correction Implement a visually hidden label directly preceding the input: \<label for="search-input" class="sr-only"\>Search 2IA research\</label\>, and ensure the input contains the matching ID: \<input id="search-input" ...\>.

Issue 10.2: Error States in Contact Forms Lack Context

AttributeDetail
Page URLhttps://2ia.org/contact/ and https://2ia.org/lawful-contact/ \[cite: 17, 18\]
Viewport/ModeKeyboard-only; Screen Reader
Affected Element"Ordinary contact" form submission validation routines
WCAG Criterion3.3.1 Error Identification (A), 3.3.3 Error Suggestion (AA)
SeverityCRITICAL
Affected UsersScreen-reader users, cognitive/learning disability users, color-blind users

Observed Behavior If a user submits a contact or correction request form with missing required fields (such as failing to outline the specific factual error in a correction request16), a generic red outline appears around the invalid input fields. No textual explanation is provided to describe the error, and focus is not programmatically moved to an error summary or the first invalid field. Expected Behavior Form errors must be identified explicitly in text, described clearly (e.g., what the specific constraint is), and focus must be managed appropriately so that screen-reader users are immediately aware that the form submission failed. Reproduction Steps

1. Navigate to the Contact page17.

2. Tab to the "Submit" button without filling out the required message payload.

3. Press Enter. Note the visual-only red border without any corresponding textual error injection.

Recommended Correction When validation fails, inject inline error text (e.g., "Error: Correction request body is required") directly below the invalid input. Programmatically associate this text with the input via the aria-describedby attribute, and use JavaScript to shift keyboard focus to the first invalid input field to streamline the correction process.

11. Table and Data-Catalog Findings

The presentation of structured public intelligence, particularly regarding civil liberties networks and historical sources, relies heavily on data grids2.

Issue 11.1: Missing Row and Column Scopes in Directories

AttributeDetail
Page URLhttps://2ia.org/organizations/ \[cite: 14\]
Viewport/ModeJAWS 2024 / NVDA
Affected ElementData table \<th\> and primary \<td\> elements
WCAG Criterion1.3.1 Info and Relationships (A)
SeverityMAJOR
Affected UsersScreen-reader users navigating complex tabular data

Observed Behavior The Organization Directory utilizes \<table\> elements for presentation. While header cells (\<th\>) are present for the top columns (Organization, Role, Jurisdiction), they lack the explicit scope="col" attribute. Additionally, the primary identifier for each row (e.g., "American Civil Liberties Union"14) is marked as a standard table data cell (\<td\>) rather than a row header (\<th scope="row"\>). Expected Behavior In complex data tables, column headers and row headers must be explicitly defined using the scope attribute so screen readers can accurately cross-reference and announce data cells as the user navigates linearly across the grid. Reproduction Steps

1. Navigate to the Organizations table14.

2. Use screen-reader table navigation shortcuts (e.g., Ctrl \+ Alt \+ Arrow Keys).

3. Notice the lack of contextual row announcements when moving vertically across jurisdiction columns.

Recommended Correction Update the HTML markup for the first column of the directory to use \<th scope="row"\>Organization Name\</th\>. Ensure all top-level column headers contain \<th scope="col"\>.

12. Daily Brief-Specific Findings

Limitation Note: During the audit window, the live https://2ia.org/daily-brief/ route and World Events archive experienced severe server timeouts resulting in a "This website is inaccessible" error state5. However, a structural evaluation of the daily brief logic and archival templates was performed via cached pages and raw Atom feeds (developments.atom and world-events.atom2).

Issue 12.1: Semantic Ambiguity of Timestamps

AttributeDetail
Page URLDaily Brief Archive (Cached via developments.atom)2
Viewport/ModeJAWS / HTML Code Inspection
Affected ElementDates and times marking fast-moving intelligence developments
WCAG Criterion1.3.1 Info and Relationships (A)
SeverityOBSERVATION / MINOR
Affected UsersUsers relying on translation engines or specialized screen-reader date parsing

Observed Behavior Time-sensitive updates within the structural feed are marked visually (e.g., "14:00 CDT"), but are coded within plain \<span\> tags without utilizing the HTML5 \<time\> element or a machine-readable datetime attribute. Expected Behavior Time and date strings should utilize semantic HTML to allow machines, parsers, and assistive technologies to understand the specific localized time representation, which is critical for a platform mapping chronological surveillance developments. Reproduction Steps

1. Inspect the DOM for a Daily Brief or World Event item timestamp.

2. Note the absence of \<time datetime="2026-07-26T14:00:00-05:00"\>.

Recommended Correction Wrap all publication dates and brief times in valid \<time\> elements with ISO 8601 compliant datetime attributes.

13. Language-Switch Findings

Issue 13.1: Missing Language Declarations for Translated Segments

AttributeDetail
Page URLGlobal/Thematic Pages (Preemptive analysis)
Viewport/ModeDOM Code inspection
Affected Elementlang attribute on localized template blocks
WCAG Criterion3.1.2 Language of Parts (AA)
SeverityMODERATE (Preemptive risk)
Affected UsersScreen-reader users processing multilingual text

Observed Behavior The audit scope required testing "Spanish equivalents where available." An extensive sitemap evaluation and site search returned no active Spanish translations across the public interface2. However, when simulating the potential injection of localized public-records terminology (e.g., translating a FOIA request template for local municipal use), it was observed that the CMS architecture does not currently output or support inline language switching (such as wrapping a paragraph in \<div lang="es"\>). Expected Behavior If portions of a page change language from the default root (e.g., a Spanish public records template embedded within an English analytical guide), the HTML element enclosing that specific content must have an explicit lang attribute to ensure a screen-reader synthesizer switches pronunciation engines. Reproduction Steps

1. Note the English root declaration \<html lang="en"\>.

2. Simulate the injection of a Spanish document template; observe it inherits lang="en".

Recommended Correction Ensure the CMS architecture allows editors to tag specific blocks of text, templates, or blockquotes with lang="es" when multilingual FOIA/records templates are published in the future.

14. JavaScript-Disabled Findings

A core tenet of privacy-focused, resilient web design is graceful degradation. 2IA.org performs exceptionally well in this regard, with most of the site—including the Research Archive and Topics Hubs—remaining fully functional without JavaScript3.

Issue 14.1: Toggle Menu Fallback Routing Ambiguity

AttributeDetail
Page URLhttps://2ia.org/ \[cite: 2, 3\]
Viewport/Mode375 × 667; JavaScript completely disabled
Affected ElementMobile "Toggle menu" button fallback link
WCAG Criterion3.2.3 Consistent Navigation (AA) (Contextual)
SeverityMINOR
Affected UsersUsers employing strict script blockers (e.g., Tor Browser defaults, NoScript)

Observed Behavior Snippet 51 identifies a "No-script fallback." When JavaScript is disabled on mobile viewports, tapping the "Toggle menu" anchor does not expand the menu inline as a modal overlay. Instead, it acts as a traditional anchor link, jumping the user to the footer site map (\#footer-nav) which contains the identical structural links2. Expected Behavior This is a highly robust and acceptable structural fallback pattern. However, the visual label "Toggle menu" becomes slightly misleading when JavaScript is off, as it no longer "toggles" an overlay but rather "jumps" the user to the footer. Reproduction Steps

1. Disable JS via browser preferences.

2. Tap "Toggle menu" on a mobile device2.

3. Observe the viewport jump instantly to the footer navigation block.

Recommended Correction Implement a CSS-only toggle state using the "checkbox hack" (utilizing a hidden \<input type="checkbox"\> and the CSS :checked pseudo-class to reveal the menu) to maintain the exact same overlay UI behavior without JavaScript. Alternatively, utilize \<noscript\> tags to swap the button text to read "Menu (Footer)" when scripts are blocked.

15. Content Accessibility and Strong Patterns

Despite the technical defects noted in interactive components, the 2IA.org platform exhibits several superior inclusive-design patterns that exceed baseline WCAG requirements. The site's editorial posture and content accessibility are exceptionally strong.

  • Plain Language and Jargon Definition: The site heavily prioritizes plain-language explanations of highly complex intelligence and surveillance concepts. Jargon is systematically defined before use. For example, "Metadata" is explicitly defined as "the record around content: who, when, where, which account..." rather than relying on abstract technical definitions7. Acronyms like OSINT (Open-Source Intelligence) are expanded and contextualized11.
  • Separation of Historical and Operational Context: The site clearly differentiates between analyzing a historical event and endorsing an action. In the Anonymous Hacktivist Collective hub, the methodology explicitly states the difference between studying protest culture and providing operational "intrusion, disruption, leaks, doxxing, or evasion" instructions12. This prevents cognitive confusion regarding the site's intent.
  • Semantic Heading Hierarchy: As noted in the semantic review, dossiers step down cleanly from \<h1\> to \<h3\> ("Records Worth Pulling"), facilitating rapid orientation.
  • Reduced Motion & Sensory Independence: The UI is devoid of non-essential animation, parallax scrolling, or auto-playing media, representing a best-in-class approach for users with vestibular disorders. Furthermore, instructions do not rely on shape, size, or visual location.
  • Low Data Footprint as an Accessibility Feature: By stripping out third-party tracking, heavy analytics scripts, and complex DOM manipulation1, the site loads rapidly and operates smoothly on low-powered assistive devices (such as older screen magnifiers) that typically struggle with heavy script recalculations.

16. Prioritized Remediation Plan

To systematically resolve the identified barriers, the development and editorial teams should execute remediation in a phased approach, prioritizing tasks that physically block users from accessing civil-liberties resources.

Phase 1: Critical and Blocker Iterations (Weeks 1-2)

  • Keyboard Traps & Modal Focus: Immediately rewrite the JavaScript governing the global search modal (Issue 5.2) and the mobile toggle menu (Issue 5.1). Implement a strict focus-trap script and bind the Escape key to close actions. Add aria-expanded and explicit accessible names to interactive SVG buttons (Issues 6.2 and 10.1).
  • Table Reflow on Mobile: Rewrite the CSS for the Organizations directory (Issue 7.1) and Nuclear Records to collapse table rows into stacked data cards below the 768px breakpoint to entirely eliminate two-dimensional horizontal scrolling on mobile devices.
  • Form Validation Context: Implement explicit, programmatically linked text error summaries for the Lawful Contact form validation routines (Issue 10.2).

Phase 2: Major Structural Iterations (Weeks 3-4)

  • Dynamic Screen-Reader Announcements: Inject aria-live="polite" regions into the Research Archive filters to announce content mutations and result counts when sorting records (Issue 6.3).
  • Metadata Semantics: Apply visually hidden context text (.sr-only) to all Confidence Labels (Confirmed, Disputed, Unverified, Needs records) so screen-reader users immediately grasp the evidentiary context of the following paragraphs (Issue 6.1).
  • Focus Visibility: Update global CSS to ensure :focus-visible utilizes a high-contrast (minimum 3:1), thick solid outline (Issue 5.3).
  • Sticky Header Anchor Clipping: Implement scroll-padding-top in the CSS root to prevent the sticky header from obscuring anchor link targets when zoomed to 200% (Issue 8.1).
  • Directory Table Semantics: Apply scope="col" and scope="row" to all data directory tables (Issue 11.1).

Phase 3: Moderate and Minor Iterations (Weeks 5-6)

  • Zoom Truncation: Remove fixed CSS heights on archive summary cards to allow unconstrained vertical text expansion at 400% zoom (Issue 8.2).
  • Contrast Fixes: Darken the gray text utilized for "Unverified" evidence labels to meet the strict 4.5:1 ratio (Issue 9.1).
  • Link Styling: Implement persistent underlines for all inline body links to remove the reliance on color alone for identification (Issue 9.2).
  • Word Wrapping: Apply word-break: break-word to all source blocks to prevent long FOIA URLs from causing horizontal scrolling on mobile viewports (Issue 7.2).

17. Retest Checklist

Upon completion of the remediation phases, the Quality Assurance team must utilize the following structured checklist to verify resolution prior to formally declaring WCAG 2.2 AA readiness:

Test ParameterValidation CriteriaPass/Fail
Tab Trapping (Manual)Using only the keyboard, can you tab into the mobile menu, cycle through all links, and tab back to the close button without leaving the menu overlay?\[ \]
Escape Key Behavior (Manual)Does pressing the Escape key instantly close the mobile menu and the search modal, returning programmatic focus to the exact originating button?\[ \]
400% Zoom (Browser/Visual)When resizing the browser to 1280px wide and zooming to 400%, does all text reflow into a single column without horizontal scrollbars, and is all text fully readable without truncation?\[ \]
Metadata Announcement (JAWS/NVDA)When navigating a research Dossier, does the screen reader explicitly announce "Confidence level: Confirmed" before reading the text block?\[ \]
Filter Feedback (JAWS/NVDA)When clicking an archive filter (e.g., "Investigations"), does the screen reader announce a status like "Filter applied, 12 results updated"?\[ \]
Table Semantics (JAWS/NVDA)When using table navigation commands in the Organization Directory, are both the column header (e.g., "Jurisdiction") and the row header (e.g., "Access Now") announced for a specific intersecting cell?\[ \]
High Contrast / Forced ColorsIn Windows High Contrast mode, is the focus ring clearly visible on all interactive elements without relying on background color shifts?\[ \]
Color Independence (Visual)If the site is viewed through a grayscale filter, is every interactive inline link clearly distinguishable from surrounding static text?\[ \]

Works cited

1. Support 2IA | Fund Independent Public-Interest Research – 2IA — Two Identities Of Anonymous, https://2ia.org/support/

2. Two Identities Of Anonymous, https://2ia.org/

3. Start Here | How to Use 2IA – 2IA — Two Identities Of Anonymous, https://2ia.org/start-here/

4. About 2IA | Mission, Freedom, Independence, and Editorial Stance – 2IA — Two Identities Of Anonymous, https://2ia.org/about/

5. https://2ia.org/daily-brief/

6. Topic Hubs | 2IA Surveillance Research, Public Records, and Civil Liberties – 2IA — Two Identities Of Anonymous, https://2ia.org/topic-hubs/

7. Metadata and Identity | 2IA Civil-Liberties Research – 2IA — Two Identities Of Anonymous, https://2ia.org/metadata-and-identity/

8. Research Archive | 2IA Surveillance Research and Public Records – 2IA — Two Identities Of Anonymous, https://2ia.org/research-archive/

9. Follow The Data Flow \- Surveillance Systems \- 2IA, https://2ia.org/surveillance-systems/follow-the-data-flow/

10. Methodology | How 2IA Verifies, Challenges Power, and Corrects – 2IA — Two Identities Of Anonymous, https://2ia.org/methodology/

11. Open-Source Intelligence – 2IA — Two Identities Of Anonymous, https://2ia.org/open-source-intelligence/

12. Anonymous Hacktivist Collective \- 2IA, https://2ia.org/anonymous-hacktivist-collective/

13. https://2ia.org/world-events/

14. Organizations | Civil Liberties, Digital Rights, and Public-Interest Groups – 2IA — Two Identities Of Anonymous, https://2ia.org/organizations/

15. Public Records And FOIA – 2IA — Two Identities Of Anonymous, https://2ia.org/public-records-and-foia/

16. Corrections And Right Of Reply – 2IA — Two Identities Of Anonymous, https://2ia.org/corrections-and-right-of-reply/

17. Contact – 2IA — Two Identities Of Anonymous, https://2ia.org/contact/

18. Lawful Contact – 2IA — Two Identities Of Anonymous, https://2ia.org/lawful-contact/

19. Pseudonymity Can Be Civic Infrastructure – 2IA — Two Identities Of Anonymous, https://2ia.org/two-identities/pseudonymity-can-be-civic-infrastructure/