`kind` w `create_presentation` wybiera runtime. HTML tego nie ustala.

Treść działa w sandboxowanym iframe: bez `localStorage`, bez ciasteczek, bez nawigacji okna nadrzędnego.

## Slajdy (`kind=presentation`)

Każdy slajd to element z klasą `slide`. Dokładnie jeden ma też klasę `active`. Resztę ukryj CSS-em:

```css
.slide { display: none; }
.slide.active { display: block; }
```

Projektuj każdy slajd na klatkę 16:9 (render 1280×720, potem skalowanie). Trzymaj treść w klatce, żeby zostawała wyśrodkowana.

```html
<section class="slide active" data-notes="Opening remarks.">
  <h1>Hello</h1>
</section>
<section class="slide" data-notes="Main point.">
  <h2>Topic</h2>
</section>
```

Prezzly wstrzykuje runtime przy serwowaniu. Nie potrzebujesz własnego JS do strzałek. Runtime przełącza `active` (klawiatura, widok prezentera, `?slide=N`, miniatury).

Prezentacja może sama przesuwać `active` handlerem ArrowLeft / ArrowRight; to jest respektowane.

Opcjonalne i nieszkodliwe:

```html
<script src="https://api.prezzly.ai/runtime/v1/prezzly-present.js"></script>
```

Nie wymagaj `prezzly.io` jako hosta runtime.

## Dashboardy (`kind=dashboard`)

Zbuduj jeden pionowo przewijany układ, nie slajdy. Oznacz główne sekcje przez `id` albo `data-prezzly-section` (fallback: `h1`–`h3`), żeby działała nawigacja i sync scrolla.

Linki wewnętrzne, przyciski i modale są w porządku. Te same reguły sandboxa.

## Notatki prelegenta

Notatki w `data-notes` na każdym `.slide` albo później przez `get_notes` / `set_note` / `set_notes`. Notatki z UI nadpisują te z kodu w widoku prezentera.

## Szablony

`list_templates` i `get_template` zwracają Twoje style, w tym `SKILL.md` i URL do pobrania. Buduj według tego skilla, potem upload przez `create_presentation`. Nie listuj szablonów przed pierwszym uploadem, chyba że użytkownik prosi o styl.

## Prezentacje z zewnątrz

Reveal.js, ręczny HTML i inne prezentacje 16:9 działają tak jak są, jeśli jeden slajd ma `active`, a CSS ukrywa resztę. Guest upload w aplikacji Prezzly przyjmuje ten sam `index.html` albo ZIP.

## Czego sandbox nie przepuszcza

Nie polegaj na `localStorage`, ciasteczkach ani nawigacji top window. Stan trzymaj w pamięci. Fonty i obrazki ładuj z plików prezentacji albo z URL-i `https`.

Jeśli slajdy się nie zmieniają, sprawdź, czy dokładnie jeden element ma jednocześnie `slide` i `active`. Jeśli dashboard nie ma nawigacji sekcji, dodaj `id` albo `data-prezzly-section` na głównych blokach. Zobacz [Rozwiązywanie problemów](/pl/docs/troubleshooting/).