diff --git a/public_html/index.html b/public_html/index.html
index 285d74936068575941940de0dbdac160f83f38ac..b1f5963c84e31944a24e715e8bcde51d034f5f9c 100644
--- a/public_html/index.html
+++ b/public_html/index.html
@@ -3,9 +3,9 @@
 <head>
     <title>Dashboard</title>
     <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
-    <meta http-equiv="refresh" content="3600">
+    <meta http-equiv="refresh" content="600">
+    <meta name="viewport" content="width=device-width">
 
-    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
     <link rel="stylesheet" href="main.css">
 </head>
 <body>
@@ -15,8 +15,8 @@
             <h1><span>📋</span> Appmonitor Dashboard</h1>
         </header>
 
-        <section id="tag-section"><h2><span>🕛</span> fetching tags...</h2></section>
-        <section id="app-section"><h2><span>🕛</span> fetching apps...</h2></setion>
+        <section id="tag-section"></section>
+        <section id="app-section"></setion>
 
     </div>
 
diff --git a/public_html/javascript/functions.js b/public_html/javascript/functions.js
index f71324fa702a4dee97baf59944f5e0f6cf21f1fa..ea86bb88ad9c1665801cc3faf8206bca109e9b82 100644
--- a/public_html/javascript/functions.js
+++ b/public_html/javascript/functions.js
@@ -15,6 +15,17 @@ const AM_RESULTS={
     3: 'error'
 };
 
+const AM_ICONS={
+    'wait': '⏳',
+    'tag': '🏷️',
+    'app': '🪧',
+    'delete': '❌',
+    'result0': '✔',
+    'result1': '❔',
+    'result2': '❗',
+    'result3': '🔴',
+
+};
 const OUT_ID_APPS='app-section';
 const OUT_ID_TAGS='tag-section';
 const ID_TAGINPUT='E_TAGS';
@@ -135,7 +146,7 @@ function _getTaglist(sData){
  async function getTags(){
     AM_TAGURL=_getUrlForTags();
 
-    let out = '<h2><span>🏷️</span> Tags</h2>';
+    let out = '<h2><span>'+AM_ICONS['tag']+'</span> Tags</h2>';
 
     try{
         let response = await fetch(AM_TAGURL, { "headers": 
@@ -158,7 +169,7 @@ function _getTaglist(sData){
         +'</div>';
     }
     
-    o=document.getElementById(OUT_ID_TAGS).innerHTML=out;
+    document.getElementById(OUT_ID_TAGS).innerHTML=out;
 }
 
 
@@ -190,6 +201,15 @@ function _getAllAppsStatus(sData){
     return sReturn;
 }
 
+/**
+ * replacement for jQuery $(this).next().toggle()
+ * 
+ * @param {object} oLink clicked link
+ */
+function toggleAppDetails(oLink){
+    oDetail=oLink.nextSibling;
+    oDetail.style.display=oDetail.style.display=="none" ? "block" : "none"
+}
 /**
  * render application status of a single application as html
  * @param {array} aData monitoring data from appmonitor api
@@ -216,7 +236,7 @@ function _getSingleAppStatus(aData){
 
     // ----- generate output
     let sReturn='<div class="app result'+ aData.meta.result +'">'
-        +'<div class="title" onclick="$(this).next().toggle()">'
+        +'<div class="title" onclick="toggleAppDetails(this);">'
             +'<span class="float-right">'+AM_RESULTS[aData.meta.result]+'</span>'
             +'<span class="float-right url">'+aData.result.url+'</span>'
             +aData.meta.website
@@ -227,7 +247,7 @@ function _getSingleAppStatus(aData){
     let iAge=Math.round((new Date()).getTime() / 1000)- aData.result.ts;
 
     sReturn+=''
-        +'<table class="details">'
+        +'<table class="details" style="display: none;">'
         +_appItem('Summary', 'Application status: '+ AM_RESULTS[aData.meta.result] 
             + ' | Checks: ' + aData.checks.length 
             + ' | Age: ' + iAge + ' sec'
@@ -252,7 +272,7 @@ async function getAppstatus(){
     var o=document.getElementById(ID_TAGINPUT);
     tags=o ? o.value : AM_TAGS;
 
-    let out = '<h2><span>📦</span> Applications</h2>';
+    let out = '<h2><span>'+AM_ICONS['app']+'</span> Applications</h2>';
     let apiurl=_getUrlWithTags(tags)
     // let myfunction="_getAllAppsStatus";
     try{
@@ -294,6 +314,9 @@ let AM_AUTH=(AM_USER)
     : {}
 ;
 
+document.getElementById(OUT_ID_TAGS).innerHTML='<h2><span>'+AM_ICONS['wait']+'</span> wait ...</h2>';
+document.getElementById(OUT_ID_APPS).innerHTML='<h2><span>'+AM_ICONS['wait']+'</span> wait ...</h2>';
+
 getTags();
 AM_TIMER=window.setTimeout("getAppstatus()", 500);
 
diff --git a/public_html/main.css b/public_html/main.css
index 878e0a8542bd04de2d3c7109d075bbe3823a60d2..341a7a0a2705c7ca33aef67df8409166e12d5a89 100644
--- a/public_html/main.css
+++ b/public_html/main.css
@@ -62,7 +62,7 @@ td{vertical-align: top;}
 .app .title{font-weight: bold; font-size: 130%; cursor: pointer;}
 
 .app .url{font-size: 80%; font-weight: normal; margin-right: 2em;}
-.app .details{display: none;}
+.app .details{}
 
 .result0{background:#dfd    !important; background: linear-gradient(#dfd,#beb)!important;       color:#080}
 .result1{background:#eee    !important; background: linear-gradient(#eee,#ddd)!important;       color:#666;}