Tilgængelighedserklæring
Sidst opdateret: 29. april 2026
Bygpas, der drives af UBRY (CVR 41366230), stræber efter at gøre vores digitale tjeneste tilgængelig for alle brugere i henhold til lov om tilgængelighed af produkter og tjenester (implementering af European Accessibility Act, EU-direktiv 2019/882).
Denne erklæring gælder for:
- Hjemmesiden bygpas.io (og det alternative domæne bygpas.dk)
- Alle kundevendte funktioner: håndværkertjek, rapport-køb, AI-rådgiver chat, brugerkonto
1. Compliance-status
Bygpas er delvist i overensstemmelse med WCAG 2.1 niveau AA.
Med "delvist i overensstemmelse" mener vi, at størstedelen af indholdet opfylder WCAG 2.1 AA-kravene, men enkelte områder har kendte problemer, som vi arbejder på at udbedre. Se afsnit 2 for en konkret liste.
Seneste interne audit: 24. april 2026 (intern audit med AI-assisteret static analysis og manuel kodegennemgang af hele public/-katalogstrukturen, dokumenteret i docs/a11y/audit-2026-04-24.md)
Seneste udbedringssprint: 29. april 2026 (automatisk rettelige issues fra audit; se afsnit 2.10–2.15)
Forrige audit: 16. april 2026
Næste planlagte audit: 24. oktober 2026 (halvårlig)
Audit-rapport: Findes som intern dokumentation (kan rekvireres via hej@bygpas.io)
2. Kendt ikke-compliance
Vi er opmærksomme på følgende problemer og arbejder aktivt på at rette dem:
2.1 Kontrast i sekundær tekst (WCAG 1.4.3) — løst 24. apr 2026
Tokens --gray-400 og --gray-500 er opdateret til henholdsvis #6B7280 og #4B5563, hvilket giver AA-godkendt kontrast mod baggrunden. En regression i index.html (inline kritisk CSS der rullede gamle værdier) blev opdaget og rettet samme dag.
2.2 Focus-trap i modale dialoger (WCAG 2.1.2, 2.4.3) — løst (verificeret 29. apr 2026)
Alle modale dialoger har nu fuld focus-trap implementeret efter mønster fra log ind-dialogen: Tab cykler kun mellem fokuserbare elementer inde i dialogen, Escape lukker, baggrunds-klik lukker, og fokus returneres til opener-knappen ved lukning. Verificerede dialoger:
- Login-modal (auth.js linje 256-306) — pattern-reference
- Rapport-viewer modal på "Min konto" (konto.js linje 497-563)
- GDPR-sletnings-dialog på "Min konto" (konto.js linje 864-916, dialog HTML i konto.html linje 326)
- Dashboard preview-modal (dashboard.js linje 562-638)
Hver dialog har korrekt role="dialog", aria-modal="true" og aria-labelledby peger på dialog-titlen.
2.3 Deaktiverede navigations-links (WCAG 4.1.2) — løst 24. apr 2026
Placeholder-links i navigation og footer („Prisestimat“, „Kontrakter“) var markeret <span class="nav-link-disabled" aria-disabled="true"> på tværs af hele sitet. Alle forekomster er opdateret til aria-hidden="true", så skærmlæsere ikke annoncerer placeholder-links som aktive (aria-disabled signalerer at et element er interaktivt men midlertidigt slået fra, hvilket er misvisende for en ren label).
2.4 Score-ring verbal beskrivelse (WCAG 1.1.1) — løst 29. apr 2026, komponent retired maj 2026
Score-kort-komponenten er pensioneret som del af vurderingsfri-omlægning (maj 2026). Bygpas viser data fra offentlige kilder direkte uden at producere en samlet score. Datakilde-chips og indikator-flag har behørig role="img" og aria-label, og flag-ikonerne (styrke/advarsel/risiko) har sr-only tekst-prefix så skærmlæsere ikke længere er afhængige af farve alene (WCAG 1.4.1 Use of Color).
2.5 Ikke-tekst kontrast i borders (WCAG 1.4.11)
Kort-borders er nu i base-tokens rgba(0,0,0,0.12) (--border) og rgba(0,0,0,0.18) (--border-hover), hvilket opfylder AA for grafiske objekter. Enkelte komponenter kan stadig bruge ældre værdier direkte i styling — sporing pågår.
2.6 Status-meddelelser uden live-region (WCAG 4.1.3) — løst 24. apr 2026
Rapport-færdig-tilstanden (#rapport-done) og GDPR-sletnings-fejlmeddelelsen (#gdpr-delete-error) havde tidligere ingen aria-live. Begge er nu opdateret: rapport-færdig med aria-live="polite", sletnings-fejl med role="alert". Skærmlæsere annoncerer nu begge tilstande.
2.7 Formular-labels på blog-nyhedsbrev (WCAG 3.3.2) — løst 24. apr 2026
Blog-sektionens nyhedsbrev-tilmelding havde <input type="email"> uden synlig label eller aria-label. Alle forekomster på tværs af blog-posts er opdateret med aria-label="Email til nyhedsbrev".
2.8 Dekorative SVG-ikoner (WCAG 1.1.1) — løst 24. apr 2026
Dekorative SVG-ikoner på håndværker-tilmeldingsformularen manglede aria-hidden="true" eller var ikke inde i hidden parents. Disse er opdateret så skærmlæsere springer dem over (tekst-indholdet ved siden af ikonerne bærer hele informationen).
2.9 Blog-sider ikke fuld-auditeret — delvist løst 29. apr 2026
Vores blog-sektion (/blog/) er nu inkluderet i automatiserede heading-hierarki, alt-tekst, lang-attribut, skip-link og form-label tests (tests/a11y/*.test.ts). Alle 28 blog-posts består disse tests. Manuel kontrast-tjek og focus-flow-test pågår. Forventet: maj 2026.
2.10 Generisk link-tekst i cookie-banner (WCAG 2.4.4) — løst 29. apr 2026
"Læs mere"-linket i cookie-banneret pegede på privatlivspolitikken, men link-teksten alene var ikke selvbeskrivende. Skærmlæser-brugere der får links læst ud af kontekst kunne ikke afgøre destinationen. Alle 168 forekomster på tværs af kerne-sider, blog, byer, nyhedsbrev og admin er opdateret med aria-label="Læs mere om vores cookie-politik og privatlivspolitik".
2.11 Heading-hierarki i rapport (WCAG 1.3.1, 2.4.6) — løst 29. apr 2026
Rapport-siden havde to steder hvor heading-rækken sprang fra h3 til h5 (ejer-træ og anmeldelses-temaer), hvilket bryder WCAG 1.3.1 Info and Relationships. Begge er rettet til h4, så skærmlæser-brugere kan navigere via heading-niveauer i den korrekte rækkefølge.
2.12 Eksplicit type="button" på alle <button> (WCAG 4.1.2) — løst 29. apr 2026
92 <button>-elementer manglede eksplicit type-attribut, hvilket betyder de defaultede til type="submit" i <form>-kontekster. Det kunne forårsage utilsigtet form-submit ved klik på knapper der reelt var luk-modal- eller toggle-handlere. Alle er nu type="button"; eksplicitte submit-knapper er bevaret som type="submit".
2.13 Sider uden hamburger-handler (WCAG 2.4.8, 4.1.2) — løst 29. apr 2026
Tre sider (sammenlign.html, design-system.html, styleguide.html) havde nav-elementer og en hamburger-knap, men loadede ikke en JS-handler. Det betød at mobile-menuen ikke kunne åbnes med tastatur, aria-expanded blev aldrig opdateret, og aria-current="page" blev aldrig sat på det aktive nav-link. Alle tre sider loader nu hamburger.js, som dækker alle tre adfærder.
2.14 Komplementære <aside> uden navngivning (WCAG 2.4.6) — løst 29. apr 2026
Tre sidebar-asides i rapport-skabelonen ("Vores anbefaling", "Risiko for dig", "Juridisk posture") manglede aria-label. Skærmlæsere annoncerede dem som generiske "complementary"-landmarks uden formål. Hver enkelt har nu en kort aria-label der matcher den indeholdte h4-overskrift.
2.15 Tilstand-skift via aria-hidden (WCAG 4.1.2) — løst 29. apr 2026
Rapport-flowets show()/hide()-helpers togglede tidligere kun hidden-attributten og .hidden-CSS-klassen, men ikke aria-hidden. Det betød at hvis HTML-markup-en startede med aria-hidden="true", kunne skærmlæsere ikke se det rich indhold selv efter show() blev kaldt. Helpers fjerner nu også aria-hidden ved show(), og rapport-done-sektionen har fået aria-live="polite" så tilstandsskift fra loading til done annonceres.
3. Undtagelser (uforholdsmæssig byrde)
Vi påberåber os på nuværende tidspunkt ingen undtagelser efter reglen om "uforholdsmæssig byrde". Hvis situationen ændrer sig, opdaterer vi dette afsnit.
4. Hvordan vi tester
Vi kombinerer automatiserede og manuelle tests:
- Automatiserede tests: Lighthouse (Google) og Axe DevTools (Deque Systems) for at fange kendte WCAG-problemer
- Tastaturnavigation: Manuel gennemgang af alle primær-flows uden mus
- Skærmlæser: Test med VoiceOver (macOS/iOS) og NVDA (Windows) på dansk
- Kontrast: Stark Chrome-udvidelse og manuelle luminance-beregninger
- Reduced motion: Respekt for OS-indstillingen
prefers-reduced-motion - Zoom og reflow: 200% browser-zoom på 320px bredde uden horisontal scroll
5. Feedback — sådan kontakter du os
Oplever du et tilgængelighedsproblem på Bygpas, vil vi meget gerne høre fra dig. Beskriv gerne:
- Hvilken side eller funktion, problemet opstod på (link hvis muligt)
- Hvad du forsøgte at gøre
- Hvilken enhed, browser og hjælpeteknologi du brugte (fx MacBook, Safari, VoiceOver)
Kontakt:
E-mail: hej@bygpas.io
Postadresse: UBRY, Østerbrogade 226, st. th, 2100 København Ø
Svartid: Vi svarer som udgangspunkt inden for 10 hverdage og senest inden for 14 dage (EAA-standarden for feedback-kanaler).
6. Håndhævelse — hvis du ikke er tilfreds
Hvis vores svar eller handling ikke er tilfredsstillende, kan du klage til tilsynsmyndigheden:
Digitaliseringsstyrelsen
Landgreven 4
Postboks 2193
1017 København K
E-mail: tilgaengelighed@digst.dk
Hjemmeside: digst.dk
For forbrugerklager specifikt kan du også kontakte Ligebehandlingsnævnet, der fører tilsyn med European Accessibility Act:
Ligebehandlingsnævnet
c/o Ankestyrelsen
7998 Statsservice
Hjemmeside: ast.dk/naevn/ligebehandlingsnaevnet
7. Lovgrundlag
Denne tilgængelighedserklæring er udfærdiget i henhold til:
- Lov om tilgængelighed af produkter og tjenester (dansk implementering af European Accessibility Act, trådt i kraft 28. juni 2025)
- Europa-Parlamentets og Rådets direktiv (EU) 2019/882 om tilgængelighedskrav for produkter og tjenester
- WCAG 2.1 niveau AA (Web Content Accessibility Guidelines, W3C) som det tekniske compliance-grundlag
8. Løbende arbejde
Tilgængelighed er en proces, ikke en engangsopgave. Vi:
- Auditerer hjemmesiden som minimum hvert halve år
- Inkluderer tilgængeligheds-tjek i alle større udviklings-sprints
- Træner nye teammedlemmer i WCAG-principperne (POUR: opfattelig, brugbar, forståelig, robust)
- Respekterer feedback fra brugere og retter fejl så hurtigt som praktisk muligt
Hvis du har input til, hvordan vi kan blive bedre, hører vi meget gerne fra dig via hej@bygpas.io.
Denne erklæring er oprindeligt udfærdiget den 16. april 2026, opdateret den 24. april 2026 efter intern audit, og senest opdateret den 29. april 2026 efter automatiseret udbedringssprint. Den næste planlagte revision er 24. oktober 2026 eller tidligere, hvis der sker væsentlige ændringer i tjenesten.