diff --git a/assets/apple-touch-icon.png b/assets/apple-touch-icon.png
deleted file mode 100644
index 6518255363cd9ddce5f53825bed8a01120acf0f4..0000000000000000000000000000000000000000
Binary files a/assets/apple-touch-icon.png and /dev/null differ
diff --git a/assets/dbp-signature.html.ejs b/assets/dbp-signature.html.ejs
index dbfe10eb6a2323638bbf5484764ca932a33ba392..776d22a60285dac1dbea71dfe6e2dcc634a3d4bc 100644
--- a/assets/dbp-signature.html.ejs
+++ b/assets/dbp-signature.html.ejs
@@ -18,24 +18,20 @@
     <meta property="og:site_name" content="esign" />
 
     <!-- Favicons -->
-    <link rel="shortcut icon" type="image/x-icon" href="<%= getPrivateUrl('favicon.ico') %>">
-    <link rel="icon" type="image/svg+xml" href="<%= getPrivateUrl('favicon.svg') %>" sizes="any">
-
-    <!-- PWA manifest file -->
-    <link rel="manifest" href="<%= getUrl(name + '.manifest.json') %>">
-
-    <!-- PWA iphone -->
-    <link rel="apple-touch-icon" sizes="180x180" href="<%= getPrivateUrl('apple-touch-icon.png') %>">
-    <link rel="icon" type="image/png" sizes="32x32" href="<%= getPrivateUrl('icon-32x32.png') %>">
-    <link rel="icon" type="image/png" sizes="16x16" href="<%= getPrivateUrl('icon-16x16.png') %>">
-    <link rel="mask-icon" href="<%= getPrivateUrl('safari-pinned-tab.svg') %>" color="#e4154b">
+    <link rel="shortcut icon" type="image/x-icon" href="<%= getPrivateUrl('icon/favicon.ico') %>">
+    <link rel="icon" type="image/svg+xml" href="<%= getPrivateUrl('icon/favicon.svg') %>">
+    <link rel="apple-touch-icon" sizes="180x180" href="<%= getPrivateUrl('icon/apple-touch-icon.png') %>">
+    <link rel="icon" type="image/png" sizes="32x32" href="<%= getPrivateUrl('icon/favicon-32x32.png') %>">
+    <link rel="icon" type="image/png" sizes="16x16" href="<%= getPrivateUrl('icon/favicon-16x16.png') %>">
+    <link rel="manifest" href="<%= getUrl(name + '.webmanifest') %>">
+    <link rel="mask-icon" href="<%= getPrivateUrl('icon/safari-pinned-tab.svg') %>" color="#e4154b">
+    <meta name="theme-color" content="#ffffff">
     <meta name="apple-mobile-web-app-status-bar-style" content="white">
 
     <!-- Loading spinner -->
     <script type="module">
-        //import {Spinner} from '@tugraz/web-components';
-        //import {Spinner} from '<%= getPrivateUrl('spinner.js') %>';
-        //customElements.define('dbp-loading-spinner', Spinner);
+        import {Spinner} from '<%= getPrivateUrl('tug_spinner.js') %>';
+        customElements.define('tug-spinner', Spinner);
     </script>
 
     <!-- App bundles-->
@@ -53,11 +49,20 @@
         body {
             font-family: 'Source Sans Pro', 'Calibri', 'Arial', 'sans-serif';
             font-weight: 300;
+            font-size: 16px;
             margin: 0;
         }
 
+        #spinner{
+            height: 100vh;
+            width: 100vw;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+        }
+
         /* TU-Graz style override */
