diff --git a/templates/booking/create_step_2.html.twig b/templates/booking/create_step_2.html.twig
index 3c67349..f18e88f 100644
--- a/templates/booking/create_step_2.html.twig
+++ b/templates/booking/create_step_2.html.twig
@@ -1,5 +1,55 @@
{% extends 'layout.html.twig' %}
+{# Local form theme override for consistent fieldset rendering #}
+{% use 'forms.html.twig' %}
+
+{% block form_row %}
+ {%- if form.vars.expanded is defined and form.vars.expanded -%}
+ {# Expanded forms get fieldset wrapper #}
+
- {% if participant.skiPass is defined %}
- {{ form_row(participant.skiPass, {
- 'attr': {
- 'hx-trigger': 'change',
- 'hx-post': path('app_booking_create_step_2_refresh'),
- 'hx-swap': 'none'
- }
- }) }}
- {% else %}
-
- Skipass nicht wählbar
-
- {% endif %}
- {% if participant.courses is defined %}
- {{ form_row(participant.courses, {
- 'attr': {
- 'hx-trigger': 'change',
- 'hx-post': path('app_booking_create_step_2_refresh'),
- 'hx-swap': 'none'
- }
- }) }}
- {% else %}
-
- Kurse nicht wählbar
-
- {% endif %}
- {% if participant.additionalServices is defined %}
- {{ form_row(participant.additionalServices, {
- 'attr': {
- 'hx-trigger': 'change',
- 'hx-post': path('app_booking_create_step_2_refresh'),
- 'hx-swap': 'none'
- }
- }) }}
- {% else %}
-
- Zusatzleistungen nicht wählbar
-
- {% endif %}
- {% if participant.rentals is defined %}
- {{ form_row(participant.rentals, {
- 'attr': {
- 'hx-trigger': 'change',
- 'hx-post': path('app_booking_create_step_2_refresh'),
- 'hx-swap': 'none'
- }
- }) }}
- {% else %}
-
- Leihmaterial nicht wählbar
-
- {% endif %}
- {% if participant.rentalInsurance is defined %}
-
- {% else %}
-
- Leihmat.-Versicherung nicht wählbar
-
- {% endif %}
- {% if participant.board is defined %}
- {{ form_row(participant.board, {
- 'attr': {
- 'hx-trigger': 'change',
- 'hx-post': path('app_booking_create_step_2_refresh'),
- 'hx-swap': 'none'
- }
- }) }}
- {% else %}
-
- Verpflegung nicht wählbar
-
- {% endif %}
- {% if participant.insurance is defined %}
- {{ form_row(participant.insurance, {
- 'attr': {
- 'hx-trigger': 'change',
- 'hx-post': path('app_booking_create_step_2_refresh'),
- 'hx-swap': 'none'
- }
- }) }}
- {% else %}
-
- Versicherung nicht wählbar
-
- {% endif %}
+ {{ _self.service_field(participant, 'skiPass', 'Skipass', {
+ 'attr': {
+ 'hx-trigger': 'change',
+ 'hx-post': path('app_booking_create_step_2_refresh'),
+ 'hx-swap': 'none'
+ }
+ }) }}
+
+ {{ _self.service_field(participant, 'courses', 'Kurse', {
+ 'attr': {
+ 'hx-trigger': 'change',
+ 'hx-post': path('app_booking_create_step_2_refresh'),
+ 'hx-swap': 'none'
+ }
+ }) }}
+
+ {{ _self.service_field(participant, 'additionalServices', 'Zusatzleistungen', {
+ 'attr': {
+ 'hx-trigger': 'change',
+ 'hx-post': path('app_booking_create_step_2_refresh'),
+ 'hx-swap': 'none'
+ }
+ }) }}
+
+ {{ _self.service_field(participant, 'rentals', 'Leihmaterial', {
+ 'attr': {
+ 'hx-trigger': 'change',
+ 'hx-post': path('app_booking_create_step_2_refresh'),
+ 'hx-swap': 'none'
+ }
+ }) }}
+
+ {{ _self.checkbox_field(participant, 'rentalInsurance', 'Leihmaterial-Versicherung', {
+ 'attr': {
+ 'hx-trigger': 'change',
+ 'hx-post': path('app_booking_create_step_2_refresh'),
+ 'hx-swap': 'none'
+ }
+ }) }}
+
+ {{ _self.service_field(participant, 'board', 'Verpflegung', {
+ 'attr': {
+ 'hx-trigger': 'change',
+ 'hx-post': path('app_booking_create_step_2_refresh'),
+ 'hx-swap': 'none'
+ }
+ }) }}
+
+ {{ _self.service_field(participant, 'insurance', 'Reiseversicherung', {
+ 'attr': {
+ 'hx-trigger': 'change',
+ 'hx-post': path('app_booking_create_step_2_refresh'),
+ 'hx-swap': 'none'
+ }
+ }) }}
{# Transportation Services Section #}