Law No. 6698, Turkish and English on one fold, consolidated to March 2024. Read the statute

Conformance statement · reviewed 07.10.2026

Accessibility statement

Most of what we publish here is legislation, and legislation has to be readable by everyone it binds.

Last reviewed 7 October 2026. The contrast figures on this page are computed from the design system’s own tokens every time the site is built.

The claim, stated exactly

We build this site to WCAG 2.2, level AA. We do not claim conformance to it.

The difference matters, and we would rather write it down than let a badge imply otherwise. No independent audit has been carried out. There is no VPAT and no EN 301 549 evaluation. No criterion-by-criterion test report exists. What follows is what we measured ourselves, in this build, on 7 October 2026 — and, below that, everything we did not.

We are a data protection practice. Overstating a compliance position on our own website would be the same failure we are retained to prevent elsewhere.

Contrast, measured

Ratios computed at build time from the shipped hex values in src/styles/_tokens.css by the WCAG 2.x relative-luminance formula: each token against the page ground, --ground, and against --territory, the lightest ground in the build and therefore every token’s worst case. If a token changes, these figures change with it in the next build; if a text token ever fell below 4.5:1, the build would fail rather than this page print it. The full table — every token against --ground, --sheet, --sheet-hi and --territory — is in the comment block at the head of src/styles/system.css.

Measured contrast ratios of the design system’s ink, fill and rule tokens against the stage and against their worst ground.
Token Where it is used On the stage Worst case Needs Result
--ink Headings, body text, the statute itself 16.17:1 11.67:1 4.5:1 clears AAA on every ground
--ink-2 Secondary prose, standfirsts, table cells 10.04:1 7.25:1 4.5:1 clears AAA on every ground
--ink-3 The floor — section labels, metadata, dates, notes 6.42:1 4.64:1 4.5:1 clears AA on every ground
--seal-hi Small vermilion text: offer labels, numerals, link hover 7.45:1 5.38:1 4.5:1 clears AA on every ground
--void Repealed provisions and the live administrative-fine ceiling 9.07:1 6.55:1 4.5:1 clears AA on every ground
--abroad Crosses a border: Article 9, the Transfer By-Law, the Atlas link 10.84:1 7.82:1 4.5:1 clears AAA on every ground
--gilt-ink The statute reader’s hanging enumerators 13.33:1 9.63:1 4.5:1 clears AAA on every ground
--gilt The marble’s warm grey, as a fill: the census staircase, footnote ticks. Never text. 8.56:1 6.18:1 3:1 clears 1.4.11 on every ground
--abroad-mark Verdigris at tick and swatch weight 6.47:1 4.67:1 3:1 clears 1.4.11 on every ground
--seal The redaction bar, the primary action’s fill, the amendment mark, display-size parentheses. Never small text. 5.55:1 4.01:1 3:1 clears 1.4.11 on every ground
--rule-info Structural borders: control edges, input borders, the first rule of a list 4.51:1 3.25:1 3:1 clears 1.4.11 on every ground
--rule-quiet Row hairlines and the blueprint lines. Carries no information anywhere in the build. 1.35:1 1.03:1 — not information
  • --ink-3 is the floor: no text on this site is set in anything dimmer, at any size. Its worst pairing anywhere in the build is on --territory — the inset ground of chips and table zebra — at 4.64:1.
  • --seal is a fill and a display colour, 4.01:1 at worst. Small vermilion text is never set in it: it uses --seal-hi, which holds 5.38:1 on every ground. Text set on a vermilion fill is --seal-ink, at 5.55:1; cream on vermilion would be 2.91:1 and is never set.
  • Over the marble figure, nothing smaller than display type is set, and never without the stage showing through behind it.
  • There is one theme. The stage is dark by construction and there is no light presentation, so there is no second stylesheet that can fall behind the first. Where a section stands on the marble band instead — like the claim above — the same token names are re-pointed: ink 15.20:1, secondary ink 8.34:1, vermilion text 5.00:1.
  • --rule-info is a non-text boundary and holds 3:1 everywhere. --rule-quiet is the blueprint grid and the row hairlines: decoration that no text sits on and nothing depends on seeing.

What we checked, and how

