start noting when a node hasn't responded in a while

all nodes should keep in touch with the master at least every 15 minutes
(preferably every 5!), so if they don't, something is probably wrong
diff --git a/ui/css/warble.min.css b/ui/css/warble.min.css
index 4bb27c5..395e956 100644
--- a/ui/css/warble.min.css
+++ b/ui/css/warble.min.css
@@ -3110,6 +3110,12 @@
     color: #FFF;
 }
 
+.clientcard.red {
+    background: linear-gradient(to bottom, #b21e40 0, #991e39 100%);
+    color: #FFF;
+    
+}
+
 .clientcard input {
     background: rgba(255,255,200,0.45);
     border: 1.5px inset #333;
diff --git a/ui/js/coffee/warble_clientlist.coffee b/ui/js/coffee/warble_clientlist.coffee
index 053dd0e..3f35b18 100644
--- a/ui/js/coffee/warble_clientlist.coffee
+++ b/ui/js/coffee/warble_clientlist.coffee
@@ -211,12 +211,20 @@
             # node last ping
             line = new HTML('div', {class: 'clientcardline'})
             lp = new Date(source.lastping*1000.0)
+            now = new Date()
             line.inject( [
                 new HTML('b', {}, "Last Active: "),
                 txt(moment(lp).fromNow() + " (" + lp.ISOBare()  + ")")
             ])
             d.inject(line)
             
+            # Check for inactive (dead?) nodes
+            if (moment(now).unix() - moment(lp).unix() > 900)
+                card.setAttribute("class", "clientcard red")
+                line.inject(txt(" - Node dead?!"))
+                lline.inject(txt(" - (no contact for > 15 minutes!)"))
+            
+            
         
     #app(slist, tbl)
     state.widget.inject(slist, true)