diff --git a/.paul/ROADMAP.md b/.paul/ROADMAP.md
index ce1e76d..efece9b 100644
--- a/.paul/ROADMAP.md
+++ b/.paul/ROADMAP.md
@@ -13,7 +13,7 @@ Customowe przyciski szybkiego wypełniania formularza przygotowania przesyłki.
| Phase | Name | Plans | Status |
|-------|------|-------|--------|
| 23 | Shipment Presets Backend | 1/1 | Complete ✓ |
-| 24 | Shipment Presets UI | TBD | Not started |
+| 24 | Shipment Presets UI | 1/1 | Complete ✓ |
| 25 | Shipment Presets Management | TBD | Not started |
### Phase 23: Shipment Presets Backend
diff --git a/.paul/STATE.md b/.paul/STATE.md
index 1da90d6..39ffc97 100644
--- a/.paul/STATE.md
+++ b/.paul/STATE.md
@@ -10,10 +10,10 @@ See: .paul/PROJECT.md (updated 2026-03-12)
## Current Position
Milestone: v1.0 Presety przesyłek
-Phase: [2] of [3] (Shipment Presets UI)
+Phase: [3] of [3] (Shipment Presets Management)
Plan: Not started
-Status: Phase 23 complete, ready to plan Phase 24
-Last activity: 2026-03-22 — Phase 23 complete, transitioned to Phase 24
+Status: Phase 24 complete, ready to plan Phase 25
+Last activity: 2026-03-22 — Phase 24 complete, transitioned to Phase 25
Progress:
- v0.1 Initial Release: [██████████] 100% ✓
@@ -67,6 +67,11 @@ PLAN ──▶ APPLY ──▶ UNIFY
| 2026-03-17 | Email history jako wpisy w order_activity_log (nie osobna sekcja) | Faza 15 | Spójność z istniejącym UX — jeden timeline zamiast fragmentacji |
| 2026-03-17 | VariableResolver wydzielony z EmailTemplateController | Faza 15 | Reuse logiki zmiennych; resolwer niezależny od kontrolera szablonów |
+### Skill Audit (Faza 24, Plan 01)
+| Oczekiwany | Wywołany | Uwagi |
+|------------|---------|-------|
+| sonar-scanner | ✓ | 0 nowych issues na zmienionych plikach |
+
### Skill Audit (Faza 23, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|------------|---------|-------|
@@ -201,7 +206,7 @@ PLAN ──▶ APPLY ──▶ UNIFY
- **Delivery mapping "Szukaj..." layout** — JS `attachSelectFilter()` w allegro.php tworzy input search dla InPost/Apaczka selectów, wizualnie wygląda jakby należał do wiersza powyżej. Pre-existing bug, do naprawy osobno.
### Git State
-Last commit: d6375cc — fix(22-regon-save-fix): naprawa zapisu REGON, BDO, KRS i logo
+Last commit: 03a237e — feat(23-shipment-presets-backend): tabela DB, repository CRUD i JSON API
Branch: main
Feature branches merged: none
@@ -211,9 +216,9 @@ Brak.
## Session Continuity
Last session: 2026-03-22
-Stopped at: Phase 23 complete, ready to plan Phase 24
-Next action: /paul:plan for Phase 24 (Shipment Presets UI)
-Resume file: .paul/phases/23-shipment-presets-backend/23-01-SUMMARY.md
+Stopped at: Phase 24 complete, ready to plan Phase 25
+Next action: /paul:plan for Phase 25 (Shipment Presets Management)
+Resume file: .paul/phases/24-shipment-presets-ui/24-01-SUMMARY.md
Resume context:
- v0.1: COMPLETE ✓ (6 phases, 15 plans)
- v0.2: COMPLETE ✓ (1 phase, 5 plans)
diff --git a/.paul/phases/24-shipment-presets-ui/24-01-PLAN.md b/.paul/phases/24-shipment-presets-ui/24-01-PLAN.md
new file mode 100644
index 0000000..b0ac396
--- /dev/null
+++ b/.paul/phases/24-shipment-presets-ui/24-01-PLAN.md
@@ -0,0 +1,254 @@
+---
+phase: 24-shipment-presets-ui
+plan: 01
+type: execute
+wave: 1
+depends_on: ["23-01"]
+files_modified:
+ - resources/views/shipments/prepare.php
+ - resources/scss/modules/_shipment-presets.scss
+ - resources/scss/main.scss
+autonomous: false
+---
+
+
+## Goal
+Dodać sekcję presetów przesyłek nad formularzem przygotowania przesyłki: kolorowe przyciski, popup tworzenia presetu (nazwa + kolor), JS autofill formularza po kliknięciu.
+
+## Purpose
+Użytkownik chce jednym kliknięciem wypełnić formularz przesyłki zapisanymi parametrami — bez ręcznego wybierania przewoźnika, usługi, wymiarów za każdym razem.
+
+## Output
+- Sekcja presetów z kolorowymi przyciskami nad formularzem
+- Popup do tworzenia presetu (nazwa + kolor) z bieżących wartości formularza
+- JS: autofill formularza po kliknięciu przycisku presetu
+- SCSS style dla presetów
+
+
+
+## Project Context
+@.paul/PROJECT.md
+@.paul/ROADMAP.md
+@.paul/STATE.md
+
+## Prior Work
+@.paul/phases/23-shipment-presets-backend/23-01-SUMMARY.md
+
+## Source Files
+@resources/views/shipments/prepare.php
+@src/Modules/Shipments/ShipmentPresetController.php
+@routes/web.php
+
+
+
+No specialized flows required for this plan (sonar-scanner required post-APPLY).
+
+
+
+
+## AC-1: Przyciski presetów widoczne nad formularzem
+```gherkin
+Given użytkownik otwiera stronę przygotowania przesyłki
+When w bazie istnieją presety
+Then nad formularzem wyświetlają się kolorowe przyciski z nazwami presetów
+And wyświetla się przycisk "Dodaj przycisk dostawy"
+```
+
+## AC-2: Kliknięcie presetu wypełnia formularz
+```gherkin
+Given preset ma zapisane: carrier=inpost, package_type=PACKAGE, weight=2kg, wymiary 30x25x10
+When użytkownik klika przycisk tego presetu
+Then formularz automatycznie wypełnia się tymi wartościami
+And odpowiedni panel przewoźnika staje się widoczny
+And usługa dostawy zostaje wybrana
+```
+
+## AC-3: Przycisk "Dodaj przycisk dostawy" tworzy preset z bieżących wartości
+```gherkin
+Given użytkownik wypełnił formularz (wybrał przewoźnika, usługę, wymiary itp.)
+When klika "Dodaj przycisk dostawy"
+Then pojawia się popup z polem nazwy i wyborem koloru
+When wpisuje nazwę i klika Zapisz
+Then preset zostaje zapisany przez API i przycisk pojawia się w sekcji
+```
+
+
+
+
+
+
+ Task 1: SCSS style dla presetów
+ resources/scss/modules/_shipment-presets.scss, resources/scss/main.scss
+
+ 1. Utworzyć `resources/scss/modules/_shipment-presets.scss`:
+ - `.shipment-presets` — kontener sekcji (flex, wrap, gap: 8px, margin-bottom: 16px)
+ - `.shipment-presets__btn` — przycisk presetu:
+ - Inline-flex, border-radius: 6px, padding: 6px 14px
+ - Biały tekst, tło z custom property `--preset-color`
+ - Hover: opacity 0.85, cursor pointer
+ - Font-size: 13px, font-weight: 500
+ - `.shipment-presets__add` — przycisk dodawania:
+ - Border: 1px dashed #ccc, background transparent
+ - Color: #666, hover: border-color #999
+ - `.preset-modal` — overlay popup:
+ - Position fixed, inset 0, background rgba(0,0,0,0.4), z-index 1000
+ - Display flex, align-items center, justify-content center
+ - `.preset-modal__content` — zawartość popup:
+ - Background white, border-radius 8px, padding 24px, min-width 360px, max-width 420px
+ - `.preset-modal__colors` — grid kolorów:
+ - Display flex, gap 8px, flex-wrap wrap
+ - `.preset-modal__color-swatch` — próbka koloru:
+ - Width 28px, height 28px, border-radius 50%, cursor pointer
+ - Border: 2px solid transparent
+ - `&.is-selected` — border-color: #333
+
+ 2. Dodać `@import 'modules/shipment-presets';` w `resources/scss/main.scss`
+
+ Sprawdzić że plik SCSS istnieje i import dodany do main.scss
+ AC-1 partially: style gotowe
+
+
+
+ Task 2: HTML sekcja presetów + popup + JavaScript
+ resources/views/shipments/prepare.php
+
+ 1. **Sekcja presetów** — wstawić PRZED `