Keyboard
Every control on this site is a native element — link, button, input, checkbox, radio. There is no custom widget with a synthetic focus model, so keyboard operation is the browser’s rather than ours. No positive tabindex appears anywhere in the build, so the tab order is document order. One scrolling region can take focus — the card track on the homepage, at tabindex 0 — so that it can be moved with the arrow keys. With script, the homepage’s globe takes focus too: the arrow keys step through the 31 jurisdictions and each is announced by name. The small-screen menu is a native modal dialog: while it is open the page behind it is inert and focus stays inside it; Escape closes it and focus returns to the menu button.
Focus
One rule, declared once in the design system: a 2px outline in --ink, offset by 3px — cream on the stage at 16.17:1, and the band’s own ink on the vermilion and marble bands, so the ring is never the colour of what it rings. Nothing in the build removes it from keyboard focus.
Skip links
Two at the top of every page — to content and to navigation. They are the first two stops in the tab order and become visible when focused. “Skip to navigation” lands on the bar’s links on a wide screen, on the menu button on a small one, and on the footer’s register on a small screen with scripting off.
Headings
One h1 per page and no level skipped — checked against the built HTML of every page in this build, not only the pages we happened to open. Section headings are real headings, not styled paragraphs.
Language
lang is declared on <html> on every page and switches with the route. Inside the statute reader each column is marked lang="tr" or lang="en", so a screen reader changes voice at the fold instead of reading Turkish in an English voice.
Images
No information on this site is carried by an image. There is no generated imagery, no icon font and no bitmap logo: arrows and icons are inline SVG marked aria-hidden, and the wordmark is text. Two things are drawn on a canvas — the marble figure, which is a scan of a real sculpture, and a dotted globe on the homepage — and both are described below.
Colour
No status is carried by colour alone. An amended article carries the word “Amended” and a date; a repealed provision carries its official marker in words, “(Repealed: …)” beside the Turkish “(Mülga: …)”, as well as its colour; a required field says “required”; the cross-border marker carries a label; the reader’s colour-coded spine is a list of links whose accessible names spell out article, heading and status in words.
Tables and lists
Real <table> with a <caption>, a <thead> and row headers; real <dl>, <ol> and <ul>. Nothing here is a div pretending to be a table. Where a table restacks on a narrow screen, every part of it carries its table role explicitly, so the restack does not cost the semantics.
Zoom and reflow
Every page in this build was loaded at 320 CSS pixels wide, and none of them scrolls the body sideways. Because the layout stays fluid down to that width, 200% zoom in a 1280-pixel window — the same thing as a 640-pixel viewport — reflows the same way. The storage table and the contrast table above restack into single-column rows, the statute’s parallel columns fold into one, and the homepage’s card track scrolls inside its own container rather than dragging the page with it.
Forms
Every field has a <label for>. Grouped fields sit in a <fieldset> with a <legend>. Required fields say “required” in words as well as carrying the attribute. Validation in the page is the browser’s own, so the error behaviour is the one the visitor’s assistive technology already knows; anything the server then rejects is listed in a summary announced as an alert, each line a full sentence.
Print
The statute pages carry a print stylesheet: the stage becomes white paper, the controls and the decoration drop away, articles break cleanly, and the status words survive a photocopier.
High contrast
Under prefers-contrast: more the two secondary inks are lifted and informational rules approach ink; decorative hairlines take only a small step, and the blueprint’s construction lines are not drawn at all, so nothing decorative crosses the text.

With JavaScript switched off

Content on this site does not depend on scripting. Behaviour that would normally be written as script is deliberately not:

