Accessibility Conformance Report

VPAT 2.4 Edition — 24/7 Office Hours

Title Page

Product Name24/7 Office Hours v1.7.0
Report DateApril 2026
Product DescriptionWeb-based AI chatbot platform for education. Provides instructor dashboards, student chat interfaces, knowledge base management, practice tests, anonymous chatbots, and course management.
Contactbkihei@kennesaw.edu
NotesThis report covers the primary web application (instructor and student views), authentication pages, anonymous chat interface, and the public-facing website. Third-party embedded content (help bot iframe) is noted but outside direct control.
Evaluation MethodsManual source code review of all HTML templates, CSS stylesheets, and JavaScript files. Static analysis of ARIA attributes, semantic structure, color contrast ratios, keyboard interaction patterns, and focus management. Review of responsive breakpoints and media query support.

VPAT Version: 2.4  |  Applicable Standards: WCAG 2.1 Level A & AA, Revised Section 508


WCAG 2.1 Level A — Conformance Results

CriteriaConformance LevelRemarks and Explanations
1.1.1 Non-text ContentSupportsAll <img> elements have descriptive alt attributes. Decorative emoji icons use aria-hidden="true". SVG icons in buttons have accessible names via aria-label. Canvas-based engagement charts include aria-label with textual summaries.
1.2.1 Audio-only and Video-only (Prerecorded)Not ApplicableThe application does not include prerecorded audio-only or video-only content.
1.2.2 Captions (Prerecorded)Not ApplicableThe application does not include prerecorded multimedia content with audio.
1.2.3 Audio Description or Media Alternative (Prerecorded)Not ApplicableNo prerecorded video content is present in the application.
1.3.1 Info and RelationshipsSupportsSemantic HTML landmarks are used throughout: <main>, <nav>, <aside>, <header>, <footer>. Heading hierarchy follows logical order. Data tables use <th scope="col">. Form inputs are associated with <label> elements. ARIA roles include role="dialog", role="log", role="alert", role="search", role="progressbar", and role="radiogroup".
1.3.2 Meaningful SequenceSupportsDOM order matches visual presentation order. CSS grid and flexbox layouts maintain logical reading sequence. Chat messages render in chronological order with role="log".
1.3.3 Sensory CharacteristicsSupportsInstructions and navigation do not rely solely on shape, size, visual location, or sound. Interactive elements are identified by text labels.
1.4.1 Use of ColorSupportsError flash messages use red color plus a distinct border and text description. Published/unpublished status uses both icons and color. Navigation links use text-decoration: underline to provide a non-color visual indicator.
1.4.2 Audio ControlNot ApplicableThe application does not auto-play audio content.
2.1.1 KeyboardSupportsAll interactive elements are reachable via Tab. The chat interface provides comprehensive keyboard shortcuts: / or Ctrl+K for search, Arrow keys for message navigation, F6 to cycle between regions, Escape to dismiss overlays.
2.1.2 No Keyboard TrapSupportsFocus trapping is implemented correctly for modals using trapFocusInModal() and releaseFocusTrap() utilities. All modal dialogs release focus and return it to the trigger element on close.
2.1.4 Character Key ShortcutsSupportsSingle-character shortcuts in the chat keyboard navigation manager are only active when focus is outside text input fields.
2.2.1 Timing AdjustableSupportsThe application does not impose time limits on user interactions. Chat sessions persist.
2.2.2 Pause, Stop, HideSupportsAnimations respect prefers-reduced-motion: reduce. A "Stop generating" button is provided during AI response streaming.
2.3.1 Three Flashes or Below ThresholdSupportsNo content flashes more than three times per second.
2.4.1 Bypass BlocksSupportsA "Skip to main content" link is the first focusable element on every page. The chat interface adds additional skip links for messages, input, and search.
2.4.2 Page TitledSupportsAll pages have descriptive <title> elements. Titles are dynamic where appropriate.
2.4.3 Focus OrderSupportsTab order follows the logical DOM sequence. No tabindex values greater than 0 are used.
2.4.4 Link Purpose (In Context)SupportsLinks have descriptive text. Action buttons include aria-label attributes. External links include rel="noopener noreferrer".
2.5.1 Pointer GesturesSupportsThe application does not require multipoint or path-based gestures.
2.5.2 Pointer CancellationSupportsClick actions use standard browser event handling which fire on the up-event.
2.5.3 Label in NameSupportsVisible text labels match accessible names. Icon-only buttons use aria-label.
2.5.4 Motion ActuationNot ApplicableThe application does not use device motion for any functionality.
3.1.1 Language of PageSupportsAll HTML documents include <html lang="en"> on the root element.
3.2.1 On FocusSupportsFocusing any element does not trigger a context change.
3.2.2 On InputSupportsChanging form controls does not cause automatic context changes.
3.3.1 Error IdentificationSupportsError messages are displayed via flash messages with role="alert" and aria-live="assertive".
3.3.2 Labels or InstructionsSupportsAll form fields have visible labels. Required fields use the HTML5 required attribute.
4.1.2 Name, Role, ValueSupportsCustom interactive components use appropriate ARIA attributes for modals, expandable sections, chat areas, progress bars, star ratings, and search regions.

WCAG 2.1 Level AA — Conformance Results