-        html {
+        .light-theme {
             --dbp-override-background: white;
             --dbp-override-content: black;
 
@@ -111,7 +116,8 @@
     build-url='<%= buildInfo.url %>'
     build-time='<%= buildInfo.time %>'
     env='<%= buildInfo.env %>'
->
+    themes='[{"class": "light-theme", "icon": "sun", "name": "Light Mode"}]'
+><tug-spinner id='spinner'></tug-spinner>
 </<%= name %>>
 
 <template id="global-override">
diff --git a/assets/favicon.ico b/assets/favicon.ico
deleted file mode 100644
index 828a4bb04f6b3bf04967ebb9d6c29fc26f2e406f..0000000000000000000000000000000000000000
Binary files a/assets/favicon.ico and /dev/null differ
diff --git a/assets/icon-128x128.png b/assets/icon-128x128.png
deleted file mode 100644
index a6c411a903ea4644f655b35d30e5d86a105fc35f..0000000000000000000000000000000000000000
Binary files a/assets/icon-128x128.png and /dev/null differ
diff --git a/assets/icon-144x144.png b/assets/icon-144x144.png
deleted file mode 100644
index ad46fc0a19a1494f474ec8b1177d73e558d6d102..0000000000000000000000000000000000000000
Binary files a/assets/icon-144x144.png and /dev/null differ
diff --git a/assets/icon-152x152.png b/assets/icon-152x152.png
deleted file mode 100644
index b9840f5794a4c3e2c6b64c5591597993f984d122..0000000000000000000000000000000000000000
Binary files a/assets/icon-152x152.png and /dev/null differ
diff --git a/assets/icon-16x16.png b/assets/icon-16x16.png
deleted file mode 100644
index de1387d75ae84fcc19fce0484787a313a1347b35..0000000000000000000000000000000000000000
Binary files a/assets/icon-16x16.png and /dev/null differ
diff --git a/assets/icon-180x180.png b/assets/icon-180x180.png
deleted file mode 100644
index b4bf947faf1a0745e914d9fe532a7b90fe125797..0000000000000000000000000000000000000000
Binary files a/assets/icon-180x180.png and /dev/null differ
diff --git a/assets/icon-192x192.png b/assets/icon-192x192.png
deleted file mode 100644
index edce9e875d5e2961ed0a3b20ac85fdd084ccd6bc..0000000000000000000000000000000000000000
Binary files a/assets/icon-192x192.png and /dev/null differ
diff --git a/assets/icon-256x256.png b/assets/icon-256x256.png
deleted file mode 100644
index 9f0603b5a9c715c41f25807f441416c1839bf94c..0000000000000000000000000000000000000000
Binary files a/assets/icon-256x256.png and /dev/null differ
diff --git a/assets/icon-32x32.png b/assets/icon-32x32.png
deleted file mode 100644
index 3776b15fa424d216f313ae2ea3c317fb21aa3b3d..0000000000000000000000000000000000000000
Binary files a/assets/icon-32x32.png and /dev/null differ
diff --git a/assets/icon-384x384.png b/assets/icon-384x384.png
deleted file mode 100644
index 936f331e8c5af7f82db1f33a7e1113bdc4a94a96..0000000000000000000000000000000000000000
Binary files a/assets/icon-384x384.png and /dev/null differ
diff --git a/assets/icon-512x512.png b/assets/icon-512x512.png
deleted file mode 100644
index c0113edf512fb8f43bc61542b823c12906861820..0000000000000000000000000000000000000000
Binary files a/assets/icon-512x512.png and /dev/null differ
diff --git a/assets/icon-72x72.png b/assets/icon-72x72.png
deleted file mode 100644
index ab281ad7f73269c71cff6e0f8e304cd406776ced..0000000000000000000000000000000000000000
Binary files a/assets/icon-72x72.png and /dev/null differ
diff --git a/assets/icon-96x96.png b/assets/icon-96x96.png
deleted file mode 100644
index 3c974ebff360004f6e0177cdb5159720a020cc1b..0000000000000000000000000000000000000000
Binary files a/assets/icon-96x96.png and /dev/null differ
diff --git a/assets/icon/android-chrome-192x192.png b/assets/icon/android-chrome-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c6cebc3b89eb0e2e607097530ef1a83c4612427
Binary files /dev/null and b/assets/icon/android-chrome-192x192.png differ
diff --git a/assets/icon/android-chrome-512x512.png b/assets/icon/android-chrome-512x512.png
new file mode 100644
index 0000000000000000000000000000000000000000..b558ae09b4aeb17040b76eba82198abed724f030
Binary files /dev/null and b/assets/icon/android-chrome-512x512.png differ
diff --git a/assets/icon/apple-touch-icon.png b/assets/icon/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..aee54f6964fda709316fe5f02b005636816e661c
Binary files /dev/null and b/assets/icon/apple-touch-icon.png differ
diff --git a/assets/icon/favicon-16x16.png b/assets/icon/favicon-16x16.png
new file mode 100644
index 0000000000000000000000000000000000000000..342c9d7ca46c0365c40206a8bcdc266e532eb276
Binary files /dev/null and b/assets/icon/favicon-16x16.png differ
diff --git a/assets/icon/favicon-32x32.png b/assets/icon/favicon-32x32.png
new file mode 100644
index 0000000000000000000000000000000000000000..8386f5b0ace1c62890f24b6a8fbcbd4f315688bb
Binary files /dev/null and b/assets/icon/favicon-32x32.png differ
diff --git a/assets/icon/favicon.ico b/assets/icon/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..93b592ee7d0f67d04784026d148ee996427ca9a6
Binary files /dev/null and b/assets/icon/favicon.ico differ
diff --git a/assets/favicon.svg b/assets/icon/favicon.svg
similarity index 100%
rename from assets/favicon.svg
rename to assets/icon/favicon.svg
diff --git a/assets/icon/logo.svg b/assets/icon/logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..446524368dfde0f715cba236e6f5374a0e58f5c1
--- /dev/null
+++ b/assets/icon/logo.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="800"
+   height="400"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 587.48841,328.23036 C 583.73744,330.20802 579.84328,331.69127 575.8059,332.68009 C 571.76841,333.66892 567.60074,334.16333 563.30287,334.16333 C 553.58695,334.16333 545.88978,331.21804 540.21134,325.32745 C 534.53287,319.43688 531.69365,311.44857 531.69365,301.36251 C 531.69365,291.1635 534.58497,283.13988 540.36762,277.29162 C 546.15025,271.44347 554.06883,268.51937 564.12337,268.51931 C 568.00448,268.51937 571.72283,268.9149 575.27842,269.7059 C 578.83391,270.49702 582.18759,271.66949 585.33945,273.2233 L 585.33945,286.3182 C 582.0834,284.31234 578.84694,282.81497 575.63006,281.8261 C 572.4131,280.83733 569.18966,280.34291 565.95975,280.34286 C 559.96869,280.34291 555.3517,282.15811 552.10875,285.78848 C 548.86576,289.41893 547.24427,294.61027 547.24429,301.36251 C 547.24427,308.05831 548.80715,313.22846 551.93293,316.87297 C 555.05866,320.51752 559.49983,322.33979 565.25646,322.33978 C 566.8193,322.33979 568.27147,322.23384 569.61299,322.02194 C 570.95441,321.81006 572.15913,321.4781 573.22714,321.02605 L 573.22714,308.73634 L 564.04524,308.73634 L 564.04524,297.80273 L 587.48841,297.80273 L 587.48841,328.23036 z M 632.57745,298.39603 C 631.35316,297.77451 630.13541,297.31542 628.92422,297.01873 C 627.71295,296.72212 626.49522,296.57379 625.27099,296.57376 C 621.67635,296.57379 618.90875,297.82395 616.9682,300.32424 C 615.02761,302.82459 614.05732,306.40555 614.05734,311.06714 L 614.05734,332.93436 L 600.06958,332.93436 L 600.06958,285.47064 L 614.05734,285.47064 L 614.05734,293.26825 C 615.85463,290.16055 617.91893,287.89331 620.25025,286.46653 C 622.58151,285.03983 625.37515,284.32647 628.63118,284.32642 C 629.10001,284.32647 629.60795,284.34766 630.15499,284.38999 C 630.70195,284.43242 631.49643,284.52423 632.53837,284.66545 L 632.57745,298.39603 z M 659.22453,311.57568 C 656.30714,311.57571 654.11259,312.11249 652.64091,313.18606 C 651.16918,314.25966 650.43332,315.84179 650.43334,317.93243 C 650.43332,319.8536 651.02591,321.35802 652.21112,322.44572 C 653.39628,323.53344 655.04381,324.0773 657.15372,324.07729 C 659.78453,324.0773 661.99861,323.05316 663.79596,321.00486 C 665.59323,318.95659 666.49188,316.3927 666.49191,313.3132 L 666.49191,311.57568 L 659.22453,311.57568 z M 680.59689,305.85461 L 680.59689,332.93436 L 666.49191,332.93436 L 666.49191,325.89956 C 664.61643,328.78129 662.50654,330.87902 660.16226,332.19274 C 657.81792,333.50646 654.96566,334.16333 651.60549,334.16333 C 647.07313,334.16333 643.39386,332.72953 640.56767,329.86193 C 637.74146,326.99434 636.32836,323.27211 636.32836,318.69524 C 636.32836,313.12958 638.09311,309.04714 641.62261,306.4479 C 645.1521,303.84873 650.6938,302.54913 658.24773,302.5491 L 666.49191,302.5491 L 666.49191,301.36251 C 666.49188,298.96111 665.61927,297.20241 663.87409,296.08641 C 662.12885,294.97048 659.40684,294.4125 655.70805,294.41246 C 652.71252,294.4125 649.92539,294.7374 647.34665,295.38716 C 644.76789,296.037 642.37149,297.0117 640.15741,298.31127 L 640.15741,286.74198 C 643.15293,285.95097 646.16146,285.35061 649.18304,284.94091 C 652.20459,284.5313 655.22614,284.32647 658.24773,284.32642 C 666.14024,284.32647 671.83823,286.01454 675.34171,289.39063 C 678.84512,292.76681 680.59685,298.2548 680.59689,305.85461 L 680.59689,305.85461 z M 691.53705,285.47064 L 729.71034,285.47064 L 729.71034,296.06521 L 706.65789,322.08551 L 729.71034,322.08551 L 729.71034,332.93436 L 690.56025,332.93436 L 690.56025,322.33978 L 713.6127,296.31949 L 691.53705,296.31949 L 691.53705,285.47064 z"
+     id="text2424"
+     style="font-size:110.52407074px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold" />
+  <path
+     d="M 530.95111,260.14746 L 530.95111,146.35144 L 489.77639,146.35144 L 489.77639,123.18115 L 600.04894,123.18115 L 600.04894,146.35144 L 558.96886,146.35144 L 558.96886,260.14746 L 530.95111,260.14746 z M 618.03331,123.18115 L 646.05104,123.18115 L 646.05104,197.36345 C 646.051,209.13551 646.39807,216.7655 647.09224,220.25346 C 648.29116,225.8592 651.14657,230.35934 655.65848,233.75388 C 660.17029,237.14848 666.33861,238.84576 674.16345,238.84574 C 682.11435,238.84576 688.10913,237.24191 692.14781,234.03417 C 696.18631,230.82649 698.61577,226.88692 699.43621,222.21545 C 700.25645,217.54407 700.66662,209.7895 700.66671,198.95174 L 700.66671,123.18115 L 728.68447,123.18115 L 728.68447,195.12116 C 728.68434,211.56464 727.92711,223.18092 726.41276,229.97003 C 724.89816,236.7592 722.10586,242.48947 718.03583,247.16089 C 713.96557,251.83232 708.52294,255.5539 701.70792,258.3256 C 694.8927,261.09732 685.99519,262.48317 675.01534,262.48318 C 661.76364,262.48317 651.71449,260.97274 644.86786,257.95189 C 638.02115,254.93104 632.61008,251.00704 628.63461,246.17989 C 624.6591,241.35277 622.04032,236.29205 620.77828,230.99774 C 618.94828,223.14978 618.03328,211.56464 618.03331,196.24231 L 618.03331,123.18115 z"
+     id="text2428"
+     style="font-size:255.42478943px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold" />
+  <path
+     d="M 261.48597,49.44316 L 261.48597,120.65005 L 176.35344,120.65005 L 176.35344,191.88051 L 162.07436,191.88051 L 162.07436,120.65005 L 21.168588,120.65005 L 21.168588,261.55582 L 92.399046,261.55582 L 92.399046,332.78628 L 233.30481,332.78628 L 233.30481,261.55582 L 317.2592,261.55582 L 317.2592,190.34893 L 331.56184,190.34893 L 331.56184,261.55582 L 472.46761,261.55582 L 472.46761,120.65005 L 402.39173,120.65005 L 402.39173,49.44316 L 261.48597,49.44316 z M 740.18857,284.41177 L 740.18857,333.16328 L 788.94007,333.16328 L 788.94007,284.41177 L 740.18857,284.41177 z"
+     id="rect2432"
+     style="opacity:0.97000002;fill:#ee2556;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/assets/icon/maskable-icon-512x512.png b/assets/icon/maskable-icon-512x512.png
new file mode 100644
index 0000000000000000000000000000000000000000..67ff39477f4e0cad007f2c156e2e74d7a7ad259d
Binary files /dev/null and b/assets/icon/maskable-icon-512x512.png differ
diff --git a/assets/icon/maskable-icon.png b/assets/icon/maskable-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8ded73ced24f78a10ea693effc6f0e590c59a86
Binary files /dev/null and b/assets/icon/maskable-icon.png differ
diff --git a/assets/icon/safari-pinned-tab.svg b/assets/icon/safari-pinned-tab.svg
new file mode 100644
index 0000000000000000000000000000000000000000..863387e1d78d4ce9ee5fd5deb3c188caaa658cf3
--- /dev/null
+++ b/assets/icon/safari-pinned-tab.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.14, written by Peter Selinger 2001-2017
+</metadata>
+<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M3687 5313 c-4 -3 -7 -208 -7 -455 l0 -448 -545 0 -545 0 0 -455 0
+-455 -90 0 -90 0 0 455 0 455 -905 0 -905 0 0 -910 0 -910 450 0 450 0 2 -453
+3 -452 905 0 905 0 3 452 2 453 545 0 545 0 0 455 0 455 90 0 90 0 0 -455 0
+-455 905 0 905 0 0 910 0 910 -450 0 -450 0 -2 453 -3 452 -901 3 c-495 1
+-904 -1 -907 -5z"/>
+</g>
+</svg>
diff --git a/assets/manifest.json b/assets/manifest.json
deleted file mode 100644
index 67847a7b12c8838e1c999b31edbec2a7046b3c13..0000000000000000000000000000000000000000
--- a/assets/manifest.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
-    "short_name": "TU Graz esign",
-    "name": "TU Graz Electronic Signature Service",
-    "start_url": "./",
-    "icons": [
-        {
-            "src": "local/@dbp-topics/signature/icon-72x72.png",
-            "sizes": "72x72",
-            "type": "image/png"
-        },
-        {
-            "src": "local/@dbp-topics/signature/icon-96x96.png",
-            "sizes": "96x96",
-            "type": "image/png"
-        },
-        {
-            "src": "local/@dbp-topics/signature/icon-128x128.png",
-            "sizes": "128x128",
-            "type": "image/png"
-        },
-        {
-            "src": "local/@dbp-topics/signature/icon-144x144.png",
-            "sizes": "144x144",
-            "type": "image/png"
-        },
-        {
-            "src": "local/@dbp-topics/signature/icon-152x152.png",
-            "sizes": "152x152",
-            "type": "image/png"
-        },
-        {
-            "src": "local/@dbp-topics/signature/icon-192x192.png",
-            "sizes": "192x192",
-            "type": "image/png"
-        },
-        {
-            "src": "local/@dbp-topics/signature/icon-384x384.png",
-            "sizes": "384x384",
-            "type": "image/png"
-        },
-        {
-            "src": "local/@dbp-topics/signature/icon-256x256.png",
-            "sizes": "256x256",
-            "type": "image/png"
-        },
-        {
-            "src": "local/@dbp-topics/signature/icon-512x512.png",
-            "sizes": "512x512",
-            "type": "image/png"
-        }
-    ],
-    "background_color": "#FEFEFE",
-    "display": "standalone",
-    "theme_color": "#FFFFFF"
-}
diff --git a/assets/safari-pinned-tab.svg b/assets/safari-pinned-tab.svg
deleted file mode 100644
index 3da14970de6a1bb2ae4b4b0f81e00659a696995f..0000000000000000000000000000000000000000
--- a/assets/safari-pinned-tab.svg
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
- width="512.000000pt" height="512.000000pt" viewBox="0 0 512.000000 512.000000"
- preserveAspectRatio="xMidYMid meet">
-<metadata>
-Created by potrace 1.16, written by Peter Selinger 2001-2019
-</metadata>
-<g transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)"
-fill="#000000" stroke="none">
-<path d="M1680 3205 l0 -215 -260 0 -260 0 0 -221 0 -220 -42 3 -43 3 -3 218
--2 217 -430 0 -430 0 0 -430 0 -430 215 0 215 0 0 -220 0 -220 430 0 430 0 2
-218 3 217 257 3 258 2 2 213 3 212 43 3 42 3 0 -215 0 -216 430 0 430 0 0 430
-0 430 -215 0 -215 0 0 215 0 215 -430 0 -430 0 0 -215z"/>
-<path d="M3060 2920 l0 -70 140 0 140 0 0 -360 0 -360 80 0 80 0 0 360 0 360
-140 0 140 0 0 70 0 70 -360 0 -360 0 0 -70z"/>
-<path d="M3852 2673 l3 -318 26 -55 c36 -76 68 -112 137 -148 80 -43 178 -58
-267 -43 126 22 215 86 264 190 l26 56 3 318 3 317 -80 0 -81 0 0 -278 c0 -318
--6 -359 -65 -411 -77 -67 -203 -67 -280 0 -59 52 -65 93 -65 411 l0 278 -81 0
--80 0 3 -317z"/>
-<path d="M3495 2081 c-101 -26 -155 -96 -155 -198 1 -73 29 -126 86 -159 41
--24 59 -28 123 -29 42 0 93 4 114 8 l37 8 0 104 0 105 -85 0 -85 0 0 -29 c0
--28 3 -30 43 -33 l42 -3 3 -47 c3 -40 0 -47 -18 -53 -24 -8 -84 1 -113 17 -48
-25 -73 123 -45 183 25 56 109 82 201 62 36 -8 37 -7 37 22 0 16 -4 32 -9 35
--16 10 -146 15 -176 7z"/>
-<path d="M3895 1978 c-11 -6 -25 -19 -32 -27 -11 -14 -12 -13 -13 7 0 18 -5
-22 -35 22 l-35 0 0 -140 0 -140 40 0 40 0 0 85 c0 79 2 88 26 111 19 20 31 24
-50 20 24 -6 25 -5 22 31 -3 42 -26 53 -63 31z"/>
-<path d="M4085 1985 c-5 -2 -22 -6 -37 -9 -24 -5 -28 -11 -28 -41 0 -34 0 -34
-28 -19 55 29 132 10 132 -32 0 -10 -14 -14 -55 -14 -78 0 -120 -20 -134 -63
--16 -49 5 -91 54 -107 42 -14 97 -6 115 15 16 19 30 19 30 0 0 -10 10 -15 33
--15 l33 0 -4 113 c-3 72 -9 120 -18 134 -19 30 -106 52 -149 38z m95 -175 c0
--44 -69 -76 -108 -51 -37 23 14 71 76 71 25 0 32 -4 32 -20z"/>
-<path d="M4320 1950 c0 -29 0 -29 67 -32 l68 -3 -73 -76 c-58 -61 -72 -82 -72
--108 l0 -31 125 0 125 0 0 30 0 29 -71 3 -72 3 72 79 c54 59 71 85 71 107 l0
-29 -120 0 -120 0 0 -30z"/>
-<path d="M4630 1835 l0 -145 140 0 140 0 0 145 0 145 -140 0 -140 0 0 -145z"/>
-</g>
-</svg>
diff --git a/assets/site.webmanifest b/assets/site.webmanifest
new file mode 100644
index 0000000000000000000000000000000000000000..369e3fad6fdb10c665b6e7aaa7c48683f46ebcbd
--- /dev/null
+++ b/assets/site.webmanifest
@@ -0,0 +1,34 @@
+{
+    "short_name": "TU Graz esign",
+    "name": "TU Graz Electronic Signature Service",
+    "icons": [
+        {
+            "src": "local/@dbp-topics/signature/icon/android-chrome-192x192.png",
+            "sizes": "192x192",
+            "type": "image/png"
+        },
+        {
+            "src": "local/@dbp-topics/signature/icon/android-chrome-512x512.png",
+            "sizes": "512x512",
+            "type": "image/png",
+            "purpose": "any"
+        },
+        {
+            "src": "local/@dbp-topics/signature/icon/maskable-icon-512x512.png",
+            "sizes": "512x512",
+            "type": "image/png",
+            "purpose": "maskable"
+        },
+        {
+            "src": "local/@dbp-topics/signature/icon/maskable-icon.png",
+            "sizes": "640x640",
+            "type": "image/png",
+            "purpose": "maskable"
+        }
+
+    ],
+    "theme_color": "#ffffff",
+    "background_color": "#ffffff",
+    "start_url": "./",
+    "display": "standalone"
+}
\ No newline at end of file
diff --git a/rollup.config.js b/rollup.config.js
index 6da3d8bc14f4896841da42ba053b380f76bb4fd0..afeef1e329368cf22edbd9c34d4acdcf1c0414ce 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -201,19 +201,12 @@ Dependencies:
                         dest: 'dist/' + (await getDistPath(pkg.name)),
                     },
                     {src: 'assets/*.css', dest: 'dist/' + (await getDistPath(pkg.name))},