The parallel Turkish and English fold
The two columns and the shared enumerators between them are a CSS subgrid. There is no script behind the layout at any width, and the deep links — #m9, #m9-3, #m22-1-l — are ordinary fragment identifiers that resolve without one.
The 2024 amendment redline
“Show 2024 amendments” is a checkbox, and the redline is drawn by CSS :has(:checked). With scripting off, the switch still reveals the amendment marks and the struck-through repeals.
The language interleave
Below 1180px each paragraph’s second language is revealed by a checkbox and the same :has(:checked) rule, and the document-level “both languages” switch is a checkbox too. The whole statute, in both languages, is reachable with JavaScript disabled. What script adds is only that the switch is remembered between visits.
The reveals
Blocks and headline words that rise into place as you scroll are hidden only by the reveal script, and only if they are below the viewport at the moment it runs. If the script never loads, nothing was ever hidden: the resting stylesheet is the finished page.
The figure and the globe
The marble figure and the homepage’s globe are the two things drawn by script, and both are decoration: every word near them is real text in the document. Where the figure cannot be drawn a still stands in its place; without script the globe is the same drawing, made once at build time and standing still, and the link to the Atlas beside it is unaffected.
The homepage’s opening
On a wide screen the opening of the homepage is pinned and played by the scroll position, and that is script. Without it — and on narrow screens, and under reduced motion — the same content lays out as ordinary stacked sections, complete and in the same order.
What does need script
The small-screen menu, copying a citation, the article filter, the homepage’s loading panel, its service tabs and the arrows on its card track, and the clear buttons on the storage page. With scripting off the menu button is a link to the footer’s register, which carries the full navigation on every page; the filter, the loading panel, the tabs and the arrows are not shown, and the track scrolls on its own; each citation chip is still a permalink to its paragraph, and only the copy needs script; the storage buttons ship disabled and say why.

Motion

Every time-based transition and animation in this build is written calc(var(--motion) * Nms), and --motion is set to 0 under prefers-reduced-motion: reduce. Reduced motion is therefore not a list of exceptions that a new component can forget to join: it is one token, and a component that animates without it would have to be written to work around the system on purpose. The things that move by script — the scroll reveals and count-ups, the marble figure, the homepage’s scroll-driven opening and its globe — read the same preference before they start, and under it they do not start.

Every animation animates from a start state towards the element’s own resting CSS, and the entrance keyframes are written from-only so that the resting design is the target by construction. This is what makes the reduced-motion state a complete design rather than a degraded one: with --motion at 0 the first painted frame is the finished page. Nothing on this site is parked at zero opacity in its stylesheet. The reveal script hides only what is below the viewport when it runs, releases each element as it arrives, hides nothing under reduced motion, and if it never loads nothing was ever hidden.

The reduced-motion state, described so it can be judged on its own merits: every heading and block already in place; the marble figure held on a still frame; the homepage laid out as ordinary stacked sections, with its strip of sector names and its globe at rest; a static hairline down the fold of the statute reader; the reader’s enumerator letters already in their resting colour.

Three things respond to scrolling besides the reveals. The reader’s enumerator letters warm from grey to their resting colour as they cross the viewport — a pure CSS view() timeline, with no scroll handler, inside a prefers-reduced-motion: no-preference query, so a browser without it shows the finished letter. On a wide screen the opening of the homepage is pinned while the scroll position plays it — the headline, the numerals, the six services and the figure’s camera — and scrolling back plays it in reverse. And at the foot of every page except the homepage the figure rises behind the wordmark as it comes into view. None of them takes over scrolling: the wheel, the keyboard and the scrollbar move the page as they always do.

Three things move without being asked: on the statute reader, a light that passes down the visible seam of the fold once, for five seconds, as the page opens, and then rests; the strip of sector names on the homepage; and the homepage’s globe, which turns slowly while it is on screen. All three are decoration and all three stand still under reduced motion; the strip also pauses under a pointer. The homepage’s card track is moved by the reader — by scrolling, with the arrow keys or with its two buttons — and never advances by itself. There is no auto-playing audio or video. On a wide screen a loading panel covers the homepage until the figure is ready, for about three seconds at most; any key, turn of the wheel or click lifts it sooner. It is not shown on narrow screens, under reduced motion or when scripting is off. No content requires motion to be understood. Entrance reveals apply only below the first screen, run once as the element arrives, and are not repeated.

The figure, the globe and the lines

Three kinds of decoration appear on this site. None carries information, and none is the only way anything is conveyed.