CriteriaConformance LevelRemarks and Explanations
1.2.4 Captions (Live)Not ApplicableThe application does not include live audio or multimedia content.
1.2.5 Audio Description (Prerecorded)Not ApplicableNo prerecorded video content exists in the application.
1.3.4 OrientationSupportsNo CSS or JavaScript locks the viewport to a specific orientation. Responsive breakpoints adjust layout for narrow viewports.
1.3.5 Identify Input PurposeSupportsLogin and signup forms use autocomplete attributes for email and password fields.
1.4.3 Contrast (Minimum)SupportsPrimary text achieves approximately 16.5:1 contrast ratio. All text elements meet or exceed AA minimum ratios. Dark mode maintains strong contrast throughout.
1.4.4 Resize TextSupportsThe application uses rem and em units. Content remains functional at 200% browser zoom.
1.4.5 Images of TextSupportsNo images of text are used. The logo is an SVG file. All text content is rendered as actual text.
1.4.10 ReflowSupportsContent reflows to a single column at 320px width equivalent. No horizontal scrolling is required for primary content.
1.4.11 Non-text ContrastSupportsUI component boundaries meet the 3:1 minimum contrast ratio. Focus indicators use high-contrast outlines with box-shadow.
1.4.12 Text SpacingSupportsAll line-height values use relative units. No !important rules block user overrides.
1.4.13 Content on Hover or FocusSupportsDropdown menus appear on click (not hover-only) and can be dismissed. Status information is conveyed via aria-label attributes.
2.4.7 Focus VisibleSupportsAll focusable elements have visible :focus-visible styles. Dark mode provides adapted focus styles. High contrast mode enhances focus indicators further.
2.5.8 Target Size (Minimum)SupportsAll interactive elements meet the 24x24px minimum target size. Send buttons are 48x48px.
3.3.4 Error Prevention (Legal, Financial, Data)SupportsDestructive actions require explicit confirmation via dialogs. No financial transactions occur in the application.
4.1.3 Status MessagesSupportsStatus messages use ARIA live regions. Flash messages use role="alert". Chat messages use role="log" with aria-live="polite".

Revised Section 508 — Chapter 3: Functional Performance Criteria

CriteriaConformance LevelRemarks and Explanations
302.1 Without VisionSupportsSemantic HTML landmarks, heading hierarchy, ARIA roles, and live regions support screen reader navigation. All images have alt text. Dynamic content changes are announced via aria-live regions.
302.2 With Limited VisionSupportsText can be resized to 200%. High contrast mode is supported. Dark mode provides an alternative color scheme. Content reflows at narrow widths.
302.3 Without Perception of ColorSupportsInformation is not conveyed by color alone. Error messages include text descriptions and borders. Navigation links use underlines as non-color visual indicators.
302.4 Without HearingSupportsThe application is primarily text-based. No audio content is used for conveying information.
302.5 With Limited HearingNot ApplicableThe application does not include audio content.
302.6 Without SpeechNot ApplicableThe application does not require speech input.
302.7 With Limited ManipulationSupportsFull keyboard accessibility is provided. No drag-and-drop interactions are required. Keyboard shortcuts enable efficient navigation.
302.8 With Limited Reach and StrengthNot ApplicableThis is a web application; physical reach and strength are not factors.
302.9 With Limited Language, Cognitive, and Learning AbilitiesSupportsNavigation is consistent across pages. Labels and instructions are clear. Error messages describe what went wrong. The interface uses familiar UI patterns.

Revised Section 508 — Chapter 4: Hardware

CriteriaConformance LevelRemarks and Explanations
All Chapter 4 Criteria (402-415)Not ApplicableThis product is a web application and does not include hardware components.

Revised Section 508 — Chapter 5: Software

CriteriaConformance LevelRemarks and Explanations
All Chapter 5 Criteria (501-504)Not ApplicableThis product is a web application accessed through standard web browsers. It is not native platform software.

Revised Section 508 — Chapter 6: Support Documentation and Services

CriteriaConformance LevelRemarks and Explanations
602.2 Accessibility and Compatibility FeaturesSupportsAn Accessibility Statement page describes the accessibility features including skip navigation, keyboard navigation, screen reader support, reduced motion, high contrast, text resizing, and dark mode.
602.3 Electronic Support DocumentationSupportsIn-app documentation pages are accessible via standard web browsers. The help bot widget provides an accessible iframe-based assistant.
602.4 Alternate Formats for Non-Electronic Support DocumentationNot ApplicableAll documentation is electronic and web-based.
603.2 Information on Accessibility and Compatibility FeaturesSupportsThe Accessibility Statement page provides comprehensive information about available accessibility features and keyboard shortcuts.
603.3 Accommodation of Communication NeedsSupportsThe feedback form provides a text-based method for users to report accessibility barriers.

Remediation Summary (April 2026)

All previously "Partially Supports" items have been remediated:

CriterionPreviousCurrentFix Applied
1.4.1 Use of ColorPartially SupportsSupportsAdded text-decoration: underline to top-right navigation links
1.4.12 Text SpacingPartially SupportsSupportsConverted all 19 fixed pixel line-height values to relative units across 7 files
1.4.13 Content on Hover/FocusPartially SupportsSupportsAdded aria-label attributes to publish status badges
2.5.8 Target SizePartially SupportsSupportsAdded min-width: 24px; min-height: 24px to icon buttons
302.3 Without Perception of ColorPartially SupportsSupportsSame as 1.4.1 fix above

Additional Observations

Strengths

Previously Identified Improvements (Now Resolved)

  1. Anonymous chat interface: Skip link, prefers-reduced-motion, and prefers-contrast media queries added.
  2. SL Onboarding Modal: role="dialog", aria-modal="true", aria-labelledby, and focus trap added.
  3. Feedback page: Skip link and prefers-reduced-motion media query added.
  4. Course login card: Changed fixed height to min-height to allow growth at high zoom levels.

Remaining Known Limitations

  1. Third-party content: The help bot iframe may have accessibility limitations outside direct control. The title attribute is correctly set.

Legal Disclaimer

This report covers the accessibility conformance of the product as evaluated on the report date. Conformance may change as the product is updated. This document is informational and does not constitute a legal guarantee.