# CookieKit — kompletní customizační příručka

> Tenhle dokument je záměrně samostatný a „AI-ready". Můžeš ho celý vložit AI a říct např.:
> *„Podle téhle příručky mi vygeneruj snippet pro cookie lištu: modal uprostřed, fialový akcent #6b4eff, zaoblení 20px, český text, GTM-ABC123, plovoucí tlačítko zapnuté."* — AI z toho složí hotový kód.

CookieKit je hostovaná cookie lišta (Consent Mode v2 + blokování skriptů). Nasazuje se **jedním `<script>` tagem**. Vzhled i chování se řídí **atributy na tom tagu**, volitelným **`window.CookieKit` objektem** a **CSS proměnnými**.

Vizuální konfigurátor (naklikáš a vyplivne snippet): **https://cookiekit.janvodvarka.com/**

---

## 0. Pro AI agenty a vývojáře: nasazení na nový web (čti jako první)

**Postup krok za krokem včetně nástrojů:** [`docs/nasazeni.md`](nasazeni.md). Tahle pravidla nejsou styl,
ale podmínka toho, že lišta funguje právně. Každé vychází ze skutečné chyby
na ostrém webu.

### Musíš

1. **Mít konfiguraci v CookieKit Studiu dřív, než lištu nasadíš.** Její ID patří do `data-config`
   (embed režim) nebo do `data-site` (atributový režim). Souhlas se k účtu přiřadí jen v okamžiku
   zápisu — co přijde před založením konfigurace, zůstane bez vlastníka a klient ten doklad o souhlasu
   nikdy neuvidí ani nevyexportuje. **Nemáš-li do Studia přístup, požádej Jana o ID konfigurace.
   Bez něj nenasazuj.**
2. **Vkládat loader `https://cookiekit.b-cdn.net/cookiekit/v1.js`.** Nic jiného.
3. **Loader synchronně a jako úplně první skript v `<head>`** (bez `async`/`defer`, nad GTM) — viz
   §1. Jedinou výjimkou je režim *„nic před souhlasem"* níže.
4. **Na stagingu a v E2E testech dát `data-log="off"`**, jinak testovací kliky skončí v ostrém
   dokladu o souhlasu klienta.
5. **Po nasazení ověřit**, ne předpokládat: ve Studiu *Scan* (nebo požádej Jana) → před souhlasem jen
   nezbytné cookies; v konzoli existuje `window.__CKIT_CFG__`; v `dataLayer` je `consent default`
   **před** `gtm.js`.
6. **Zapsat rozhodnutí** do `DECISIONS.md` projektu (režim, proč, ID konfigurace).

### Nikdy

- **Nevkládej `releases/<verze>/cookiekit.js`.** Je to jen widget **bez loaderu**: nenastaví Consent Mode
  default a ignoruje **všechny** `data-*` atributy (`data-site`, `data-theme`, `data-policy-version`,
  `data-autoblock`…). Lišta se sice ukáže, takže to vypadá funkčně, ale souhlasy nejdou přiřadit.
- **Nepřipínej verzi a nepřidávej SRI.** `v1.js` je záměrně „plovoucí": opravy souhlasové lišty se
  dostanou na všechny weby bez nového nasazení (takhle se na weby dostala oprava auto-blocku v 1.9.0).
  Pevná verze = web zamrzne na chybách, které už jsou opravené.
- **Neřeš lištu kódem kolem, když na to existuje atribut nebo konfigurace** — vlastní kód nikdo
  centrálně neopraví.

### Dva správné režimy — vyber jeden

| | **A) Consent Mode** (většina webů, Webflow) | **B) Nic před souhlasem** |
|---|---|---|
| GTM | načte CookieKit (`data-gtm` / konfigurace) hned, se stavem „zamítnuto" | načteš ho sám až po souhlasu |
| ne-Google měřáky | `data-autoblock="true"` nebo §7 | načteš je sám až po souhlasu |
| loader | **synchronně, první v `<head>`** | smí být `async` (nic se nepředbíhá) |
| kdy | chceš modelování konverzí / cookieless pingy | klient chce, aby před souhlasem neodešlo nic |

**Režim B v kódu:** poslouchej událost `ckit_consent_update` v `dataLayer` (klíče `consent_analytics`,
`consent_marketing` = `granted`/`denied`, viz §6) a GTM / měřáky vlož až při `granted`. Funguje to i pro
vracejícího se návštěvníka — CookieKit událost pošle i při obnovení uložené volby.

