1(function() { 2 'use strict'; 3 4 // Prevent double initialization 5 if (window.a11yToolbarInitialized) { 6 console.log('â ï¸ Accessibility toolbar already initialized globally, skipping'); 7 return; 8 } 9 window.a11yToolbarInitialized = true; 10 11 console.log('ð Accessibility script starting execution...'); 12 13 // Language Detection and Translations 14 function detectLanguage() { 15 // Languages baked for this site beyond en/he (see lib/accessibility/i18n.ts). 16 const extraLangs = ["ar","es","fr","de","pt","it","ru","zh","ja","hi","nl"]; 17 const explicitExtra = document.documentElement.getAttribute('data-a11y-language'); 18 if (explicitExtra && extraLangs.includes(explicitExtra)) return explicitExtra; 19 const htmlExtra = (document.documentElement.lang || '').toLowerCase().split('-')[0]; 20 if (htmlExtra && extraLangs.includes(htmlExtra)) return htmlExtra; 21 // Priority 0: Explicit accessibility language setting from site settings 22 const explicitA11yLanguage = document.documentElement.getAttribute('data-a11y-language'); 23 if (explicitA11yLanguage === 'he' || explicitA11yLanguage === 'en') { 24 console.log('ð Language detected from accessibility setting:', explicitA11yLanguage); 25 return explicitA11yLanguage; 26 } 27 28 // Priority 1: Check HTML lang attribute (HIGHEST priority - page-specific, always wins) 29 const htmlLang = document.documentElement.lang || document.documentElement.getAttribute('lang'); 30 if (htmlLang) { 31 const langCode = htmlLang.toLowerCase().split('-')[0]; 32 if (langCode === 'he') { 33 console.log('ð Language detected from HTML lang attribute: Hebrew'); 34 return 'he'; 35 } else if (langCode === 'en') { 36 // Explicitly return English if HTML lang is 'en' (don't check browser) 37 console.log('ð Language detected from HTML lang attribute: English'); 38 return 'en'; 39 } 40 } 41 42 // Priority 2: Check meta tags 43 const metaLang = document.querySelector('meta[http-equiv="content-language"]'); 44 if (metaLang) { 45 const langCode = metaLang.content.toLowerCase().split('-')[0]; 46 if (langCode === 'he') { 47 console.log('ð Language detected from meta tag: Hebrew'); 48 return 'he'; 49 } else if (langCode === 'en') { 50 console.log('ð Language detected from meta tag: English'); 51 return 'en'; 52 } 53 } 54 55 // Priority 3: Check browser/system language (only if HTML lang is not set) 56 if (typeof navigator !== 'undefined' && navigator.language) { 57 const browserLang = navigator.language.toLowerCase().split('-')[0]; 58 if (browserLang === 'he') { 59 console.log('ð Language detected from browser/system: Hebrew'); 60 return 'he'; 61 } 62 63 // Also check navigator.languages (array of preferred languages) 64 if (navigator.languages && Array.isArray(navigator.languages)) { 65 for (const lang of navigator.languages) { 66 const langCode = lang.toLowerCase().split('-')[0]; 67 if (langCode === 'he') { 68 console.log('ð Language detected from browser languages array: Hebrew'); 69 return 'he'; 70 } 71 } 72 } 73 } 74 75 // Default to English 76 console.log('ð Language defaulting to: English'); 77 return 'en'; 78 } 79 80 // Language will be detected after DOM is ready to ensure HTML lang attribute is accessible 81 let currentLang = 'en'; // Default, will be updated in initAccessibility 82 83 // Translation objects 84 const translations = { 85 en: { 86 skipToMain: 'Skip to main content', 87 accessibility: 'Accessibility', 88 closeToolbar: 'Close accessibility toolbar', 89 toggleToolbar: 'Toggle accessibility toolbar', 90 textSize: 'Text Size', 91 increaseText: 'Increase Text', 92 increaseTextAria: 'Increase text size', 93 decreaseText: 'Decrease Text', 94 decreaseTextAria: 'Decrease text size', 95 contrastColors: 'Contrast & Colors', 96 highContrast: 'High Contrast', 97 highContrastAria: 'Toggle high contrast mode', 98 negativeContrast: 'Negative Contrast', 99 negativeContrastAria: 'Toggle negative contrast', 100 grayscale: 'Grayscale', 101 grayscaleAria: 'Toggle grayscale mode', 102 readableFont: 'Readable Font', 103 readableFontAria: 'Use readable font', 104 highlighting: 'Highlighting', 105 highlightLinks: 'Highlight Links', 106 highlightLinksAria: 'Highlight links', 107 highlightTitles: 'Highlight Titles', 108 highlightTitlesAria: 'Highlight headings', 109 readingAids: 'Reading Aids', 110 readingGuide: 'Reading Guide', 111 readingGuideAria: 'Toggle reading guide', 112 readingMask: 'Reading Mask', 113 readingMaskAria: 'Toggle reading mask', 114 textSpacing: 'Text Spacing', 115 textSpacingAria: 'Increase text spacing', 116 navigationInteraction: 'Navigation & Interaction', 117 keyboardNav: 'Keyboard Nav', 118 keyboardNavAria: 'Enhanced keyboard navigation', 119 bigCursor: 'Big Cursor', 120 bigCursorAria: 'Big cursor', 121 stopAnimations: 'Stop Animations', 122 stopAnimationsAria: 'Stop animations',
123 resetAll: 'Reset All Settings', 124 resetAllAria: 'Reset all accessibility settings', 125 accessibilityStatement: 'Accessibility Statement', 126 viewStatementAria: 'View accessibility statement', 127 resetNotification: 'All accessibility settings have been reset.', 128 toolbarAvailable: 'Accessibility toolbar available. Press Alt+A to open.', 129 accessibilityControls: 'Accessibility controls', 130 statementTitle: 'Accessibility Statement', 131 closeStatement: 'Close accessibility statement', 132 statementCommitment: 'Accessibility Commitment', 133 statementCommitmentText: 'We strive to ensure that our website is accessible and usable for everyone, including individuals with disabilities. As part of this commitment, we have implemented an automated accessibility solution designed to enhance usability and align, as closely as possible, with Israeli Standard IS 5568 and the Web Content Accessibility Guidelines (WCAG) 2.1 Level AA.', 134 statementCommitmentText2: 'The accessibility features are provided through an automated tool and are made available "as is", in accordance with our Terms of Service. Automated tools support compliance, but full legal compliance may still require site-level content and code remediation.', 135 statementEnhancements: 'Accessibility Enhancements Available on This Website', 136 statementEnhancementsText: 'The accessibility system installed on this website provides a range of tools to improve navigation, readability, and interaction, including but not limited to:', 137 statementEnhancementsList: [ 138 'Full keyboard navigation support across site functionality', 139 'Adjustable font size, alignment, and spacing', 140 'Contrast controls for light and dark background modes', 141 'Custom color adjustments for improved visibility', 142 'Color-blind friendly modes, including monochrome and contrast matching', 143 'Readability-optimized font options', 144 'Enlarged cursor with optional color changes', 145 'Text scaling up to 200% without loss of content or functionality', 146 'Visual emphasis on links and headings', 147 'Alternative text support for images', 148 'Tooltip explanations for selected content', 149 'Word definitions via text selection', 150 'Reading assistance tools, including reading guides and focus masks', 151 'Controls to reduce or stop blinking, flashing, or animated elements' 152 ], 153 statementEnhancementsText2: 'These features are intended to support users with visual, motor, and cognitive accessibility needs.', 154 statementBrowser: 'Browser and Assistive Technology Support', 155 statementBrowserText: 'We aim to support a broad range of modern browsers and assistive technologies. Our accessibility efforts include testing and optimization for commonly used platforms, including:', 156 statementBrowserList: [ 157 'Chrome, Firefox, Edge, Safari, and Opera', 158 'Screen readers such as VoiceOver (macOS), JAWS, and NVDA (Windows & macOS)' 159 ], 160 statementBrowserText2: 'Please note that accessibility performance may vary depending on individual device configurations and assistive technology combinations.', 161 statementTechnical: 'Technical Framework', 162 statementTechnicalText: 'This website relies on the following technologies to deliver accessible functionality:', 163 statementTechnicalList: [ 164 'HTML5', 165 'WAI-ARIA attributes', 166 'CSS3', 167 'JavaScript (ES6 and above)' 168 ], 169 statementTechnicalText2: 'These technologies are used to support compliance with recognized accessibility standards.', 170 statementThirdParty: 'Third-Party Content', 171 statementThirdPartyText: 'Some areas of this website may include third-party content or integrations (such as social media platforms, embedded videos, or external widgets) that are not owned or c
171ontrolled by us. As a result, we cannot guarantee the accessibility of these external components.', 172 statementThirdPartyText2: 'For reference, you may review accessibility policies from these third-party providers directly:', 173 statementThirdPartyLinks: [ 174 { text: 'Facebook Accessibility', url: 'https://www.facebook.com/help/accessibility' }, 175 { text: 'YouTube Accessibility', url: 'https://support.google.com/youtube/topic/9257096' }, 176 { text: 'Instagram Accessibility', url: 'https://help.instagram.com/650202712454932' }, 177 { text: 'Twitter Accessibility', url: 'https://help.twitter.com/en/using-twitter/accessibility-features' }, 178 { text: 'LinkedIn Accessibility', url: 'https://www.linkedin.com/accessibility' } 179 ], 180 statementFeedback: 'Ongoing Improvements & Feedback', 181 statementFeedbackText: 'We continuously work to improve the accessibility of our website. While we make every effort to address accessibility concerns, some content or features may not yet be fully optimized.', 182 statementFeedbackText2: 'If you experience any difficulty accessing content, encounter an accessibility issue, or wish to suggest improvements, we encourage you to contact us via the "Send Feedback" option available on the website.', 183 statementFeedbackText3: 'Your feedback helps us improve the experience for everyone.', 184 statementLastUpdated: 'Last Updated:' 185 }, 186 he: { 187 skipToMain: '××× ×ת××× ×ר×ש×', 188 accessibility: '× ××ש×ת', 189 closeToolbar: 'ס××ר סר×× × ××ש×ת', 190 toggleToolbar: '×צ×/×סתר סר×× × ××ש×ת', 191 textSize: '×××× ×קס×', 192 increaseText: '×××× ×קס×', 193 increaseTextAria: '×××× ×××× ×קס×', 194 decreaseText: '××§×× ×קס×', 195 decreaseTextAria: '××§×× ×××× ×קס×', 196 contrastColors: '× ××××××ת ×צ××¢××', 197 highContrast: '× ××××××ת ×××××', 198 highContrastAria: '××××£ ××¦× × ××××××ת ×××××', 199 negativeContrast: '× ××××××ת ש××××ת', 200 negativeContrastAria: '××××£ × ××××××ת ש××××ת', 201 grayscale: '×××× × ×פ×ר', 202 grayscaleAria: '××××£ ××¦× ×××× × ×פ×ר', 203 readableFont: '×××¤× ×§×¨××', 204 readableFontAria: '×שת×ש ××××¤× ×§×¨××', 205 highlighting: '×××ש×', 206 highlightLinks: '×××ש ×§×ש×ר××', 207 highlightLinksAria: '×××ש ×§×ש×ר××', 208 highlightTitles: '×××ש ××תר×ת', 209 highlightTitlesAria: '×××ש ××תר×ת', 210 readingAids: '×¢××¨× ×§×¨×××', 211 readingGuide: '××ר×× ×§×¨×××', 212 readingGuideAria: '××××£ ××ר×× ×§×¨×××', 213 readingMask: '×ס×ת קר×××', 214 readingMaskAria: '××××£ ×ס×ת קר×××', 215 textSpacing: '×ר××× ×קס×', 216 textSpacingAria: '×××× ×ר××× ×קס×', 217 navigationInteraction: '× ×××× ×××× ×ר×קצ××', 218 keyboardNav: '× ×××× ××§××ת', 219 keyboardNavAria: '× ×××× ××§××ת ×ש×פר', 220 bigCursor: 'ס×× ××××', 221 bigCursorAria: 'ס×× ××××', 222 stopAnimations: 'עצ×ר ×× ××צ××ת', 223 stopAnimationsAria: 'עצ×ר ×× ××צ××ת', 224 resetAll: '××פ×ס ×× ××××ר×ת', 225 resetAllAria: '××פ×ס ×× ×××ר×ת ×× ××ש×ת', 226 accessibilityStatement: '×צ×רת × ××ש×ת', 227 viewStatementAria: '××¦× ×צ×רת × ××ש×ת', 228 resetNotification: '×× ×××ר×ת ×× ××ש×ת ××פס×.', 229 toolbarAvailable: 'סר×× × ××ש×ת ××××. ×××¥ Alt+A ××× ×פת××.', 230 accessibilityControls: '×קר×ת × ××ש×ת', 231 statementTitle: '×צ×רת × ××ש×ת', 232 closeStatement: 'ס××ר ×צ×רת × ××ש×ת', 233 statementCommitment: '××××××ת ×× ××ש×ת', 234 statementCommitmentText: '×× × ×©××פ×× ×××××× ×©××תר ש×× × × ××ש ×× ×× ×ש×××ש ×¢××ר ××××, ×××× ×× ×©×× ×¢× ××××××××ת. ××××§ ×××××××ת ××, ××ש×× × ×¤×ª×¨×× × ××ש×ת ××××××× ×©× ××¢× ×שפר ×ת ×ש×××ש××ת ×××ת×××, ××× ××פשר, ××ª×§× ××שר××× ×ª×´× 5568 ×××× ×××ת × ××ש×ת ת××× ×××× ××¨× × (WCAG) 2.1 ר×× AA.', 235 statementCommitmentText2: 'ת××× ×ת ×× ××ש×ת ×ס×פק×ת ×××צע×ת ××× ××××××× ××××× ×ת "××¤× ×©××", ××ת×× ××ª× ×× ×ש×ר×ת ש×× ×. ×××× ××××××××× ×ס×××¢×× ×× ××ש×ת, ×× ×¢×××× ×××× ××ר×ש×ת ××××§ עש××× ××ר×ש ×× ×ª××§×× ×ª××× ××§×× ×ר×ת ××תר.', 236 statementEnhancements: 'ש×פ××¨× × ××ש×ת ××××× ×× ××תר ××', 237 statementEnhancementsText: '×ער×ת ×× ××ש×ת ××××ª×§× ×ª ××תר ×× ×ספקת ××××× ×××× ×ש×פ×ר ×× ××××, ×קר×××ת ××××× ×ר×קצ××, ×××× ×× ×× ×¨×§:', 238 statementEnhancementsList: [ 239 'ת×××× ×××× ×× ×××× ××§××ת ××× ×פ×× ×§×¦××× ×××ת ×©× ××תר', 240 '×××× ××פ×, ××ש×ר ××ר××× ×× ××ª× ×× ××ת×××', 241 '×קר×ת × ××××××ת ××צ×× ×¨×§×¢ ×××ר ××××', 242 '×ת×××ת צ××¢ ××ת×××ת ××ש×ת ×ש×פ×ר ×× ×¨××ת', 243 '×צ××× ×××××ת××× ××¢××××¨× ×¦××¢××, ×××× ××× ××ר×× ××ת××ת × ××××××ת', 244 '×פשר×××ת ×××¤× ××ת×××ת ×קר×××ת', 245 'ס×× ××××× ×¢× ×©×× ××× ×¦××¢ ××פצ××× ××××', 246 '××××ת ××§×¡× ×¢× 200% ××× ××××× ×ª××× ×× ×¤×× ×§×¦××× ×××ת', 247 '××××©× ×××××××ת ×©× ×§×ש×ר×× ×××תר×ת', 248 'ת×××× ×××§×¡× ××××¤× ×ת××× ×ת', 249 '×ס×ר×× ××××××פ×× ×ת××× ×©× ××ר', 250 '×××ר×ת ××××× ×××צע×ת ×××רת ×קס×', 251 '××× ×¢×ר ×קר×××, ×××× ××ר××× ×§×¨××× ××ס××ת ×××§××', 252 '×קר×ת ××פ××ª× ×× ×¢×¦×רת ×××× ××× ×××××××, ×× ×¦× ×¦×× ×× ××× ×¤×©××' 253 ], 254 statementEnhancementsText2: 'ת××× ×ת ××× × ××¢×× ×ת××× ××שת×ש×× ×¢× ×¦×¨×× × ××ש×ת ×××ת×××, ××××ר××× ××§××× ×××××××.', 255 statementBrowser: 'ת×××× ××פ××¤× ×× ×××× ××××××ת ×ס×××¢×ת', 256 statementBrowserText: '×× × ×©××פ×× ×ת××× ×××××× ×¨×× ×©× ×פ××¤× ×× ××××¨× ××× ×××× ××××××ת ×ס×××¢×ת. ××××¦× ×× ××ש×ת ש×× × ×××××× ××××§× ×××פ×××××צ×× ×פ××פ×ר××ת × ×¤×צ×ת, ××××:', 257 statementBrowserList: [ 258 'Chrome, Firefox, Edge, Safari ×-Opera', 259 '×§×ר×× ××¡× ×××× VoiceOver (macOS), JAWS ×-NVDA (Windows & macOS)'
260 ], 261 statementBrowserText2: 'ש××× ×× ×©××צ××¢× ×× ××ש×ת עש×××× ×××©×ª× ×ת ××ת×× ×תצ×ר×ת ××ש×ר×× ×××××× ×ש××××× ××× ××××××ת ×ס×××¢×ת.', 262 statementTechnical: '×ס×רת ××× ×ת', 263 statementTechnicalText: '×תר ×× ×סת×× ×¢× ×××× ××××××ת ××××ת ××× ×ספק פ×× ×§×¦××× ×××ת × ××ש×:', 264 statementTechnicalList: [ 265 'HTML5', 266 'ת××× ×ת WAI-ARIA', 267 'CSS3', 268 'JavaScript (ES6 ×××¢××)' 269 ], 270 statementTechnicalText2: '××× ××××××ת ××× ×ש×ש×ת ×ת×××× ××ת××× ××ª×§× × × ××ש×ת ×××ר××.', 271 statementThirdParty: 'ת××× ×¦× ×©××ש×', 272 statementThirdPartyText: '××× ×××ר×× ××תר ×× ×¢×©×××× ××××× ×ª××× ×× ××× ××רצ××ת ×©× ×¦× ×©×××©× (×××× ×¤××פ×ר××ת ×××× ××רת×ת, סר××× ×× ×××××¢×× ×× ××××××× ××צ×× ×××) ש××× × ×××¢×××ª× × ×× ×ש××××ª× ×. ×ת×צ×× ×××, ××× × × ×××××× ×××××× ×ת ×× ××ש×ת ×©× ×¨××××× ××צ×× ××× ×××.', 273 statementThirdPartyText2: '×צ××¨× ×ת×××ס×ת, ת×××× ×××××§ ×××× ××ת × ××ש×ת ××¡×¤×§× ×¦× ×©×××©× ××× ×ש×ר×ת:', 274 statementThirdPartyLinks: [ 275 { text: '× ××ש×ת Facebook', url: 'https://www.facebook.com/help/accessibility' }, 276 { text: '× ××ש×ת YouTube', url: 'https://support.google.com/youtube/topic/9257096' }, 277 { text: '× ××ש×ת Instagram', url: 'https://help.instagram.com/650202712454932' }, 278 { text: '× ××ש×ת Twitter', url: 'https://help.twitter.com/en/using-twitter/accessibility-features' }, 279 { text: '× ××ש×ת LinkedIn', url: 'https://www.linkedin.com/accessibility' } 280 ], 281 statementFeedback: 'ש×פ×ר×× ×ת×ש××× ××ש××', 282 statementFeedbackText: '×× × ×¢××××× ×רצ×פ×ת ×ש×פ×ר ×× ××ש×ת ×©× ××תר ש×× ×. ××¢×× ×©×× × ×¢×ש×× ×× ××××¥ ×××¤× ××שש×ת × ××ש×ת, ×××§ ××ת××× ×× ×ת××× ×ת עש×××× ×¢×××× ×× ××××ת ××ת×××× ××××××.', 283 statementFeedbackText2: '×× ××ª× ××××× ×§××©× ××ש×× ××××©× ×ת×××, × ×ª×§××× ×××¢××ת × ××ש×ת, ×× ×¨×צ×× ××צ××¢ ש×פ×ר××, ×× × ××¢××××× ×ת×× ××צ×ר ×××ª× × ×§×©×¨ ×××צע×ת ×פשר×ת "ש×× ×ש××" ××××× × ××תר.', 284 statementFeedbackText3: '××ש×× ×©××× ×¢××ר ×× × ×שפר ×ת ×××××× ×¢××ר ××××.', 285 statementLastUpdated: '×¢×××× ×××ר×× ×:' 286 }, 287 ar: {"skipToMain":"تخط٠إÙ٠اÙÙ ØØªÙÙ Ø§ÙØ±Ø¦ÙسÙ","accessibility":"Ø¥Ù ÙØ§ÙÙØ© اÙÙØµÙÙ","closeToolbar":"Ø¥ØºÙØ§Ù Ø´Ø±ÙØ· Ø£Ø¯ÙØ§Øª Ø¥Ù ÙØ§ÙÙØ© اÙÙØµÙÙ","toggleToolbar":"تبدÙÙ Ø´Ø±ÙØ· Ø£Ø¯ÙØ§Øª Ø¥Ù ÙØ§ÙÙØ© اÙÙØµÙÙ","textSize":"ØØ¬Ù اÙÙØµ","increaseText":"ØªÙØ¨Ùر اÙÙØµ","increaseTextAria":"Ø²ÙØ§Ø¯Ø© ØØ¬Ù اÙÙØµ","decreaseText":"ØªØµØºÙØ± اÙÙØµ","decreaseTextAria":"تÙÙÙÙ ØØ¬Ù اÙÙØµ","contrastColors":"Ø§ÙØªØ¨Ø§ÙÙ ÙØ§ÙØ£ÙÙØ§Ù","highContrast":"تباÙ٠عاÙÙ","highContrastAria":"تبدÙÙ ÙØ¶Ø¹ Ø§ÙØªØ¨Ø§ÙÙ Ø§ÙØ¹Ø§ÙÙ","negativeContrast":"Ø§ÙØªØ¨Ø§ÙÙ Ø§ÙØ³ÙبÙ","negativeContrastAria":"تبدÙÙ Ø§ÙØªØ¨Ø§ÙÙ Ø§ÙØ³ÙبÙ","grayscale":"تدرج Ø§ÙØ±Ù ادÙ","grayscaleAria":"تبدÙÙ ÙØ¶Ø¹ تدرج Ø§ÙØ±Ù ادÙ","readableFont":"خط سÙ٠اÙÙØ±Ø§Ø¡Ø©","readableFontAria":"استخدا٠خط سÙ٠اÙÙØ±Ø§Ø¡Ø©","highlighting":"Ø§ÙØªÙ ÙÙØ²","highlightLinks":"ت٠ÙÙØ² Ø§ÙØ±Ùابط","highlightLinksAria":"ت٠ÙÙØ² Ø§ÙØ±Ùابط","highlightTitles":"ت٠ÙÙØ² Ø§ÙØ¹ÙاÙÙÙ","highlightTitlesAria":"ت٠ÙÙØ² Ø§ÙØ¹ÙاÙÙÙ","readingAids":"Ø£Ø¯ÙØ§Øª اÙÙØ±Ø§Ø¡Ø©","readingGuide":"دÙÙ٠اÙÙØ±Ø§Ø¡Ø©","readingGuideAria":"تبدÙ٠دÙÙ٠اÙÙØ±Ø§Ø¡Ø©","readingMask":"ÙÙØ§Ø¹ اÙÙØ±Ø§Ø¡Ø©","readingMaskAria":"تبدÙÙ ÙÙØ§Ø¹ اÙÙØ±Ø§Ø¡Ø©","textSpacing":"تباعد اÙÙØµ","textSpacingAria":"Ø²ÙØ§Ø¯Ø© تباعد اÙÙØµ","navigationInteraction":"Ø§ÙØªÙÙÙ ÙØ§ÙØªÙØ§Ø¹Ù","keyboardNav":"تÙÙ٠بÙÙØØ© اÙÙ ÙØ§ØªÙØ","keyboardNavAria":"تÙÙÙ Ù ØØ³Ù٠بÙÙØØ© اÙÙ ÙØ§ØªÙØ","bigCursor":"٠ؤشر ÙØ¨Ùر","bigCursorAria":"٠ؤشر ÙØ¨Ùر","stopAnimations":"Ø¥ÙÙØ§Ù Ø§ÙØØ±ÙØ§Øª","stopAnimationsAria":"Ø¥ÙÙØ§Ù Ø§ÙØ±Ø³Ù٠اÙÙ ØªØØ±ÙØ©","resetAll":"إعادة Ø
287¶Ø¨Ø· اÙÙÙ","resetAllAria":"إعادة ضبط جÙ
ÙØ¹ إعدادات Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ","accessibilityStatement":"Ø¨ÙØ§Ù Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ","viewStatementAria":"عرض Ø¨ÙØ§Ù Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ","resetNotification":"تÙ
ت إعادة ضبط جÙ
ÙØ¹ إعدادات Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ.","toolbarAvailable":"Ø´Ø±ÙØ· Ø£Ø¯ÙØ§Øª Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ Ù
تاØ. اضغط Alt+A ÙÙÙØªØ.","accessibilityControls":"Ø£Ø¯ÙØ§Øª Ø§ÙØªØÙÙ
Ù٠إÙ
ÙØ§ÙÙØ© اÙÙØµÙÙ","statementTitle":"Ø¨ÙØ§Ù Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ","closeStatement":"Ø¥ØºÙØ§Ù Ø¨ÙØ§Ù Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ","statementCommitment":"Ø§ÙØªØ²Ø§Ù
ÙØ§ بإÙ
ÙØ§ÙÙØ© اÙÙØµÙÙ","statementCommitmentText":"ÙØ³Ø¹Ù Ø¬Ø§ÙØ¯ÙÙ ÙØ¶Ù
ا٠أ٠ÙÙÙÙ Ù
ÙÙØ¹Ùا Ø§ÙØ¥ÙÙØªØ±ÙÙÙ Ù
تاØÙا ÙØ³ÙÙ Ø§ÙØ§Ø³ØªØ®Ø¯Ø§Ù
ÙÙØ¬Ù
ÙØ¹Ø بÙ
ا Ù٠ذÙÙ Ø§ÙØ£Ø´Ø®Ø§Øµ ذÙÙ Ø§ÙØ¥Ø¹Ø§ÙØ©. ÙÙØ¬Ø²Ø¡ Ù
Ù ÙØ°Ø§ Ø§ÙØ§ÙتزاÙ
Ø ÙÙ
ÙØ§ بتطبÙÙ ØÙ Ø¢ÙÙ ÙØ¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ Ù
صÙ
Ù
ÙØªØØ³Ù٠سÙÙÙØ© Ø§ÙØ§Ø³ØªØ®Ø¯Ø§Ù
ÙØ§ÙØªÙØ§ÙÙ ÙØ¯Ø± Ø§ÙØ¥Ù
ÙØ§Ù Ù
ع Israeli Standard IS 5568 ÙØ¥Ø±Ø´Ø§Ø¯Ø§Øª اÙÙØµÙÙ ÙÙ
ØØªÙ٠اÙÙÙØ¨ (WCAG) 2.1 Level AA.","statementCommitmentText2":"تÙÙØ¯ÙÙÙ
Ù
ÙØ²Ø§Øª Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ Ù
Ù Ø®ÙØ§Ù أداة Ø¢ÙÙØ©Ø ÙØªØªÙÙØ± \"ÙÙ
ا ÙÙ\"Ø ÙÙÙÙØ§ ÙØ´Ø±ÙØ· Ø§ÙØ®Ø¯Ù
Ø© Ø§ÙØ®Ø§ØµØ© Ø¨ÙØ§. تدعÙ
Ø§ÙØ£Ø¯Ùات Ø§ÙØ¢ÙÙØ© Ø§ÙØ§Ù
ØªØ«Ø§ÙØ ÙÙÙ Ø§ÙØ§Ù
تثا٠اÙÙØ§ÙÙÙ٠اÙÙØ§Ù
Ù ÙØ¯ ÙØªØ·Ùب Ø£ÙØ¶Ùا Ù
Ø¹Ø§ÙØ¬Ø© اÙÙ
ØØªÙÙ ÙØ§ÙÙÙØ¯ عÙÙ Ù
ستÙ٠اÙÙ
ÙÙØ¹.","statementEnhancements":"ØªØØ³ÙÙØ§Øª Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙ٠اÙÙ
تÙÙØ±Ø© عÙÙ ÙØ°Ø§ اÙÙ
ÙÙØ¹","statementEnhancementsText":"ÙÙÙØ± ÙØ¸Ø§Ù
Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙ٠اÙÙ
ÙØ«Ø¨ÙÙØª عÙÙ ÙØ°Ø§ اÙÙ
ÙÙØ¹ Ù
جÙ
ÙØ¹Ø© Ù
Ù Ø§ÙØ£Ø¯Ùات ÙØªØØ³ÙÙ Ø§ÙØªÙÙÙ ÙØ§ÙÙØ±Ø§Ø¡Ø© ÙØ§ÙØªÙØ§Ø¹ÙØ Ø¨Ù
ا Ù٠ذÙ٠عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù ÙØ§ Ø§ÙØØµØ±:","statementEnhancementsList":["دعÙ
ÙØ§Ù
Ù ÙÙØªÙÙ٠بÙÙØØ© اÙÙ
ÙØ§ØªÙØ Ø¹Ø¨Ø± ÙØ¸Ø§Ø¦Ù اÙÙ
ÙÙØ¹","Ø¥Ù
ÙØ§ÙÙØ© تعدÙÙ ØØ¬Ù
Ø§ÙØ®Ø· ÙØ§ÙÙ
ØØ§Ø°Ø§Ø© ÙØ§Ùتباعد","Ø£Ø¯ÙØ§Øª تØÙÙ
ÙÙ Ø§ÙØªØ¨Ø§ÙÙ ÙÙØ¶Ø¹Ù Ø§ÙØ®ÙÙÙØ© اÙÙØ§ØªØØ© ÙØ§ÙداÙÙØ©","تعدÙÙØ§Øª ÙÙÙÙØ© Ù
خصصة ÙØªØØ³ÙÙ Ø§ÙØ±Ø¤ÙØ©","Ø£ÙØ¶Ø§Ø¹ Ù
ÙØ§Ø³Ø¨Ø© ÙØ¹Ù
Ù Ø§ÙØ£ÙÙØ§ÙØ Ø¨Ù
ا Ù٠ذÙÙ Ø§ÙØ£ØØ§Ø¯ÙØ© اÙÙÙÙ ÙÙ
Ø·Ø§Ø¨ÙØ© Ø§ÙØªØ¨Ø§ÙÙ","Ø®ÙØ§Ø±Ø§Øª Ø®Ø·ÙØ· Ù
ÙØØ³ÙÙØ© ÙØ³ÙÙÙØ© اÙÙØ±Ø§Ø¡Ø©","Ù
ؤشر Ù
ÙØ¨Ùر Ù
ع Ø¥Ù
ÙØ§ÙÙØ© تغÙÙØ± اÙÙÙÙ Ø§Ø®ØªÙØ§Ø±ÙÙØ§","ØªÙØ¨Ùر اÙÙØµ ØØªÙ 200% دÙÙ ÙÙØ¯Ø§Ù اÙÙ
ØØªÙ٠أ٠اÙÙØ¸Ø§Ø¦Ù","تÙ
ÙÙØ² بصر٠ÙÙØ±Ùابط ÙØ§ÙØ¹ÙØ§ÙÙÙ","دعÙ
اÙÙØµ Ø§ÙØ¨Ø¯ÙÙ ÙÙØµÙر","Ø´Ø±ÙØØ§Øª تÙÙ
ÙØÙØ© ÙÙ
ØØªÙÙ Ù
ختار","تعرÙÙØ§Øª اÙÙÙÙ
ات عبر ØªØØ¯Ùد اÙÙØµ","Ø£Ø¯ÙØ§Øª Ù
ساعدة عÙ٠اÙÙØ±Ø§Ø¡Ø©Ø بÙ
ا Ù٠ذÙÙ Ø£Ø¯ÙØ© اÙÙØ±Ø§Ø¡Ø© ÙØ£ÙÙØ¹Ø© Ø§ÙØªØ±ÙÙØ²","Ø£Ø¯ÙØ§Øª تØÙÙ
ÙØªÙÙÙ٠أ٠إÙÙØ§Ù اÙÙÙ
ÙØ¶ Ø£Ù Ø§ÙØ¥Ø¶Ø§Ø¡Ø© اÙÙ
ØªÙØ·Ø¹Ø© Ø£Ù Ø§ÙØ¹Ùاصر اÙÙ
ØªØØ±ÙØ©"],"statementEnhancementsText2":"ØªÙØ¯Ù ÙØ°Ù اÙÙ
ÙØ²Ø§Øª Ø¥Ù٠دعÙ
اÙÙ
ستخدÙ
Ù٠ذÙÙ Ø§ÙØ§ØØªÙاجات Ø§ÙØ¨ØµØ±ÙØ© ÙØ§ÙØØ±ÙÙØ© ÙØ§ÙإدراÙÙØ©.","statementBrowser":"دعÙ
اÙÙ
ØªØµÙØØ§Øª ÙØ§ÙتÙÙÙØ§Øª اÙÙ
ساعدة","statementBrowserText":"ÙÙØ¯Ù Ø¥Ù٠دعÙ
Ù
جÙ
ÙØ¹Ø© ÙØ§Ø³Ø¹Ø© Ù
٠اÙÙ
ØªØµÙØØ§Øª Ø§ÙØØ¯ÙØ«Ø© ÙØ§ÙتÙÙÙØ§Øª اÙÙ
ساعدة. تشÙ
٠جÙÙØ¯Ùا ÙÙ Ù
جا٠إÙ
ÙØ§ÙÙØ© اÙÙØµÙÙ Ø§ÙØ§Ø®ØªØ¨Ø§Ø± ÙØ§ÙØªØØ³ÙÙ ÙÙÙ
ÙØµØ§Øª شائعة Ø§ÙØ§Ø³ØªØ®Ø¯Ø§Ù
Ø Ø¨Ù
ا Ù٠ذÙÙ:","statementBrowserList":["Chrome ÙFirefox ÙEdge ÙSafari ÙOpera","ÙØ§Ø±Ø¦Ø§Øª Ø§ÙØ´Ø§Ø´Ø© Ù
ث٠VoiceOver (macOS)Ø ÙJAWSØ ÙNVDA (Windows ÙmacOS)"],"statementBrowserText2":"ÙÙØ±Ø¬Ù Ù
ÙØ§ØØ¸Ø© أ٠أداء Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ ÙØ¯ ÙØ®ØªÙÙ ØØ³Ø¨ إعدادات Ø§ÙØ¬Ùاز اÙÙØ±Ø¯ÙØ© ÙÙ
جÙ
ÙØ¹Ø§Øª Ø§ÙØªÙÙÙØ§Øª اÙÙ
ساعدة اÙÙ
ستخدÙ
Ø©.","statementTechnical":"Ø§ÙØ¥Ø·Ø§Ø± Ø§ÙØªÙÙÙ","statementTechnicalText":"ÙØ¹ØªÙ
د ÙØ°Ø§ اÙÙ
ÙÙØ¹ عÙÙ Ø§ÙØªÙÙÙØ§Øª Ø§ÙØªØ§ÙÙØ© ÙØªÙÙÙØ± ÙØ¸Ø§Ø¦Ù Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ:","statementTechnicalList":["HTML5","سÙ
ات WAI-ARIA","CSS3","JavaScript (ES6 ÙÙ
ا Ø¨Ø¹Ø¯ÙØ§)"],"statementTechnicalText2":"ØªÙØ³ØªØ®Ø¯Ù
ÙØ°Ù Ø§ÙØªÙÙÙØ§Øª ÙØ¯Ø¹Ù
Ø§ÙØ§Ù
تثا٠ÙÙ
عاÙÙØ± Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙ٠اÙÙ
Ø¹ØªØ±Ù Ø¨ÙØ§.","statementThirdParty":"Ù
ØØªÙÙ Ø§ÙØ¬Ùات Ø§ÙØ®Ø§Ø±Ø¬ÙØ©","statementThirdPartyText":"ÙØ¯ تتضÙ
٠بعض أجزاء ÙØ°Ø§ اÙÙ
ÙÙØ¹ Ù
ØØªÙÙ Ø£Ù ØªÙØ§Ù
ÙØ§Øª Ù
Ù Ø¬ÙØ§Øª Ø®Ø§Ø±Ø¬ÙØ© (Ù
ث٠Ù
ÙØµØ§Øª Ø§ÙØªÙØ§ØµÙ Ø§ÙØ§Ø¬ØªÙ
اع٠أ٠Ù
ÙØ§Ø·Ø¹ اÙÙÙØ¯Ù٠اÙÙ
ضÙ
ÙÙØ© Ø£Ù Ø§ÙØ£Ø¯Ùات Ø§ÙØ®Ø§Ø±Ø¬ÙØ©) ÙØ§ ÙÙ
ÙÙÙØ§ ÙÙØ§ ÙØªØÙÙ
Ø¨ÙØ§. ÙÙØªÙجة ÙØ°ÙÙØ ÙØ§ ÙÙ
ÙÙÙØ§ ضÙ
ا٠إÙ
ÙØ§ÙÙØ© اÙÙØµÙÙ ÙÙØ°Ù اÙÙ
ÙÙÙØ§Øª Ø§ÙØ®Ø§Ø±Ø¬ÙØ©.","statementThirdPartyText2":"ÙÙØ§Ø·ÙØ§Ø¹Ø ÙÙ
ÙÙÙÙ
Ù
راجعة Ø³ÙØ§Ø³Ø§Øª Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ Ø§ÙØ®Ø§ØµØ© بÙ
Ø²ÙØ¯Ù Ø§ÙØ®Ø¯Ù
Ø© ÙØ¤Ùاء Ù
باشرةÙ:","statementThirdPartyLinks":[{"text":"Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ ÙÙ Facebook","url":"https://www.facebook.com/help/accessibility"},{"text":"Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ ÙÙ YouTube","url":"https://support.google.com/youtube/topic/9257096"},{"text":"Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ ÙÙ Instagram","url":"https://help.instagram.com/650202712454932"},{"text":"Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ ÙÙ Twitter","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙ ÙÙ LinkedIn","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"Ø§ÙØªØØ³ÙÙØ§Øª اÙÙ
ستÙ
رة ÙØ§ÙÙ
ÙØ§ØØ¸Ø§Øª","statementFeedbackText":"ÙØ¹Ù
٠باستÙ
رار عÙÙ ØªØØ³Ù٠إÙ
ÙØ§ÙÙØ© اÙÙØµÙÙ ÙÙ
ÙÙØ¹Ùا. ÙØ¹ÙÙ Ø§ÙØ±ØºÙ
Ù
٠بذÙÙØ§ ÙØµØ§Ø±Ù Ø¬ÙØ¯Ùا ÙÙ
Ø¹Ø§ÙØ¬Ø© ÙØ¶Ø§Ùا Ø¥Ù
ÙØ§ÙÙØ© اÙÙØµÙÙØ ÙÙØ¯ ÙØ§ ÙÙÙ٠بعض اÙÙ
ØØªÙ٠أ٠اÙÙ
ÙØ²Ø§Øª Ù
ØØ³ÙÙÙØ§ باÙÙØ§Ù
٠بعد.","statementFeedbackText2":"إذا ÙØ§Ø¬ÙتÙ
Ø£Ù ØµØ¹ÙØ¨Ø© Ù٠اÙÙØµÙ٠إÙ٠اÙÙ
ØØªÙÙØ Ø£Ù ØµØ§Ø¯ÙØªÙ
Ù
Ø´ÙÙØ© تتعÙ٠بإÙ
ÙØ§ÙÙØ© اÙÙØµÙÙØ أ٠رغبتÙ
ÙÙ Ø§ÙØªØ±Ø§Ø ØªØØ³ÙÙØ§ØªØ ÙÙØÙ ÙØ´Ø¬Ø¹ÙÙ
عÙÙ Ø§ÙØªÙاص٠Ù
Ø¹ÙØ§ عبر Ø®ÙØ§Ø± \"إرØ
287³Ø§Ù Ù ÙØ§ØØ¸Ø§Øª\" اÙÙ ØªØ§Ø Ø¹Ù٠اÙÙ ÙÙØ¹.","statementFeedbackText3":"ØªØ³Ø§Ø¹Ø¯ÙØ§ Ù ÙØ§ØØ¸Ø§ØªÙ٠عÙÙ ØªØØ³ÙÙ Ø§ÙØªØ¬Ø±Ø¨Ø© ÙÙØ¬Ù ÙØ¹.","statementLastUpdated":"آخر ØªØØ¯ÙØ«:"}, 288 es: {"skipToMain":"Saltar al contenido principal","accessibility":"Accesibilidad","closeToolbar":"Cerrar barra de accesibilidad","toggleToolbar":"Alternar barra de accesibilidad","textSize":"Tamaño del Texto","increaseText":"Aumentar Texto","increaseTextAria":"Aumentar el tamaño del texto","decreaseText":"Reducir Texto","decreaseTextAria":"Reducir el tamaño del texto","contrastColors":"Contraste y Colores","highContrast":"Alto Contraste","highContrastAria":"Alternar modo de alto contraste","negativeContrast":"Contraste Negativo","negativeContrastAria":"Alternar contraste negativo","grayscale":"Escala de Grises","grayscaleAria":"Alternar modo de escala de grises","readableFont":"Fuente Legible","readableFontAria":"Usar fuente legible","highlighting":"Resaltado","highlightLinks":"Resaltar Enlaces","highlightLinksAria":"Resaltar enlaces","highlightTitles":"Resaltar TÃtulos","highlightTitlesAria":"Resaltar encabezados","readingAids":"Ayudas de Lectura","readingGuide":"GuÃa de Lectura","readingGuideAria":"Alternar guÃa de lectura","readingMask":"Máscara de Lectura","readingMaskAria":"Alternar máscara de lectura","textSpacing":"Espaciado del Texto","textSpacingAria":"Aumentar el espaciado del texto","navigationInteraction":"Navegación e Interacción","keyboardNav":"Navegación por Teclado","keyboardNavAria":"Navegación por teclado mejorada","bigCursor":"Cursor Grande","bigCursorAria":"Cursor grande","stopAnimations":"Detener Animaciones","stopAnimationsAria":"Detener animaciones","resetAll":"Restablecer Todo","resetAllAria":"Restablecer todos los ajustes de accesibilidad","accessibilityStatement":"Declaración de Accesibilidad","viewStatementAria":"Ver declaración de accesibilidad","resetNotification":"Todos los ajustes de accesibilidad se han restablecido.","toolbarAvailable":"Barra de accesibilidad disponible. Presione Alt+A para abrir.","accessibilityControls":"Controles de accesibilidad","statementTitle":"Declaración de Accesibilidad","closeStatement":"Cerrar declaración de accesibilidad","statementCommitment":"Compromiso con la Accesibilidad","statementCommitmentText":"Nos esforzamos por garantizar que nuestro sitio web sea accesible y utilizable para todas las personas, incluidas aquellas con discapacidades. Como parte de este compromiso, hemos implementado una solución de accesibilidad automatizada diseñada para mejorar la usabilidad y alinearse, en la medida de lo posible, con la Norma Israelà IS 5568 y las Pautas de Accesibilidad para el Contenido Web (WCAG) 2.1 Nivel AA.","statementCommitmentText2":"Las funciones de accesibilidad se proporcionan mediante una herramienta automatizada y se ofrecen \"tal cual\", de acuerdo con nuestros Términos de Servicio. Las herramientas automatizadas apoyan el cumplimiento, pero la conformidad legal total puede requerir también correcciones de contenido y código a nivel del sitio.","statementEnhancements":"Mejoras de Accesibilidad Disponibles en Este Sitio Web","statementEnhancementsText":"El sistema de accesibilidad instalado en este sitio web ofrece una variedad de herramientas para mejorar la navegación, la legibilidad y la interacción, incluyendo entre otras:","statementEnhancementsList":["Soporte completo de navegación por teclado en todas las funciones del sitio","Tamaño de fuente, alineación y espaciado ajustables","Controles de contraste para modos de fondo claro y oscuro","Ajustes de color personalizados para mejorar la visibilidad","Modos adaptados para personas con daltonismo, incluyendo monocromo y coincidencia de contraste","Opciones de fuente optimizadas para la legibilidad","Cursor ampliado con cambios de color opcionales","Escalado de texto hasta el 200% sin pérdida de contenido ni funcionalidad","Ãnfasis visual en enlaces y encabezados","Soporte de texto alternativo para imágenes","Explicaciones mediante información sobre herramientas para contenido seleccionado","Definiciones de palabras mediante selección de texto","Herramientas de asistencia de lectura, incluyendo guÃas de lectura y máscaras de enfoque","Controles para reducir o detener elementos parpadeantes o animados"],"statementEnhancementsText2":"Estas funciones están diseña
288das para apoyar a los usuarios con necesidades de accesibilidad visuales, motoras y cognitivas.","statementBrowser":"Compatibilidad con Navegadores y TecnologÃas de Asistencia","statementBrowserText":"Nuestro objetivo es ser compatibles con una amplia gama de navegadores modernos y tecnologÃas de asistencia. Nuestros esfuerzos de accesibilidad incluyen pruebas y optimización para las plataformas más utilizadas, entre ellas:","statementBrowserList":["Chrome, Firefox, Edge, Safari y Opera","Lectores de pantalla como VoiceOver (macOS), JAWS y NVDA (Windows y macOS)"],"statementBrowserText2":"Tenga en cuenta que el rendimiento de accesibilidad puede variar según la configuración individual del dispositivo y las combinaciones de tecnologÃas de asistencia utilizadas.","statementTechnical":"Marco Técnico","statementTechnicalText":"Este sitio web se basa en las siguientes tecnologÃas para ofrecer funciones accesibles:","statementTechnicalList":["HTML5","Atributos WAI-ARIA","CSS3","JavaScript (ES6 y superior)"],"statementTechnicalText2":"Estas tecnologÃas se utilizan para apoyar el cumplimiento de las normas de accesibilidad reconocidas.","statementThirdParty":"Contenido de Terceros","statementThirdPartyText":"Algunas áreas de este sitio web pueden incluir contenido o integraciones de terceros (como plataformas de redes sociales, videos incrustados o widgets externos) que no son propiedad ni están controlados por nosotros. Como resultado, no podemos garantizar la accesibilidad de estos componentes externos.","statementThirdPartyText2":"Como referencia, puede consultar directamente las polÃticas de accesibilidad de estos proveedores externos:","statementThirdPartyLinks":[{"text":"Accesibilidad de Facebook","url":"https://www.facebook.com/help/accessibility"},{"text":"Accesibilidad de YouTube","url":"https://support.google.com/youtube/topic/9257096"},{"text":"Accesibilidad de Instagram","url":"https://help.instagram.com/650202712454932"},{"text":"Accesibilidad de Twitter","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"Accesibilidad de LinkedIn","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"Mejoras Continuas y Comentarios","statementFeedbackText":"Trabajamos continuamente para mejorar la accesibilidad de nuestro sitio web. Aunque hacemos todo lo posible por resolver los problemas de accesibilidad, es posible que algunos contenidos o funciones aún no estén completamente optimizados.","statementFeedbackText2":"Si tiene dificultades para acceder al contenido, encuentra algún problema de accesibilidad o desea sugerir mejoras, le invitamos a contactarnos a través de la opción \"Enviar Comentarios\" disponible en el sitio web.","statementFeedbackText3":"Sus comentarios nos ayudan a mejorar la experiencia para todos.","statementLastUpdated":"Ãltima Actualización:"}, 289 fr: {"skipToMain":"Passer au contenu principal","accessibility":"Accessibilité","closeToolbar":"Fermer la barre d'outils d'accessibilité","toggleToolbar":"Basculer la barre d'outils d'accessibilité","textSize":"Taille du texte","increaseText":"Augmenter le texte","increaseTextAria":"Augmenter la taille du texte","decreaseText":"Réduire le texte","decreaseTextAria":"Réduire la taille du texte","contrastColors":"Contraste et couleurs","highContrast":"Contraste élevé","highContrastAria":"Activer/désactiver le mode contraste élevé","negativeContrast":"Contraste négatif","negativeContrastAria":"Activer/désactiver le contraste négatif","grayscale":"Niveaux de gris","grayscaleAria":"Activer/désactiver le mode niveaux de gris","readableFont":"Police lisible","readableFontAria":"Utiliser une police lisible","highlighting":"Mise en évidence","highlightLinks":"Surligner les liens","highlightLinksAria":"Surligner les liens","highlightTitles":"Surligner les titres","highlightTitlesAria":"Surligner les titres","readingAids":"Aides à la lecture","readingGuide":"Guide de lecture","readingGuideAria":"Activer/désactiver le guide de lecture","readingMask":"Masque de lecture","readingMaskAria":"Activer/désactiver le masque de lecture","textSpacing":"Espacement du texte","textSpacingAria":"Augmenter l'espacement du texte","navigationInteraction":"Navigation et interaction","keyboardNav":"Navigation au clavier","keyboardNavAria":"Navigation au clavier améliorée","bigCursor":"Grand curseur","bigCursorAria":"Grand curseur","stopAnimations":"Arrêter les animations","stopAnimationsAria":"Arrêter les animations","resetAll":"Réinitialiser tous les réglages","resetAllAria":"Réinitialiser tous les réglages d'accessibilité","accessibilityStatement":"Déclaration d'accessibilité","viewStatementAria":"Consulter la déclaration d'accessibilité","resetNotification":"Tous les réglages d'accessibilité ont été réinitialisés.","toolbarAvailable":"Barre d'outils d'accessibilité disponible. Appuyez sur Alt+A pour l'ouvrir.","accessibilityControl
289s":"Commandes d'accessibilité","statementTitle":"Déclaration d'accessibilité","closeStatement":"Fermer la déclaration d'accessibilité","statementCommitment":"Engagement en matière d'accessibilité","statementCommitmentText":"Nous nous efforçons de rendre notre site web accessible et utilisable par tous, y compris les personnes en situation de handicap. Dans le cadre de cet engagement, nous avons mis en place une solution d'accessibilité automatisée conçue pour améliorer l'utilisabilité et s'aligner, autant que possible, sur la norme israélienne Israeli Standard IS 5568 et les Règles pour l'accessibilité des contenus Web (WCAG) 2.1 niveau AA (WCAG 2.1 Level AA).","statementCommitmentText2":"Les fonctionnalités d'accessibilité sont fournies via un outil automatisé et proposées « telles quelles », conformément à nos Conditions d'utilisation. Les outils automatisés facilitent la conformité, mais une conformité légale complète peut encore nécessiter des corrections du contenu et du code du site.","statementEnhancements":"Améliorations d'accessibilité disponibles sur ce site","statementEnhancementsText":"Le système d'accessibilité installé sur ce site propose une gamme d'outils pour améliorer la navigation, la lisibilité et l'interaction, incluant notamment :","statementEnhancementsList":["Prise en charge complète de la navigation au clavier sur l'ensemble des fonctionnalités du site","Taille, alignement et espacement du texte réglables","Contrôles de contraste pour les modes fond clair et fond sombre","Réglages de couleurs personnalisés pour une meilleure visibilité","Modes adaptés aux daltoniens, y compris le monochrome et la correspondance des contrastes","Options de police optimisées pour la lisibilité","Curseur agrandi avec changement de couleur optionnel","Agrandissement du texte jusqu'à 200 % sans perte de contenu ni de fonctionnalité","Mise en valeur visuelle des liens et des titres","Prise en charge du texte alternatif pour les images","Info-bulles explicatives pour certains contenus","Définitions de mots par sélection de texte","Outils d'aide à la lecture, y compris guides de lecture et masques de concentration","Commandes pour réduire ou arrêter les éléments clignotants ou animés"],"statementEnhancementsText2":"Ces fonctionnalités visent à répondre aux besoins des utilisateurs présentant des déficiences visuelles, motrices et cognitives.","statementBrowser":"Prise en charge des navigateurs et technologies d'assistance","statementBrowserText":"Nous visons à prendre en charge un large éventail de navigateurs modernes et de technologies d'assistance. Nos efforts d'accessibilité incluent des tests et des optimisations pour les plateformes couramment utilisées, notamment :","statementBrowserList":["Chrome, Firefox, Edge, Safari et Opera","Les lecteurs d'écran tels que VoiceOver (macOS), JAWS et NVDA (Windows et macOS)"],"statementBrowserText2":"Veuillez noter que les performances d'accessibilité peuvent varier selon les configurations d'appareils et les combinaisons de technologies d'assistance utilisées.","statementTechnical":"Cadre technique","statementTechnicalText":"Ce site web s'appuie sur les technologies suivantes pour offrir des fonctionnalités accessibles :","statementTechnicalList":["HTML5","Attributs WAI-ARIA","CSS3","JavaScript (ES6 et versions ultérieures)"],"statementTechnicalText2":"Ces technologies sont utilisées pour favoriser la conformité aux normes d'accessibilité reconnues.","statementThirdParty":"Contenu tiers","statementThirdPartyText":"Certaines parties de ce site web peuvent inclure du contenu ou des intégrations tiers (tels que des plateformes de réseaux sociaux, des vidéos intégrées ou des widgets externes) qui ne nous appartiennent pas et que nous ne contrôlons pas. Par conséquent, nous ne pouvons garantir l'accessibilité de ces composants externes.","statementThirdPartyText2":"à titre indicatif, vous pouvez consulter directement les politiques d'accessibilité de ces fournisseurs tiers :","statementThirdPartyLinks":[{"text":"Accessibilité Facebook","url":"https://www.facebook.com/help/accessibility"},{"text":"Accessibilité YouTube","url":"https://support.google.com/youtube/topic/9257096"},{"text":"Accessibilité Instagram","url":"https://help.instagram.com/650202712454932"},{"text":"Accessibilité Twitter","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"Accessibilité LinkedIn","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"Améliorations continues et retours","statementFeedbackText":"Nous travaillons en permanence à améliorer l'accessibilité de notre site web. Bien que nous fassions tous les efforts possibles pour résoudre les problèmes d'accessibilité, certains contenus ou fonctionnalités peuvent ne pas encore être pleinement optimisés.","statementFeedbackText2":"Si vous rencontrez des difficultés d'accès au contenu, un problème d'accessibilité, ou si vous souhaitez suggérer des améliorations, nous vous invitons à nous contacter via l'option « Envoyer un commentaire » disponible sur le site.","statementFeedbackText3":"Vos retours nous aident à améliorer l'expérience pour tous.","statementLastUpdated":"Dernière mise à jour :"}, 290 de: {"skipToMain":"Zum Hauptinhalt springen","accessibility":"Barrierefreiheit","closeToolbar":"Symbolleiste für Barrierefreiheit schlieÃen","toggleToolbar":"Symbolleiste für Barrierefreiheit ein-/ausblenden","textSize":"TextgröÃe","increaseText":"Text vergröÃern","increaseTextAria":"TextgröÃe vergröÃern","decreaseText":"Text verkleinern","decreaseTextAria":"TextgröÃe verkleinern","contrastColors":"Kontrast & Farben","highContrast":"Hoher Kontrast","highContrastAria":"Hohen Kontrastmodus umschalten","negativeContrast":"Negativkontrast","negativeContrastAria":"Negativkontrast umschalten","grayscale":"Graustufen","grayscaleAria":"Graustufenmodus umschalten","readableFont":"Lesbare Schrift","readableFontAria":"Lesbare Schrift verwenden","highlighting":"Hervorhebung","highlightLinks":"Links hervorheben","highlightLinksAria":"Links hervorheben","highlightTitles":"Ãberschriften hervorheben","highlightTitlesAria":"Ãberschriften hervorheben","readingAids":"Lesehilfen","readingGuide":"Leseführung","readingGuideAria":"Leseführung umschalten","readingMask":"Lesemaske","readingMaskAria":"Lesemaske umschalten","textSpacing":"Textabstand","textSpacingAria":"Textabstand vergröÃern","navigationInteraction":"Navigation & Interaktion","keyboardNav":"Tastaturnavigation","keyboardNavAria":"Erweiterte Tastaturnavigation","bigCursor":"GroÃer Cursor","bigCursorAria":"GroÃer Cursor","stopAnimations":"Animationen stoppen","stopAnimationsAria":"Animationen stoppen","resetAll":"Alle Einstellungen zurücksetzen","resetAllAria":"Alle Barrierefreiheitseinstellungen zurücksetzen","accessibilityStatement":"Erklärung zur Barrierefreiheit","viewStatementAria":"Erklärung zur Barrierefreiheit anzeigen","resetNotification":"Alle Barrierefreiheitseinstellungen wurden zurückgesetzt.","toolbarAvailable":"Symbolleiste für Barrierefreiheit verfügbar. Drücken Sie Alt+A zum Ãffnen.","accessibilityControl
290s":"Bedienelemente für Barrierefreiheit","statementTitle":"Erklärung zur Barrierefreiheit","closeStatement":"Erklärung zur Barrierefreiheit schlieÃen","statementCommitment":"Unser Engagement für Barrierefreiheit","statementCommitmentText":"Wir bemühen uns sicherzustellen, dass unsere Website für alle zugänglich und nutzbar ist, einschlieÃlich Menschen mit Behinderungen. Im Rahmen dieses Engagements haben wir eine automatisierte Lösung für Barrierefreiheit implementiert, die die Nutzbarkeit verbessern und sich so weit wie möglich am israelischen Standard IS 5568 und den Web Content Accessibility Guidelines (WCAG) 2.1 Level AA orientieren soll.","statementCommitmentText2":"Die Funktionen zur Barrierefreiheit werden über ein automatisiertes Tool bereitgestellt und \"wie besehen\" gemäà unseren Nutzungsbedingungen zur Verfügung gestellt. Automatisierte Tools unterstützen die Einhaltung der Vorgaben, eine vollständige rechtliche Konformität kann jedoch weiterhin Anpassungen von Inhalten und Code auf Website-Ebene erfordern.","statementEnhancements":"Auf dieser Website verfügbare Barrierefreiheitsfunktionen","statementEnhancementsText":"Das auf dieser Website installierte Barrierefreiheitssystem bietet eine Reihe von Tools zur Verbesserung von Navigation, Lesbarkeit und Interaktion, unter anderem:","statementEnhancementsList":["Vollständige Unterstützung der Tastaturnavigation für alle Funktionen der Website","Anpassbare SchriftgröÃe, Ausrichtung und Abstände","Kontrastregler für helle und dunkle Hintergrundmodi","Individuelle Farbanpassungen zur besseren Sichtbarkeit","Farbenblinden-freundliche Modi, einschlieÃlich Monochrom und Kontrastanpassung","Lesbarkeitsoptimierte Schriftoptionen","VergröÃerter Cursor mit optionaler Farbänderung","Textskalierung bis zu 200 % ohne Verlust von Inhalt oder Funktionalität","Visuelle Hervorhebung von Links und Ãberschriften","Unterstützung für Alternativtexte bei Bildern","Tooltip-Erklärungen für ausgewählte Inhalte","Worterklärungen durch Textauswahl","Lesehilfen, einschlieÃlich Leseführung und Fokusmasken","Steuerelemente zum Reduzieren oder Stoppen von blinkenden, flackernden oder animierten Elementen"],"statementEnhancementsText2":"Diese Funktionen sollen Nutzer mit visuellen, motorischen und kognitiven Einschränkungen unterstützen.","statementBrowser":"Unterstützung für Browser und assistive Technologien","statementBrowserText":"Wir bemühen uns, eine breite Palette moderner Browser und assistiver Technologien zu unterstützen. Unsere Bemühungen um Barrierefreiheit umfassen Tests und Optimierungen für gängige Plattformen, darunter:","statementBrowserList":["Chrome, Firefox, Edge, Safari und Opera","Bildschirmleseprogramme wie VoiceOver (macOS), JAWS und NVDA (Windows & macOS)"],"statementBrowserText2":"Bitte beachten Sie, dass die Leistung der Barrierefreiheit je nach individueller Gerätekonfiguration und Kombination assistiver Technologien variieren kann.","statementTechnical":"Technischer Rahmen","statementTechnicalText":"Diese Website nutzt folgende Technologien, um barrierefreie Funktionen bereitzustellen:","statementTechnicalList":["HTML5","WAI-ARIA-Attribute","CSS3","JavaScript (ES6 und höher)"],"statementTechnicalText2":"Diese Technologien werden eingesetzt, um die Einhaltung anerkannter Standards zur Barrierefreiheit zu unterstützen.","statementThirdParty":"Inhalte von Drittanbietern","statementThirdPartyText":"Einige Bereiche dieser Website können Inhalte oder Integrationen von Drittanbietern enthalten (wie Social-Media-Plattformen, eingebettete Videos oder externe Widgets), die nicht in unserem Eigentum stehen oder von uns kontrolliert werden. Daher können wir die Barrierefreiheit dieser externen Komponenten nicht garantieren.","statementThirdPartyText2":"Zur Orientierung können Sie die Richtlinien zur Barrierefreiheit dieser Drittanbieter direkt einsehen:","statementThirdPartyLinks":[{"text":"Facebook Barrierefreiheit","url":"https://www.facebook.com/help/accessibility"},{"text":"YouTube Barrierefreiheit","url":"https://support.google.com/youtube/topic/9257096"},{"text":"Instagram Barrierefreiheit","url":"https://help.instagram.com/650202712454932"},{"text":"Twitter Barrierefreiheit","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"LinkedIn Barrierefreiheit","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"Laufende Verbesserungen & Feedback","statementFeedbackText":"Wir arbeiten kontinuierlich daran, die Barrierefreiheit unserer Website zu verbessern. Obwohl wir uns bemühen, alle Anliegen zur Barrierefreiheit zu berücksichtigen, sind möglicherweise noch nicht alle Inhalte oder Funktionen vollständig optimiert.","statementFeedbackText2":"Wenn Sie Schwierigkeiten beim Zugriff auf Inhalte haben, ein Problem mit der Barrierefreiheit feststellen oder Verbesserungsvorschläge machen möchten, kontaktieren Sie uns bitte über die Option \"Feedback senden\" auf der Website.","statementFeedbackText3":"Ihr Feedback hilft uns, die Erfahrung für alle zu verbessern.","statementLastUpdated":"Zuletzt aktualisiert:"},
291 pt: {"skipToMain":"Pular para o conteúdo principal","accessibility":"Acessibilidade","closeToolbar":"Fechar barra de acessibilidade","toggleToolbar":"Abrir/fechar barra de acessibilidade","textSize":"Tamanho do Texto","increaseText":"Aumentar Texto","increaseTextAria":"Aumentar tamanho do texto","decreaseText":"Diminuir Texto","decreaseTextAria":"Diminuir tamanho do texto","contrastColors":"Contraste e Cores","highContrast":"Alto Contraste","highContrastAria":"Ativar/desativar modo de alto contraste","negativeContrast":"Contraste Negativo","negativeContrastAria":"Ativar/desativar contraste negativo","grayscale":"Escala de Cinza","grayscaleAria":"Ativar/desativar modo escala de cinza","readableFont":"Fonte LegÃvel","readableFontAria":"Usar fonte legÃvel","highlighting":"Destaques","highlightLinks":"Destacar Links","highlightLinksAria":"Destacar links","highlightTitles":"Destacar TÃtulos","highlightTitlesAria":"Destacar tÃtulos","readingAids":"AuxÃlios de Leitura","readingGuide":"Guia de Leitura","readingGuideAria":"Ativar/desativar guia de leitura","readingMask":"Máscara de Leitura","readingMaskAria":"Ativar/desativar máscara de leitura","textSpacing":"Espaçamento do Texto","textSpacingAria":"Aumentar espaçamento do texto","navigationInteraction":"Navegação e Interação","keyboardNav":"Navegação por Teclado","keyboardNavAria":"Navegação por teclado aprimorada","bigCursor":"Cursor Grande","bigCursorAria":"Cursor grande","stopAnimations":"Parar Animações","stopAnimationsAria":"Parar animações","resetAll":"Redefinir Todas as Configurações","resetAllAria":"Redefinir todas as configurações de acessibilidade","accessibilityStatement":"Declaração de Acessibilidade","viewStatementAria":"Ver declaração de acessibilidade","resetNotification":"Todas as configurações de acessibilidade foram redefinidas.","toolbarAvailable":"Barra de acessibilidade disponÃvel. Pressione Alt+A para abrir.","accessibilityControls":"Controles de acessibilidade","statementTitle":"Declaração de Acessibilidade","closeStatement":"Fechar declaração de acessibilidade","statementCommitment":"Compromisso com a Acessibilidade","statementCommitmentText":"Nos esforçamos para garantir que o nosso site seja acessÃvel e utilizável por todos, incluindo pessoas com deficiência. Como parte deste compromisso, implementámos uma solução automatizada de acessibilidade concebida para melhorar a usabilidade e alinhar-se, tanto quanto possÃvel, com a Norma Israelita IS 5568 e as Diretrizes de Acessibilidade para Conteúdo Web (WCAG) 2.1 NÃvel AA.","statementCommitmentText2":"Os recursos de acessibilidade são fornecidos através de uma ferramenta automatizada e disponibilizados \"tal como estão\", de acordo com os nossos Termos de Serviço. As ferramentas automatizadas apoiam a conformidade, mas a conformidade legal integral pode ainda exigir correções ao nÃvel do conteúdo e do código do site.","statementEnhancements":"Melhorias de Acessibilidade DisponÃveis Neste Site","statementEnhancementsText":"O sistema de acessibilidade instalado neste site fornece uma variedade de ferramentas para melhorar a navegação, a legibilidade e a interação, incluindo, entre outras:","statementEnhancementsList":["Suporte completo de navegação por teclado em todas as funcionalidades do site","Tamanho, alinhamento e espaçamento de fonte ajustáveis","Controlos de contraste para modos de fundo claro e escuro","Ajustes de cor personalizados para melhor visibilidade","Modos adaptados para daltónicos, incluindo monocromático e correspondência de contraste","Opções de fonte otimizadas para legibilidade","Cursor ampliado com alteração de cor opcional","Ampliação de texto até 200% sem perda de conteúdo ou funcionalidade","Ãnfase visual em links e tÃtulos","Suporte de texto alternativo para imagens","Explicações em dicas de ferramentas para conteúdos selecionados","Definições de palavras através da seleção de texto","Ferramentas de apoio à leitura, incluindo guias de leitura e máscaras de foco","Controlos para reduzir ou parar elementos intermitentes, piscantes ou animados"],"statementEnhancementsText2":"Estes recursos destinam-se a apoiar utilizadores com necessidades de acessibilidade visuais, motoras e cognitivas.","statementBrowser":"Suporte para Navegadores e Tecnologias Assistivas","statementBrowserText":"Procuramos suportar uma ampla variedade de navegadores modernos e tecnologias assistivas. Os nossos esforç
291os de acessibilidade incluem testes e otimização para plataformas comummente utilizadas, incluindo:","statementBrowserList":["Chrome, Firefox, Edge, Safari e Opera","Leitores de ecrã como VoiceOver (macOS), JAWS e NVDA (Windows e macOS)"],"statementBrowserText2":"Note-se que o desempenho da acessibilidade pode variar consoante as configurações individuais do dispositivo e as combinações de tecnologias assistivas.","statementTechnical":"Estrutura Técnica","statementTechnicalText":"Este site depende das seguintes tecnologias para fornecer funcionalidades acessÃveis:","statementTechnicalList":["HTML5","Atributos WAI-ARIA","CSS3","JavaScript (ES6 e superior)"],"statementTechnicalText2":"Estas tecnologias são utilizadas para apoiar a conformidade com normas de acessibilidade reconhecidas.","statementThirdParty":"Conteúdo de Terceiros","statementThirdPartyText":"Algumas áreas deste site podem incluir conteúdo ou integrações de terceiros (como plataformas de redes sociais, vÃdeos incorporados ou widgets externos) que não são propriedade nem estão sob o nosso controlo. Como resultado, não podemos garantir a acessibilidade destes componentes externos.","statementThirdPartyText2":"Para sua referência, pode consultar diretamente as polÃticas de acessibilidade destes fornecedores terceiros:","statementThirdPartyLinks":[{"text":"Acessibilidade do Facebook","url":"https://www.facebook.com/help/accessibility"},{"text":"Acessibilidade do YouTube","url":"https://support.google.com/youtube/topic/9257096"},{"text":"Acessibilidade do Instagram","url":"https://help.instagram.com/650202712454932"},{"text":"Acessibilidade do Twitter","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"Acessibilidade do LinkedIn","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"Melhorias ContÃnuas e Feedback","statementFeedbackText":"Trabalhamos continuamente para melhorar a acessibilidade do nosso site. Embora nos esforcemos ao máximo para resolver questões de acessibilidade, alguns conteúdos ou funcionalidades podem ainda não estar totalmente otimizados.","statementFeedbackText2":"Se tiver dificuldade em aceder a conteúdos, encontrar algum problema de acessibilidade ou quiser sugerir melhorias, encorajamo-lo a contactar-nos através da opção \"Enviar Feedback\" disponÃvel no site.","statementFeedbackText3":"O seu feedback ajuda-nos a melhorar a experiência para todos.","statementLastUpdated":"Ãltima Atualização:"}, 292 it: {"skipToMain":"Salta al contenuto principale","accessibility":"Accessibilità ","closeToolbar":"Chiudi la barra degli strumenti di accessibilità ","toggleToolbar":"Attiva/disattiva la barra degli strumenti di accessibilità ","textSize":"Dimensione del testo","increaseText":"Aumenta testo","increaseTextAria":"Aumenta la dimensione del testo","decreaseText":"Riduci testo","decreaseTextAria":"Riduci la dimensione del testo","contrastColors":"Contrasto e colori","highContrast":"Alto contrasto","highContrastAria":"Attiva/disattiva la modalità ad alto contrasto","negativeContrast":"Contrasto negativo","negativeContrastAria":"Attiva/disattiva il contrasto negativo","grayscale":"Scala di grigi","grayscaleAria":"Attiva/disattiva la modalità scala di grigi","readableFont":"Font leggibile","readableFontAria":"Usa un font leggibile","highlighting":"Evidenziazione","highlightLinks":"Evidenzia link","highlightLinksAria":"Evidenzia i link","highlightTitles":"Evidenzia titoli","highlightTitlesAria":"Evidenzia le intestazioni","readingAids":"Strumenti di lettura","readingGuide":"Guida alla lettura","readingGuideAria":"Attiva/disattiva la guida alla lettura","readingMask":"Maschera di lettura","readingMaskAria":"Attiva/disattiva la maschera di lettura","textSpacing":"Spaziatura del testo","textSpacingAria":"Aumenta la spaziatura del testo","navigationInteraction":"Navigazione e interazione","keyboardNav":"Navigazione da tastiera","keyboardNavAria":"Navigazione da tastiera avanzata","bigCursor":"Cursore grande","bigCursorAria":"Cursore grande","stopAnimations":"Ferma animazioni","stopAnimationsAria":"Ferma le animazioni","resetAll":"Ripristina tutte le impostazioni","resetAllAria":"Ripristina tutte le impostazioni di accessibilità ","accessibilityStatement":"Dichiarazione di accessibilità ","viewStatementAria":"Visualizza la dichiarazione di accessibilità ","resetNotification":"Tutte le impostazioni di accessibilità sono state ripristinate.","toolbarAvailable":"Barra degli strumenti di accessibilità disponibile. Premi Alt+A per aprirla.","accessibilityControl
292s":"Controlli di accessibilità ","statementTitle":"Dichiarazione di accessibilità ","closeStatement":"Chiudi la dichiarazione di accessibilità ","statementCommitment":"Impegno per l'accessibilità ","statementCommitmentText":"Ci impegniamo a garantire che il nostro sito web sia accessibile e utilizzabile da tutti, incluse le persone con disabilità . Come parte di questo impegno, abbiamo implementato una soluzione di accessibilità automatizzata progettata per migliorare l'usabilità e per allinearsi, quanto più possibile, allo Standard Israeliano IS 5568 e alle Linee guida per l'accessibilità dei contenuti web (WCAG) 2.1 Livello AA.","statementCommitmentText2":"Le funzionalità di accessibilità sono fornite tramite uno strumento automatizzato e sono rese disponibili \"così come sono\", in conformità con i nostri Termini di Servizio. Gli strumenti automatizzati supportano la conformità , ma la piena conformità legale potrebbe comunque richiedere interventi sul contenuto e sul codice a livello di sito.","statementEnhancements":"Miglioramenti di accessibilità disponibili su questo sito web","statementEnhancementsText":"Il sistema di accessibilità installato su questo sito web offre una serie di strumenti per migliorare la navigazione, la leggibilità e l'interazione, tra cui, a titolo esemplificativo:","statementEnhancementsList":["Supporto completo alla navigazione da tastiera su tutte le funzionalità del sito","Dimensione, allineamento e spaziatura del font regolabili","Controlli di contrasto per modalità con sfondo chiaro e scuro","Regolazioni personalizzate dei colori per una migliore visibilità ","Modalità adatte ai daltonici, incluse modalità monocromatiche e corrispondenza del contrasto","Opzioni di font ottimizzate per la leggibilità ","Cursore ingrandito con possibilità di cambiare colore","Scalabilità del testo fino al 200% senza perdita di contenuto o funzionalità ","Evidenziazione visiva di link e intestazioni","Supporto per testo alternativo alle immagini","Spiegazioni tramite tooltip per contenuti selezionati","Definizioni delle parole tramite selezione del testo","Strumenti di assistenza alla lettura, inclusi guide alla lettura e maschere di focus","Controlli per ridurre o interrompere elementi lampeggianti, intermittenti o animati"],"statementEnhancementsText2":"Queste funzionalità sono pensate per supportare utenti con esigenze di accessibilità visive, motorie e cognitive.","statementBrowser":"Supporto per browser e tecnologie assistive","statementBrowserText":"Puntiamo a supportare un'ampia gamma di browser moderni e tecnologie assistive. I nostri interventi di accessibilità includono test e ottimizzazioni per le piattaforme più comunemente utilizzate, tra cui:","statementBrowserList":["Chrome, Firefox, Edge, Safari e Opera","Screen reader come VoiceOver (macOS), JAWS e NVDA (Windows e macOS)"],"statementBrowserText2":"Si prega di notare che le prestazioni di accessibilità possono variare in base alle configurazioni individuali del dispositivo e alle combinazioni di tecnologie assistive.","statementTechnical":"Struttura tecnica","statementTechnicalText":"Questo sito web si basa sulle seguenti tecnologie per offrire funzionalità accessibili:","statementTechnicalList":["HTML5","Attributi WAI-ARIA","CSS3","JavaScript (ES6 e versioni successive)"],"statementTechnicalText2":"Queste tecnologie vengono utilizzate per supportare la conformità agli standard di accessibilità riconosciuti.","statementThirdParty":"Contenuti di terze parti","statementThirdPartyText":"Alcune aree di questo sito web possono includere contenuti o integrazioni di terze parti (come piattaforme social media, video incorporati o widget esterni) che non sono di nostra proprietà né sotto il nostro controllo. Di conseguenza, non possiamo garantire l'accessibilità di questi componenti esterni.","statementThirdPartyText2":"Per riferimento, è possibile consultare direttamente le politiche di accessibilità di questi fornitori terzi:","statementThirdPartyLinks":[{"text":"Accessibilità di Facebook","url":"https://www.facebook.com/help/accessibility"},{"text":"Accessibilità di YouTube","url":"https://support.google.com/youtube/topic/9257096"},{"text":"Accessibilità di Instagram","url":"https://help.instagram.com/650202712454932"},{"text":"Accessibilità di Twitter","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"Accessibilità di LinkedIn","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"Miglioramenti continui e feedback","statementFeedbackText":"Lavoriamo costantemente per migliorare l'accessibilità del nostro
292sito web. Sebbene ci impegniamo al massimo per risolvere i problemi di accessibilità , alcuni contenuti o funzionalità potrebbero non essere ancora completamente ottimizzati.","statementFeedbackText2":"Se riscontri difficoltà nell'accedere ai contenuti, incontri un problema di accessibilità o desideri suggerire miglioramenti, ti invitiamo a contattarci tramite l'opzione \"Invia feedback\" disponibile sul sito web.","statementFeedbackText3":"Il tuo feedback ci aiuta a migliorare l'esperienza per tutti.","statementLastUpdated":"Ultimo aggiornamento:"}, 293 ru: {"skipToMain":"ÐеÑейÑи к оÑÐ½Ð¾Ð²Ð½Ð¾Ð¼Ñ ÑодеÑжимомÑ","accessibility":"ÐоÑÑÑпноÑÑÑ","closeToolbar":"ÐакÑÑÑÑ Ð¿Ð°Ð½ÐµÐ»Ñ Ð´Ð¾ÑÑÑпноÑÑи","toggleToolbar":"ÐÑкÑÑÑÑ/закÑÑÑÑ Ð¿Ð°Ð½ÐµÐ»Ñ Ð´Ð¾ÑÑÑпноÑÑи","textSize":"Ð Ð°Ð·Ð¼ÐµÑ ÑекÑÑа","increaseText":"УвелиÑиÑÑ ÑекÑÑ","increaseTextAria":"УвелиÑиÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑекÑÑа","decreaseText":"УменÑÑиÑÑ ÑекÑÑ","decreaseTextAria":"УменÑÑиÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑекÑÑа","contrastColors":"ÐонÑÑаÑÑ Ð¸ ÑвеÑа","highContrast":"ÐÑÑокий конÑÑаÑÑ","highContrastAria":"ÐклÑÑиÑÑ/вÑклÑÑиÑÑ Ñежим вÑÑокого конÑÑаÑÑа","negativeContrast":"ÐегаÑивнÑй конÑÑаÑÑ","negativeContrastAria":"ÐклÑÑиÑÑ/вÑклÑÑиÑÑ Ð½ÐµÐ³Ð°ÑивнÑй конÑÑаÑÑ","grayscale":"ÐÑÑенки ÑеÑого","grayscaleAria":"ÐклÑÑиÑÑ/вÑклÑÑиÑÑ Ñежим оÑÑенков ÑеÑого","readableFont":"УдобнÑй ÑÑиÑÑ","readableFontAria":"ÐÑполÑзоваÑÑ ÑдобнÑй Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ ÑÑиÑÑ","highlighting":"ÐÑделение","highlightLinks":"ÐÑделиÑÑ ÑÑÑлки","highlightLinksAria":"ÐÑделиÑÑ ÑÑÑлки","highlightTitles":"ÐÑделиÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¸","highlightTitlesAria":"ÐÑделиÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¸","readingAids":"ÐомоÑÑ Ð¿Ñи ÑÑении","readingGuide":"ÐÐ¸Ð½Ð¸Ñ ÑÑениÑ","readingGuideAria":"ÐклÑÑиÑÑ/вÑклÑÑиÑÑ Ð»Ð¸Ð½Ð¸Ñ ÑÑениÑ","readingMask":"ÐаÑка ÑÑениÑ","readingMaskAria":"ÐклÑÑиÑÑ/вÑклÑÑиÑÑ Ð¼Ð°ÑÐºÑ ÑÑениÑ","textSpacing":"ÐежÑекÑÑовÑй инÑеÑвал","textSpacingAria":"УвелиÑиÑÑ Ð¼ÐµÐ¶ÑекÑÑовÑй инÑеÑвал","navigationInteraction":"ÐавигаÑÐ¸Ñ Ð¸ взаимодейÑÑвие","keyboardNav":"ÐавигаÑÐ¸Ñ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ","keyboardNavAria":"РаÑÑиÑÐµÐ½Ð½Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ","bigCursor":"ÐÑÑпнÑй кÑÑÑоÑ","bigCursorAria":"ÐÑÑпнÑй кÑÑÑоÑ","stopAnimations":"ÐÑÑановиÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ","stopAnimationsAria":"ÐÑÑановиÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ","resetAll":"СбÑоÑиÑÑ Ð²Ñе наÑÑÑойки","resetAllAria":"СбÑоÑиÑÑ Ð²Ñе наÑÑÑойки доÑÑÑпноÑÑи","accessibilityStatement":"ÐаÑвление о доÑÑÑпноÑÑи","viewStatementAria":"ÐÑоÑмоÑÑеÑÑ Ð·Ð°Ñвление о доÑÑÑпноÑÑи","resetNotification":"ÐÑе наÑÑÑойки доÑÑÑпноÑÑи бÑли ÑбÑоÑенÑ.","toolbarAvailable":"ÐоÑÑÑпна Ð¿Ð°Ð½ÐµÐ»Ñ ÑпеÑиалÑнÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей. ÐажмиÑе Alt+A, ÑÑÐ¾Ð±Ñ Ð¾ÑкÑÑÑÑ ÐµÑ.","accessibilityControls":"ÐлеменÑÑ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑÑÑ","statementTitle":"ÐаÑвление о доÑÑÑпноÑÑи","closeStatement":"ÐакÑÑÑÑ Ð·Ð°Ñвление о доÑÑÑпноÑÑи","statementCommitment":"ÐбÑзаÑелÑÑÑво по обеÑпеÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи","statementCommitmentText":"ÐÑ ÑÑÑемимÑÑ Ðº ÑомÑ, ÑÑÐ¾Ð±Ñ Ð½Ð°Ñ ÑÐ°Ð¹Ñ Ð±Ñл доÑÑÑпен и Ñдобен Ð´Ð»Ñ Ð²ÑÐµÑ , вклÑÑÐ°Ñ Ð»Ñдей Ñ Ð¸Ð½Ð²Ð°Ð»Ð¸Ð´Ð½Ð¾ÑÑÑÑ. Ð ÑÐ°Ð¼ÐºÐ°Ñ ÑÑого обÑзаÑелÑÑÑва Ð¼Ñ Ð²Ð½ÐµÐ´Ñили авÑомаÑизиÑованное ÑеÑение по обеÑпеÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи, ÑазÑабоÑанное Ð´Ð»Ñ Ð¿Ð¾Ð²ÑÑÐµÐ½Ð¸Ñ ÑдобÑÑва иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ макÑималÑно возможного ÑооÑвеÑÑÑÐ²Ð¸Ñ Ð¸Ð·ÑаилÑÑÐºÐ¾Ð¼Ñ ÑÑандаÑÑÑ IS 5568 и Ð ÑководÑÑÐ²Ñ Ð¿Ð¾ доÑÑÑпноÑÑи веб-конÑенÑа (WCAG) 2.1 ÑÑÐ¾Ð²Ð½Ñ AA.","statementCommitmentText2":"ФÑнкÑии доÑÑÑпноÑÑи пÑедоÑÑавлÑÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð°Ð²ÑомаÑизиÑованного инÑÑÑÑменÑа и пÑедлагаÑÑÑÑ Â«ÐºÐ°Ðº еÑÑÑ» в ÑооÑвеÑÑÑвии Ñ Ð½Ð°Ñими УÑловиÑми иÑполÑзованиÑ. ÐвÑомаÑизиÑованнÑе инÑÑÑÑменÑÑ ÑпоÑобÑÑвÑÑÑ ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑÑебованиÑм, однако полное ÑоблÑдение законодаÑелÑÑÑва Ð¼Ð¾Ð¶ÐµÑ Ñакже ÑÑебоваÑÑ Ð´Ð¾ÑабоÑки конÑенÑа и кода ÑайÑа.","statementEnhancements":"ФÑнкÑии доÑÑÑпноÑÑи, доÑÑÑпнÑе на ÑÑом ÑайÑе","statementEnhancementsText":"УÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð½Ð° ÑÑом ÑайÑе ÑиÑÑема доÑÑÑпноÑÑи пÑедоÑÑавлÑÐµÑ ÑÑд инÑÑÑÑменÑов Ð´Ð»Ñ ÑлÑÑÑÐµÐ½Ð¸Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñии, ÑдобоÑиÑаемоÑÑи и взаимодейÑÑвиÑ, вклÑÑаÑ, но не огÑаниÑиваÑÑÑ ÑледÑÑÑим:","statementEnhancementsList":["ÐÐ¾Ð»Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка навигаÑии Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ Ð´Ð»Ñ Ð²ÑÐµÑ ÑÑнкÑий ÑайÑа","ÐаÑÑÑаиваемÑй ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа, вÑÑавнивание и межÑекÑÑовÑй инÑеÑвал","РегÑлиÑовка конÑÑаÑÑа Ð´Ð»Ñ ÑвеÑлого и ÑÑмного Ñона","ÐндивидÑалÑÐ½Ð°Ñ Ð½Ð°ÑÑÑойка ÑвеÑов Ð´Ð»Ñ ÑлÑÑÑÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи","Ð ÐµÐ¶Ð¸Ð¼Ñ Ð´Ð»Ñ Ð»Ñдей Ñ Ð½Ð°ÑÑÑением ÑвеÑового воÑпÑиÑÑиÑ, вклÑÑÐ°Ñ Ð¼Ð¾Ð½Ð¾Ñ ÑомнÑй Ñежим и Ð¿Ð¾Ð´Ð±Ð¾Ñ ÐºÐ¾Ð½ÑÑаÑÑа","ÐаÑианÑÑ ÑÑиÑÑов, опÑимизиÑованнÑе Ð´Ð»Ñ ÑдобоÑиÑаемоÑÑи","УвелиÑеннÑй кÑÑÑÐ¾Ñ Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑвеÑа","ÐаÑÑÑабиÑование ÑекÑÑа до 200% без поÑеÑи ÑодеÑжимого или ÑÑнкÑионалÑноÑÑи","ÐизÑалÑное вÑделение ÑÑÑлок и заголовков","ÐоддеÑжка алÑÑеÑнаÑивного ÑекÑÑа Ð´Ð»Ñ Ð¸Ð·Ð¾Ð±Ñажений","ÐÑплÑваÑÑие подÑказки Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑлеменÑов ÑодеÑжимого","ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñлов пÑи вÑделении ÑекÑÑа","ÐнÑÑÑÑменÑÑ Ð¿Ð¾Ð¼Ð¾Ñи пÑи ÑÑении, вклÑÑÐ°Ñ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐµÐ½Ð¸Ñ Ð¸ маÑки ÑокÑÑиÑовки","ÐозможноÑÑÑ ÑменÑÑиÑÑ Ð¸Ð»Ð¸ оÑÑановиÑÑ Ð¼Ð¸Ð³Ð°Ð½Ð¸Ðµ, вÑпÑÑки или анимаÑионнÑе ÑлеменÑÑ"],"statementEnhancementsText2":"ÐÑи ÑÑнкÑии пÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки полÑзоваÑелей Ñ Ð½Ð°ÑÑÑениÑми зÑениÑ, моÑоÑики и когниÑивнÑÑ ÑÑнкÑий.","statementBrowser":"ÐоддеÑжка бÑаÑзеÑов и вÑпомогаÑелÑнÑÑ ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¹","statementBrowserText":"ÐÑ ÑÑÑемимÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ ÑиÑокий ÑпекÑÑ ÑовÑеменнÑÑ Ð±ÑаÑзеÑов и вÑпомогаÑелÑнÑÑ ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¹. ÐаÑи ÑÑÐ¸Ð»Ð¸Ñ Ð¿Ð¾ обеÑпеÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи вклÑÑаÑÑ ÑеÑÑиÑование и опÑимизаÑÐ¸Ñ Ð´Ð»Ñ ÑаÑÑо иÑполÑзÑемÑÑ Ð¿Ð»Ð°ÑÑоÑм, в Ñом ÑиÑле:","statementBrowserList":["Chrome, Firefox, Edge, Safari и Opera","ÐÑогÑÐ°Ð¼Ð¼Ñ ÑкÑанного доÑÑÑпа, Ñакие как VoiceOver (macOS), JAWS и NVDA (Windows и macOS)"],"statementBrowserText2":"ÐбÑаÑиÑе внимание, ÑÑо ÑÑÐ¾Ð²ÐµÐ½Ñ Ð´Ð¾ÑÑÑпноÑÑи Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑлиÑаÑÑÑÑ Ð² завиÑимоÑÑи Ð¾Ñ ÐºÐ¾Ð½ÑигÑÑаÑии ÑÑÑÑойÑÑва и ÑоÑеÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑемÑÑ Ð²ÑпомогаÑелÑнÑÑ ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¹.","statementTechnical":"Ð¢ÐµÑ Ð½Ð¸ÑеÑÐºÐ°Ñ Ð¾Ñнова","statementTechnicalText":"ÐÑÐ¾Ñ ÑÐ°Ð¹Ñ Ð¸ÑполÑзÑÐµÑ ÑледÑÑÑие ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¸ Ð´Ð»Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи ÑÑнкÑий:","statementTechnicalList":["HTML5","ÐÑÑибÑÑÑ WAI-ARIA","CSS3","JavaScript (ES6 и вÑÑе)"],"statementTechnicalText2":"ÐÑи ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¸ иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки ÑооÑвеÑÑÑÐ²Ð¸Ñ Ð¿ÑизнаннÑм ÑÑандаÑÑам доÑÑÑпноÑÑи.","statementThirdParty":"ÐонÑÐµÐ½Ñ ÑÑеÑÑÐ¸Ñ ÑÑоÑон","statementThirdPartyText":"ÐекоÑоÑÑе ÑÐ°Ð·Ð´ÐµÐ»Ñ ÑÑого ÑайÑа могÑÑ ÑодеÑжаÑÑ ÐºÐ¾Ð½ÑÐµÐ½Ñ Ð¸Ð»Ð¸ инÑегÑаÑии ÑÑеÑÑÐ¸Ñ ÑÑоÑон (напÑимеÑ, плаÑÑоÑÐ¼Ñ ÑоÑиалÑнÑÑ ÑеÑей, вÑÑÑоеннÑе видео или внеÑние виджеÑÑ), коÑоÑÑе не пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ Ð½Ð°Ð¼ и не конÑÑолиÑÑÑÑÑÑ Ð½Ð°Ð¼Ð¸. Ð ÑвÑзи Ñ ÑÑим Ð¼Ñ Ð½Ðµ можем гаÑанÑиÑоваÑÑ Ð´Ð¾ÑÑÑпноÑÑÑ ÑÑÐ¸Ñ Ð²Ð½ÐµÑÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñов.","statementThirdPartyText2":"ÐÐ»Ñ ÑпÑавки Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ознакомиÑÑÑÑ Ñ Ð¿Ð¾Ð»Ð¸Ñиками доÑÑÑпноÑÑи ÑÑÐ¸Ñ ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð¿Ð¾ÑÑавÑиков напÑÑмÑÑ:","statementThirdPartyLinks":[{"text":"ÐоÑÑÑпноÑÑÑ Facebook","url":"https://www.facebook.com/help/accessibility"},{"text":"ÐоÑÑÑпноÑÑÑ YouTube","url":"https://support.google.com/youtube/topic/9257096"},{"text":"ÐоÑÑÑпноÑÑÑ Instagram","url":"https://help.instagram.com/650202712454932"},{"text":"ÐоÑÑÑпноÑÑÑ Twitter","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"ÐоÑÑÑпноÑÑÑ LinkedIn","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"ÐоÑÑоÑннÑе ÑлÑÑÑÐµÐ½Ð¸Ñ Ð¸ обÑаÑÐ½Ð°Ñ ÑвÑзÑ","statementFeedbackText":"ÐÑ Ð¿Ð¾ÑÑоÑнно ÑабоÑаем над ÑлÑÑÑением доÑÑÑпноÑÑи наÑего ÑайÑа. ÐеÑмоÑÑÑ Ð½Ð° вÑе наÑи ÑÑÐ¸Ð»Ð¸Ñ Ð¿Ð¾ ÑÑÑÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¿Ñоблем Ñ Ð´Ð¾ÑÑÑпноÑÑÑÑ, некоÑоÑÑе маÑеÑÐ¸Ð°Ð»Ñ Ð¸Ð»Ð¸ ÑÑнкÑии могÑÑ Ð±ÑÑÑ ÐµÑÑ Ð½Ðµ полноÑÑÑÑ Ð¾Ð¿ÑимизиÑованÑ.","statementFeedbackText2":"ÐÑли Ñ Ð²Ð°Ñ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ»Ð¸ ÑÑÑдноÑÑи Ñ Ð´Ð¾ÑÑÑпом к конÑенÑÑ, Ð²Ñ Ð¾Ð±Ð½Ð°ÑÑжили пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ Ð´Ð¾ÑÑÑпноÑÑÑÑ Ð¸Ð»Ð¸ Ñ Ð¾ÑиÑе пÑедложиÑÑ ÑлÑÑÑениÑ, пожалÑйÑÑа, ÑвÑжиÑеÑÑ Ñ Ð½Ð°Ð¼Ð¸ ÑеÑез Ñаздел «ÐÑпÑавиÑÑ Ð¾ÑзÑв» на ÑайÑе.","statementFeedbackText3":"ÐаÑи оÑзÑÐ²Ñ Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÑÑ Ð½Ð°Ð¼ ÑлÑÑÑаÑÑ ÑдобÑÑво иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑайÑа Ð´Ð»Ñ Ð²ÑÐµÑ .","statementLastUpdated":"ÐоÑледнее обновление:"}, 294 zh: {"skipToMain":"è·³è³ä¸»è¦å 容","accessibility":"æ éç¢","closeToolbar":"å ³éæ éç¢å·¥å ·æ ","toggleToolbar":"忢æ éç¢å·¥å ·æ ","textSize":"æå大å°","increaseText":"æ¾å¤§æå","increaseTextAria":"æ¾å¤§æå大å°","decreaseText":"ç¼©å°æå","decreaseTextAria":"ç¼©å°æå大å°","contrastColors":"对æ¯åº¦åé¢è²","highContrast":"é«å¯¹æ¯åº¦","highContrastAria":"忢é«å¯¹æ¯åº¦æ¨¡å¼","negativeContrast":"å转对æ¯åº¦","negativeContrastAria":"忢å转对æ¯åº¦","grayscale":"ç°åº¦","grayscaleAria":"忢ç°åº¦æ¨¡å¼","readableFont":"æè¯»åä½","readableFontAria":"ä½¿ç¨æè¯»åä½","highlighting":"é«äº®æ¾ç¤º","highlightLinks":"é«äº®é¾æ¥","highlightLinksAria":"é«äº®æ¾ç¤ºé¾æ¥","highlightTitles":"é«äº®æ é¢","highlightTitlesAria":"é«äº®æ¾ç¤ºæ é¢","readingAids":"é è¯»è¾ å©","readingGuide":"é 读å¼å¯¼çº¿","readingGuideAria":"忢é 读å¼å¯¼çº¿","readingMask":"é 读é®ç½©","readingMaskAria":"忢é 读é®ç½©","textSpacing":"æåé´è·","textSpacingAria":"å¢å æåé´è·","navigationInteraction":"导èªä¸äº¤äº","keyboardNav":"é®ç导èª","keyboardNavAria":"å¢å¼ºåé®ç导èª","bigCursor":"å¤§å æ ","bigCursorAria":"å¤§å æ ","stopAnimations":"忢å¨ç»","stopAnimationsAria":"忢å¨ç»","resetAll":"éç½®ææè®¾ç½®","resetAllAria":"éç½®æææ éç¢è®¾ç½®","accessibilityStatement":"æ éç¢å£°æ","viewStatementAria":"æ¥çæ éç¢å£°æ","resetNotification":"æææ éç¢è®¾ç½®å·²éç½®ã","toolbarAvailable":"å¯ä½¿ç¨æ éç¢å·¥å ·æ ãæ Alt+A æå¼ã","accessibilityControl
294s":"æ éç¢æ§å¶é¡¹","statementTitle":"æ éç¢å£°æ","closeStatement":"å ³éæ éç¢å£°æ","statementCommitment":"æ éç¢æ¿è¯º","statementCommitmentText":"æä»¬åªåç¡®ä¿æä»¬çç½ç«å¯¹ææäººï¼å æ¬æ®é人士ï¼åå¯è®¿é®å使ç¨ãä½ä¸ºæ¤é¡¹æ¿è¯ºçä¸é¨åï¼æä»¬å·²å®æ½äºä¸å¥èªå¨åæ éç¢è§£å³æ¹æ¡ï¼æ¨å¨æåå¯ç¨æ§ï¼å¹¶å°½å¯è½ç¬¦å以è²åæ å IS 5568 åãç½é¡µå 容æ éç¢æåãï¼WCAGï¼2.1 AA 级çè¦æ±ã","statementCommitmentText2":"è¿äºæ éç¢åè½éè¿èªå¨åå·¥å ·æä¾ï¼å¹¶æç §æä»¬çæå¡æ¡æ¬¾ä»¥âç°ç¶âæ¹å¼æä¾ãèªå¨åå·¥å ·æå©äºåè§ï¼ä½è¦å®ç°å®å ¨çæ³å¾åè§ï¼å¯è½ä»éè¦å¯¹ç½ç«å±é¢çå 容å代ç è¿è¡ä¿®å¤ã","statementEnhancements":"æ¬ç½ç«æä¾çæ éç¢å¢å¼ºåè½","statementEnhancementsText":"æ¬ç½ç«å®è£ çæ éç¢ç³»ç»æä¾äºä¸ç³»åå·¥å ·ï¼ç¨äºæ¹å导èªãå¯è¯»æ§å交äºä½éªï¼å æ¬ä½ä¸éäºï¼","statementEnhancementsList":["å¨ç½ç«å项åè½ä¸æä¾å®æ´çé®çå¯¼èªæ¯æ","å¯è°èçåä½å¤§å°ã坹齿¹å¼åé´è·","éç¨äºæµ è²åæ·±è²èæ¯æ¨¡å¼ç对æ¯åº¦æ§å¶","èªå®ä¹é¢è²è°æ´ä»¥æåå¯è§æ§","è²ç²å好模å¼ï¼å æ¬åè²å对æ¯åº¦å¹é ","ä¼åå¯è¯»æ§çåä½é项","坿¾å¤§çå æ ï¼å¹¶å¯éæ©æ´æ¹é¢è²","æå坿¾å¤§è³200%èä¸ä¸¢å¤±å 容æåè½","çªåºæ¾ç¤ºé¾æ¥åæ é¢","å¾åçæ¿ä»£ææ¬æ¯æ","为ç¹å®å 容æä¾å·¥å ·æç¤ºè¯´æ","éè¿é䏿忥çè¯è¯éä¹","é è¯»è¾ å©å·¥å ·ï¼å æ¬é 读å¼å¯¼çº¿åç¦ç¹é®ç½©","ç¨äºå尿忢éªçãéªå æå¨ç»ææçæ§å¶é¡¹"],"statementEnhancementsText2":"è¿äºåè½æ¨å¨æ¯ææè§è§ãè¿å¨åè®¤ç¥æ éç¢éæ±çç¨æ·ã","statementBrowser":"æµè§å¨ä¸è¾ å©ææ¯æ¯æ","statementBrowserText":"æä»¬è´åäºæ¯æå¹¿æ³çç°ä»£æµè§å¨åè¾ å©ææ¯ãæä»¬çæ éç¢å·¥ä½å æ¬é对常ç¨å¹³å°çæµè¯åä¼åï¼å æ¬ï¼","statementBrowserList":["ChromeãFirefoxãEdgeãSafari å Opera","å±å¹é 读å¨ï¼å¦ VoiceOverï¼macOSï¼ãJAWS å NVDAï¼Windows å macOSï¼"],"statementBrowserText2":"请注æï¼æ éç¢è¡¨ç°å¯è½å 个人设å¤é ç½®åè¾ å©ææ¯ç»åçä¸åèææå·®å¼ã","statementTechnical":"ææ¯æ¡æ¶","statementTechnicalText":"æ¬ç½ç«ä¾é ä»¥ä¸ææ¯æ¥å®ç°æ éç¢åè½ï¼","statementTechnicalList":["HTML5","WAI-ARIA 屿§","CSS3","JavaScriptï¼ES6 å以ä¸çæ¬ï¼"],"statementTechnicalText2":"è¿äºææ¯ç¨äºæ¯æç¬¦åå ¬è®¤çæ éç¢æ åã","statementThirdParty":"ç¬¬ä¸æ¹å 容","statementThirdPartyText":"æ¬ç½ç«çé¨ååºåå¯è½å å«å¹¶éç±æä»¬æ¥æææ§å¶çç¬¬ä¸æ¹å 容æéææå¡ï¼ä¾å¦ç¤¾äº¤åªä½å¹³å°ãåµå ¥å¼è§é¢æå¤é¨å°ç»ä»¶ï¼ãå æ¤ï¼æä»¬æ æ³ä¿è¯è¿äºå¤é¨ç»ä»¶çæ éç¢æ§ã","statementThirdPartyText2":"æ¨å¯ä»¥ç´æ¥æ¥é 以ä¸ç¬¬ä¸æ¹æä¾åçæ éç¢æ¿ç以ä½åèï¼","statementThirdPartyLinks":[{"text":"Facebook æ éç¢","url":"https://www.facebook.com/help/accessibility"},{"text":"YouTube æ éç¢","url":"https://support.google.com/youtube/topic/9257096"},{"text":"Instagram æ éç¢","url":"https://help.instagram.com/650202712454932"},{"text":"Twitter æ éç¢","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"LinkedIn æ éç¢","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"æç»æ¹è¿ä¸åé¦","statementFeedbackText":"æä»¬æç»åªåæ¹åç½ç«çæ éç¢æ§ã尽管æä»¬ç«å°½å ¨åè§£å³æ éç¢ç¸å ³é®é¢ï¼ä½é¨åå 容æåè½å¯è½å°æªå®å ¨ä¼åã","statementFeedbackText2":"妿æ¨å¨è®¿é®å 容æ¶éå°ä»»ä½å°é¾ãåç°æ éç¢é®é¢ï¼æå¸ææåºæ¹è¿å»ºè®®ï¼æ¬¢è¿éè¿ç½ç«ä¸æä¾çâåéåé¦âé项䏿们èç³»ã","statementFeedbackText3":"æ¨çåé¦å°å¸®å©æä»¬ä¸ºæ¯ä¸ä½ç¨æ·æ¹å使ç¨ä½éªã","statementLastUpdated":"æåæ´æ°æ¶é´ï¼"}, 295 ja: {"skipToMain":"ã¡ã¤ã³ã³ã³ãã³ãã¸ã¹ããã","accessibility":"ã¢ã¯ã»ã·ããªãã£","closeToolbar":"ã¢ã¯ã»ã·ããªãã£ãã¼ã«ãã¼ãéãã","toggleToolbar":"ã¢ã¯ã»ã·ããªãã£ãã¼ã«ãã¼ã®è¡¨ç¤ºåæ¿","textSize":"æåãµã¤ãº","increaseText":"æåãæ¡å¤§","increaseTextAria":"æåãµã¤ãºãæ¡å¤§","decreaseText":"æåã縮å°","decreaseTextAria":"æåãµã¤ãºã縮å°","contrastColors":"ã³ã³ãã©ã¹ãã¨è²","highContrast":"ãã¤ã³ã³ãã©ã¹ã","highContrastAria":"ãã¤ã³ã³ãã©ã¹ãã¢ã¼ãã®åæ¿","negativeContrast":"å転ã³ã³ãã©ã¹ã","negativeContrastAria":"å転ã³ã³ãã©ã¹ãã®åæ¿","grayscale":"ã°ã¬ã¼ã¹ã±ã¼ã«","grayscaleAria":"ã°ã¬ã¼ã¹ã±ã¼ã«ã¢ã¼ãã®åæ¿","readableFont":"èªã¿ããããã©ã³ã","readableFontAria":"èªã¿ããããã©ã³ãã使ç¨","highlighting":"強調表示","highlightLinks":"ãªã³ã¯ã強調","highlightLinksAria":"ãªã³ã¯ã強調表示","highlightTitles":"è¦åºãã強調","highlightTitlesAria":"è¦åºãã強調表示","readingAids":"èªæ¸æ¯æ´","readingGuide":"èªæ¸ã¬ã¤ã","readingGuideAria":"èªæ¸ã¬ã¤ãã®åæ¿","readingMask":"ãªã¼ãã£ã³ã°ãã¹ã¯","readingMaskAria":"ãªã¼ãã£ã³ã°ãã¹ã¯ã®
295åæ¿","textSpacing":"æåéé","textSpacingAria":"æåééãåºãã","navigationInteraction":"ããã²ã¼ã·ã§ã³ã¨æä½","keyboardNav":"ãã¼ãã¼ãæä½","keyboardNavAria":"æ¡å¼µãã¼ãã¼ãããã²ã¼ã·ã§ã³","bigCursor":"大ããªã«ã¼ã½ã«","bigCursorAria":"大ããªã«ã¼ã½ã«","stopAnimations":"ã¢ãã¡ã¼ã·ã§ã³ã忢","stopAnimationsAria":"ã¢ãã¡ã¼ã·ã§ã³ã®åæ¢","resetAll":"ãã¹ã¦ã®è¨å®ããªã»ãã","resetAllAria":"ãã¹ã¦ã®ã¢ã¯ã»ã·ããªãã£è¨å®ããªã»ãã","accessibilityStatement":"ã¢ã¯ã»ã·ããªãã£å£°æ","viewStatementAria":"ã¢ã¯ã»ã·ããªãã£å£°æã表示","resetNotification":"ãã¹ã¦ã®ã¢ã¯ã»ã·ããªãã£è¨å®ããªã»ããããã¾ããã","toolbarAvailable":"ã¢ã¯ã»ã·ããªãã£ãã¼ã«ãã¼ãå©ç¨å¯è½ã§ããAlt+Aãã¼ã§éãã¾ãã","accessibilityControls":"ã¢ã¯ã»ã·ããªãã£æä½ããã«","statementTitle":"ã¢ã¯ã»ã·ããªãã£å£°æ","closeStatement":"ã¢ã¯ã»ã·ããªãã£å£°æãéãã","statementCommitment":"ã¢ã¯ã»ã·ããªãã£ã¸ã®åãçµã¿","statementCommitmentText":"å½ç¤¾ã¯ãéããã®ããæ¹ãå«ããã¹ã¦ã®æ¹ã«ã¨ã£ã¦ãå½ã¦ã§ããµã¤ããã¢ã¯ã»ã·ãã«ã§ä½¿ãããããã®ã¨ãªãããåªãã¦ãã¾ãããã®åãçµã¿ã®ä¸ç°ã¨ãã¦ãå¯è½ãªéãIsraeli Standard IS 5568ããã³Web Content Accessibility Guidelines(WCAG)2.1 Level AAã«æºæ ããããè¨è¨ããããèªåã¢ã¯ã»ã·ããªãã£ã½ãªã¥ã¼ã·ã§ã³ãå°å
¥ãã¦ãã¾ãã","statementCommitmentText2":"ãããã®ã¢ã¯ã»ã·ããªãã£æ©è½ã¯èªååãã¼ã«ãéãã¦æä¾ããã¦ãããå½ç¤¾ã®å©ç¨è¦ç´ã«å¾ããç¾ç¶ã®ã¾ã¾ãæä¾ããã¾ããèªååãã¼ã«ã¯æºæ ãæ¯æ´ãã¾ãããå®å
¨ãªæ³çæºæ ã®ããã«ã¯ãµã¤ãå´ã§ã®ã³ã³ãã³ããã³ã¼ãã®ä¿®æ£ãå¿
è¦ãªå ´åãããã¾ãã","statementEnhancements":"æ¬ã¦ã§ããµã¤ãã§å©ç¨å¯è½ãªã¢ã¯ã»ã·ããªãã£æ©è½","statementEnhancementsText":"æ¬ã¦ã§ããµã¤ãã«å°å
¥ããã¦ããã¢ã¯ã»ã·ããªãã£ã·ã¹ãã ã¯ãããã²ã¼ã·ã§ã³ãèªã¿ããããæä½æ§ãåä¸ãããããã®å種ãã¼ã«ãæä¾ãã¦ãã¾ããããã«ã¯ä»¥ä¸ãå«ã¾ãã¾ããããããã«éå®ããã¾ããã","statementEnhancementsList":["ãµã¤ãå
¨ä½ã®æ©è½ã«å¯¾å¿ããå®å
¨ãªãã¼ãã¼ãããã²ã¼ã·ã§ã³","ãã©ã³ããµã¤ãºãé
ç½®ãééã®èª¿æ´","æããèæ¯ã»æãèæ¯ã¢ã¼ãã®ã³ã³ãã©ã¹ã調æ´","è¦èªæ§åä¸ã®ããã®ã«ã¹ã¿ã ã«ã©ã¼èª¿æ´","ã¢ãã¯ããã³ã³ãã©ã¹ããããã³ã°ãå«ãè²è¦ç°å¸¸å¯¾å¿ã¢ã¼ã","èªã¿ãããã«æé©åããããã©ã³ããªãã·ã§ã³","è²ã®å¤æ´ãå¯è½ãªæ¡å¤§ã«ã¼ã½ã«","ã³ã³ãã³ããæ©è½ãæãªããã¨ãªãæå¤§200%ã¾ã§æ¡å¤§ã§ããæåãµã¤ãº","ãªã³ã¯ãè¦åºãã®è¦è¦çãªå¼·èª¿è¡¨ç¤º","ç»åã®ä»£æ¿ããã¹ã対å¿","鏿ããã³ã³ãã³ãã«å¯¾ãããã¼ã«ããã説æ","ããã¹ã鏿ã«ããåèªã®æå³è¡¨ç¤º","èªæ¸ã¬ã¤ãããã©ã¼ã«ã¹ãã¹ã¯ãå«ãèªæ¸æ¯æ´ãã¼ã«","ç¹æ»
ã»ãã©ãã·ã¥ã»ã¢ãã¡ã¼ã·ã§ã³è¦ç´ ã軽æ¸ã¾ãã¯åæ¢ããã³ã³ããã¼ã«"],"statementEnhancementsText2":"ãããã®æ©è½ã¯ãè¦è¦ãéåãèªç¥é¢ã§ã®ã¢ã¯ã»ã·ããªãã£ãã¼ãºãæã¤å©ç¨è
ãæ¯æ´ãããã¨ãç®çã¨ãã¦ãã¾ãã","statementBrowser":"ãã©ã¦ã¶ããã³æ¯æ´æè¡ã®ãµãã¼ã","statementBrowserText":"å½ç¤¾ã¯ãå¹
åºãææ°ã®ãã©ã¦ã¶ããã³æ¯æ´æè¡ã®ãµãã¼ããç®æãã¦ãã¾ããå½ç¤¾ã®ã¢ã¯ã»ã·ããªãã£ã¸ã®åãçµã¿ã«ã¯ã以ä¸ã®ãããªä¸è¬çã«ä½¿ç¨ããã¦ãããã©ãããã©ã¼ã ã§ã®ãã¹ãã¨æé©åãå«ã¾ãã¾ãã","statementBrowserList":["ChromeãFirefoxãEdgeãSafariãOpera","VoiceOver(macOS)ãJAWSãNVDA(Windows & macOS)ãªã©ã®ã¹ã¯ãªã¼ã³ãªã¼ãã¼"],"statementBrowserText2":"ã¢ã¯ã»ã·ããªãã£ã®ããã©ã¼ãã³ã¹ã¯ãåããã¤ã¹ã®è¨å®ãæ¯æ´æè¡ã®çµã¿åããã«ãã£ã¦ç°ãªãå ´åããããã¨ããäºæ¿ãã ããã","statementTechnical":"æè¡çãªæ çµã¿","statementTechnicalText":"æ¬ã¦ã§ããµã¤ãã¯ãã¢ã¯ã»ã·ãã«ãªæ©è½ãæä¾ããããã«ä»¥ä¸ã®æè¡ã使ç¨ãã¦ãã¾ãã","statementTechnicalList":["HTML5","WAI-ARIA屿§","CSS3","JavaScript(ES6以é)"],"statementTechnicalText2":"ãããã®æè¡ã¯ãèªããããã¢ã¯ã»ã·ããªãã£åºæºã¸ã®æºæ ãæ¯æ´ããããã«ä½¿ç¨ããã¦ãã¾ãã","statementThirdParty":"第ä¸è
ã³ã³ãã³ã","statementThirdPartyText":"æ¬ã¦ã§ããµã¤ãã®ä¸é¨ã«ã¯ãå½ç¤¾ãææã¾ãã¯ç®¡çãã¦ããªã第ä¸è
ã³ã³ãã³ããçµ±åæ©è½(ã½ã¼ã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ã¼ã ãåãè¾¼ã¿åç»ãå¤é¨ã¦ã£ã¸ã§ãããªã©)ãå«ã¾ããå ´åãããã¾ãããã®ããããããã®å¤é¨ã³ã³ãã¼ãã³ãã®ã¢ã¯ã»ã·ããªãã£ãä¿è¨¼ãããã¨ã¯ã§ãã¾ããã","statementThirdPartyText2":"åèã¨ãã¦ã以ä¸ã®ç¬¬ä¸è
ãããã¤ãã¼ã®ã¢ã¯ã»ã·ããªãã£ããªã·ã¼ãç´æ¥ã確èªããã ãã¾ãã","statementThirdPartyLinks":[{"text":"Facebookã®ã¢ã¯ã»ã·ããªãã£","url":"https://www.facebook.com/help/accessibility"},{"text":"YouTubeã®ã¢ã¯ã»ã·ããªãã£","url":"https://support.google.com/youtube/topic/9257096"},{"text":"Instagramã®ã¢ã¯ã»ã·ããªãã£","url":"https://help.instagram.com/650202712454932"},{"text":"Twitterã®ã¢ã¯ã»ã·ããªãã£","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"LinkedInã®ã¢ã¯ã»ã·ããªãã£","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"ç¶ç¶çãªæ¹åã¨ãã£ã¼ãããã¯","statementFeedbackText":"å½ç¤¾ã¯ãã¦ã§ããµã¤ãã®ã¢ã¯ã»ã·ããªãã£åä¸ã«ç¶ç¶çã«åãçµãã§ãã¾ããã¢ã¯ã»ã·ããªãã£ã«é¢ããåé¡ã«å¯¾å¿ããããåªãã¦ããã¾ãããä¸é¨ã®ã³ã³ãã³ããæ©è½ã¯ã¾ã å®å
¨ã«æé©åããã¦ããªãå ´åãããã¾ãã","statementFeedbackText2":"ã³ã³ãã³ãã¸ã®ã¢ã¯ã»ã¹ã«åé¡ãããå ´åãã¢ã¯ã»ã·ããªãã£ã®åé¡ã«æ°ã¥ããå ´åãã¾ãã¯æ¹åã®ãææ¡ãããå ´åã¯ãã¦ã§ããµã¤ãä¸ã§ãå©ç¨ããã ããããã£ã¼ãããã¯ãéä¿¡ããªãã·ã§ã³ãããé£çµ¡ãã ããã","statementFeedbackText3":"çæ§ããã®ãã£ã¼ãããã¯ã¯ããã¹ã¦ã®æ¹ã®å©ç¨ä½é¨ãåä¸ãããããã«å½¹ç«ã¦ããã¾ãã","statementLastUpdated":"æçµæ´æ°æ¥:"},
296 hi: {"skipToMain":"मà¥à¤à¥à¤¯ सामà¤à¥à¤°à¥ पर à¤à¤¾à¤à¤","accessibility":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾","closeToolbar":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ à¤à¥à¤²à¤¬à¤¾à¤° बà¤à¤¦ à¤à¤°à¥à¤","toggleToolbar":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ à¤à¥à¤²à¤¬à¤¾à¤° à¤à¥à¤à¤² à¤à¤°à¥à¤","textSize":"à¤à¥à¤à¥à¤¸à¥à¤ à¤à¤à¤¾à¤°","increaseText":"à¤à¥à¤à¥à¤¸à¥à¤ बड़ा à¤à¤°à¥à¤","increaseTextAria":"à¤à¥à¤à¥à¤¸à¥à¤ à¤à¤¾ à¤à¤à¤¾à¤° बढ़ाà¤à¤","decreaseText":"à¤à¥à¤à¥à¤¸à¥à¤ à¤à¥à¤à¤¾ à¤à¤°à¥à¤","decreaseTextAria":"à¤à¥à¤à¥à¤¸à¥à¤ à¤à¤¾ à¤à¤à¤¾à¤° à¤à¤à¤¾à¤à¤","contrastColors":"à¤à¤à¤à¥à¤°à¤¾à¤¸à¥à¤ à¤à¤° रà¤à¤","highContrast":"à¤à¤à¥à¤ à¤à¤à¤à¥à¤°à¤¾à¤¸à¥à¤","highContrastAria":"à¤à¤à¥à¤ à¤à¤à¤à¥à¤°à¤¾à¤¸à¥à¤ मà¥à¤¡ à¤à¥à¤à¤² à¤à¤°à¥à¤","negativeContrast":"नà¥à¤à¥à¤à¤¿à¤µ à¤à¤à¤à¥à¤°à¤¾à¤¸à¥à¤","negativeContrastAria":"नà¥à¤à¥à¤à¤¿à¤µ à¤à¤à¤à¥à¤°à¤¾à¤¸à¥à¤ à¤à¥à¤à¤² à¤à¤°à¥à¤","grayscale":"à¤à¥à¤°à¥à¤¸à¥à¤à¥à¤²","grayscaleAria":"à¤à¥à¤°à¥à¤¸à¥à¤à¥à¤² मà¥à¤¡ à¤à¥à¤à¤² à¤à¤°à¥à¤","readableFont":"पठनà¥à¤¯ फ़à¥à¤¨à¥à¤","readableFontAria":"पठनà¥à¤¯ फ़à¥à¤¨à¥à¤ à¤à¤¾ à¤à¤ªà¤¯à¥à¤ à¤à¤°à¥à¤","highlighting":"हाà¤à¤²à¤¾à¤à¤à¤¿à¤à¤","highlightLinks":"लिà¤à¤ हाà¤à¤²à¤¾à¤à¤ à¤à¤°à¥à¤","highlightLinksAria":"लिà¤à¤ हाà¤à¤²à¤¾à¤à¤ à¤à¤°à¥à¤","highlightTitles":"शà¥à¤°à¥à¤·à¤ हाà¤à¤²à¤¾à¤à¤ à¤à¤°à¥à¤","highlightTitlesAria":"शà¥à¤°à¥à¤·à¤à¥à¤ à¤à¥ हाà¤à¤²à¤¾à¤à¤ à¤à¤°à¥à¤","readingAids":"पठन सहायता","readingGuide":"रà¥à¤¡à¤¿à¤à¤ à¤à¤¾à¤à¤¡","readingGuideAria":"रà¥à¤¡à¤¿à¤à¤ à¤à¤¾à¤à¤¡ à¤à¥à¤à¤² à¤à¤°à¥à¤","readingMask":"रà¥à¤¡à¤¿à¤à¤ मासà¥à¤","readingMaskAria":"रà¥à¤¡à¤¿à¤à¤ मासà¥à¤ à¤à¥à¤à¤² à¤à¤°à¥à¤","textSpacing":"à¤à¥à¤à¥à¤¸à¥à¤ सà¥à¤ªà¥à¤¸à¤¿à¤à¤","textSpacingAria":"à¤à¥à¤à¥à¤¸à¥à¤ सà¥à¤ªà¥à¤¸à¤¿à¤à¤ बढ़ाà¤à¤","navigationInteraction":"नà¥à¤µà¤¿à¤à¥à¤¶à¤¨ à¤à¤° à¤à¤à¤à¤°à¥à¤à¥à¤¶à¤¨","keyboardNav":"à¤à¥à¤¬à¥à¤°à¥à¤¡ नà¥à¤µà¤¿à¤à¥à¤¶à¤¨","keyboardNavAria":"à¤à¤¨à¥à¤¨à¤¤ à¤à¥à¤¬à¥à¤°à¥à¤¡ नà¥à¤µà¤¿à¤à¥à¤¶à¤¨","bigCursor":"बड़ा à¤à¤°à¥à¤¸à¤°","bigCursorAria":"बड़ा à¤à¤°à¥à¤¸à¤°","stopAnimations":"à¤à¤¨à¤¿à¤®à¥à¤¶à¤¨ रà¥à¤à¥à¤","stopAnimationsAria":"à¤à¤¨à¤¿à¤®à¥à¤¶à¤¨ रà¥à¤à¥à¤","resetAll":"सà¤à¥ सà¥à¤à¤¿à¤à¤à¥à¤¸ रà¥à¤¸à¥à¤ à¤à¤°à¥à¤","resetAllAria":"सà¤à¥ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ सà¥à¤à¤¿à¤à¤à¥à¤¸ रà¥à¤¸à¥à¤ à¤à¤°à¥à¤","accessibilityStatement":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ वà¤à¥à¤¤à¤µà¥à¤¯","viewStatementAria":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ वà¤à¥à¤¤à¤µà¥à¤¯ दà¥à¤à¥à¤","resetNotification":"सà¤à¥ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ सà¥à¤à¤¿à¤à¤à¥à¤¸ रà¥à¤¸à¥à¤ à¤à¤° दॠà¤à¤ हà¥à¤à¥¤","toolbarAvailable":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ à¤à¥à¤²à¤¬à¤¾à¤° à¤à¤ªà¤²à¤¬à¥à¤§ हà¥à¥¤ à¤à¥à¤²à¤¨à¥ à¤à¥ लिठAlt+A दबाà¤à¤à¥¤","accessibilityControls":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ नियà¤à¤¤à¥à¤°à¤£","statementTitle":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ वà¤à¥à¤¤à¤µà¥à¤¯","closeStatement":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ वà¤à¥à¤¤à¤µà¥à¤¯ बà¤à¤¦ à¤à¤°à¥à¤","statementCommitment":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤¦à¥à¤§à¤¤à¤¾","statementCommitmentText":"हम यह सà¥à¤¨à¤¿à¤¶à¥à¤à¤¿à¤¤ à¤à¤°à¤¨à¥ à¤à¤¾ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¤¤à¥ हà¥à¤ à¤à¤¿ हमारॠवà¥à¤¬à¤¸à¤¾à¤à¤ सà¤à¥ à¤à¥ लिà¤, à¤à¤¿à¤¸à¤®à¥à¤ विà¤à¤²à¤¾à¤à¤ वà¥à¤¯à¤à¥à¤¤à¤¿ à¤à¥ शामिल हà¥à¤, सà¥à¤²à¤ à¤à¤° à¤à¤ªà¤¯à¥à¤ यà¥à¤à¥à¤¯ हà¥à¥¤ à¤à¤¸ पà¥à¤°à¤¤à¤¿à¤¬à¤¦à¥à¤§à¤¤à¤¾ à¤à¥ हिसà¥à¤¸à¥ à¤à¥ रà¥à¤ª मà¥à¤, हमनॠà¤à¤ सà¥à¤µà¤à¤¾à¤²à¤¿à¤¤ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ समाधान लाà¤à¥ à¤à¤¿à¤¯à¤¾ हॠà¤à¥ à¤à¤ªà¤¯à¥à¤à¤¿à¤¤à¤¾ बढ़ानॠà¤à¤° यथासà¤à¤à¤µ Israeli Standard IS 5568 तथा Web Content Accessibility Guidelines (WCAG) 2.1 Level AA à¤à¥ à¤
नà¥à¤°à¥à¤ª हà¥à¤¨à¥ à¤à¥ लिठडिà¤à¤¼à¤¾à¤à¤¨ à¤à¤¿à¤¯à¤¾ à¤à¤¯à¤¾ हà¥à¥¤","
296statementCommitmentText2":"पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ सà¥à¤µà¤¿à¤§à¤¾à¤à¤ à¤à¤ सà¥à¤µà¤à¤¾à¤²à¤¿à¤¤ à¤à¤ªà¤à¤°à¤£ à¤à¥ माधà¥à¤¯à¤® सॠपà¥à¤°à¤¦à¤¾à¤¨ à¤à¥ à¤à¤¾à¤¤à¥ हà¥à¤ à¤à¤° हमारॠसà¥à¤µà¤¾ à¤à¥ शरà¥à¤¤à¥à¤ à¤à¥ à¤
नà¥à¤¸à¤¾à¤° \"à¤à¥à¤¸à¥ हà¥à¤ वà¥à¤¸à¥\" à¤à¤ªà¤²à¤¬à¥à¤§ à¤à¤°à¤¾à¤ à¤à¤¾à¤¤à¥ हà¥à¤à¥¤ सà¥à¤µà¤à¤¾à¤²à¤¿à¤¤ à¤à¤ªà¤à¤°à¤£ à¤
नà¥à¤ªà¤¾à¤²à¤¨ मà¥à¤ सहायता à¤à¤°à¤¤à¥ हà¥à¤, लà¥à¤à¤¿à¤¨ पà¥à¤°à¥à¤£ à¤à¤¾à¤¨à¥à¤¨à¥ à¤
नà¥à¤ªà¤¾à¤²à¤¨ à¤à¥ लिठफिर à¤à¥ साà¤à¤-सà¥à¤¤à¤°à¥à¤¯ सामà¤à¥à¤°à¥ à¤à¤° à¤à¥à¤¡ मà¥à¤ सà¥à¤§à¤¾à¤° à¤à¥ à¤à¤µà¤¶à¥à¤¯à¤à¤¤à¤¾ हॠसà¤à¤¤à¥ हà¥à¥¤","statementEnhancements":"à¤à¤¸ वà¥à¤¬à¤¸à¤¾à¤à¤ पर à¤à¤ªà¤²à¤¬à¥à¤§ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ सà¥à¤§à¤¾à¤°","statementEnhancementsText":"à¤à¤¸ वà¥à¤¬à¤¸à¤¾à¤à¤ पर सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ पà¥à¤°à¤£à¤¾à¤²à¥ नà¥à¤µà¤¿à¤à¥à¤¶à¤¨, पठनà¥à¤¯à¤¤à¤¾ à¤à¤° à¤à¤à¤à¤°à¥à¤à¥à¤¶à¤¨ à¤à¥ बà¥à¤¹à¤¤à¤° बनानॠà¤à¥ लिठà¤à¤ à¤à¤ªà¤à¤°à¤£ पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤°à¤¤à¥ हà¥, à¤à¤¿à¤¨à¤®à¥à¤ शामिल हà¥à¤, परà¤à¤¤à¥ à¤à¤¨à¥à¤¹à¥à¤ तठसà¥à¤®à¤¿à¤¤ नहà¥à¤:","statementEnhancementsList":["साà¤à¤ à¤à¥ सà¤à¥ à¤à¤¾à¤°à¥à¤¯à¤à¥à¤·à¤®à¤¤à¤¾à¤à¤ मà¥à¤ पà¥à¤°à¥à¤£ à¤à¥à¤¬à¥à¤°à¥à¤¡ नà¥à¤µà¤¿à¤à¥à¤¶à¤¨ समरà¥à¤¥à¤¨","समायà¥à¤à¥à¤¯ फ़à¥à¤¨à¥à¤ à¤à¤à¤¾à¤°, सà¤à¤°à¥à¤à¤£ à¤à¤° सà¥à¤ªà¥à¤¸à¤¿à¤à¤","हलà¥à¤à¥ à¤à¤° à¤à¤¹à¤°à¥ बà¥à¤à¤à¥à¤°à¤¾à¤à¤à¤¡ मà¥à¤¡ à¤à¥ लिठà¤à¤à¤à¥à¤°à¤¾à¤¸à¥à¤ नियà¤à¤¤à¥à¤°à¤£","बà¥à¤¹à¤¤à¤° दà¥à¤¶à¥à¤¯à¤¤à¤¾ à¤à¥ लिठà¤à¤¸à¥à¤à¤® रà¤à¤ समायà¥à¤à¤¨","à¤à¤²à¤°-बà¥à¤²à¤¾à¤à¤à¤¡ à¤à¥ à¤
नà¥à¤à¥à¤² मà¥à¤¡, à¤à¤¿à¤¨à¤®à¥à¤ मà¥à¤¨à¥à¤à¥à¤°à¥à¤® à¤à¤° à¤à¤à¤à¥à¤°à¤¾à¤¸à¥à¤ मिलान शामिल हà¥à¤","पठनà¥à¤¯à¤¤à¤¾ à¤à¥ लिठà¤
नà¥à¤à¥à¤²à¤¿à¤¤ फ़à¥à¤¨à¥à¤ विà¤à¤²à¥à¤ª","वà¥à¤à¤²à¥à¤ªà¤¿à¤ रà¤à¤ परिवरà¥à¤¤à¤¨ à¤à¥ साथ बड़ा à¤à¤°à¥à¤¸à¤°","सामà¤à¥à¤°à¥ या à¤à¤¾à¤°à¥à¤¯à¤à¥à¤·à¤®à¤¤à¤¾ à¤à¥à¤ बिना 200% तठà¤à¥à¤à¥à¤¸à¥à¤ सà¥à¤à¥à¤²à¤¿à¤à¤","लिà¤à¤ à¤à¤° शà¥à¤°à¥à¤·à¤à¥à¤ पर दà¥à¤¶à¥à¤¯ à¤à¥à¤°","à¤à¤µà¤¿à¤¯à¥à¤ à¤à¥ लिठवà¥à¤à¤²à¥à¤ªà¤¿à¤ à¤à¥à¤à¥à¤¸à¥à¤ समरà¥à¤¥à¤¨","à¤à¤¯à¤¨à¤¿à¤¤ सामà¤à¥à¤°à¥ à¤à¥ लिठà¤à¥à¤²à¤à¤¿à¤ª सà¥à¤ªà¤·à¥à¤à¥à¤à¤°à¤£","à¤à¥à¤à¥à¤¸à¥à¤ à¤à¤¯à¤¨ à¤à¥ माधà¥à¤¯à¤® सॠशबà¥à¤¦ परिà¤à¤¾à¤·à¤¾à¤à¤","पठन सहायता à¤à¤ªà¤à¤°à¤£, à¤à¤¿à¤¨à¤®à¥à¤ रà¥à¤¡à¤¿à¤à¤ à¤à¤¾à¤à¤¡ à¤à¤° फà¥à¤à¤¸ मासà¥à¤ शामिल हà¥à¤","à¤à¤¿à¤²à¤®à¤¿à¤²à¤¾à¤¹à¤, फà¥à¤²à¥à¤¶à¤¿à¤à¤ या à¤à¤¨à¤¿à¤®à¥à¤à¥à¤¡ ततà¥à¤µà¥à¤ à¤à¥ à¤à¤® à¤à¤°à¤¨à¥ या रà¥à¤à¤¨à¥ à¤à¥ नियà¤à¤¤à¥à¤°à¤£"],"statementEnhancementsText2":"यॠसà¥à¤µà¤¿à¤§à¤¾à¤à¤ दà¥à¤·à¥à¤à¤¿, à¤à¤¤à¤¿à¤¶à¥à¤²à¤¤à¤¾ à¤à¤° सà¤à¤à¥à¤à¤¾à¤¨à¤¾à¤¤à¥à¤®à¤ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ à¤à¤µà¤¶à¥à¤¯à¤à¤¤à¤¾à¤à¤ वालॠà¤à¤ªà¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾à¤à¤ à¤à¥ सहायता à¤à¥ लिठबनाठà¤à¤ हà¥à¤à¥¤","statementBrowser":"बà¥à¤°à¤¾à¤à¤à¤¼à¤° à¤à¤° सहायठतà¤à¤¨à¥à¤ समरà¥à¤¥à¤¨","statementBrowserText":"हमारा लà¤à¥à¤·à¥à¤¯ à¤à¤§à¥à¤¨à¤¿à¤ बà¥à¤°à¤¾à¤à¤à¤¼à¤°à¥à¤ à¤à¤° सहायठतà¤à¤¨à¥à¤à¥à¤ à¤à¥ à¤à¤ विसà¥à¤¤à¥à¤¤ शà¥à¤°à¥à¤à¤à¤²à¤¾ à¤à¤¾ समरà¥à¤¥à¤¨ à¤à¤°à¤¨à¤¾ हà¥à¥¤ हमारॠपहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ पà¥à¤°à¤¯à¤¾à¤¸à¥à¤ मà¥à¤ सामानà¥à¤¯ रà¥à¤ª सॠà¤à¤ªà¤¯à¥à¤ à¤à¤¿à¤ à¤à¤¾à¤¨à¥ वालॠपà¥à¤²à¥à¤à¤«à¤¼à¥à¤°à¥à¤® à¤à¥ लिठपरà¥à¤à¥à¤·à¤£ à¤à¤° à¤
नà¥à¤à¥à¤²à¤¨ शामिल हà¥, à¤à¤¿à¤¨à¤®à¥à¤ शामिल हà¥à¤:","statementBrowserList":["Chrome, Firefox, Edge, Safari, à¤à¤° Opera","सà¥à¤à¥à¤°à¥à¤¨ रà¥à¤¡à¤° à¤à¥à¤¸à¥ VoiceOver (macOS), JAWS, à¤à¤° NVDA (Windows à¤à¤° macOS)"],"statementBrowserText2":"à¤à¥à¤ªà¤¯à¤¾ धà¥à¤¯à¤¾à¤¨ दà¥à¤ à¤à¤¿ वà¥à¤¯à¤à¥à¤¤à¤¿à¤à¤¤ डिवाà¤à¤¸ à¤à¥à¤¨à¥à¤«à¤¼à¤¿à¤à¤°à¥à¤¶à¤¨ à¤à¤° सहायठतà¤à¤¨à¥à¤ सà¤à¤¯à¥à¤à¤¨à¥à¤ à¤à¥ à¤à¤§à¤¾à¤° पर पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ पà¥à¤°à¤¦à¤°à¥à¤¶à¤¨ à¤à¤¿à¤¨à¥à¤¨ हॠसà¤à¤¤à¤¾ हà¥à¥¤","
296statementTechnical":"तà¤à¤¨à¥à¤à¥ ढाà¤à¤à¤¾","statementTechnicalText":"यह वà¥à¤¬à¤¸à¤¾à¤à¤ सà¥à¤²à¤ à¤à¤¾à¤°à¥à¤¯à¤à¥à¤·à¤®à¤¤à¤¾ पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤°à¤¨à¥ à¤à¥ लिठनिमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ तà¤à¤¨à¥à¤à¥à¤ पर निरà¥à¤à¤° à¤à¤°à¤¤à¥ हà¥:","statementTechnicalList":["HTML5","WAI-ARIA विशà¥à¤·à¤¤à¤¾à¤à¤","CSS3","JavaScript (ES6 à¤à¤° à¤à¤¸à¤¸à¥ à¤à¤ªà¤°)"],"statementTechnicalText2":"à¤à¤¨ तà¤à¤¨à¥à¤à¥à¤ à¤à¤¾ à¤à¤ªà¤¯à¥à¤ मानà¥à¤¯à¤¤à¤¾ पà¥à¤°à¤¾à¤ªà¥à¤¤ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ मानà¤à¥à¤ à¤à¥ ठनà¥à¤ªà¤¾à¤²à¤¨ à¤à¤¾ समरà¥à¤¥à¤¨ à¤à¤°à¤¨à¥ à¤à¥ लिठà¤à¤¿à¤¯à¤¾ à¤à¤¾à¤¤à¤¾ हà¥à¥¤","statementThirdParty":"तà¥à¤¤à¥à¤¯-पà¤à¥à¤· सामà¤à¥à¤°à¥","statementThirdPartyText":"à¤à¤¸ वà¥à¤¬à¤¸à¤¾à¤à¤ à¤à¥ à¤à¥à¤ हिसà¥à¤¸à¥à¤ मà¥à¤ तà¥à¤¤à¥à¤¯-पà¤à¥à¤· सामà¤à¥à¤°à¥ या à¤à¤à¥à¤à¤°à¤£ (à¤à¥à¤¸à¥ सà¥à¤¶à¤² मà¥à¤¡à¤¿à¤¯à¤¾ पà¥à¤²à¥à¤à¤«à¤¼à¥à¤°à¥à¤®, à¤à¤®à¥à¤¬à¥à¤¡à¥à¤¡ वà¥à¤¡à¤¿à¤¯à¥, या बाहरॠविà¤à¥à¤) शामिल हॠसà¤à¤¤à¥ हà¥à¤, à¤à¥ हमारॠसà¥à¤µà¤¾à¤®à¤¿à¤¤à¥à¤µ या नियà¤à¤¤à¥à¤°à¤£ मà¥à¤ नहà¥à¤ हà¥à¤à¥¤ परिणामसà¥à¤µà¤°à¥à¤ª, हम à¤à¤¨ बाहरॠà¤à¤à¤à¥à¤ à¤à¥ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ à¤à¥ à¤à¤¾à¤°à¤à¤à¥ नहà¥à¤ दॠसà¤à¤¤à¥à¥¤","statementThirdPartyText2":"सà¤à¤¦à¤°à¥à¤ à¤à¥ लिà¤, à¤à¤ª à¤à¤¨ तà¥à¤¤à¥à¤¯-पà¤à¥à¤· पà¥à¤°à¤¦à¤¾à¤¤à¤¾à¤à¤ à¤à¥ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ नà¥à¤¤à¤¿à¤¯à¥à¤ à¤à¥ सà¥à¤§à¥ दà¥à¤ सà¤à¤¤à¥ हà¥à¤:","statementThirdPartyLinks":[{"text":"Facebook पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾","url":"https://www.facebook.com/help/accessibility"},{"text":"YouTube पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾","url":"https://support.google.com/youtube/topic/9257096"},{"text":"Instagram पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾","url":"https://help.instagram.com/650202712454932"},{"text":"Twitter पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"LinkedIn पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"निरà¤à¤¤à¤° सà¥à¤§à¤¾à¤° à¤à¤° पà¥à¤°à¤¤à¤¿à¤à¥à¤°à¤¿à¤¯à¤¾","statementFeedbackText":"हम ठपनॠवà¥à¤¬à¤¸à¤¾à¤à¤ à¤à¥ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ मà¥à¤ सà¥à¤§à¤¾à¤° à¤à¥ लिठनिरà¤à¤¤à¤° पà¥à¤°à¤¯à¤¾à¤¸à¤°à¤¤ हà¥à¤à¥¤ हालाà¤à¤à¤¿ हम पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ सà¤à¤¬à¤à¤§à¥ à¤à¤¿à¤à¤¤à¤¾à¤à¤ à¤à¥ दà¥à¤° à¤à¤°à¤¨à¥ à¤à¤¾ हर सà¤à¤à¤µ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¤¤à¥ हà¥à¤, फिर à¤à¥ à¤à¥à¤ सामà¤à¥à¤°à¥ या सà¥à¤µà¤¿à¤§à¤¾à¤à¤ ठà¤à¥ पà¥à¤°à¥ तरह ठनà¥à¤à¥à¤²à¤¿à¤¤ नहà¥à¤ हॠसà¤à¤¤à¥ हà¥à¤à¥¤","statementFeedbackText2":"यदि à¤à¤ªà¤à¥ सामà¤à¥à¤°à¥ तठपहà¥à¤à¤à¤¨à¥ मà¥à¤ à¤à¥à¤ à¤à¤ िनाठहà¥à¤¤à¥ हà¥, à¤à¥à¤ पहà¥à¤à¤-यà¥à¤à¥à¤¯à¤¤à¤¾ समसà¥à¤¯à¤¾ à¤à¤¤à¥ हà¥, या à¤à¤ª सà¥à¤§à¤¾à¤° सà¥à¤à¤¾à¤¨à¤¾ à¤à¤¾à¤¹à¤¤à¥ हà¥à¤, तॠहम à¤à¤ªà¤à¥ वà¥à¤¬à¤¸à¤¾à¤à¤ पर à¤à¤ªà¤²à¤¬à¥à¤§ \"फà¥à¤¡à¤¬à¥à¤ à¤à¥à¤à¥à¤\" विà¤à¤²à¥à¤ª à¤à¥ माधà¥à¤¯à¤® सॠहमसॠसà¤à¤ªà¤°à¥à¤ à¤à¤°à¤¨à¥ à¤à¥ लिठपà¥à¤°à¥à¤¤à¥à¤¸à¤¾à¤¹à¤¿à¤¤ à¤à¤°à¤¤à¥ हà¥à¤à¥¤","statementFeedbackText3":"à¤à¤ªà¤à¥ पà¥à¤°à¤¤à¤¿à¤à¥à¤°à¤¿à¤¯à¤¾ हमà¥à¤ सà¤à¥ à¤à¥ लिठठनà¥à¤à¤µ à¤à¥ बà¥à¤¹à¤¤à¤° बनानॠमà¥à¤ मदद à¤à¤°à¤¤à¥ हà¥à¥¤","statementLastUpdated":"ठà¤à¤¤à¤¿à¤® ठदà¥à¤¯à¤¤à¤¨:"}, 297 nl: {"skipToMain":"Naar hoofdinhoud gaan","accessibility":"Toegankelijkheid","closeToolbar":"Toegankelijkheidswerkbalk sluiten","toggleToolbar":"Toegankelijkheidswerkbalk in-/uitschakelen","textSize":"Tekstgrootte","
297increaseText":"Tekst vergroten","increaseTextAria":"Tekstgrootte vergroten","decreaseText":"Tekst verkleinen","decreaseTextAria":"Tekstgrootte verkleinen","contrastColors":"Contrast & Kleuren","highContrast":"Hoog Contrast","highContrastAria":"Hoog contrast in-/uitschakelen","negativeContrast":"Negatief Contrast","negativeContrastAria":"Negatief contrast in-/uitschakelen","grayscale":"Grijstinten","grayscaleAria":"Grijstinten in-/uitschakelen","readableFont":"Leesbaar Lettertype","readableFontAria":"Leesbaar lettertype gebruiken","highlighting":"Markering","highlightLinks":"Links Markeren","highlightLinksAria":"Links markeren","highlightTitles":"Titels Markeren","highlightTitlesAria":"Koppen markeren","readingAids":"Leeshulpmiddelen","readingGuide":"Leeslijn","readingGuideAria":"Leeslijn in-/uitschakelen","readingMask":"Leesmasker","readingMaskAria":"Leesmasker in-/uitschakelen","textSpacing":"Tekstafstand","textSpacingAria":"Tekstafstand vergroten","navigationInteraction":"Navigatie & Interactie","keyboardNav":"Toetsenbordnavigatie","keyboardNavAria":"Verbeterde toetsenbordnavigatie","bigCursor":"Grote Cursor","bigCursorAria":"Grote cursor","stopAnimations":"Animaties Stoppen","stopAnimationsAria":"Animaties stoppen","resetAll":"Alle Instellingen Resetten","resetAllAria":"Alle toegankelijkheidsinstellingen resetten","accessibilityStatement":"Toegankelijkheidsverklaring","viewStatementAria":"Toegankelijkheidsverklaring bekijken","resetNotification":"Alle toegankelijkheidsinstellingen zijn gereset.","toolbarAvailable":"Toegankelijkheidswerkbalk beschikbaar. Druk op Alt+A om te openen.","accessibilityControls":"Toegankelijkheidsopties","statementTitle":"Toegankelijkheidsverklaring","closeStatement":"Toegankelijkheidsverklaring sluiten","statementCommitment":"Toegankelijkheidsverbintenis","statementCommitmentText":"Wij streven ernaar onze website toegankelijk en bruikbaar te maken voor iedereen, inclusief mensen met een beperking. Als onderdeel van deze verbintenis hebben wij een geautomatiseerde toegankelijkheidsoplossing geïmplementeerd die is ontworpen om de bruikbaarheid te verbeteren en zo dicht mogelijk aan te sluiten bij de Israeli Standard IS 5568 en de Web Content Accessibility Guidelines (WCAG) 2.1 Level AA.","statementCommitmentText2":"De toegankelijkheidsfuncties worden aangeboden via een geautomatiseerd hulpmiddel en worden \"als zodanig\" beschikbaar gesteld, in overeenstemming met onze Gebruiksvoorwaarden. Geautomatiseerde hulpmiddelen ondersteunen naleving, maar volledige wettelijke naleving kan nog steeds herstelwerkzaamheden op het niveau van inhoud en code van de site vereisen.","statementEnhancements":"Beschikbare Toegankelijkheidsverbeteringen op Deze Website","statementEnhancementsText":"Het toegankelijkheidssysteem dat op deze website is geïnstalleerd, biedt een reeks hulpmiddelen om navigatie, leesbaarheid en interactie te verbeteren, waaronder onder meer:","statementEnhancementsList":["Volledige ondersteuning van toetsenbordnavigatie voor alle site-functionaliteiten","Aanpasbare lettergrootte, uitlijning en tekstafstand","Contrastregeling voor lichte en donkere achtergrondmodi","Aangepaste kleurinstellingen voor betere zichtbaarheid","Kleurenblindvriendelijke modi, inclusief monochroom en contrastafstemming","Lettertype-opties geoptimaliseerd voor leesbaarheid","Vergrote cursor met optionele kleurwijzigingen","Tekstschaling tot 200% zonder verlies van inhoud of functionaliteit","Visuele accentuering van links en koppen","Ondersteuning voor alternatieve tekst bij afbeeldingen","Tooltip-uitleg bij geselecteerde inhoud","Woordverklaringen via tekstselectie","Leeshulpmiddelen, inclusief leeslijnen en focusmaskers","Bediening om knipperende, flikkerende of geanimeerde elementen te verminderen of te stoppen"],"statementEnhancementsText2":"Deze functies zijn bedoeld om gebruikers met visuele, motorische en cognitieve toegankelijkheidsbehoeften te ondersteunen.","statementBrowser":"Ondersteuning van Browsers en Hulptechnologie","statementBrowserText":"Wij streven ernaar een breed scala aan moderne browsers en hulptechnologieën te ondersteunen. Onze toegankelijkheidsinspanningen omvatten testen en optimalisatie voor veelgebruikte platforms, waaronder:","statementBrowserList":["Chrome, Firefox, Edge, Safari en Opera","Schermlezers zoals VoiceOver (macOS), JAWS en NVDA (Windows & macOS)"],"statementBrowserText2":"Houd er rekening mee dat de toegankelijkheidsprestaties kunnen variëren afhankelijk van individuele apparaatconfiguraties en comb
297inaties van hulptechnologieën.","statementTechnical":"Technisch Kader","statementTechnicalText":"Deze website vertrouwt op de volgende technologieën om toegankelijke functionaliteit te leveren:","statementTechnicalList":["HTML5","WAI-ARIA-attributen","CSS3","JavaScript (ES6 en hoger)"],"statementTechnicalText2":"Deze technologieën worden gebruikt om naleving van erkende toegankelijkheidsnormen te ondersteunen.","statementThirdParty":"Inhoud van Derden","statementThirdPartyText":"Sommige delen van deze website kunnen inhoud of integraties van derden bevatten (zoals socialmediaplatforms, ingesloten video's of externe widgets) die niet door ons worden beheerd of gecontroleerd. Daardoor kunnen wij de toegankelijkheid van deze externe onderdelen niet garanderen.","statementThirdPartyText2":"Voor meer informatie kunt u het toegankelijkheidsbeleid van deze externe aanbieders rechtstreeks raadplegen:","statementThirdPartyLinks":[{"text":"Toegankelijkheid van Facebook","url":"https://www.facebook.com/help/accessibility"},{"text":"Toegankelijkheid van YouTube","url":"https://support.google.com/youtube/topic/9257096"},{"text":"Toegankelijkheid van Instagram","url":"https://help.instagram.com/650202712454932"},{"text":"Toegankelijkheid van Twitter","url":"https://help.twitter.com/en/using-twitter/accessibility-features"},{"text":"Toegankelijkheid van LinkedIn","url":"https://www.linkedin.com/accessibility"}],"statementFeedback":"Voortdurende Verbeteringen & Feedback","statementFeedbackText":"Wij werken voortdurend aan het verbeteren van de toegankelijkheid van onze website. Hoewel wij ons best doen om toegankelijkheidsproblemen aan te pakken, zijn sommige inhoud of functies mogelijk nog niet volledig geoptimaliseerd.","statementFeedbackText2":"Als u problemen ondervindt bij het openen van inhoud, een toegankelijkheidsprobleem tegenkomt of verbeteringen wilt voorstellen, raden wij u aan contact met ons op te nemen via de optie \"Feedback Versturen\" die beschikbaar is op de website.","statementFeedbackText3":"Uw feedback helpt ons de ervaring voor iedereen te verbeteren.","statementLastUpdated":"Laatst Bijgewerkt:"} 298 }; 299 300 function t(key) { 301 return translations[currentLang]?.[key] || translations.en[key] || key; 302 } 303 304 function removeExistingAccessibilityUi() { 305 const staleElementIds = [ 306 'a11y-toolbar', 307 'a11y-toolbar-header', 308 'a11y-toolbar-title', 309 'a11y-toolbar-content', 310 'a11y-close-btn', 311 'a11y-toggle', 312 'a11y-reading-guide', 313 'a11y-reading-mask', 314 'a11y-font-size-indicator', 315 'a11y-statement-modal', 316 'a11y-statement-content', 317 'a11y-statement-header', 318 'a11y-statement-body', 319 'a11y-statement-title', 320 'a11y-statement-close', 321 ]; 322 323 staleElementIds.forEach((id) => { 324 const element = document.getElementById(id); 325 if (element) { 326 element.remove(); 327 } 328 }); 329 330 document 331 .querySelectorAll('[data-a11y-toolbar-announcement="true"]') 332 .forEach((node) => node.remove()); 333 334 // Remove orphan toolbar controls that were persisted without wrapper IDs. 335 document 336 .querySelectorAll('.a11y-control-group, .a11y-reset-btn, .a11y-statement-btn') 337 .forEach((node) => { 338 const parentToolbar = node.closest('#a11y-toolbar'); 339 if (!parentToolbar) { 340 node.remove(); 341 } 342 }); 343 } 344 345 // RTL will be applied in initAccessibility after language is detected 346 // Initialize on DOM ready 347 console.log('ð Setting up initialization, readyState:', document.readyState); 348 if (document.readyState === 'loading') { 349 console.log('â³ Document still loading, waiting for DOMContentLoaded...'); 350 document.addEventListener('DOMContentLoaded', function() { 351 console.log('â DOMContentLoaded fired, initializing...'); 352 initAccessibility(); 353 }); 354 } else { 355 console.log('â Document already ready, initializing immediately...'); 356 // Small delay to ensure everything is ready, especially in iframes 357 setTimeout(function() { 358 initAccessibility(); 359 }, 100); 360 } 361 362 function initAccessibility() { 363 try { 364 console.log('ð§ initAccessibility called'); 365 console.log(' Document ready:', document.readyState); 366 console.log(' Body exists:', !!document.body); 367 368 // Re-detect language now that DOM is ready (important for iframe reloads) 369 currentLang = detectLanguage(); 370 console.log('ð Language detected in initAccessibility:', currentLang); 371 console.log(' HTML lang attribute:', document.documentElement.lang || document.documentElement.getAttribute('lang')); 372 373 // Rebuild stale persisted runtime markup so click handlers always exist. 374 if (document.getElementById('a11y-toolbar') || document.getElementById('a11y-toggle')) {
375 console.log('â»ï¸ Existing accessibility UI detected, rebuilding runtime UI'); 376 removeExistingAccessibilityUi(); 377 } 378 379 // Wait for body if not ready 380 if (!document.body) { 381 console.log('â³ Body not ready, retrying in 100ms...'); 382 setTimeout(initAccessibility, 100); 383 return; 384 } 385 386 console.log('â Initializing accessibility toolbar for the first time'); 387 388 // Apply accessibility language without changing whole-site direction. 389 // Keep host page dir/lang intact to avoid moving all site content. 390 document.documentElement.setAttribute('data-a11y-language', currentLang); 391 392 // Add skip to main content link - WCAG 2.4.1 393 addSkipLink(); 394 395 // Enhance semantic structure - WCAG 1.3.1 396 try { 397 enhanceSemanticHTML(); 398 } catch (semanticError) { 399 console.warn('â ï¸ Error in enhanceSemanticHTML:', semanticError); 400 // Continue initialization even if semantic enhancement fails 401 } 402 403 // Create accessibility toolbar 404 createAccessibilityToolbar(); 405 406 // Restore saved preferences 407 restoreSavedPreferences(); 408 409 // Add keyboard shortcuts - WCAG 2.1.1 410 setupKeyboardShortcuts(); 411 412 console.log('â Accessibility initialization complete'); 413 } catch (error) { 414 console.error('â Error in initAccessibility:', error); 415 console.error(' Error stack:', error.stack); 416 } 417 } 418 419 function addSkipLink() { 420 // Check if skip link already exists 421 if (document.querySelector('.a11y-skip-link')) { 422 return; 423 } 424 425 const skipLink = document.createElement('a'); 426 skipLink.href = '#main-content'; 427 skipLink.className = 'a11y-skip-link'; 428 skipLink.textContent = t('skipToMain'); 429 skipLink.setAttribute('aria-label', t('skipToMain')); 430 document.body.insertBefore(skipLink, document.body.firstChild); 431 432 skipLink.addEventListener('click', function(e) { 433 e.preventDefault(); 434 // Resolve the landmark rather than a hardcoded id: the section that 435 // carries role="main" may keep its OWN id now that we no longer 436 // overwrite it, so #main-content is no longer guaranteed to exist. 437 const main = document.getElementById('main-content') 438 || document.querySelector('main, [role="main"]'); 439 if (main) { 440 main.setAttribute('tabindex', '-1'); 441 main.focus(); 442 } 443 }); 444 } 445 446 function enhanceSemanticHTML() { 447 // The landmark id may only be TAKEN when it is free page-wide. 448 // 449 // The guards below ("does this element already have an id?") stop us 450 // overwriting the element's OWN id, but they said nothing about the id 451 // already belonging to some OTHER element. On a page whose layout 452 // wrapper is `<section id="main-content">` with a `<main>` inside it, 453 // stamping the same id on the <main> produced TWO elements with it â so 454 // every `#main-content{...}` rule in the page CSS started matching the 455 // inner <main> as well. Measured on A004814/areas: the wrapper's 456 // `#main-content{display:grid;grid-template-columns:177px 1fr 245px}` 457 // was inherited by the <main>, whose paragraphs collapsed into a 53px 458 // column â one word per line. Reported as "the text is compressed into 459 // narrow vertical columns". As with the sibling bug this function 460 // already carries, the HTML in GCS is correct and only the live DOM is 461 // wrong, which makes it very hard to see. 462 // 463 // A duplicate id is also a WCAG 4.1.1 parsing failure in its own right. 464 // Leaving the element without the id is safe: the skip-link handler 465 // resolves `main, [role="main"]` too, and role="main" is still set. 466 function landmarkIdIsFree() { 467 return !document.getElementById('main-content'); 468 } 469 470 // Add main landmark if not present - WCAG 1.3.1 471 let main = document.querySelector('main'); 472 if (!main) { 473 main = document.querySelector('[role="main"]'); 474 if (!main) { 475 const firstSection = document.querySelector('section') || document.body.children[0]; 476 if (firstSection && firstSection.tagName !== 'SCRIPT' && firstSection.tagName !== 'STYLE') { 477 // NEVER overwrite an id or a role the page already has. 478 // 479 // This used to assign both unconditionally. On any page without a 480 // <main>, the first <section>'s id was destroyed at runtime and 481 // every `#that-id{...}` rule in the page CSS stopped matching. 482 // Measured on A004679/treatments-1: `<section id="hero">` styled by 483 // `#hero{margin-top:150px;height:621px;...}` became #main-content, 484 // collapsed to 0px, and the article rendered under the fixed header 485 // â reported as "the page is cut". The HTML in GCS was correct and 486 // only the live DOM was wrong, which makes it very hard to see. 487 // 488 // The guard two lines below (`if (main && !main.id
488)`) already got 489 // this right for the existing-<main> path; this branch had simply 490 // been missed. The skip link no longer depends on the id being 491 // forced â its handler resolves [role="main"] as well. 492 if (!firstSection.id && landmarkIdIsFree()) { 493 firstSection.id = 'main-content'; 494 } 495 if (!firstSection.getAttribute('role')) { 496 firstSection.setAttribute('role', 'main'); 497 } 498 } 499 } 500 } 501 if (main && !main.id && landmarkIdIsFree()) { 502 main.id = 'main-content'; 503 } 504 505 // Add ARIA labels to navigation - WCAG 2.4.1 506 document.querySelectorAll('nav:not([aria-label])').forEach((nav, index) => { 507 nav.setAttribute('aria-label', `Navigation ${index + 1}`); 508 }); 509 510 // Add roles to semantic elements - WCAG 1.3.1 511 document.querySelectorAll('header:not([role])').forEach(header => { 512 header.setAttribute('role', 'banner'); 513 }); 514 515 document.querySelectorAll('footer:not([role])').forEach(footer => { 516 footer.setAttribute('role', 'contentinfo'); 517 }); 518 519 // Ensure all images have alt text - WCAG 1.1.1 520 document.querySelectorAll('img:not([alt])').forEach(img => { 521 img.setAttribute('alt', 'Image'); 522 console.warn('Image missing alt text:', img.src); 523 }); 524 525 // Ensure all buttons have labels - WCAG 4.1.2 526 document.querySelectorAll('button:not([aria-label])').forEach(button => { 527 if (!button.textContent.trim() && !button.querySelector('img[alt], [aria-label]')) { 528 button.setAttribute('aria-label', 'Button'); 529 console.warn('Button missing label:', button); 530 } 531 }); 532 533 // Ensure all links have labels - WCAG 2.4.4 534 document.querySelectorAll('a:not([aria-label])').forEach(link => { 535 if (!link.textContent.trim() && !link.querySelector('img[alt]')) { 536 link.setAttribute('aria-label', 'Link'); 537 console.warn('Link missing label:', link); 538 } 539 }); 540 541 // Validate form accessibility - WCAG 3.3.2, 4.1.3 542 try { 543 validateFormAccessibility(); 544 } catch (formError) { 545 console.warn('â ï¸ Error in form accessibility validation:', formError); 546 } 547 548 // Validate heading hierarchy - IS 5568 Section 2.4.10 549 try { 550 validateHeadingHierarchy(); 551 } catch (headingError) { 552 console.warn('â ï¸ Error in heading hierarchy validation:', headingError); 553 } 554 555 // Validate media accessibility - IS 5568 Level AA/AAA 556 try { 557 validateMediaAccessibility(); 558 } catch (mediaError) { 559 console.warn('â ï¸ Error in media accessibility validation:', mediaError); 560 } 561 562 // Validate language of parts - WCAG 3.1.2 (skipped for Hebrew per IS 5568) 563 try { 564 validateLanguageOfParts(); 565 } catch (langError) { 566 console.warn('â ï¸ Error in language of parts validation:', langError); 567 } 568 } 569 570 function validateHeadingHierarchy() { 571 // IS 5568 Part 1 (2021) Section 2.4.10: Heading hierarchy validation (Level AA requirement) 572 // Note: In IS 5568, heading hierarchy is upgraded from WCAG AAA to Level AA 573 const headings = Array.from(document.querySelectorAll('h1, h2, h3, h4, h5, h6')).filter(function(h) { 574 return !h.closest('[data-initial-load-popup]'); 575 }); 576 const issues = []; 577 578 // Check 1: No headings at all 579 if (headings.length === 0) { 580 const hasTextContent = document.body.textContent && document.body.textContent.trim().length > 100; 581 if (hasTextContent) { 582 issues.push({ 583 type: 'missing-headings', 584 severity: 'error', 585 message: 'Page contains text content but no heading tags (h1-h6) found. IS 5568 requires hierarchical headings for pages with text content.', 586 suggestion: 'Add at least one h1 heading for the main page title, followed by h2-h6 for section headings.', 587 standard: 'IS 5568 Part 1 (2021) Section 2.4.10 - Level AA' 588 }); 589 } 590 } else { 591 // Check 2: Missing h1 (Level AA violation - HIGH PRIORITY) 592 const hasH1 = headings.some(h => h.tagName === 'H1'); 593 if (!hasH1) { 594 issues.push({ 595 type: 'missing-h1', 596 severity: 'error', 597 message: 'Page is missing an h1 heading. IS 5568 Level AA requires exactly one h1 for the main page title.', 598 suggestion: 'Add an h1 tag with the main page title. This is a Level AA requirement in IS 5568.', 599 standard: 'IS 5568 Part 1 (2021) Section 2.4.10 - Level AA' 600 }); 601 } 602 603 // Check 3: Multiple h1 tags (Level AA violation - HIGH PRIORITY) 604 const h1Count = headings.filter(h => h.tagName === 'H1').length; 605 if (h1Count > 1) { 606 issues.push({ 607 type: 'multiple-h1', 608 severity: 'error', 609 message: 'Page contains ' + h1Count + ' h1 headings. IS 5568 Level AA requires exactly one h1 per page.', 610 suggestion: 'Convert additional h1 tags to h2 or lower level headings. Only one h1 is allowed per page.', 611 standard: 'IS 5568 Part 1 (2021) Section 2.4.10 - Level AA' 612 }); 613 } 614 615 // Check 4: Skipped heading levels 616 let previousLevel = 0; 617 const skippedLevels = []; 618
619 headings.forEach((heading, index) => { 620 const currentLevel = parseInt(heading.tagName.substring(1)); 621 622 if (previousLevel > 0) { 623 const levelDiff = currentLevel - previousLevel; 624 625 // Skipped levels (e.g., h1 to h3, skipping h2) 626 if (levelDiff > 1) { 627 const skipped = []; 628 for (let i = previousLevel + 1; i < currentLevel; i++) { 629 skipped.push('h' + i); 630 } 631 skippedLevels.push({ 632 from: 'h' + previousLevel, 633 to: 'h' + currentLevel, 634 skipped: skipped, 635 element: heading, 636 index: index 637 }); 638 } 639 } 640 641 previousLevel = currentLevel; 642 }); 643 644 if (skippedLevels.length > 0) { 645 skippedLevels.forEach(skip => { 646 issues.push({ 647 type: 'skipped-level', 648 severity: 'error', 649 message: 'Skipped heading level: Found ' + skip.to + ' after ' + skip.from + ', missing ' + skip.skipped.join(', ') + '. IS 5568 Level AA requires sequential heading hierarchy.', 650 suggestion: 'Change the ' + skip.to + ' to ' + skip.skipped[0] + ' or add the missing ' + skip.skipped.join(' and ') + ' heading(s) before it. Headings must be sequential (h1âh2âh3, etc.).', 651 element: skip.element, 652 standard: 'IS 5568 Part 1 (2021) Section 2.4.10 - Level AA' 653 }); 654 }); 655 } 656 657 // Check 5: Heading levels that are too deep (h5, h6 are rarely needed) 658 // Note: This is informational only, not a Level AA violation 659 const deepHeadings = headings.filter(h => { 660 const level = parseInt(h.tagName.substring(1)); 661 return level >= 5; 662 }); 663 664 if (deepHeadings.length > 0) { 665 issues.push({ 666 type: 'deep-headings', 667 severity: 'info', 668 message: 'Found ' + deepHeadings.length + ' deep heading(s) (h5-h6). Consider restructuring content to use h2-h4 instead for better navigation.', 669 suggestion: 'Restructure content hierarchy to use h2-h4 headings for better navigation. Deep headings (h5-h6) are allowed but may indicate overly complex structure.', 670 standard: 'IS 5568 Part 1 (2021) Section 2.4.10 - Best Practice' 671 }); 672 } 673 } 674 675 // Display issues if any found 676 if (issues.length > 0) { 677 console.group('â ï¸ IS 5568 Part 1 (2021) Section 2.4.10 - Heading Hierarchy Issues Detected (Level AA)'); 678 issues.forEach((issue, index) => { 679 const severityLabel = issue.severity === 'error' ? 'ð´ HIGH PRIORITY (Level AA Violation)' : 680 issue.severity === 'warning' ? 'ð¡ WARNING' : 'â¹ï¸ INFO'; 681 console.groupCollapsed((index + 1) + '. ' + issue.type + ' - ' + severityLabel); 682 console.log('Message:', issue.message); 683 console.log('Suggestion:', issue.suggestion); 684 console.log('Standard:', issue.standard); 685 if (issue.element) { 686 console.log('Element:', issue.element); 687 console.log('Element text:', issue.element.textContent ? issue.element.textContent.substring(0, 50) : ''); 688 } 689 console.groupEnd(); 690 }); 691 console.groupEnd(); 692 693 // Audit details stay in the console only â no on-page banners for visitors or editors. 694 } else { 695 console.log('â IS 5568 Part 1 (2021) Section 2.4.10 Level AA: Heading hierarchy is valid'); 696 } 697 } 698 699 function validateFormAccessibility() { 700 // WCAG 3.3.2 (Labels or Instructions) and 4.1.3 (Status Messages) 701 const formInputs = Array.from(document.querySelectorAll('input, textarea, select')); 702 const issues = []; 703 const forms = Array.from(document.querySelectorAll('form')); 704 705 // Validate each form input
706 formInputs.forEach(function(input, index) { 707 const inputIssues = []; 708 const inputId = input.id; 709 const inputType = input.type || input.tagName.toLowerCase(); 710 const inputEl = input; 711 const isHidden = inputType === 'hidden' || input.hasAttribute('hidden') || 712 (inputEl.style && inputEl.style.display === 'none') || 713 (inputEl.style && inputEl.style.visibility === 'hidden'); 714 715 // Skip hidden inputs 716 if (isHidden) { 717 return; 718 } 719 720 // Check 1: Programmatically associated label (WCAG 3.3.2) 721 let hasLabel = false; 722 let labelMethod = ''; 723 724 // Method 1: Explicit label with 'for' attribute 725 if (inputId) { 726 const labelByFor = document.querySelector('label[for="' + inputId + '"]'); 727 if (labelByFor) { 728 hasLabel = true; 729 labelMethod = 'label[for]'; 730 } 731 } 732 733 // Method 2: Implicit label (input nested inside label) 734 if (!hasLabel) { 735 const implicitLabel = input.closest('label'); 736 if (implicitLabel) { 737 hasLabel = true; 738 labelMethod = 'implicit (nested)'; 739 } 740 } 741 742 // Method 3: aria-labelledby 743 if (!hasLabel && input.getAttribute('aria-labelledby')) { 744 const labelledBy = input.getAttribute('aria-labelledby'); 745 const labelElement = document.getElementById(labelledBy || ''); 746 if (labelElement) { 747 hasLabel = true; 748 labelMethod = 'aria-labelledby'; 749 } 750 } 751 752 // Method 4: aria-label (acceptable but not preferred) 753 if (!hasLabel && input.getAttribute('aria-label')) { 754 hasLabel = true; 755 labelMethod = 'aria-label'; 756 } 757 758 // Method 5: title attribute (not ideal but acceptable as fallback) 759 if (!hasLabel && input.getAttribute('title')) { 760 hasLabel = true; 761 labelMethod = 'title (not recommended)'; 762 } 763 764 if (!hasLabel) { 765 inputIssues.push({ 766 type: 'missing-label', 767 severity: 'error', 768 message: 'Form input is missing a programmatically associated label.', 769 suggestion: 'Add a <label> element with for attribute matching the input id, nest the input inside a <label>, or add aria-labelledby/aria-label attribute.', 770 standard: 'WCAG 3.3.2', 771 element: input 772 }); 773 } else if (labelMethod === 'title (not recommended)') { 774 inputIssues.push({ 775 type: 'title-as-label', 776 severity: 'warning', 777 message: 'Form input uses title attribute as label, which is not ideal for accessibility.', 778 suggestion: 'Replace title with a proper <label> element with for attribute or use aria-label.', 779 standard: 'WCAG 3.3.2', 780 element: input 781 }); 782 } 783 784 // Check 2: Form validation error announcements (WCAG 4.1.3) 785 const form = input.closest('form'); 786 if (form) { 787 const hasAriaInvalid = input.hasAttribute('aria-invalid'); 788 const hasErrorId = input.getAttribute('aria-describedby'); 789 790 // Check if there's an error message element 791 let hasErrorMessage = false; 792 if (hasErrorId) { 793 const errorElement = document.getElementById(hasErrorId); 794 if (errorElement) { 795 hasErrorMessage = true; 796 // Check if error element has aria-live 797 const errorHasAriaLive = errorElement.getAttribute('aria-live') || 798 errorElement.closest('[aria-live]'); 799 if (!errorHasAriaLive) { 800 inputIssues.push({ 801 type: 'error-not-announced', 802 severity: 'warning', 803 message: 'Form input has error message but it is not announced to screen readers via aria-live.', 804 suggestion: 'Add aria-live="polite" or aria-l
804ive="assertive" to the error message element, or wrap it in a container with aria-live.', 805 standard: 'WCAG 4.1.3', 806 element: input 807 }); 808 } 809 } 810 } 811 812 // Check if input has validation state but no error announcement 813 if (hasAriaInvalid && input.getAttribute('aria-invalid') === 'true' && !hasErrorMessage) { 814 inputIssues.push({ 815 type: 'invalid-without-message', 816 severity: 'error', 817 message: 'Form input is marked as invalid (aria-invalid="true") but has no associated error message.', 818 suggestion: 'Add an error message element and link it using aria-describedby, or ensure the error is announced via aria-live region.', 819 standard: 'WCAG 4.1.3', 820 element: input 821 }); 822 } 823 } 824 825 if (inputIssues.length > 0) { 826 issues.push({ 827 inputType: inputType, 828 index: index + 1, 829 element: input, 830 issues: inputIssues 831 }); 832 } 833 }); 834 835 // Validate forms for error announcement regions 836 forms.forEach(function(form, formIndex) { 837 const formIssues = []; 838 839 // Check if form has validation errors indicated only by color 840 const colorOnlyErrors = form.querySelectorAll('.error, .invalid, [class*="error"], [class*="invalid"]'); 841 let hasColorOnlyIndication = false; 842 843 colorOnlyErrors.forEach(function(errorEl) { 844 // Check if error is only indicated by color (red border/background) without text or aria 845 const hasText = errorEl.textContent && errorEl.textContent.trim().length > 0; 846 const hasAria = errorEl.getAttribute('aria-label') || 847 errorEl.getAttribute('aria-describedby') || 848 errorEl.getAttribute('aria-live') || 849 errorEl.getAttribute('role') === 'alert'; 850 851 if (!hasText && !hasAria) { 852 // Check if parent input has aria-describedby pointing to this 853 let parentInput = errorEl.closest('input, textarea, select'); 854 855 // If no closest input found, check previous sibling 856 if (!parentInput && errorEl.previousElementSibling) { 857 const prevSibling = errorEl.previousElementSibling; 858 if (prevSibling && prevSibling.nodeType === 1 && // Node.ELEMENT_NODE 859 (prevSibling.tagName === 'INPUT' || 860 prevSibling.tagName === 'TEXTAREA' || 861 prevSibling.tagName === 'SELECT')) { 862 parentInput = prevSibling; 863 } 864 } 865 866 // Only check getAttribute if parentInput is actually an Element 867 if (parentInput && parentInput.nodeType === 1 && typeof parentInput.getAttribute === 'function' && !parentInput.getAttribute('aria-describedby')) { 868 hasColorOnlyIndication = true; 869 } 870 } 871 }); 872 873 if (hasColorOnlyIndication) { 874 formIssues.push({ 875 type: 'color-only-errors', 876 severity: 'error', 877 message: 'Form validation errors are indicated only by color (red border/background) without text or screen reader announcements.', 878 suggestion: 'Add visible error text and link it to inputs using aria-describedby. Ensure errors are announced via aria-live="polite" or role="alert".', 879 standard: 'WCAG 1.4.1, 4.1.3', 880 element: form 881 }); 882 } 883 884 if (!form.querySelector('[aria-live], [role="alert"]') && form.querySelector('input[aria-invalid="true"], textarea[aria-invalid="true"], select[aria-invalid="true"]')) { 885 formIssues.push({ 886 type: 'no-error-announcement', 887 severity: 'warning', 888 message: 'Form has validation errors but no aria-live region to announce them to screen readers.',
889 suggestion: 'Add an aria-live="polite" or aria-live="assertive" region to the form, or use role="alert" for critical errors.', 890 standard: 'WCAG 4.1.3', 891 element: form 892 }); 893 } 894 895 if (formIssues.length > 0) { 896 issues.push({ 897 inputType: 'form', 898 index: formIndex + 1, 899 element: form, 900 issues: formIssues 901 }); 902 } 903 }); 904 905 // Enhance forms: Add aria-live regions if missing 906 forms.forEach(function(form) { 907 if (!form.querySelector('[aria-live], [role="alert"]')) { 908 // Create aria-live region for form errors 909 const liveRegion = document.createElement('div'); 910 liveRegion.id = 'a11y-form-errors-' + (form.id || Math.random().toString(36).substr(2, 9)); 911 liveRegion.setAttribute('aria-live', 'polite'); 912 liveRegion.setAttribute('aria-atomic', 'true'); 913 liveRegion.className = 'sr-only'; 914 liveRegion.style.cssText = 'position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0;'; 915 form.appendChild(liveRegion); 916 917 // Monitor form for validation errors and announce them 918 const inputs = form.querySelectorAll('input, textarea, select'); 919 inputs.forEach(function(input) { 920 input.addEventListener('invalid', function(e) { 921 const target = e.target; 922 const errorMessage = target.validationMessage || 'Invalid input'; 923 liveRegion.textContent = errorMessage; 924 925 // Also set aria-invalid if not already set 926 if (!target.getAttribute('aria-invalid')) { 927 target.setAttribute('aria-invalid', 'true'); 928 } 929 930 // Link error message if not already linked 931 if (!target.getAttribute('aria-describedby')) { 932 const errorId = 'a11y-error-' + (target.id || Math.random().toString(36).substr(2, 9)); 933 target.setAttribute('aria-describedby', errorId); 934 935 // Create or update error message element 936 let errorEl = document.getElementById(errorId); 937 if (!errorEl) { 938 errorEl = document.createElement('div'); 939 errorEl.id = errorId; 940 errorEl.className = 'a11y-error-message'; 941 errorEl.setAttribute('role', 'alert'); 942 errorEl.setAttribute('aria-live', 'polite'); 943 if (target.parentNode) { 944 target.parentNode.insertBefore(errorEl, target.nextSibling); 945 } 946 } 947 errorEl.textContent = errorMessage; 948 } 949 }); 950 951 input.addEventListener('input', function(e) { 952 const target = e.target; 953 // Clear error state when user starts typing 954 if (target.getAttribute('aria-invalid') === 'true' && target.validity && target.validity.valid) { 955 target.setAttribute('aria-invalid', 'false'); 956 const errorId = target.getAttribute('aria-describedby'); 957 if (errorId) { 958 const errorEl = document.getElementById(errorId); 959 if (errorEl) { 960 errorEl.textContent = ''; 961 } 962 } 963 liveRegion.textContent = ''; 964 } 965 }); 966 }); 967 } 968 }); 969 970 // Display issues if any found 971 if (issues.length > 0) { 972 console.group('â ï¸ WCAG 3.3.2, 4.1.3 - Form Accessibility Issues Detected'); 973 issues.forEach(function(formItem, formIndex) { 974 console.groupCollapsed((formItem.inputType === 'form' ? 'FORM' : formItem.inputType.toUpperCase()) + ' ' + formItem.index + ' - ' + formItem.issues.length + ' issue(s)');
975 formItem.issues.forEach(function(issue, issueIndex) { 976 console.groupCollapsed((issueIndex + 1) + '. ' + issue.type + ' (' + issue.severity + ')'); 977 console.log('Message:', issue.message); 978 console.log('Suggestion:', issue.suggestion); 979 console.log('Standard:', issue.standard); 980 console.log('Element:', issue.element); 981 console.log('Element id:', issue.element.id || 'No ID'); 982 console.log('Element name:', issue.element.getAttribute('name') || 'No name'); 983 console.groupEnd(); 984 }); 985 console.groupEnd(); 986 }); 987 console.groupEnd(); 988 989 // Form audit: console only (no fixed banners on the live page). 990 } else if (formInputs.length > 0) { 991 console.log('â WCAG 3.3.2, 4.1.3: All form inputs have proper labels and error announcements'); 992 } 993 } 994 995 function validateMediaAccessibility() { 996 // IS 5568 Part 1 (2021) Media accessibility validation 997 // Note: Several requirements upgraded from WCAG Level A to Level AA, and Level AA to Level AAA 998 const videos = Array.from(document.querySelectorAll('video')); 999 const audios = Array.from(document.querySelectorAll('audio')); 1000 const issues = []; 1001 1002 // Validate video elements 1003 videos.forEach((video, index) => { 1004 const videoIssues = []; 1005 1006 // Check if video is video-only (no audio track) 1007 const isVideoOnly = !video.muted && video.volume === 0 || 1008 video.hasAttribute('data-video-only') || 1009 video.getAttribute('aria-label')?.toLowerCase().includes('video-only') || 1010 video.getAttribute('aria-label')?.toLowerCase().includes('silent'); 1011 1012 // Check 1: Missing captions/subtitles (SRT/VTT) - IS 5568 Part 1 (2021) Section 1.2.2 Level AA (upgraded from WCAG Level A) 1013 const tracks = video.querySelectorAll('track'); 1014 const hasCaptions = Array.from(tracks).some(track => { 1015 const kind = track.getAttribute('kind'); 1016 return kind === 'captions' || kind === 'subtitles'; 1017 }); 1018 1019 if (!hasCaptions) { 1020 videoIssues.push({ 1021 type: 'missing-captions', 1022 severity: 'error', 1023 message: 'Video element is missing captions or subtitles (SRT/VTT files). IS 5568 Part 1 (2021) requires captions at Level AA.', 1024 suggestion: 'Add <track> elements with kind="captions" or kind="subtitles" and src attribute pointing to .srt or .vtt files. This is a Level AA requirement in IS 5568.', 1025 standard: 'IS 5568 Part 1 (2021) Section 1.2.2 - Level AA', 1026 element: video 1027 }); 1028 } 1029 1030 // Check 1.2.1: Video-only content needs text alternative - IS 5568 Part 1 (2021) Level AA (upgraded from WCAG Level A) 1031 if (isVideoOnly) { 1032 const hasVideoOnlyAlternative = video.getAttribute('data-text-alternative') || 1033 video.getAttribute('aria-describedby') || 1034 video.closest('[data-text-alternative]') || 1035 document.querySelector('a[href*="alternative"][aria-describedby="' + (video.id || 'video-' + index) + '"]'); 1036 1037 if (!hasVideoOnlyAlternative) { 1038 videoIssues.push({ 1039 type: 'video-only-missing-alternative', 1040 severity: 'error', 1041 message: 'Video-only content (no audio) is missing a text alternative. IS 5568 Part 1 (2021) requires text alternatives for video-only at Level AA.', 1042 suggestion: 'Add a text alternative describing the video content using data-text-alternative attribute, aria-describedby, or a nearby text description link.', 1043 standard: 'IS 5568 Part 1 (2021) Section 1.2.1 - Level AA', 1044 element: video 1045 }); 1046 } 1047 } 1048 1049 // Check 1.2.3: Audio description or media alternative - IS 5568 Part 1 (2021) Level AA (upgraded from WCAG Level A) 1050 const hasAudioDescription = Array.from(tracks).some(track => {
1051 const kind = track.getAttribute('kind'); 1052 return kind === 'descriptions'; 1053 }); 1054 const hasMediaAlternative = video.getAttribute('data-media-alternative') || 1055 video.getAttribute('aria-describedby') || 1056 video.closest('[data-media-alternative]'); 1057 1058 if (!hasAudioDescription && !hasMediaAlternative && !isVideoOnly) { 1059 videoIssues.push({ 1060 type: 'missing-audio-description', 1061 severity: 'error', 1062 message: 'Video with audio is missing audio description or media alternative. IS 5568 Part 1 (2021) requires this at Level AA.', 1063 suggestion: 'Add <track> element with kind="descriptions" for audio description, or provide a media alternative (text version) using data-media-alternative attribute.', 1064 standard: 'IS 5568 Part 1 (2021) Section 1.2.3 - Level AA', 1065 element: video 1066 }); 1067 } 1068 1069 // Check 1.2.4: Live captions - IS 5568 Part 1 (2021) Level AAA (upgraded from WCAG Level AA) 1070 const isLive = video.hasAttribute('data-live') || 1071 video.getAttribute('aria-label')?.toLowerCase().includes('live') || 1072 video.closest('[data-live]'); 1073 1074 if (isLive) { 1075 const hasLiveCaptions = Array.from(tracks).some(track => { 1076 const kind = track.getAttribute('kind'); 1077 const srclang = track.getAttribute('srclang'); 1078 return (kind === 'captions' || kind === 'subtitles') && track.getAttribute('data-live') === 'true'; 1079 }); 1080 1081 if (!hasLiveCaptions) { 1082 videoIssues.push({ 1083 type: 'missing-live-captions', 1084 severity: 'warning', 1085 message: 'Live video is missing live captions. IS 5568 Part 1 (2021) requires live captions at Level AAA (can be provided on demand).', 1086 suggestion: 'Add live captions via <track> element with kind="captions" and data-live="true", or note that live captions are available upon request.', 1087 standard: 'IS 5568 Part 1 (2021) Section 1.2.4 - Level AAA (Request on Demand)', 1088 element: video 1089 }); 1090 } 1091 } 1092 1093 // Check 1.2.5: Audio description (extended) - IS 5568 Part 1 (2021) Level AAA (upgraded from WCAG Level AA) 1094 // Note: This is for extended audio description, not the basic one (1.2.3) 1095 const hasExtendedAudioDescription = video.getAttribute('data-extended-audio-description') || 1096 Array.from(tracks).some(track => { 1097 return track.getAttribute('kind') === 'descriptions' && 1098 track.getAttribute('data-extended') === 'true'; 1099 }); 1100 1101 if (!hasExtendedAudioDescription && !isVideoOnly && !isLive) { 1102 // This is informational - extended audio description is Level AAA and can be on demand 1103 videoIssues.push({ 1104 type: 'missing-extended-audio-description', 1105 severity: 'info', 1106 message: 'Video may benefit from extended audio description. IS 5568 Part 1 (2021) requires extended audio description at Level AAA (can be provided on demand).', 1107 suggestion: 'Consider adding extended audio description for complex visual content, or note that extended audio description is available upon request.', 1108 standard: 'IS 5568 Part 1 (2021) Section 1.2.5 - Level AAA (Request on Demand)', 1109 element: video 1110 }); 1111 } 1112 1113 // Check 2: Missing transcript link/alternative (for pre-recorded video) - IS 5568 Level AAA 1114 if (!isLive) { 1115 const hasTranscript = video.getAttribute('data-transcript') || 1116 video.getAttribute('aria-describedby') || 1117 video.closest('[data-transcript]') || 1118 document.querySelector('a[href*="transcript"][aria-describedby="' + (video.id || 'video-' + index) + '"]') || 1119 (video.id && document.querySelector('a[href*="transcript"]')?.getAttribute('aria-describedby') === video.id); 1120 1121 if (!hasTranscript) { 1122 videoIssues.push({ 1123 type: 'missing-transcript', 1124 severity: 'warning', 1125 message: 'Pre-recorded video element does not have a transcript or text alternative link.', 1126 suggestion: 'Add a transcript link near the video using data-transcript attribute or aria-describedby pointing to a transcript element/link.', 1127 standard: 'IS 5568 Part 1 (2021) Section 1.2.1 - Level AAA', 1128 element: video 1129 }); 1130 } 1131 } 1132 1133 // Check 3: Missing accessible controls 1134 const hasControls = video.hasAttribute('controls'); 1135 const hasCustomControls = video.querySelector('button[aria-label*="play"], button[aria-label*="pause"]') || 1136 video.closest('.video-player, .media-player, [role="application"]'); 1137 1138 if (!hasControls && !hasCustomControls) { 1139 videoIssues.push({
1140 type: 'missing-controls', 1141 severity: 'error', 1142 message: 'Video element lacks accessible controls (native controls attribute or custom accessible controls).', 1143 suggestion: 'Add controls attribute to video element, or implement custom controls with proper ARIA labels and keyboard support.', 1144 standard: 'IS 5568 Part 1 (2021) Section 1.2.2 - Level AA', 1145 element: video 1146 }); 1147 } 1148 1149 // Check 4: Missing title or aria-label 1150 const hasTitle = video.getAttribute('title') || 1151 video.getAttribute('aria-label') || 1152 video.getAttribute('aria-labelledby'); 1153 1154 if (!hasTitle) { 1155 videoIssues.push({ 1156 type: 'missing-title', 1157 severity: 'warning', 1158 message: 'Video element is missing a title or aria-label for screen readers.', 1159 suggestion: 'Add title or aria-label attribute describing the video content.', 1160 standard: 'IS 5568 Part 1 (2021) Section 1.2.1 - Level AA', 1161 element: video 1162 }); 1163 } 1164 1165 // Check 5: Autoplay without controls (accessibility issue) 1166 if (video.hasAttribute('autoplay') && !hasControls && !hasCustomControls) { 1167 videoIssues.push({
1168 type: 'autoplay-without-controls', 1169 severity: 'error', 1170 message: 'Video has autoplay but no accessible controls to stop it.', 1171 suggestion: 'Remove autoplay attribute or add controls attribute. Autoplaying media should be controllable by users.', 1172 standard: 'IS 5568 Part 1 (2021) Section 1.2.2 - Level AA', 1173 element: video 1174 }); 1175 } 1176 1177 if (videoIssues.length > 0) { 1178 issues.push({ 1179 mediaType: 'video', 1180 index: index + 1, 1181 element: video, 1182 issues: videoIssues 1183 }); 1184 } 1185 }); 1186 1187 // Validate audio elements 1188 audios.forEach((audio, index) => { 1189 const audioIssues = []; 1190 1191 // Check if audio is live 1192 const isLive = audio.hasAttribute('data-live') || 1193 audio.getAttribute('aria-label')?.toLowerCase().includes('live') || 1194 audio.closest('[data-live]'); 1195 1196 // Check 1.2.1: Audio-only content needs text alternative - IS 5568 Part 1 (2021) Level AA (upgraded from WCAG Level A) 1197 const hasTranscript = audio.getAttribute('data-transcript') || 1198 audio.getAttribute('aria-describedby') || 1199 audio.closest('[data-transcript]') || 1200 document.querySelector('a[href*="transcript"][aria-describedby="' + (audio.id || 'audio-' + index) + '"]') || 1201 (audio.id && document.querySelector('a[href*="transcript"]')?.getAttribute('aria-describedby') === audio.id); 1202 1203 if (!hasTranscript && !isLive) { 1204 audioIssues.push({ 1205 type: 'missing-transcript', 1206 severity: 'error', 1207 message: 'Audio element is missing a transcript or text alternative. IS 5568 Part 1 (2021) requires text alternatives for audio-only at Level AA.', 1208 suggestion: 'Add a transcript link using data-transcript attribute or aria-describedby pointing to a transcript element/link. This is a Level AA requirement in IS 5568.', 1209 standard: 'IS 5568 Part 1 (2021) Section 1.2.1 - Level AA', 1210 element: audio 1211 }); 1212 } 1213 1214 // Check 1.2.4: Live captions for live audio - IS 5568 Part 1 (2021) Level AAA (upgraded from WCAG Level AA) 1215 if (isLive) { 1216 const hasLiveCaptions = audio.getAttribute('data-live-captions') === 'true' || 1217 audio.getAttribute('data-live-transcript') === 'true'; 1218 1219 if (!hasLiveCaptions) { 1220 audioIssues.push({ 1221 type: 'missing-live-captions', 1222 severity: 'warning', 1223 message: 'Live audio is missing live captions/transcript. IS 5568 Part 1 (2021) requires live captions at Level AAA (can be provided on demand).', 1224 suggestion: 'Provide live captions or transcript for live audio, or note that live captions are available upon request.', 1225 standard: 'IS 5568 Part 1 (2021) Section 1.2.4 - Level AAA (Request on Demand)', 1226 element: audio 1227 }); 1228 } 1229 } 1230 1231 // Check 2: Missing accessible controls - IS 5568 Part 1 (2021) Level AA 1232 const hasControls = audio.hasAttribute('controls'); 1233 const hasCustomControls = audio.querySelector('button[aria-label*="play"], button[aria-label*="pause"]') || 1234 audio.closest('.audio-player, .media-player, [role="application"]'); 1235 1236 if (!hasControls && !hasCustomControls) { 1237 audioIssues.push({ 1238 type: 'missing-controls', 1239 severity: 'error', 1240 message: 'Audio element lacks accessible controls (native controls attribute or custom accessible controls).', 1241 suggestion: 'Add controls attribute to audio element, or implement custom controls with proper ARIA labels and keyboard support.', 1242 standard: 'IS 5568 Part 1 (2021) Section 1.2.2 - Level AA', 1243 element: audio 1244 }); 1245 } 1246 1247 // Check 3: Missing title or aria-label 1248 const hasTitle = audio.getAttribute('title') || 1249 audio.getAttribute('aria-label') || 1250 audio.getAttribute('aria-labelledby'); 1251 1252 if (!hasTitle) { 1253 audioIssues.push({ 1254 type: 'missing-title', 1255 severity: 'warning', 1256 message: 'Audio element is missing a title or aria-label for screen readers.', 1257 suggestion: 'Add title or aria-label attribute describing the audio content.', 1258 standard: 'IS 5568 Level AA', 1259 element: audio 1260 }); 1261 } 1262 1263 // Check 4: Autoplay without controls 1264 if (audio.hasAttribute('autoplay') && !hasControls && !hasCustomControls) { 1265 audioIssues.push({
1266 type: 'autoplay-without-controls', 1267 severity: 'error', 1268 message: 'Audio has autoplay but no accessible controls to stop it.', 1269 suggestion: 'Remove autoplay attribute or add controls attribute. Autoplaying media should be controllable by users.', 1270 standard: 'IS 5568 Part 1 (2021) Section 1.2.2 - Level AA', 1271 element: audio 1272 }); 1273 } 1274 1275 if (audioIssues.length > 0) { 1276 issues.push({ 1277 mediaType: 'audio', 1278 index: index + 1, 1279 element: audio, 1280 issues: audioIssues 1281 }); 1282 } 1283 }); 1284 1285 // Display issues if any found 1286 if (issues.length > 0) { 1287 console.group('â ï¸ IS 5568 Part 1 (2021) - Media Accessibility Issues Detected'); 1288 issues.forEach((mediaItem, mediaIndex) => { 1289 console.groupCollapsed(mediaItem.mediaType.toUpperCase() + ' ' + mediaItem.index + ' - ' + mediaItem.issues.length + ' issue(s)'); 1290 mediaItem.issues.forEach((issue, issueIndex) => { 1291 const severityLabel = issue.severity === 'error' ? 'ð´ HIGH PRIORITY (Level AA Violation)' : 1292 issue.severity === 'warning' ? 'ð¡ WARNING (Level AAA)' : 1293 issue.severity === 'info' ? 'â¹ï¸ INFO (Level AAA - Request on Demand)' : issue.severity; 1294 console.groupCollapsed((issueIndex + 1) + '. ' + issue.type + ' - ' + severityLabel); 1295 console.log('Message:', issue.message); 1296 console.log('Suggestion:', issue.suggestion); 1297 console.log('Standard:', issue.standard); 1298 console.log('Element:', issue.element); 1299 console.log('Element src:', issue.element.src || issue.element.getAttribute('src') || 'N/A'); 1300 console.log('Element id:', issue.element.id || 'No ID'); 1301 console.groupEnd(); 1302 }); 1303 console.groupEnd(); 1304 }); 1305 console.groupEnd(); 1306 1307 // Media audit: console only (no fixed banners). 1308 } else if (videos.length > 0 || audios.length > 0) { 1309 console.log('â IS 5568 Part 1 (2021): All media elements have proper accessibility features'); 1310 } 1311 } 1312 1313 function validateLanguageOfParts() { 1314 // WCAG 3.1.2: Language of Parts 1315 // IS 5568 Part 1 (2021) Exception: This check does NOT apply to Hebrew pages using UTF-8 encoding, 1316 // as screen readers can automatically identify language changes in Hebrew text. 1317 1318 // Get primary document language 1319 const primaryLang = document.documentElement.lang || document.documentElement.getAttribute('lang') || ''; 1320 const primaryLangCode = primaryLang.toLowerCase().split('-')[0]; 1321 1322 // Skip validation for Hebrew pages per IS 5568 Part 1 (2021) 1323 if (primaryLangCode === 'he') { 1324 console.log('â¹ï¸ IS 5568 Part 1 (2021): Language of Parts (Section 3.1.2) check skipped for Hebrew pages.'); 1325 console.log(' Reason: Screen readers can automatically identify language changes in UTF-8 encoded Hebrew text.'); 1326 console.log(' No lang attributes required on individual phrases or parts when primary document language is Hebrew.'); 1327 return; 1328 } 1329 1330 // For non-Hebrew pages, check for elements with lang attributes that differ from parent 1331 // This helps identify potential language changes that should be marked 1332 const issues = []; 1333 const elementsWithLang = Array.from(document.querySelectorAll('[lang]')); 1334 const primaryLangAttr = primaryLang || 'en'; 1335 1336 elementsWithLang.forEach(function(element) { 1337 // Skip if this is the html element (primary language) 1338 if (element === document.documentElement) { 1339 return; 1340 } 1341 1342 // Skip accessibility toolbar elements 1343 if (element.id && (element.id.startsWith('a11y-') || element.classList.contains('sr-only'))) { 1344 return; 1345 } 1346 1347 const elementLang = element.getAttribute('lang'); 1348 if (!elementLang) { 1349 return; 1350 } 1351 1352 // Check if parent has a different lang attribute 1353 const parent = element.parentElement; 1354 if (parent) { 1355 const parentLang = parent.getAttribute('lang') || 1356 parent.closest('[lang]')?.getAttribute('lang') || 1357 primaryLangAttr; 1358 1359 // If element lang differs from parent, that's correct (language change is marked) 1360 // But verify the lang attribute is valid 1361 const elementLangCode = elementLang.toLowerCase().split('-')[0]; 1362 const parentLangCode = parentLang.toLowerCase().split('-')[0]; 1363 1364 if (elementLangCode !== parentLangCode) { 1365 // Language change is properly marked - this is good 1366 return; 1367 } 1368 } 1369 }); 1370 1371 // Note: Full language detection (detecting unmarked language changes) would require 1372 // sophisticated natural language processing. This validation focuses on verifying 1373 // that existing lang attributes are used correctly. 1374 1375 if (issues.length === 0) { 1376 console.log('â WCAG 3.1.2: Language of Parts validation completed.'); 1377 console.log(' Note: Full validation requires manual review for mixed-language content without lang attributes.'); 1378 } else { 1379 console.group('â ï¸ WCAG 3.1.2 - Language of Parts Issues Detected');
1380 issues.forEach(function(issue, index) { 1381 console.groupCollapsed((index + 1) + '. ' + issue.type + ' (' + issue.severity + ')'); 1382 console.log('Message:', issue.message); 1383 console.log('Suggestion:', issue.suggestion); 1384 console.log('Standard:', issue.standard); 1385 if (issue.element) { 1386 console.log('Element:', issue.element); 1387 console.log('Element text:', issue.element.textContent ? issue.element.textContent.substring(0, 50) : ''); 1388 } 1389 console.groupEnd(); 1390 }); 1391 console.groupEnd(); 1392 } 1393 } 1394 1395 function createAccessibilityToolbar() { 1396 // Create toolbar container 1397 const toolbar = document.createElement('div'); 1398 toolbar.id = 'a11y-toolbar'; 1399 toolbar.setAttribute('role', 'toolbar'); 1400 toolbar.setAttribute('aria-label', t('accessibilityControls')); 1401 1402 // Apply RTL for Hebrew 1403 if (currentLang === 'he') { 1404 toolbar.style.direction = 'rtl'; 1405 } 1406 1407 // Header with drag functionality 1408 const header = document.createElement('div'); 1409 header.id = 'a11y-toolbar-header'; 1410 header.innerHTML = ` 1411 <div id="a11y-toolbar-title"> 1412 <span>â¿</span> 1413 <span>${t('accessibility')}</span> 1414 </div> 1415 <button id="a11y-close-btn" aria-label="${t('closeToolbar')}">Ã</button> 1416 `; 1417 1418 // Toggle button (always visible) 1419 const toggleBtn = document.createElement('button'); 1420 toggleBtn.id = 'a11y-toggle'; 1421 toggleBtn.setAttribute('aria-label', t('toggleToolbar')); 1422 toggleBtn.setAttribute('aria-expanded', 'false'); 1423 toggleBtn.innerHTML = 'â¿'; 1424 // Ensure button is visible with explicit styles (inline beats stylesheet; mirror RTL layout) 1425 toggleBtn.style.position = 'fixed'; 1426 if (currentLang === 'he') { 1427 toggleBtn.style.left = '20px'; 1428 toggleBtn.style.right = 'auto'; 1429 } else { 1430 toggleBtn.style.right = '20px'; 1431 toggleBtn.style.left = 'auto'; 1432 } 1433 toggleBtn.style.bottom = '20px'; 1434 toggleBtn.style.width = '60px'; 1435 toggleBtn.style.height = '60px'; 1436 toggleBtn.style.display = 'flex'; 1437 toggleBtn.style.alignItems = 'center'; 1438 toggleBtn.style.justifyContent = 'center'; 1439 toggleBtn.style.opacity = '1'; 1440 toggleBtn.style.visibility = 'visible'; 1441 toggleBtn.style.zIndex = '99998'; 1442 toggleBtn.style.cursor = 'pointer'; 1443 console.log('â Accessibility toggle button created and should be visible'); 1444 1445 // Content 1446 const content = document.createElement('div'); 1447 content.id = 'a11y-toolbar-content'; 1448 content.innerHTML = ` 1449 <!-- Text Size Controls --> 1450 <div class="a11y-control-group"> 1451 <div class="a11y-control-group-title">${t('textSize')}</div> 1452 <div class="a11y-control-grid"> 1453 <button class="a11y-control-btn" data-action="increase-text" aria-label="${t('increaseTextAria')}"> 1454 <span class="a11y-control-icon">A+</span> 1455 <span class="a11y-control-label">${t('increaseText')}</span> 1456 </button> 1457 <button class="a11y-control-btn" data-action="decrease-text" aria-label="${t('decreaseTextAria')}"> 1458 <span class="a11y-control-icon">A-</span> 1459 <span class="a11y-control-label">${t('decreaseText')}</span> 1460 </button> 1461 </div> 1462 </div> 1463 1464 <!-- Contrast & Colors --> 1465 <div class="a11y-control-group"> 1466 <div class="a11y-control-group-title">${t('contrastColors')}</div> 1467 <div class="a11y-control-grid"> 1468 <button class="a11y-control-btn" data-action="high-contrast" aria-label="${t('highContrastAria')}"> 1469 <span class="a11y-control-icon">â</span> 1470 <span class="a11y-control-label">${t('highContrast')}</span> 1471 </button> 1472 <button class="a11y-control-btn" data-action="negative-contrast" aria-label="${t('negativeContrastAria')}">
1473 <span class="a11y-control-icon">â</span> 1474 <span class="a11y-control-label">${t('negativeContrast')}</span> 1475 </button> 1476 <button class="a11y-control-btn" data-action="grayscale" aria-label="${t('grayscaleAria')}"> 1477 <span class="a11y-control-icon">â«</span> 1478 <span class="a11y-control-label">${t('grayscale')}</span> 1479 </button> 1480 <button class="a11y-control-btn" data-action="readable-font" aria-label="${t('readableFontAria')}"> 1481 <span class="a11y-control-icon">Aa</span> 1482 <span class="a11y-control-label">${t('readableFont')}</span> 1483 </button> 1484 </div> 1485 </div> 1486 1487 <!-- Highlighting --> 1488 <div class="a11y-control-group"> 1489 <div class="a11y-control-group-title">${t('highlighting')}</div> 1490 <div class="a11y-control-grid"> 1491 <button class="a11y-control-btn" data-action="highlight-links" aria-label="${t('highlightLinksAria')}"> 1492 <span class="a11y-control-icon">ð</span> 1493 <span class="a11y-control-label">${t('highlightLinks')}</span> 1494 </button> 1495 <button class="a11y-control-btn" data-action="highlight-titles" aria-label="${t('highlightTitlesAria')}"> 1496 <span class="a11y-control-icon">H</span> 1497 <span class="a11y-control-label">${t('highlightTitles')}</span> 1498 </button> 1499 </div> 1500 </div> 1501 1502 <!-- Reading Aids --> 1503 <div class="a11y-control-group"> 1504 <div class="a11y-control-group-title">${t('readingAids')}</div> 1505 <div class="a11y-control-grid"> 1506 <button class="a11y-control-btn" data-action="reading-guide" aria-label="${t('readingGuideAria')}"> 1507 <span class="a11y-control-icon">â</span> 1508 <span class="a11y-control-label">${t('readingGuide')}</span> 1509 </button> 1510 <button class="a11y-control-btn" data-action="reading-mask" aria-label="${t('readingMaskAria')}"> 1511 <span class="a11y-control-icon">â</span> 1512 <span class="a11y-control-label">${t('readingMask')}</span> 1513 </button> 1514 <button class="a11y-control-btn" data-action="text-spacing" aria-label="${t('textSpacingAria')}"> 1515 <span class="a11y-control-icon">â</span> 1516 <span class="a11y-control-label">${t('textSpacing')}</span> 1517 </button> 1518 </div> 1519 </div> 1520 1521 <!-- Navigation & Interaction --> 1522 <div class="a11y-control-group"> 1523 <div class="a11y-control-group-title">${t('navigationInteraction')}</div> 1524 <div class="a11y-control-grid"> 1525 <button class="a11y-control-btn" data-action="keyboard-nav" aria-label="${t('keyboardNavAria')}"> 1526 <span class="a11y-control-icon">â¨</span> 1527 <span class="a11y-control-label">${t('keyboardNav')}</span> 1528 </button> 1529 <button class="a11y-control-btn" data-action="big-cursor" aria-label="${t('bigCursorAria')}"> 1530 <span class="a11y-control-icon">â¤</span> 1531 <span class="a11y-control-label">${t('bigCursor')}</span> 1532 </button> 1533 <button class="a11y-control-btn" data-action="stop-animations" aria-label="${t('stopAnimationsAria')}"> 1534 <span class="a11y-control-icon">â¸</span> 1535 <span class="a11y-control-label">${t('stopAnimations')}</span> 1536 </button> 1537 </div> 1538 </div> 1539 1540 <!-- Reset --> 1541 <div class="a11y-control-group"> 1542 <button class="a11y-reset-btn" data-action="reset" aria-label="${t('resetAllAria')}"> 1543 ⺠${t('resetAll')} 1544 </button> 1545 <button class="a11y-statement-btn" data-action="statement" aria-label="${t('viewStatementAria')}" style="width:100%;background:#4169E1;color:white;border:none;border-radius:8px;padding:12px;font-size:14px;font-weight:600;cursor:pointer;transition:all 0.2s;margin-top:10px;display:flex;align-items:center;justify-content:center;gap:8px;">
1546 <span>ð</span> 1547 <span>${t('accessibilityStatement')}</span> 1548 </button> 1549 </div> 1550 `; 1551 1552 // Assemble toolbar (don't append toggle button to toolbar - it's independent now) 1553 toolbar.appendChild(header); 1554 toolbar.appendChild(content); 1555 document.body.appendChild(toolbar); 1556 1557 // Append toggle button independently to body (floating button) 1558 document.body.appendChild(toggleBtn); 1559 1560 // Force button to be visible - double check after a short delay 1561 setTimeout(() => { 1562 const btn = document.getElementById('a11y-toggle'); 1563 if (btn) { 1564 btn.style.display = 'flex'; 1565 btn.style.opacity = '1'; 1566 btn.style.visibility = 'visible'; 1567 btn.style.pointerEvents = 'all'; 1568 btn.classList.remove('hidden'); 1569 console.log('â Accessibility toggle button verified visible at:', btn.getBoundingClientRect()); 1570 } else { 1571 console.error('â Accessibility toggle button not found!'); 1572 } 1573 }, 100); 1574 1575 // Create reading guide (if not exists) 1576 if (!document.getElementById('a11y-reading-guide')) { 1577 const readingGuide = document.createElement('div'); 1578 readingGuide.id = 'a11y-reading-guide'; 1579 document.body.appendChild(readingGuide); 1580 } 1581 1582 // Create reading mask (if not exists) 1583 if (!document.getElementById('a11y-reading-mask')) { 1584 const readingMask = document.createElement('div'); 1585 readingMask.id = 'a11y-reading-mask'; 1586 document.body.appendChild(readingMask); 1587 } 1588 1589 // Create font size indicator (if not exists) 1590 if (!document.getElementById('a11y-font-size-indicator')) { 1591 const fontSizeIndicator = document.createElement('div'); 1592 fontSizeIndicator.id = 'a11y-font-size-indicator'; 1593 document.body.appendChild(fontSizeIndicator); 1594 } 1595 1596 // Create accessibility statement modal (if not exists) 1597 if (!document.getElementById('a11y-statement-modal')) { 1598 createAccessibilityStatementModal(); 1599 } 1600 1601 // Setup event listeners 1602 setupToolbarEvents(toolbar, toggleBtn, header); 1603 } 1604 1605 function createAccessibilityStatementModal() { 1606 const modal = document.createElement('div'); 1607 modal.id = 'a11y-statement-modal'; 1608 modal.setAttribute('role', 'dialog'); 1609 modal.setAttribute('aria-modal', 'true'); 1610 modal.setAttribute('aria-labelledby', 'a11y-statement-title'); 1611 1612 const content = document.createElement('div'); 1613 content.id = 'a11y-statement-content'; 1614 1615 // Get current site domain dynamically 1616 const siteDomain = window.location.hostname; 1617 1618 // Get contact info from data attributes if available 1619 const contactInfo = { 1620 phone: document.documentElement.getAttribute('data-a11y-phone') || null, 1621 officeVisitsEnabled: document.documentElement.getAttribute('data-a11y-office-visits') === 'true' ? true : 1622 document.documentElement.getAttribute('data-a11y-office-visits') === 'false' ? false : null, 1623 officeVisitsMessage: document.documentElement.getAttribute('data-a11y-office-message') || null, 1624 officeAccessible: document.documentElement.getAttribute('data-a11y-office-accessible') === 'true' ? true : 1625 document.documentElement.getAttribute('data-a11y-office-accessible') === 'false' ? false : null, 1626 coordinatorName: document.documentElement.getAttribute('data-a11y-coordinator-name') || null, 1627 officeAccessibilityFeatures: document.documentElement.getAttribute('data-a11y-office-features') || null, 1628 requestAlternativeFormatLink: document.documentElement.getAttribute('data-a11y-alternative-format-link') || null, 1629 liveCaptionsOnDemand: document.documentElement.getAttribute('data-a11y-live-captions-ondemand') === 'true', 1630 extendedAudioDescriptionOnDemand: document.documentElement.getAttribute('data-a11y-extended-audio-ondemand') === 'true' 1631 }; 1632 const useCustomStatementContent = document.documentElement.getAttribute('data-a11y-custom-statement-enabled') === 'true'; 1633 const customStatementDirectionAttr = document.documentElement.getAttribute('data-a11y-custom-statement-direction'); 1634 const customStatementDirection = customStatementDirectionAttr === 'rtl' ? 'rtl' : 'ltr'; 1635 const customStatementEncoded = document.documentElement.getAttribute('data-a11y-custom-statement-html') || ''; 1636 let customStatementHtml = ''; 1637 if (useCustomStatementContent && customStatementEncoded) { 1638 try { 1639 customStatementHtml = decodeURIComponent(customStatementEncoded); 1640 } catch (err) { 1641 console.error('Failed to decode custom accessibility statement HTML:', err); 1642 } 1643 } 1644 1645 // Helper function to escape HTML 1646 function escapeHtml(text) { 1647 const div = document.createElement('div'); 1648 div.textContent = text; 1649 return div.innerHTML; 1650 } 1651 1652 const enhancementsList = translations[currentLang].statementEnhancementsList.map(item => 1653 '<li>' + escapeHtml(item) + '</li>' 1654 ).join(''); 1655 const browserList = translations[currentLang].statementBrowserList.map(item => 1656 '<li>' + escapeHtml(item) + '</li>' 1657 ).join(''); 1658 const technicalList = translations[currentLang].statementTechnicalList.map(item => 1659 '<li>' + escapeHtml(item) + '</li>' 1660 ).join(''); 1661 const thirdPartyLinks = translations[currentLang].statementThirdPartyLinks.map(link => 1662 '<li><a href="' + escapeHtml(link.url) + '" target="_blank" rel="noopener noreferrer">' + escapeHtml(link.text) + '</a></li>' 1663 ).join(''); 1664 1665 const dateLocale = currentLang === 'he' ? 'he-IL' : 'en-US'; 1666 const lastUpdated = new Date().toLocaleDateString(dateLocale, { year: 'numeric', month: 'long', day: 'numeric' }); 1667 1668 // Build HTML content with proper escaping 1669 const direction = currentLang === 'he' ? 'rtl' : 'ltr'; 1670 const contactInfoHtml = 1671 (contactInfo.phone ? 1672 '<p style="margin-bottom: 8px;"><strong>ð ' + (currentLang === 'he' ? '××פ××:' : 'Phone:') + '</strong> <a href="tel:' + escapeHtml(contactInfo.phone.replace(/[^0-9+()-]/g, '')) + '">' + escapeHtml(contactInfo.phone) + '</a></p>' : 1673 '') + 1674 (contactInfo.coordinatorName ? 1675 '<p style="margin-bottom: 8px;"><strong>ð¤ ' + (currentLang === 'he' ? 'ר×× × ××ש×ת:' : 'Accessibility Coordinator:') + '</strong> ' + escapeHtml(contactInfo.coordinatorName) + '</p>' : 1676 '') + 1677 (contactInfo.officeVisitsEnabled === false && contactInfo.officeVisitsMessage ? 1678 '<p style="margin-bottom: 8px;"><strong>ð¢ ' + (currentLang === 'he' ? '×××§×ר×× ××שר×:' : 'Office Visits:') + '</strong> ' + escapeHtml(contactInfo.officeVisitsMessage) + '</p>' : 1679 '') + 1680 (contactInfo.officeVisitsEnabled === true ? 1681 '<p style="margin-bottom: 8px;"><strong>ð¢ ' + (currentLang === 'he' ? '×××§×ר×× ××שר×:' : 'Office Visits:') + '</strong> ' +
1682 (contactInfo.officeAccessible ? 1683 (currentLang === 'he' ? '×××©×¨× ×©×× × × ××ש ××× ×©×× ×¢× ××××××××ת. ×× × ×¦×¨× ×§×©×¨ ××× ×ת×× ×××§×ר.' : 1684 'Our office is accessible for people with disabilities. Please contact us to schedule a visit.') : 1685 (currentLang === 'he' ? '×××©×¨× ×©×× × ×¢×©×× ×©×× ××××ת × ××ש ××××××. ×× × ×¦×¨× ×§×©×¨ ××× ×××× ××ת×××ת × ××ש×ת.' : 1686 'Our office may not be fully accessible. Please contact us to discuss accessibility accommodations.')) + 1687 '</p>' : 1688 '') + 1689 (contactInfo.officeAccessibilityFeatures ? 1690 '<p style="margin-bottom: 8px;"><strong>â¿ ' + (currentLang === 'he' ? 'ת××× ×ת × ××ש×ת ××שר×:' : 'Office Accessibility Features:') + '</strong> ' + escapeHtml(contactInfo.officeAccessibilityFeatures) + '</p>' : 1691 '') + 1692 (contactInfo.requestAlternativeFormatLink ? 1693 '<p style="margin-bottom: 8px;"><strong>ð ' + (currentLang === 'he' ? '××§×©× ×פ×ר×× ×××פ×:' : 'Request Alternative Format:') + '</strong> ' + 1694 (contactInfo.requestAlternativeFormatLink.startsWith('http://') || contactInfo.requestAlternativeFormatLink.startsWith('https://') || contactInfo.requestAlternativeFormatLink.startsWith('mailto:') ? 1695 '<a href="' + escapeHtml(contactInfo.requestAlternativeFormatLink) + '" target="_blank" rel="noopener noreferrer">' + escapeHtml(contactInfo.requestAlternativeFormatLink) + '</a>' : 1696 escapeHtml(contactInfo.requestAlternativeFormatLink)) + 1697 '</p>' : 1698 ''); 1699 1700 // Build "Request on Demand" section for Level AAA items (IS 5568 Part 1 (2021)) 1701 const onDemandHtml = 1702 (contactInfo.liveCaptionsOnDemand || contactInfo.extendedAudioDescriptionOnDemand ? 1703 '<div style="background: #fff7ed; border-left: 4px solid #f59e0b; padding: 16px; margin: 20px 0; border-radius: 4px;">' + 1704 '<h3 style="margin-top: 0; color: #f59e0b; font-size: 18px;">' + 1705 (currentLang === 'he' ? 'ש×ר××ª× × ××ש×ת ×××× ×× ××¤× ××§×©× (ר×× AAA)' : 'Accessibility Services Available on Request (Level AAA)') + 1706 '</h3>' + 1707 '<p style="margin-bottom: 12px;">' + 1708 (currentLang === 'he' ? 1709 '××¤× ×ª×§× IS 5568 ×××§ 1 (2021), ×ש×ר×ת×× ××××× ×××× ×× ××¤× ×קש×:' : 1710 'According to IS 5568 Part 1 (2021), the following services are available upon request:') + 1711 '</p>' + 1712 '<ul style="margin: 12px 0; padding-left: 24px;">' + 1713 (contactInfo.liveCaptionsOnDemand ? 1714 '<li style="margin-bottom: 8px;"><strong>' + 1715 (currentLang === 'he' ? '×ת××××ת ×××ת (סע××£ 1.2.4):' : 'Live Captions (Section 1.2.4):') + 1716 '</strong> ' + 1717 (currentLang === 'he' ? 1718 '×ת××××ת ×××ת ×××× ×ת ××¤× ××§×©× ×¢××ר ת××× ×××××/××××× ××. ×× × ×¦×¨× ×§×©×¨ ××× ××קש ש×ר×ת ××.' : 1719 'Live captions are available upon request for live video/audio content. Please contact us to request this service.') + 1720 '</li>' : '') + 1721 (contactInfo.extendedAudioDescriptionOnDemand ? 1722 '<li style="margin-bottom: 8px;"><strong>' + 1723 (currentLang === 'he' ? 'ת×××ר ש××¢ ××ר×× (סע××£ 1.2.5):' : 'Extended Audio Description (Section 1.2.5):') + 1724 '</strong> ' + 1725 (currentLang === 'he' ? 1726 'ת×××ר ש××¢ ××ר×× ×××× ××¤× ××§×©× ×¢××ר ת××× ××××× ××ר××. ×× × ×¦×¨× ×§×©×¨ ××× ××קש ש×ר×ת ××.' : 1727 'Extended audio description is available upon request for complex video content. Please contact us to request this service.') + 1728 '</li>' : '') + 1729 '</ul>' + 1730 '</div>' : ''); 1731 1732 const defaultStatementBodyHtml = 1733 '<div id="a11y-statement-body" style="direction: ' + direction + ';">' + 1734 '<h3>' + escapeHtml(t('statementCommitment')) + '</h3>' + 1735 '<p>' + escapeHtml(t('statementCommitmentText')) + '</p>' + 1736 '<p>' + escapeHtml(t('statementCommitmentText2')) + '</p>' + 1737 '<h3>' + escapeHtml(t('statementEnhancements')) + '</h3>' + 1738 '<p>' + escapeHtml(t('statementEnhancementsText')) + '</p>' + 1739 '<ul>' + enhancementsList + '</ul>' + 1740 '<p>' + escapeHtml(t('statementEnhancementsText2')) + '</p>' + 1741 '<h3>' + escapeHtml(t('statementBrowser')) + '</h3>' + 1742 '<p>' + escapeHtml(t('statementBrowserText')) + '</p>' + 1743 '<ul>' + browserList + '</ul>' + 1744 '<p>' + escapeHtml(t('statementBrowserText2')) + '</p>' + 1745 '<h3>' + escapeHtml(t('statementTechnical')) + '</h3>' + 1746 '<p>' + escapeHtml(t('statementTechnicalText')) + '</p>' + 1747 '<ul>' + technicalList + '</ul>' + 1748 '<p>' + escapeHtml(t('statementTechnicalText2')) + '</p>' + 1749 '<h3>' + escapeHtml(t('statementThirdParty')) + '</h3>' + 1750 '<p>' + escapeHtml(t('statementThirdPartyText')) + '</p>' + 1751 '<p>' + escapeHtml(t('statementThirdPartyText2')) + '</p>' + 1752 '<ul>' + thirdPartyLinks + '</ul>' + 1753 onDemandHtml + 1754 '<div class="highlight-note">' + 1755 '<h3 style="margin-top: 0;">' + escapeHtml(t('statementFeedback')) + '</h3>' + 1756 '<p>' + escapeHtml(t('statementFeedbackText')) + '</p>' + 1757 contactInfoHtml + 1758 '<p style="margin-bottom: 0;">' + escapeHtml(t('statementFeedbackText2')) + '</p>' + 1759 '<p style="margin-bottom: 0;"><strong>' + escapeHtml(t('statementFeedbackText3')) + '</strong></p>' + 1760 '</div>' + 1761 '<p style="margin-top: 32px; padding-top: 24px; border-top: 2px solid #e5e7eb; text-align: center; color: #666; font-size: 14px;">' + 1762 '<strong>' + escapeHtml(t('statementLastUpdated')) + '</strong> ' + escapeHtml(lastUpdated) + 1763 '</p>' + 1764 '</div>'; 1765 const customStatementBodyHtml = 1766 '<div id="a11y-statement-body" style="direction: ' + customStatementDirection + ';">' + 1767 customStatementHtml + 1768 '</div>'; 1769 const statementBodyHtml = 1770 useCustomStatementContent && customStatementHtml 1771 ? customStatementBodyHtml 1772 : defaultStatementBodyHtml; 1773 1774 content.innerHTML = 1775 '<div id="a11y-statement-header">' + 1776 '<h2 id="a11y-statement-title">â¿ ' + escapeHtml(t('statementTitle')) + '</h2>' + 1777 '<button id="a11y-statement-close" aria-label="' + escapeHtml(t('closeStatement')) + '">Ã</button>' + 1778 '</div>' + 1779 statementBodyHtml; 1780 1781 modal.appendChild(content); 1782 document.body.appendChild(modal); 1783 1784 // Close statement modal when clicking outside 1785 modal.addEventListener('click', (e) => { 1786 if (e.target === modal) {
1787 closeAccessibilityStatement(); 1788 } 1789 }); 1790 1791 // Close button 1792 const closeBtn = content.querySelector('#a11y-statement-close'); 1793 closeBtn.addEventListener('click', closeAccessibilityStatement); 1794 1795 // ESC key to close 1796 document.addEventListener('keydown', (e) => { 1797 if (e.key === 'Escape' && modal.classList.contains('show')) { 1798 closeAccessibilityStatement(); 1799 } 1800 }); 1801 } 1802 1803 function openAccessibilityStatement() { 1804 const modal = document.getElementById('a11y-statement-modal'); 1805 if (modal) { 1806 modal.classList.add('show'); 1807 document.body.style.overflow = 'hidden'; // Prevent background scrolling 1808 1809 // Focus on close button for keyboard accessibility 1810 setTimeout(() => { 1811 const closeBtn = document.getElementById('a11y-statement-close'); 1812 if (closeBtn) closeBtn.focus(); 1813 }, 100); 1814 } 1815 } 1816 1817 function closeAccessibilityStatement() { 1818 const modal = document.getElementById('a11y-statement-modal'); 1819 if (modal) { 1820 modal.classList.remove('show'); 1821 document.body.style.overflow = ''; // Restore scrolling 1822 } 1823 } 1824 1825 function setupToolbarEvents(toolbar, toggleBtn, header) { 1826 const closeBtn = document.getElementById('a11y-close-btn'); 1827 const controls = document.querySelectorAll('.a11y-control-btn, .a11y-reset-btn, .a11y-statement-btn'); 1828 1829 function setToolbarExpanded(expanded, focusFirstControl) { 1830 if (expanded) { 1831 toolbar.classList.add('expanded'); 1832 toggleBtn.classList.add('hidden'); 1833 toggleBtn.setAttribute('aria-expanded', 'true'); 1834 if (focusFirstControl) { 1835 setTimeout(() => { 1836 const firstControl = document.querySelector('.a11y-control-btn'); 1837 if (firstControl) firstControl.focus(); 1838 }, 100); 1839 } 1840 } else { 1841 toolbar.classList.remove('expanded'); 1842 toggleBtn.classList.remove('hidden'); 1843 toggleBtn.setAttribute('aria-expanded', 'false'); 1844 toolbar.style.transform = ''; 1845 } 1846 } 1847 1848 // Toggle toolbar - Open it and hide the floating button 1849 toggleBtn.addEventListener('click', (e) => { 1850 e.preventDefault(); 1851 e.stopPropagation(); 1852 setToolbarExpanded(true, true); 1853 savePreference('toolbarExpanded', true); 1854 }); 1855 1856 // Close toolbar - Hide it completely and show the floating button 1857 closeBtn.addEventListener('click', (e) => { 1858 e.preventDefault(); 1859 e.stopPropagation(); 1860 setToolbarExpanded(false, false); 1861 savePreference('toolbarExpanded', false); 1862 }); 1863 1864 // Draggable toolbar 1865 let isDragging = false; 1866 let startY = 0; 1867 let startTop = 0; 1868 1869 header.addEventListener('mousedown', (e) => { 1870 if (e.target === closeBtn || e.target.closest('#a11y-close-btn')) return; 1871 isDragging = true; 1872 startY = e.clientY; 1873 const rect = toolbar.getBoundingClientRect(); 1874 startTop = rect.top; 1875 toolbar.classList.add('dragging'); 1876 e.preventDefault(); 1877 }); 1878 1879 document.addEventListener('mousemove', (e) => { 1880 if (!isDragging) return; 1881 const deltaY = e.clientY - startY; 1882 const newTop = startTop + deltaY; 1883 const maxTop = window.innerHeight - toolbar.offsetHeight; 1884 const clampedTop = Math.max(0, Math.min(newTop, maxTop)); 1885 const translateX = toolbar.classList.contains('expanded') ? 0 : 360; 1886 toolbar.style.top = clampedTop + 'px'; 1887 toolbar.style.transform = `translateX(${translateX}px)`; 1888 }); 1889 1890 document.addEventListener('mouseup', () => { 1891 if (isDragging) { 1892 isDragging = false; 1893 toolbar.classList.remove('dragging'); 1894 } 1895 }); 1896 1897 // Control button actions
1898 controls.forEach(btn => { 1899 btn.addEventListener('click', function() { 1900 const action = this.getAttribute('data-action'); 1901 handleAction(action, this); 1902 }); 1903 }); 1904 1905 // Reading guide mouse tracking 1906 document.addEventListener('mousemove', (e) => { 1907 if (document.body.classList.contains('a11y-reading-guide')) { 1908 const guide = document.getElementById('a11y-reading-guide'); 1909 guide.style.top = (e.clientY - 1) + 'px'; 1910 } 1911 if (document.body.classList.contains('a11y-reading-mask')) { 1912 document.documentElement.style.setProperty('--mouse-x', e.clientX + 'px'); 1913 document.documentElement.style.setProperty('--mouse-y', e.clientY + 'px'); 1914 } 1915 }); 1916 } 1917 1918 // State variables 1919 let textSizeLevel = 100; 1920 const PREFERENCES_STORAGE_KEY = 'webydo.accessibility.preferences.v1'; 1921 1922 function readPreferences() { 1923 try { 1924 if (!window.localStorage) return {}; 1925 const raw = window.localStorage.getItem(PREFERENCES_STORAGE_KEY); 1926 if (!raw) return {}; 1927 const parsed = JSON.parse(raw); 1928 return parsed && typeof parsed === 'object' ? parsed : {}; 1929 } catch (error) { 1930 console.warn('â ï¸ Failed to read accessibility preferences:', error); 1931 return {}; 1932 } 1933 } 1934 1935 function handleAction(action, button) { 1936 const indicator = document.getElementById('a11y-font-size-indicator'); 1937 1938 switch(action) { 1939 case 'increase-text': 1940 textSizeLevel = Math.min(textSizeLevel + 10, 200); 1941 applyTextSize(textSizeLevel); 1942 showFontSizeIndicator(textSizeLevel); 1943 savePreference('textSize', textSizeLevel); 1944 break; 1945 1946 case 'decrease-text': 1947 textSizeLevel = Math.max(textSizeLevel - 10, 80); 1948 applyTextSize(textSizeLevel); 1949 showFontSizeIndicator(textSizeLevel); 1950 savePreference('textSize', textSizeLevel); 1951 break; 1952 1953 case 'high-contrast': 1954 case 'readable-font': 1955 case 'highlight-links': 1956 case 'highlight-titles': 1957 case 'reading-guide': 1958 case 'reading-mask': 1959 case 'keyboard-nav': 1960 case 'big-cursor': 1961 case 'stop-animations': 1962 case 'text-spacing': 1963 const className = 'a11y-' + action; 1964 document.body.classList.toggle(className); 1965 button.classList.toggle('active'); 1966 savePreference(action, document.body.classList.contains(className)); 1967 break; 1968 1969 case 'negative-contrast': 1970 case 'grayscale': 1971 // Apply filter classes to html instead of body to prevent fixed positioning issues 1972 const filterClassName = 'a11y-' + action; 1973 document.documentElement.classList.toggle(filterClassName); 1974 button.classList.toggle('active'); 1975 savePreference(action, document.documentElement.classList.contains(filterClassName)); 1976 break; 1977 1978 case 'reset': 1979 resetAllSettings(); 1980 break; 1981 1982 case 'statement': 1983 openAccessibilityStatement(); 1984 break; 1985 } 1986 } 1987 1988 /* 1989 * Text resizing must work regardless of the UNIT the site was authored in. 1990 * Scaling only the root font-size (which is all this used to do) moves text 1991 * authored in rem and NOTHING else â measured 0% effect on sites written in 1992 * px, which is most legacy/AI-built output. The control looked alive (the % 1993 * applied, the indicator animated, the preference saved) while no visitor 1994 * text ever changed size: an SI 5568 control that silently did nothing. 1995 * 1996 * So: remember each text-bearing element's ORIGINAL computed size once, then 1997 * always set size = original * factor. Computing from the ORIGINAL (never 1998 * from the current computed value) is what prevents rem-based sites from 1999 * being scaled twice, since the root % below still applies to them. 2000 * Level 100 removes every inline override, so Reset is exact. 2001 */ 2002 let a11yTextOriginals = null; 2003 2004 function a11yCaptureTextOriginals() { 2005 if (a11yTextOriginals) return; 2006 a11yTextOriginals = []; 2007 const all = document.body ? document.body.querySelectorAll('*') : []; 2008 for (let i = 0; i < all.length; i++) { 2009 const el = all[i]; 2010 // never resize the accessibility UI itself 2011 if (el.closest && el.closest('#a11y-toolbar, #a11y-toggle, #a11y-statement-modal, #a11y-font-size-indicator, #a11y-skip-link')) continue; 2012 let hasText = false;
2013 for (let n = 0; n < el.childNodes.length; n++) { 2014 const node = el.childNodes[n]; 2015 if (node.nodeType === 3 && node.nodeValue && node.nodeValue.trim()) { hasText = true; break; } 2016 } 2017 if (!hasText) continue; 2018 const px = parseFloat(getComputedStyle(el).fontSize); 2019 if (px) a11yTextOriginals.push([el, px]); 2020 } 2021 } 2022 2023 function applyTextSize(level) { 2024 // capture BEFORE the root changes, so the stored sizes are the true originals 2025 if (level !== 100) a11yCaptureTextOriginals(); 2026 document.documentElement.style.fontSize = level + '%'; 2027 if (!a11yTextOriginals) return; 2028 for (let i = 0; i < a11yTextOriginals.length; i++) { 2029 const el = a11yTextOriginals[i][0]; 2030 const px = a11yTextOriginals[i][1]; 2031 if (!el.isConnected) continue; 2032 if (level === 100) el.style.removeProperty('font-size'); 2033 else el.style.setProperty('font-size', (px * level / 100).toFixed(2) + 'px', 'important'); 2034 } 2035 } 2036 2037 function showFontSizeIndicator(size) { 2038 const indicator = document.getElementById('a11y-font-size-indicator'); 2039 indicator.textContent = size + '%'; 2040 indicator.style.display = 'block'; 2041 clearTimeout(window.fontSizeTimeout); 2042 window.fontSizeTimeout = setTimeout(() => { 2043 indicator.style.display = 'none'; 2044 }, 2000); 2045 } 2046 2047 function resetAllSettings() { 2048 // Reset text size (also clears every per-element override) 2049 textSizeLevel = 100; 2050 applyTextSize(100); 2051 2052 // Remove all accessibility classes 2053 const bodyClasses = [ 2054 'a11y-high-contrast', 'a11y-readable-font', 'a11y-highlight-links', 2055 'a11y-highlight-titles', 'a11y-reading-guide', 'a11y-reading-mask', 2056 'a11y-keyboard-nav', 'a11y-big-cursor', 'a11y-stop-animations', 'a11y-text-spacing' 2057 ]; 2058 bodyClasses.forEach(cls => document.body.classList.remove(cls)); 2059 2060 // Remove filter classes from html element 2061 const htmlClasses = ['a11y-negative-contrast', 'a11y-grayscale']; 2062 htmlClasses.forEach(cls => document.documentElement.classList.remove(cls)); 2063 2064 // Remove active state from buttons 2065 document.querySelectorAll('.a11y-control-btn.active').forEach(btn => { 2066 btn.classList.remove('active'); 2067 }); 2068 2069 // Reset persisted preferences 2070 try { 2071 if (window.localStorage) { 2072 window.localStorage.removeItem(PREFERENCES_STORAGE_KEY); 2073 } 2074 } catch (error) { 2075 console.warn('â ï¸ Failed to clear accessibility preferences:', error); 2076 } 2077 2078 // Show notification 2079 alert(t('resetNotification')); 2080 } 2081 2082 function savePreference(key, value) { 2083 try { 2084 if (!window.localStorage) return; 2085 const preferences = readPreferences(); 2086 preferences[key] = value; 2087 window.localStorage.setItem(PREFERENCES_STORAGE_KEY, JSON.stringify(preferences)); 2088 } catch (error) { 2089 console.warn('â ï¸ Failed to save accessibility preference:', key, error); 2090 } 2091 } 2092 2093 function restoreSavedPreferences() { 2094 const preferences = readPreferences(); 2095 // Toolbar defaults to closed unless explicitly forced or user saved it open. 2096 const shouldForceOpen = 2097 document.documentElement.getAttribute('data-a11y-auto-open') === 'true'; 2098 2099 const toolbar = document.getElementById('a11y-toolbar'); 2100 const toggleBtn = document.getElementById('a11y-toggle'); 2101 2102 if (!toolbar || !toggleBtn) { 2103 console.warn('â ï¸ Accessibility toolbar elements not found during restore'); 2104 return; 2105 } 2106 2107 if (shouldForceOpen || preferences.toolbarExpanded === true) { 2108 toolbar.classList.add('expanded'); 2109 toggleBtn.classList.add('hidden'); 2110 toggleBtn.setAttribute('aria-expanded', 'true'); 2111 console.log('ð¬ Accessibility toolbar opened from saved state/force flag'); 2112 } else { 2113 toolbar.classList.remove('expanded'); 2114 toggleBtn.classList.remove('hidden'); 2115 toggleBtn.setAttribute('aria-expanded', 'false'); 2116 toolbar.style.transform = ''; 2117 toolbar.style.top = ''; 2118 console.log('â Accessibility toolbar starts CLOSED by default'); 2119 } 2120 2121 if (typeof preferences.textSize === 'number' && preferences.textSize >= 80 && preferences.textSize <= 200) { 2122 textSizeLevel = preferences.textSize; 2123 applyTextSize(textSizeLevel); 2124 } 2125 2126 const bodyActions = [ 2127 'high-contrast', 2128 'readable-font', 2129 'highlight-links', 2130 'highlight-titles', 2131 'reading-guide', 2132 'reading-mask', 2133 'keyboard-nav', 2134 'big-cursor', 2135 'stop-animations', 2136 'text-spacing' 2137 ]; 2138 bodyActions.forEach((action) => { 2139 if (preferences[action] === true) { 2140 document.body.classList.add('a11y-' + action); 2141 const button = document.querySelector('[data-action="' + action + '"]'); 2142 if (button) button.classList.add('active'); 2143 } 2144 }); 2145 2146 const htmlActions = ['negative-contrast', 'grayscale']; 2147 htmlActions.forEach((action) => { 2148 if (preferences[action] === true) { 2149 document.documentElement.classList.add('a11y-' + action); 2150 const button = document.querySelector('[data-action="' + action + '"]'); 2151 if (button) button.classList.add('active'); 2152 } 2153 }); 2154 } 2155 2156 function setupKeyboardShortcuts() { 2157 document.addEventListener('keydown', (e) => { 2158 // Alt + A: Toggle accessibility toolbar 2159 if (e.altKey && e.key === 'a') { 2160 e.preventDefault(); 2161 const toolbar = document.getElementById('a11y-toolbar'); 2162 const toggleBtn = document.getElementById('a11y-toggle'); 2163 if (toolbar && toggleBtn) { 2164 const isExpanded = toolbar.classList.contains('expanded'); 2165 if (isExpanded) { 2166 // Close toolbar, show floating button 2167 toolbar.classList.remove('expanded'); 2168 toggleBtn.classList.remove('hidden'); 2169 toggleBtn.setAttribute('aria-expanded', 'false'); 2170 } else { 2171 // Open toolbar, hide floating button 2172 toolbar.classList.add('expanded'); 2173 toggleBtn.classList.add('hidden'); 2174 toggleBtn.setAttribute('aria-expanded', 'true'); 2175 // Focus first control button when opening 2176 setTimeout(() => { 2177 const firstControl = document.querySelector('.a11y-control-btn'); 2178 if (firstControl) firstControl.focus(); 2179 }, 100); 2180 } 2181 } 2182 } 2183 2184 // ESC: Close accessibility toolbar 2185 if (e.key === 'Escape') { 2186 const toolbar = document.getElementById('a11y-toolbar'); 2187 const toggleBtn = document.getElementById('a11y-toggle'); 2188 const statementModal = document.getElementById('a11y-statement-modal'); 2189 2190 // Only close toolbar if it's open and statement modal is not open 2191 if (toolbar && toolbar.classList.contains('expanded') && 2192 (!statementModal || !statementModal.classList.contains('show'))) { 2193 toolbar.classList.remove('expanded'); 2194 if (toggleBtn) { 2195 toggleBtn.classList.remove('hidden'); 2196 toggleBtn.setAttribute('aria-expanded', 'false'); 2197 } 2198 } 2199 } 2200 2201 // Alt + +: Increase text size 2202 if (e.altKey && (e.key === '+' || e.key === '=')) { 2203 e.preventDefault(); 2204 const btn = document.querySelector('[data-action="increase-text"]'); 2205 if (btn) btn.click(); 2206 } 2207 2208 // Alt + -: Decrease text size 2209 if (e.altKey && e.key === '-') { 2210 e.preventDefault(); 2211 const btn = document.querySelector('[data-action="decrease-text"]'); 2212 if (btn) btn.click(); 2213 } 2214 2215 // Alt + C: Toggle high contrast 2216 if (e.altKey && e.key === 'c') { 2217 e.preventDefault(); 2218 const btn = document.querySelector('[data-action="high-contrast"]'); 2219 if (btn) btn.click(); 2220 } 2221 2222 // Alt + R: Reset 2223 if (e.altKey && e.key === 'r') { 2224 e.preventDefault(); 2225 const btn = document.querySelector('[data-action="reset"]'); 2226 if (btn) btn.click(); 2227 } 2228 }); 2229 } 2230 2231 // Announce to screen readers 2232 const announcement = document.createElement('div'); 2233 announcement.setAttribute('role', 'status'); 2234 announcement.setAttribute('aria-live', 'polite'); 2235 announcement.className = 'sr-only'; 2236 announcement.setAttribute('data-a11y-toolbar-announcement', 'true'); 2237 document.body.appendChild(announcement); 2238 2239 // Announce toolbar availability 2240 setTimeout(() => { 2241 announcement.textContent = t('toolbarAvailable'); 2242 }, 1000); 2243 2244 })();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.