Commitment to Accessibility
Daniel Mashkov is committed to providing an inclusive web experience for all users, including people with disabilities, in accordance with Israel's Equal Rights for Persons with Disabilities Regulations (Accessibility Adjustments for Service), 5773-2013, and the W3C Web Content Accessibility Guidelines (WCAG) 2.2.
Implemented Features — Full AA Conformance
- Semantic HTML and ARIA tree: <header>, <nav>, <main>, <footer>, and <section> landmarks on every page. ARIA roles (role, aria-label, aria-live, aria-modal) set on all interactive components.
- Full keyboard navigation: All interactive elements reachable via Tab, Enter, Space, and Escape. Focus traps activate in modals and the mobile navigation drawer.
- Color contrast ≥ 4.5:1: All text/background color pairs verified against the 4.5:1 ratio. Primary interface colors (#1dc8cd on #333333) pass.
- Alt text on all images: Decorative images carry alt=""; content images carry specific descriptions.
- Focus management in modals: The exit-intent offer and the booking modal return focus to the triggering element on close.
- Respects prefers-reduced-motion: All Framer Motion animations and AnimatedCounter suppress animation under prefers-reduced-motion: reduce. Lenis smooth-scroll is skipped entirely when reduced motion is enabled — native browser scroll takes over (resolved 2026-03-08).
- Route change announcements: A visually-hidden aria-live='polite' region (RouteAnnouncer) announces each client-side navigation to screen readers using the new page title — compatible with NVDA, JAWS, and VoiceOver.
- Skip-to-content link: First focusable element on every page jumps to #main-content.
- Full RTL support for Hebrew: CSS logical properties (text-start, ps-/pe-) throughout; right-to-left scrolling verified in Chrome and Safari.
- Autocomplete on form fields: All input fields carry appropriate autocomplete values (name, email, tel).
- High contrast mode: @media (prefers-contrast: more) replaces primary color with #0a6b6e and flattens gradients to solid fills.
WCAG 2.2 AAA Target Criteria — Implemented
SC 2.5.5 (AAA) — Target Size (Enhanced) — Minimum 44×44 CSS px
Touch and click targets of 44×44 CSS pixels implemented via direct sizing and ::after pseudo-element expansion on: project filter pill buttons (.filter-btn) — min-height: 44px; Navbar navigation links — expanded padding in both LTR and RTL orientations; language toggle button — min-width/height: 44px; all primary CTA buttons — py-3 px-6 baseline ensures ≥44px touch area.
SC 2.5.8 (AA) — Target Size (Minimum) at 24×24 CSS pixels — fully conforms.
SC 3.3.7 (AAA) — Redundant Entry — Cognitive Load Reduction
The contact form and lead capture form do not require re-entry of previously submitted information. There is no session timeout, no CAPTCHA, and no security questions. Form field values are preserved across validation error cycles so users never lose their input.
SC 3.3.8 (AAA) — Accessible Authentication (Minimum)
Form fields include: compliant autocomplete attributes, clear placeholder instructions, precise error messages (field names + correction guidance), and password manager compatibility (no autocomplete="off" on sensitive fields). No cognitive test (puzzle, image recognition, or transcription) is required to complete any form on this site.
SC 1.4.6 (AAA) — Contrast (Enhanced) — 7:1 Ratio
Primary body text (#666666 on #ffffff) achieves 5.74:1. Headings (#333333 on #ffffff) achieve 12.63:1.
Known gap: gradient-brand-text clip elements on light backgrounds may fall below 7:1 in some placements — tracked as an open item in the roadmap.
SC 2.4.12 (AAA) — Focus Appearance (Enhanced) — 3:1 Minimum
Focus ring: 3px solid #1dc8cd (primary) with outline-offset: 2px — yields a 4.12:1 contrast ratio for the focus indicator against a white background, exceeding the 3:1 AAA minimum.
SC 2.4.11 (AA) — Focus Not Obscured — AA + AAA
No sticky headers, floating banners, or overlays obstruct the focused element during keyboard navigation. The fixed Navbar accounts for its height via scroll-padding-top on the document root.
SC 2.3.3 (AAA) — Animation from Interactions — Vestibular Disorder Protection
Lenis smooth-scroll is disabled entirely when prefers-reduced-motion: reduce is detected — ReactLenis is skipped and native browser scroll takes over. All Framer Motion animations and AnimatedCounter also suppress under this media query.
Initially resolved 2026-03-08 for core components. Extended 2026-05-09 to all 15 remaining animated components (FAQ, FeaturedProjects, ProcessTimeline, ProofBlock, WhoIWorkWithStrip, WhyChooseMe, MobileMenu, CookieConsent, ContactForm, CostCalculator, ProjectIntakeForm, LeadMagnetForm, DiagnosticQuiz, ArchitectureDiagram, Tooltip).
Known AAA Gaps
- SC 1.4.6: gradient-brand-text clip in some placement contexts falls below 7:1. Planned fix tracked in roadmap.
- SC 1.2.6: Sign Language: Not provided — no sign language interpretation available for video or audio content.
- SC 2.4.9: Some "Read more" patterns rely on surrounding context for link purpose. Planned fix.
Reporting Accessibility Issues
- Email: info@danielmashkov.com
- Describe the issue, your browser, version, and assistive technology in use
- Acknowledgment within 48 hours; resolution or workaround within 14 business days
Acknowledgment within 48 h · Resolution or workaround within 14 business days
Testing Methodology and Tools
- axe DevTools
- NVDA + Firefox (Windows)
- VoiceOver + Safari (macOS / iOS)
- Keyboard-only navigation
- Chrome Accessibility Inspector
- WCAG Color Contrast Analyzer