---

## 1. Základní snippet (do `<head>`)

```html
<script src="https://cookiekit.b-cdn.net/cookiekit/v1.js"
        data-gtm="GTM-XXXXXXX"
        data-color="#0a0a0a"
        data-site="nazev-webu"></script>
```

To je vše, co je potřeba. Widget sám: nastaví Consent Mode default (vše zakázáno), načte GTM, vykreslí lištu, po volbě pošle souhlas.

> ⚠️ **Umístění rozhoduje o tom, jestli lišta vůbec chrání.** CookieKit musí být **úplně první
> skript v `<head>`** — nad GTM, nad `gtag`, Clarity, Pixelem — a **bez `async` / `defer`**.
>
> Loader je malý (pár kB, z CDN s cache) a musí doběhnout dřív, než se spustí cokoli dalšího:
> jen tak nastaví Consent Mode `default` **před** GTM a zachytí měřáky dřív, než se načtou.
> S `async` ho inline GTM snippet předběhne — GTM pak běží bez stavu souhlasu (= jako by byl
> udělen) a auto-block nezablokuje nic. Ověřeno v prohlížeči: s `async` proběhlo před souhlasem
> 7 ze 7 testovacích měřáků, bez něj 0 ze 7.
>
> Co je v `<head>` **nad** CookieKitem, zablokovat nejde. **Webflow:** vlož ho jako první řádek
> do *Site settings → Custom code → Head code*. Nativní integrace Webflow (Google Analytics,
> Clarity…) vkládá Webflow až za tento kód, takže na ně auto-block dosáhne.

---

## 1b. Embed režim — všechno řízené z aplikace (`data-config`)

Místo dlouhého snippetu s atributy stačí **jeden řádek s ID uložené konfigurace**:

```html
<script src="https://cookiekit.b-cdn.net/cookiekit/v1.js" data-config="nazev-webu"></script>
```

Widget si podle ID **stáhne uloženou konfiguraci** (z CookieKit Studia) a sám ji aplikuje — barvy, layout, texty, GTM, vše. Vzhled i texty se mění **ve Studiu**, klient do kódu nesahá; po uložení se lišta sama aktualizuje (cache ~5 min). Consent Mode default se nastaví hned (měření je OK), vzhled naběhne o chlup později. Když config chybí/nenačte se, widget nespadne (fail-open).

Zbytek příručky (§2–§12) popisuje **atributový režim** — buď ho použij přímo, nebo si ve Studiu naklikáš config a použiješ jednořádkový `data-config` embed výše.

---

## 2. Všechny atributy na `<script>` tagu

