diff --git a/assets/dbp-signature.html.ejs b/assets/dbp-signature.html.ejs
index 615e3018f3c639403c6d3e63e054927dadd00ff9..472aac624480178c649e3652508df721b74a4971 100644
--- a/assets/dbp-signature.html.ejs
+++ b/assets/dbp-signature.html.ejs
@@ -57,11 +57,13 @@
               lang="de" entry-point-url="<%= entryPointURL %>"
               show-nextcloud-file-picker
               <%= buildInfo.env !== 'production' ? 'allow-signature-rotation' : '' %>
+              <%= buildInfo.env !== 'production' ? 'show-clipboard' : '' %>
               nextcloud-web-app-password-url="<%= nextcloudWebAppPasswordURL %>"
               nextcloud-webdav-url="<%= nextcloudWebDavURL %>"
               nextcloud-name="<%= nextcloudName %>"
               nextcloud-file-url="<%= nextcloudFileURL %>"
-              initial-file-handling-state>
+              initial-file-handling-state
+              clipboard-files>
     <<%= name %>
         subscribe="lang,entry-point-url"
         auth requested-login-status analytics-event
diff --git a/src/dbp-official-signature-pdf-upload.js b/src/dbp-official-signature-pdf-upload.js
index 3a02950138857e293124abd6147777692bd44e9e..1db422ee19f9c123cf28dd85310c3164827df925 100644
--- a/src/dbp-official-signature-pdf-upload.js
+++ b/src/dbp-official-signature-pdf-upload.js
@@ -807,9 +807,9 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
                     <div class="left-container">
                         <div class="files-block field ${classMap({hidden: !this.queueBlockEnabled})}">
                             <!-- Queued files headline and queueing spinner -->
-                            <h2 class="${classMap({"is-disabled": this.isUserInterfaceDisabled()})}">
+                            <h3 class="${classMap({"is-disabled": this.isUserInterfaceDisabled()})}">
                                 ${i18n.t('official-pdf-upload.queued-files-label')}
-                            </h2>
+                            </h3>
                             <!-- Buttons to start/stop signing process and clear queue -->
                             <div class="control field">
                                 <button @click="${this.clearQueuedFiles}"
@@ -847,7 +847,7 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
                         </div>
                         <!-- List of signed PDFs -->
                         <div class="files-block field ${classMap({hidden: this.signedFilesCount === 0, "is-disabled": this.isUserInterfaceDisabled()})}">
-                            <h2>${i18n.t('official-pdf-upload.signed-files-label')}</h2>
+                            <h3>${i18n.t('official-pdf-upload.signed-files-label')}</h3>
                             <!-- Button to download all signed PDFs -->
                             <div class="field ${classMap({hidden: this.signedFilesCount === 0})}">
                                 <div class="control">
@@ -869,7 +869,7 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
                         </div>
                         <!-- List of errored files -->
                         <div class="files-block error-files field ${classMap({hidden: this.errorFilesCount === 0, "is-disabled": this.isUserInterfaceDisabled()})}">
-                            <h2>${i18n.t('official-pdf-upload.error-files-label')}</h2>
+                            <h3>${i18n.t('official-pdf-upload.error-files-label')}</h3>
                             <!-- Button to upload errored files again -->
                             <div class="field ${classMap({hidden: this.errorFilesCount === 0})}">
                                 <div class="control">
@@ -894,7 +894,7 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
                     <div class="right-container">
                         <!-- PDF preview -->
                         <div id="pdf-preview" class="field ${classMap({hidden: !this.signaturePlacementInProgress})}">
-                            <h2>${this.withSigBlock ? i18n.t('official-pdf-upload.signature-placement-label') : i18n.t('official-pdf-upload.preview-label')}</h2>
+                            <h3>${this.withSigBlock ? i18n.t('official-pdf-upload.signature-placement-label') : i18n.t('official-pdf-upload.preview-label')}</h3>
                             <div class="box-header">
                                 <div class="filename">
                                     <strong>${this.currentFile.name}</strong> (${humanFileSize(this.currentFile !== undefined ? this.currentFile.size : 0)})
diff --git a/src/dbp-qualified-signature-pdf-upload.js b/src/dbp-qualified-signature-pdf-upload.js
index 8ad707b6c2d6328454748324ffe72f867bcfb3d0..c75fe5cfc34cd862e205fb43a2ea2f33be70c4e0 100644
--- a/src/dbp-qualified-signature-pdf-upload.js
+++ b/src/dbp-qualified-signature-pdf-upload.js
@@ -975,9 +975,9 @@ class QualifiedSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitEle
                     <div class="left-container">
                         <div class="files-block field ${classMap({hidden: !this.queueBlockEnabled})}">
                             <!-- Queued files headline and queueing spinner -->
-                            <h2 class="${classMap({"is-disabled": this.isUserInterfaceDisabled()})}">
+                            <h3 class="${classMap({"is-disabled": this.isUserInterfaceDisabled()})}">
                                 ${i18n.t('qualified-pdf-upload.queued-files-label')}
-                            </h2>
+                            </h3>
                             <!-- Buttons to start/stop signing process and clear queue -->
                             <div class="control field">
                                 <button @click="${this.clearQueuedFiles}"