-                    {src: 'assets/*.ico', dest: 'dist/' + (await getDistPath(pkg.name))},
                     {src: 'src/*.metadata.json', dest: 'dist'},
                     {src: 'assets/*.svg', dest: 'dist/' + (await getDistPath(pkg.name))},
                     {src: 'assets/htaccess-shared', dest: 'dist/shared/', rename: '.htaccess'},
-                    {src: 'assets/icon-*.png', dest: 'dist/' + (await getDistPath(pkg.name))},
-                    {src: 'assets/apple-*.png', dest: 'dist/' + (await getDistPath(pkg.name))},
-                    {src: 'assets/safari-*.svg', dest: 'dist/' + (await getDistPath(pkg.name))},
                     {src: 'assets/images/*', dest: 'dist/images'},
-                    {
-                        src: 'assets/manifest.json',
-                        dest: 'dist',
-                        rename: pkg.internalName + '.manifest.json',
-                    },
+                    {src: 'assets/icon/*', dest: 'dist/' + (await getDistPath(pkg.name, 'icon'))},
+                    {src: 'assets/site.webmanifest', dest: 'dist', rename: pkg.internalName + '.webmanifest'},
                     {src: 'assets/silent-check-sso.html', dest: 'dist'},
                     {src: 'assets/dbp-signature-maintenance.html', dest: 'dist'},
                     {
@@ -228,6 +221,10 @@ Dependencies:
                         src: await getPackagePath('@tugraz/font-source-sans-pro', 'files/*'),
                         dest: 'dist/' + (await getDistPath(pkg.name, 'fonts/source-sans-pro')),
                     },
+                    {
+                        src: await getPackagePath('@tugraz/web-components', 'src/spinner.js'),
+                        dest: 'dist/' + (await getDistPath(pkg.name)), rename: 'tug_spinner.js'
+                    },
                     {
                         src: await getPackagePath('@dbp-toolkit/common', 'src/spinner.js'),
                         dest: 'dist/' + (await getDistPath(pkg.name)),