| Atribut | Hodnoty | Default | Popis |
|---|---|---|---|
| `data-config` | slug | — | ID uložené konfigurace ze Studia. Když je uvedený, widget si stáhne a aplikuje celý vzhled + texty + GTM (viz §1b) — ostatní atributy pak nepotřebuješ. |
| `data-gtm` | `GTM-XXXXXXX` | — | GTM container ID; widget ho sám načte (se správným pořadím Consent Mode). |
| `data-color` | hex barva | `#0a0a0a` | Akcentní barva (tlačítko „Přijmout"). |
| `data-layout` | `cloud` \| `bar` \| `box` \| `modal` | `cloud` | Vzhled lišty (viz §4). |
| `data-position` | viz §4 | dle layoutu | Umístění. |
| `data-theme` | `light` \| `dark` | `light` | Motiv lišty — nastav podle designu webu (web má vždy jeden vzhled). `dark` dává tmavou paletu; akcent můžeš dál řídit `data-color`. |
| `data-reopen` | `true` | — | Zobrazí plovoucí kolečko 🍪 (vlevo dole) pro znovuotevření souhlasu. |
| `data-autoblock` | `true` | — | Auto-block: sám neutralizuje známé ne-Google trackery (Clarity, Meta Pixel, Sklik, Hotjar, TikTok…) do souhlasu, bez ručního `type="text/plain"` tagování (~99 %; pro 100 % jistotu můžeš přímé skripty stále tagovat ručně — viz §7). Umísti CookieKit tag co nejvýš v `<head>`. |
| `data-lang` | kód jazyka | auto | Vynutí jazyk; jinak auto podle `<html lang>` → URL → prohlížeč. Vestavěné balíčky: **cs, en, de, sk, pl**. Libovolný další jazyk funguje taky — stačí dodat texty přes `window.CookieKit.texts` (viz §5). |
| `data-policy` | URL | — | Odkaz na cookie stránku (výchozí / cs). |
| `data-policy-version` | text | — | Verze zásad; při změně se lišta znovu zeptá (re-consent). |
| `data-site` | slug | hostname | Identifikátor webu pro log souhlasů (viz §8b — přiřazení k účtu). |
| `data-css` | `on` \| `off` | `on` | `off` = žádné vestavěné styly, celý vzhled si napíšeš vlastním CSS. |
| `data-region` | `eea` | `eea` | Region (zatím jen EEA default-denied). |
| `data-log` | URL \| `off` | vestavěný | Endpoint pro log souhlasů; `off` = nelogovat. |

---

## 3. Barvy a rozměry přes CSS proměnné

Přepiš je vlastním `<style>` v `<head>` (za snippetem). **Vždycky vyhrají nad defaultem.** Přes `data-color` jde jen akcent — všechno ostatní přes tyhle proměnné:

```html
<style>
#ckit{
  --ckit-accent:        #0a0a0a;   /* tlačítko Přijmout (pozadí) */
  --ckit-accent-text:   #ffffff;   /* text v tlačítku Přijmout */
  --ckit-reject-bg:     #ffffff;   /* tlačítko Odmítnout (pozadí) */
  --ckit-reject-text:   #16181d;   /* text v Odmítnout */
  --ckit-reject-border: #111111;   /* rámeček Odmítnout */
  --ckit-bg:            #ffffff;   /* pozadí lišty */
  --ckit-text:          #16181d;   /* hlavní text */
  --ckit-muted:         #6b7280;   /* popisky / sekundární text */
  --ckit-border:        #ececec;   /* oddělovací linky */
  --ckit-radius:        16px;      /* zaoblení karty */
  --ckit-btn-radius:    10px;      /* zaoblení tlačítek */
  --ckit-shadow:        0 16px 50px -12px rgba(0,0,0,.28); /* stín */
  --ckit-overlay:       rgba(15,18,20,.55);  /* ztmavení pozadí u modalu */
  --ckit-max:           920px;     /* max. šířka (cloud) */
  --ckit-box-w:         400px;     /* šířka (box v rohu) */
  --ckit-modal-w:       500px;     /* šířka (modal) */
  --ckit-font:          inherit;   /* font — např. 'Inter, sans-serif' */
}
</style>
```

Nemusíš uvádět všechny — jen ty, které měníš.

---

## 4. Layout varianty (`data-layout` + `data-position`)

| `data-layout` | Popis | Platné `data-position` (**tučně** = default) |
|---|---|---|
| `cloud` | Zaoblená karta na šířku, uprostřed dole. | **`bottom`**, `top` |
| `bar` | Pruh přes celou šířku, hranaté rohy. | **`bottom`**, `top` |
| `box` | Kompaktní karta v rohu, tlačítka pod sebou. | **`bottom-right`**, `bottom-left`, `top-right`, `top-left` |
| `modal` | Vycentrovaná karta se ztmaveným pozadím. | vždy uprostřed |

Modal má navíc křížek (×) pro zavření (= odmítnout). U znovuotevřené lišty (souhlas už existuje) se dá zavřít klikem mimo nebo klávesou ESC; při první návštěvě ne (uživatel musí zvolit).

---

## 5. Vlastní texty a per-jazyk odkazy (`window.CookieKit`)

Vlož **před** snippet. Přepíšeš jen to, co uvedeš (zbytek zůstane výchozí).

```html
<script>
window.CookieKit = {
  texts: {
    cs: {
      title: "Používáme cookies",
      desc: "Souhlasíte s používáním cookies pro měření návštěvnosti a lepší reklamu?",
      moreInfo: "Více informací",
      acceptAll: "Přijmout vše",
      rejectAll: "Odmítnout vše",
      settings: "Nastavení",
      save: "Uložit výběr",
      catNecessary: "Nezbytné", catNecessaryDesc: "Nutné pro fungování webu. Nelze vypnout.",
      catAnalytics: "Analytické", catAnalyticsDesc: "Měření návštěvnosti a chování.",
      catMarketing: "Marketingové", catMarketingDesc: "Reklama, remarketing a konverze."
    },
    en: { title: "We use cookies", acceptAll: "Accept all", rejectAll: "Reject all" }
  },
  policy: { cs: "/informace-o-cookies", en: "/en/cookie-policy", de: "/de/cookie-richtlinie" },
  autoClear: { analytics: ["_ga", "_ga_*", "_clck"], marketing: ["_fbp", "_gcl_*"] }
};
</script>
<script src="https://cookiekit.b-cdn.net/cookiekit/v1.js" data-gtm="GTM-XXX"></script>
```

- `texts` — přepis/doplnění textů per jazyk (**jakýkoli** kód jazyka — cs/en/de/sk/pl jsou vestavěné, ostatní přidáš sem). Klíče viz výše. Widget podle `<html lang>` sám vybere správný jazyk.
  Kromě klíčů výše jsou ještě pro výpis cookies (§6b): `cookieList`, `colName`, `colProvider`, `colPurpose`, `colExpiry`.
- `policy` — odkaz na cookie stránku per jazyk (má přednost před `data-policy`).
- `autoClear` — seznam cookies, které se smažou při odvolání dané kategorie (podporuje `*` na konci = prefix).

**Jak widget vybere jazyk:** `data-lang` → `<html lang>` → první segment URL (`/en/…`) → jazyk prohlížeče →
`cs`. Vybere ale jen z jazyků, které **umí** — to jsou vestavěné balíčky (cs, en, de, sk, pl) **plus každý
jazyk, pro který mu tady dodáš `texts`**. Kódy jsou dvoupísmenné (ISO 639-1); regionální varianty typu
`pt-BR` se ořežou na `pt`. Pro jazyk bez vestavěného balíčku se jako základ vezmou české texty a přepíšou
se tím, co dodáš — proto u vlastního jazyka vyplň **všechny** klíče.

**Ve Studiu:** jazyk se přepíná vpravo v liště nad panelem (chipy `CS EN DE SK PL +`) — přepíná zároveň
texty i náhled. Tlačítkem `+` přidáš vlastní jazyk (kód + název), tečka na chipu značí, že jazyk má vlastní
texty, `×` ho odebere. URL cookie stránky se zadává pro právě zvolený jazyk a ukládá se do mapy `policies`.

---

## 6. Kategorie souhlasu → Google Consent Mode v2

Lišta má 3 kategorie a mapuje je takto:

| Kategorie | Co povolí (Consent Mode signály) |
|---|---|
| **Nezbytné** (vždy zapnuto) | `security_storage`, `functionality_storage` |
| **Analytické** | `analytics_storage`, `personalization_storage` |
| **Marketingové** | `ad_storage`, `ad_user_data`, `ad_personalization` |

Před souhlasem je vše `denied`. Po volbě widget zavolá `gtag('consent','update',…)` **a** pushne `dataLayer` event `ckit_consent_update` (klíče `consent_analytics`, `consent_marketing` s hodnotou `granted`/`denied`).

---

## 6b. Výpis konkrétních cookies v „Nastavení"

Lišta umí pod každou kategorií vypsat **cookies, které sken na webu opravdu našel** —
název, poskytovatel, účel a platnost, v rozbalovací tabulce (jako to dělá Cookiebot).
Není to ručně psaný seznam: bere se z posledního skenu, takže **po každém skenu se sám
aktualizuje** (měsíční cron nebo ručně ve Studiu).

**Embed režim (`data-config`)** — zapni ve Studiu na záložce Layout přepínač
*„V Nastavení vypsat konkrétní cookies z posledního skenu"* a ulož. Cookies se pak posílají
spolu s konfigurací, klient do kódu nesahá. Bez skenu se nevypíše nic a lišta vypadá jako dosud.

**Atributový režim** — seznam dodáš sám přes `window.CookieKit.cookies`:

```html
<script>
window.CookieKit = {
  cookies: {
    necessary: [{ n: "ckit_consent", p: "Web", u: "Uchování volby souhlasu", d: "6 měsíců" }],
    analytics: [{ n: "_ga", p: "Google Analytics", u: "Rozlišení návštěvníků", d: "2 roky" }],
    marketing: [{ n: "_fbp", p: "Meta", u: "Měření konverzí z reklam", d: "3 měsíce" }]
  }
};
</script>
```

Klíče jsou zkrácené, protože se posílají každému návštěvníkovi: `n` = název, `p` = poskytovatel,
`u` = účel, `d` = platnost. Kategorie jsou jen `necessary` / `analytics` / `marketing`;
co sken neumí zařadit, spadne do `necessary` (nic se nezahazuje).

> Popisky sloupců a odkaz „Zobrazit cookies" se překládají klíči `cookieList`, `colName`,
> `colProvider`, `colPurpose`, `colExpiry` (§5). Účely z automatického skenu jsou česky —
> pro cizojazyčný web si je přepiš přes `cookies` ručně.

---

## 7. Blokování měřáků do souhlasu

**Google tagy** (GA4, Ads) přes GTM řídí Consent Mode automaticky.

**Ne-Google tagy v GTM** (Clarity, Meta Pixel, Sklik, Hotjar) — v GTM u každého tagu nastav **Consent Settings → „Require additional consent"**:
- Meta Pixel / Sklik → `ad_storage`, `ad_user_data`
- Clarity / Hotjar → `analytics_storage`

**Skripty vlepené napřímo do webu** (mimo GTM) — přeznač je, aby se spustily až po souhlasu:

```html
<!-- skript se aktivuje až po souhlasu s danou kategorií -->
<script type="text/plain" data-ckit-category="analytics" src="https://www.clarity.ms/tag/XXXX"></script>
<script type="text/plain" data-ckit-category="marketing">/* fbq init … */</script>
<!-- iframe/img: použij data-src místo src -->
<iframe data-ckit-category="marketing" data-src="https://www.youtube.com/embed/…"></iframe>
```

`data-ckit-category` = `analytics` nebo `marketing`.

---

## 8. Znovuotevření souhlasu

Kdekoli na webu (patička, cookie stránka):

```html
<a href="#" onclick="CookieKit.show();return false;">Nastavení cookies</a>
```

Nebo zapni plovoucí kolečko atributem `data-reopen="true"`.

JS API (na `window.CookieKit`): `CookieKit.show()` otevře lištu, `CookieKit.hide()` zavře, `CookieKit.getConsent()` vrátí uloženou volbu.

---

## 8b. Doklad o souhlasu — kdo ho vidí

Každý souhlas se loguje a v záložce **Souhlasy** ve Studiu jde vyexportovat do CSV
(doklad pro GDPR). Záznamy jsou **oddělené po účtech** — vidíš jen weby, které
patří tobě; jiný účet se k nim nedostane.

Přiřazení k účtu vzniká **při zápisu** souhlasu, a to takto (v tomto pořadí):

1. `data-config="slug"` (embed režim) — nejspolehlivější, souhlas se rovnou
   naváže na tvou konfiguraci;
2. jinak se hostname webu porovná s tím, co má konfigurace vyplněné
   (**Web → site**, případně URL ze záložky **Scan**).

**Prakticky:** používej `data-config`, nebo si ve Studiu vyplň pole *site*.
Když nesedí ani jedno, souhlasy se sice uloží, ale v dashboardu se ti neukážou
(nejde je přiřadit k účtu).

---

## 9. Plně vlastní design (`data-css="off"`)

Když chceš lištu nastylovat úplně od nuly, dej `data-css="off"` — widget nevloží žádné vlastní styly, jen vykreslí markup s těmito třídami (stabilní, neměnné):

```
#ckit                     kontejner (fixed)
  .ckit-banner            karta
    .ckit-inner           vnitřní padding
      .ckit-close         křížek (jen modal)
      .ckit-title         nadpis
      .ckit-desc          popis
        .ckit-link        odkaz „Více informací"
      .ckit-settings      panel kategorií (skrytý dokud se neotevře)
        .ckit-cat         řádek kategorie
          .ckit-cat-label / .ckit-cat-desc / .ckit-toggle
      .ckit-actions       řádek tlačítek
        .ckit-manage      odkaz „Nastavení"
        .ckit-btns
          .ckit-btn.ckit-btn-primary   Přijmout
          .ckit-btn.ckit-btn-reject    Odmítnout
          #ckit-save                   Uložit výběr
#ckit-fab                 plovoucí kolečko (když data-reopen)
```

Třídy se nemění mezi verzemi → tvoje CSS drží.

---

## 10. Hotové příklady

**Neopharma (zelená, cloud, plovoucí tlačítko):**
```html
<script src="https://cookiekit.b-cdn.net/cookiekit/v1.js"
        data-gtm="GTM-KX9ZQXQ" data-color="#95c11f"
        data-reopen="true" data-policy="/legal/legal"
        data-policy-version="2026-07" data-site="neopharma"></script>
```

**Modal, tmavý motiv (jedním atributem), fialový akcent:**
```html
<script src="https://cookiekit.b-cdn.net/cookiekit/v1.js"
        data-gtm="GTM-ABC123" data-layout="modal" data-theme="dark"
        data-color="#8b5cf6" data-site="muj-web"></script>
```

**Tmavý s vlastními odstíny a fontem (přes CSS proměnné):**
```html
<style>
#ckit{ --ckit-bg:#16181d; --ckit-text:#f3f4f6; --ckit-muted:#9aa2af;
       --ckit-accent:#8b5cf6; --ckit-accent-text:#fff; --ckit-reject-bg:#16181d;
       --ckit-reject-text:#f3f4f6; --ckit-reject-border:#3a414d;
       --ckit-radius:20px; --ckit-font:'Inter',sans-serif; }
</style>
<script src="https://cookiekit.b-cdn.net/cookiekit/v1.js"
        data-gtm="GTM-ABC123" data-layout="modal" data-site="muj-web"></script>
```

**Box vlevo nahoře, bez vlastního designu:**
```html
<script src="https://cookiekit.b-cdn.net/cookiekit/v1.js"
        data-gtm="GTM-ABC123" data-layout="box" data-position="top-left"
        data-color="#2563eb" data-site="muj-web"></script>
```

---

## 11. Kam s tím ve Webflow

- **Snippet** → Webflow → Site Settings → Custom Code → **Head Code**.
- **Cookie stránka** — Studio (záložka Scan) umí z detekovaných měřáků vygenerovat hotovou HTML tabulku cookies → vložíš do **Webflow Embed** na stránku (např. `/informace-o-cookies`).
- Případný **GTM noscript** (fallback bez JS) do Footer Code — nepovinné.

---

## 11b. Sken webu — co umí

Záložka **Scan** ve Studiu otevře web v **reálném headless prohlížeči**, projde několik
stránek téhož webu a zaznamená:

- **jaké nástroje se opravdu načetly** — podle hostů, na které web sáhne (Adform, Clarity, Leady…),
- **co je uvnitř GTM** — kontejner je veřejný, takže se z něj přečtou i tagy, které vystřelí
  až po souhlasu (Google Ads, custom HTML s pixely). Tohle statický sken HTML nikdy neuvidí.
- **jaké cookies se skutečně nastaví** — přes CDP, tedy včetně third-party a HttpOnly,
  s kategorií, dobou platnosti a doménou. Co neumíme pojmenovat, ukážeme jako
  *neklasifikované* i s doménou — nikdy to nezmizí.

Sken **vlastní uložené konfigurace** běží se **simulovaným souhlasem** (nastaví se
`ckit_consent`), aby bylo vidět i to, co naběhne až po odsouhlasení. Ad-hoc sken cizí URL
běží **bez souhlasu** — cizí cookie lištu nikdy neodklikáváme.

Když se prohlížeč nepodaří spustit, sken **nespadne**: přepne se do nouzového režimu
(statické HTML) a Studio to napíše.

> Když sken najde měřák, který lišta neblokuje, zapni **Auto-block** (záložka Layout).
> Auto-block zná mj. Adform, Clarity, Meta Pixel, Sklik, Hotjar, Smartlook, Criteo,
> Glami/Heureka/Zboží, Ecomail a HubSpot.

---

## 12. Rychlá reference pro AI (shrnutí)

- Nasazení = 1 `<script src="…/v1.js">` **bez `async`, jako úplně první skript v `<head>`** (nad GTM), s atributy.
- Vzhled: `data-layout` (cloud/bar/box/modal), `data-position`, `data-color` (akcent), zbytek přes CSS proměnné `--ckit-*` na `#ckit`.
- Texty a per-jazyk odkazy: `window.CookieKit = { texts:{…}, policy:{…} }` před snippetem.
- Chování: `data-reopen="true"` (plovoucí tlačítko), `CookieKit.show()` (odkaz na znovuotevření).
- Měření: `data-gtm`, kategorie mapované na Consent Mode v2; přímé skripty blokovat `type="text/plain" data-ckit-category="analytics|marketing"`.
- Plně vlastní styl: `data-css="off"` + třídy `.ckit-*`.