@@ -1011,7 +1011,7 @@ class QualifiedSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitEle
                         </div>
                         <!-- List of signed PDFs -->
                         <div class="files-block field ${classMap({hidden: this.signedFilesCount === 0, "is-disabled": this.isUserInterfaceDisabled()})}">
-                            <h2>${i18n.t('qualified-pdf-upload.signed-files-label')}</h2>
+                            <h3>${i18n.t('qualified-pdf-upload.signed-files-label')}</h3>
                             <!-- Button to download all signed PDFs -->
                             <div class="field ${classMap({hidden: this.signedFilesCount === 0})}">
                                 <div class="control">
@@ -1033,7 +1033,7 @@ class QualifiedSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitEle
                         </div>
                         <!-- List of errored files -->
                         <div class="files-block error-files field ${classMap({hidden: this.errorFilesCount === 0, "is-disabled": this.isUserInterfaceDisabled()})}">
-                            <h2>${i18n.t('qualified-pdf-upload.error-files-label')}</h2>
+                            <h3>${i18n.t('qualified-pdf-upload.error-files-label')}</h3>
                             <!-- Button to upload errored files again -->
                             <div class="field ${classMap({hidden: this.errorFilesCount === 0})}">
                                 <div class="control">
@@ -1058,7 +1058,7 @@ class QualifiedSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitEle
                     <div class="right-container">
                         <!-- PDF preview -->
                         <div id="pdf-preview" class="field ${classMap({hidden: !this.signaturePlacementInProgress})}">
-                            <h2>${this.withSigBlock ? i18n.t('qualified-pdf-upload.signature-placement-label') : i18n.t('qualified-pdf-upload.preview-label')}</h2>
+                            <h3>${this.withSigBlock ? i18n.t('qualified-pdf-upload.signature-placement-label') : i18n.t('qualified-pdf-upload.preview-label')}</h3>
                             <div class="box-header">
                                 <div class="filename">
                                     <strong>${this.currentFile.name}</strong> (${humanFileSize(this.currentFile !== undefined ? this.currentFile.size : 0)})
@@ -1082,7 +1082,7 @@ class QualifiedSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitEle
                         </div>
                         <!-- External auth -->
                         <div id="external-auth" class="files-block field ${classMap({hidden: !this.externalAuthInProgress})}">
-                            <h2>${i18n.t('qualified-pdf-upload.current-signing-process-label')}</h2>
+                            <h3>${i18n.t('qualified-pdf-upload.current-signing-process-label')}</h3>
                             <div class="box">
                                 <div class="box-header">
                                     <div class="filename">
diff --git a/src/dbp-signature-verification-full.js b/src/dbp-signature-verification-full.js
index 083285ec8151b449b281b2578bd3cfa1146a5ea9..70f5504ca2591318259d72e023c7bad084462412 100644
--- a/src/dbp-signature-verification-full.js
+++ b/src/dbp-signature-verification-full.js
@@ -731,9 +731,9 @@ class SignatureVerificationFull extends ScopedElementsMixin(DBPSignatureLitEleme
                     <div class="left-container">
                         <div class="files-block field ${classMap({hidden: !this.queueBlockEnabled})}">
                             <!-- Queued files headline and queueing spinner -->
-                            <h2 class="${classMap({"is-disabled": this.isUserInterfaceDisabled()})}">
+                            <h3 class="${classMap({"is-disabled": this.isUserInterfaceDisabled()})}">
                                 ${i18n.t('signature-verification.queued-files-label')}
-                            </h2>
+                            </h3>
                             <!-- Buttons to start/stop verification process and clear queue -->
                             <div class="control field">
                                 <button @click="${this.clearQueuedFiles}"
@@ -771,7 +771,7 @@ class SignatureVerificationFull extends ScopedElementsMixin(DBPSignatureLitEleme
                         </div>
                         <!-- List of errored files -->
                         <div class="files-block error-files field ${classMap({hidden: this.errorFilesCount === 0, "is-disabled": this.isUserInterfaceDisabled()})}">
-                            <h2>${i18n.t('signature-verification.error-files-label')}</h2>
+                            <h3>${i18n.t('signature-verification.error-files-label')}</h3>
                             <!-- Button to upload errored files again -->
                             <div class="field ${classMap({hidden: this.errorFilesCount === 0})}">
                                 <div class="control">
@@ -821,7 +821,7 @@ class SignatureVerificationFull extends ScopedElementsMixin(DBPSignatureLitEleme
                 </div>
                 <!-- List of verified PDFs -->
                 <div class="verified-files files-block field ${classMap({hidden: this.verifiedFilesCount === 0, "is-disabled": this.isUserInterfaceDisabled()})}">
-                    <h2>${i18n.t('signature-verification.verified-files-label')}</h2>
+                    <h3>${i18n.t('signature-verification.verified-files-label')}</h3>
                     <!-- Button to clear verified PDFs -->
                     <div class="field ${classMap({hidden: this.verifiedFilesCount === 0})}">
                         <div class="control">
diff --git a/vendor/toolkit b/vendor/toolkit
index f3659a0bf0a476ddfb33729067f4b0eb59bc1872..e2996988724403d0423d37979f9786fe832700c1 160000
--- a/vendor/toolkit
+++ b/vendor/toolkit
@@ -1 +1 @@
-Subproject commit f3659a0bf0a476ddfb33729067f4b0eb59bc1872
+Subproject commit e2996988724403d0423d37979f9786fe832700c1