The marble figure
A scan of a real sculpture, drawn live in WebGL on the homepage stage and behind the wordmark at the foot of every other page; at the foot of the homepage, which already has it on the stage, a still of it stands instead. The canvas is aria-hidden and takes no pointer events: it never sits between you and a control and never receives focus. On the homepage its frame is named as an image, in one sentence that says what it shows; at the foot of the page it is not announced at all. Its source, licence and processing are published on the provenance page.
What a pointer does to it
The figure answers the cursor, which uncovers the wireframe under the stone, and on a touch screen a tap sends one ripple across it. Nothing is conveyed by either and nothing depends on them; under reduced motion neither happens.
When it stops
Under prefers-reduced-motion it holds a still frame. Where WebGL is unavailable, script is off, or the browser reports that the visit is saving data or on a 3G-or-slower connection, a still image of the same figure stands in its place — on the homepage and at the foot of the page alike — with an empty alt, since it carries nothing. The canvas is removed when printing.
The globe
On the homepage’s Atlas band, a dotted globe drawn on a two-dimensional canvas picks out the 31 jurisdictions the Atlas compares. The drawing itself is aria-hidden: the heading, the figures, the index of jurisdictions and the link to the Atlas beside it are real text. It turns slowly while it is on screen, stands still under prefers-reduced-motion, and can be turned by dragging with a pointer. With script its frame also takes keyboard focus, as a named group: the arrow keys step through the jurisdictions, turning the globe towards each and announcing its name, and Escape lets go. Nothing depends on either.
Type over it
Nothing smaller than display type is set over the figure, and never without the stage showing through behind it. Every smaller voice sits on the plain stage.
The construction lines
The faint grid, diagonals and + marks behind page heads and bands are one inline SVG, aria-hidden, drawn in --rule-quiet — decoration by construction, since nothing at that contrast is permitted to carry information. They are removed under forced-colors: active and do not print.

The statute reader

1440px and wider
Turkish and English in parallel columns, sharing one fold, with a citation rail.
Below 1180px
One column in the page’s language. The other language interleaves directly beneath each paragraph — never the whole Turkish document followed by the whole English one, which would destroy parallel reading.
320px
Single column. Enumerator letters stay in the margin; nothing is lost and nothing scrolls sideways.
200% zoom
Behaves as the narrow layout does: the same reflow, with no loss of content or function.
Navigation
The reader’s spine is an ordered list of links, one per article, reachable by keyboard; each link’s accessible name carries the article number, its heading, its status and, where it applies, that the article concerns transfer abroad.

What we have not measured

No independent audit
Nobody outside this firm has evaluated this site. There is no VPAT and no EN 301 549 evaluation.
No criterion-by-criterion report
We have not walked every level A and AA success criterion and recorded a result against each one. What is listed above is what was checked.
Screen readers
This redesign has not yet been read with a screen reader. The previous build was, informally — NVDA on Windows and VoiceOver on macOS and iOS, on the home page, the statute reader and this page — and the document structure it read is the one this build keeps. JAWS, Narrator and TalkBack have not been used on either.
The homepage’s pinned opening
How keyboard focus moves through the six service panels while the opening is pinned has not been tested in this build.
Reflow, in emulation
Verified at 320 CSS pixels in a desktop browser at that viewport width, not across a matrix of physical devices.
Reading level
Statutory text is published as enacted. Its reading level is the legislature’s and not ours, and we make no claim under 3.1.5, which is in any case a AAA criterion.
The response times below
Undertakings, not measurements.

Known limitations

The Atlas
atlas.gdpr.com.tr is a separate publication and presents a WebGL globe. A three-dimensional rendered canvas cannot be conveyed in full to a screen reader and we do not claim otherwise. The Atlas therefore carries an equivalent, fully keyboard-navigable route to the same content: all 31 jurisdictions as structured text, each with its authority, penalty ceiling, legislation and notable decisions, reachable without touching the globe. Partial conformance is declared for the globe component itself.
Movement that starts by itself
The strip of sector names on the homepage and the homepage’s globe move without being asked, and for longer than five seconds. Both stand still under prefers-reduced-motion and the strip pauses under a pointer, but the page carries no pause control of its own.
Third-party pages
Links out to the Authority, EUR-Lex, the Official Gazette and other external sites lead to content we neither control nor can remediate.
Historic material
A small number of older documents carried over from the previous site may not yet meet every criterion. We are working through them and will correct anything reported to us.

Reporting a barrier

If you meet a barrier here, or need any document on this site in another format, tell us. We treat an accessibility report as a defect, not as feedback: we aim to acknowledge within two business days and to fix or explain within ten.

It helps to say which page, what you were using — browser and assistive technology — and what happened. It is not required. A sentence is enough.

info@gdpr.com.tr
Telephone
+90 212 951 0177
Post
Büyükdere Cd. No:239, Maslak, 34485, Sarıyer / İstanbul, Türkiye
Accessibility coordinator
A. F. Hanyaloğlu