diff --git a/web/gui/src/main/webapp/app/fw/layer/panel.css b/web/gui/src/main/webapp/app/fw/layer/panel.css
index 1075b74..46dbdb5 100644
--- a/web/gui/src/main/webapp/app/fw/layer/panel.css
+++ b/web/gui/src/main/webapp/app/fw/layer/panel.css
@@ -34,6 +34,10 @@
     border-radius: 6px;
 }
 
+html[data-platform='iPad'] .floatpanel {
+    top: 80px;
+}
+
 .light .floatpanel {
     background-color: rgba(255,255,255,0.8);
     color: black;
diff --git a/web/gui/src/main/webapp/app/fw/mast/mast.js b/web/gui/src/main/webapp/app/fw/mast/mast.js
index bdb3e67..1cde58c 100644
--- a/web/gui/src/main/webapp/app/fw/mast/mast.js
+++ b/web/gui/src/main/webapp/app/fw/mast/mast.js
@@ -24,7 +24,8 @@
     var $log;
 
     // configuration
-    var mastHeight = 36;
+    var mastHeight = 36,
+        padMobile = 16;
 
     angular.module('onosMast', ['onosNav'])
         .controller('MastCtrl', ['$log', 'NavService', function (_$log_, ns) {
@@ -44,9 +45,11 @@
         }])
 
         // also define a service to allow lookup of mast height.
-        .factory('MastService', [function () {
+        .factory('MastService', ['FnService', function (fs) {
             return {
-                mastHeight: function () { return mastHeight; }
+                mastHeight: function () {
+                    return fs.isMobile() ? mastHeight + padMobile : mastHeight;
+                }
             }
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/nav/nav.css b/web/gui/src/main/webapp/app/fw/nav/nav.css
index ea8c4cf..4d2c4e9 100644
--- a/web/gui/src/main/webapp/app/fw/nav/nav.css
+++ b/web/gui/src/main/webapp/app/fw/nav/nav.css
@@ -27,6 +27,10 @@
     visibility: hidden;
 }
 
+html[data-platform='iPad'] #nav {
+    top: 57px;
+}
+
 .light #nav {
     background-color: #bbb;
     box-shadow: 0 2px 8px #777;
diff --git a/web/gui/src/main/webapp/app/fw/widget/toolbar.js b/web/gui/src/main/webapp/app/fw/widget/toolbar.js
index 7b9b6b0..df09a22 100644
--- a/web/gui/src/main/webapp/app/fw/widget/toolbar.js
+++ b/web/gui/src/main/webapp/app/fw/widget/toolbar.js
@@ -34,7 +34,8 @@
             width: 20,
             margin: 0,
             hideMargin: -20,
-            top: '80%',
+            top: 'auto',
+            bottom: '10px',
             fade: false,
             shown: false
         };
@@ -101,7 +102,8 @@
         };
 
         panel.classed('toolbar', true)
-            .style('top', settings.top);
+            .style('top', settings.top)
+            .style('bottom', settings.bottom);
 
         // Helper functions
 
diff --git a/web/gui/src/main/webapp/app/view/topo/topo.css b/web/gui/src/main/webapp/app/view/topo/topo.css
index 282025a..d6452b7 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.css
+++ b/web/gui/src/main/webapp/app/view/topo/topo.css
@@ -84,6 +84,9 @@
     /* Base css from panel.css */
     top: 310px;
 }
+html[data-platform='iPad'] #topo-p-detail {
+    top: 326px;
+}
 
 #topo-p-detail .actionBtns .actionBtn {
     display: inline-block;
diff --git a/web/gui/src/main/webapp/app/view/topo/topoLink.js b/web/gui/src/main/webapp/app/view/topo/topoLink.js
index 49678d8..ec4cc53 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoLink.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoLink.js
@@ -288,7 +288,7 @@
                 td3 = _td3_;
                 svg = api.svg;
                 network = api.network;
-                if (showPorts) {
+                if (showPorts && !fs.isMobile()) {
                     svg.on('mousemove', mouseMoveHandler);
                 }
                 svg.on('click', mouseClickHandler);
diff --git a/web/gui/src/main/webapp/app/view/topo/topoPanel.js b/web/gui/src/main/webapp/app/view/topo/topoPanel.js
index 48a434a..9f82d89 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoPanel.js
@@ -23,7 +23,7 @@
     'use strict';
 
     // injected refs
-    var $log, $window, $rootScope, fs, ps, gs, flash, wss, bns;
+    var $log, $window, $rootScope, fs, ps, gs, flash, wss, bns, mast;
 
     // constants
     var pCls = 'topo-p',
@@ -32,12 +32,13 @@
         panelOpts = {
             width: 260
         },
-        sumFromTop = 64,
-        sumMax = 226;
+        sumMax = 226,
+        padTop = 28;
 
     // internal state
     var useDetails = true,      // should we show details if we have 'em?
-        haveDetails = false;    // do we have details that we could show?
+        haveDetails = false,    // do we have details that we could show?
+        sumFromTop;             // summary panel distance from top of screen
 
     // panels
     var summary, detail;
@@ -396,8 +397,9 @@
     // ==========================
 
     function augmentDetailPanel() {
-        var d = detail;
-        d.ypos = { up: 64, down: 310, current: 310};
+        var d = detail,
+            downPos = sumFromTop + sumMax + 20;
+        d.ypos = { up: sumFromTop, down: downPos, current: downPos};
 
         d._move = function (y, cb) {
             var yp = d.ypos,
@@ -448,6 +450,7 @@
     // ==========================
 
     function initPanels() {
+        sumFromTop = mast.mastHeight() + padTop;
         summary = createTopoPanel(idSum, panelOpts);
         detail = createTopoPanel(idDet, panelOpts);
 
@@ -469,10 +472,10 @@
     angular.module('ovTopo')
     .factory('TopoPanelService',
         ['$log', '$window', '$rootScope', 'FnService', 'PanelService', 'GlyphService',
-            'FlashService', 'WebSocketService', 'ButtonService',
+            'FlashService', 'WebSocketService', 'ButtonService', 'MastService',
 
         function (_$log_, _$window_, _$rootScope_,
-                  _fs_, _ps_, _gs_, _flash_, _wss_, _bns_) {
+                  _fs_, _ps_, _gs_, _flash_, _wss_, _bns_, _mast_) {
             $log = _$log_;
             $window = _$window_;
             $rootScope = _$rootScope_;
@@ -482,6 +485,7 @@
             flash = _flash_;
             wss = _wss_;
             bns = _bns_;
+            mast = _mast_;
 
             return {
                 initPanels: initPanels,
diff --git a/web/gui/src/main/webapp/app/view/topo/topoToolbar.js b/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
index 110160c..f009e2f 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
@@ -23,7 +23,7 @@
     'use strict';
 
     // injected references
-    var $log, tbs, ps, api;
+    var $log, fs, tbs, ps, api;
 
     // internal state
     var toolbar, keyData, cachedState;
@@ -124,8 +124,9 @@
         var v = keyData.get(key);
         v.btn = toolbar.addButton(v.id, v.gid, v.cb, v.tt);
     }
-    function addToggle(key) {
+    function addToggle(key, suppressIfMobile) {
         var v = keyData.get(key);
+        if (suppressIfMobile && fs.isMobile()) { return; }
         v.tog = toolbar.addToggle(v.id, v.gid, v.isel, v.cb, v.tt);
     }
 
@@ -137,9 +138,9 @@
 
         addToggle('H');
         addToggle('M');
-        addToggle('P');
+        addToggle('P', true);
         addToggle('B');
-        addToggle('S');
+        addToggle('S', true);
     }
     function addSecondRow() {
         //addToggle('X');
@@ -197,10 +198,11 @@
 
     angular.module('ovTopo')
         .factory('TopoToolbarService',
-        ['$log', 'ToolbarService', 'PrefsService',
+        ['$log', 'FnService', 'ToolbarService', 'PrefsService',
 
-        function (_$log_, _tbs_, _ps_) {
+        function (_$log_, _fs_, _tbs_, _ps_) {
             $log = _$log_;
+            fs = _fs_;
             tbs = _tbs_;
             ps = _ps_;
 
