diff --git a/lib/Kalamar.pm b/lib/Kalamar.pm
index d2f6718..8074856 100644
--- a/lib/Kalamar.pm
+++ b/lib/Kalamar.pm
@@ -8,7 +8,7 @@
 use List::Util qw!none uniq!;
 
 # Minor version - may be patched from package.json
-our $VERSION = '0.58';
+our $VERSION = '0.59';
 
 # Supported version of Backend API
 our $API_VERSION = '1.0';
diff --git a/lib/Kalamar/Controller/Documentation.pm b/lib/Kalamar/Controller/Documentation.pm
index 762ab25..9d81282 100644
--- a/lib/Kalamar/Controller/Documentation.pm
+++ b/lib/Kalamar/Controller/Documentation.pm
@@ -28,7 +28,7 @@
 
   # Render template
   $c->stash(sidebar_active => 1);
-  $c->stash(main_class => 'page tutorial');
+  $c->stash(main_class => 'page tutorial shifted');
   $c->stash(documentation => 1);
   $c->stash('robots' => 'index,follow');
 
diff --git a/lib/Kalamar/Plugin/Auth/templates/partial/auth/login.html.ep b/lib/Kalamar/Plugin/Auth/templates/partial/auth/login.html.ep
index 9d6d535..a795aae 100644
--- a/lib/Kalamar/Plugin/Auth/templates/partial/auth/login.html.ep
+++ b/lib/Kalamar/Plugin/Auth/templates/partial/auth/login.html.ep
@@ -6,26 +6,47 @@
 %   } elsif (flash('handle') && !param('handle')) {
 %     param(handle_or_email => flash('handle'));
 %   };
-    <fieldset>
-    %= form_for 'login', 'accept-charset' => 'utf-8', class => 'login', begin
-      <legend><span><%= loc 'login' %></span></legend>
-      %= csrf_field
-      %= text_field 'handle_or_email', placeholder => loc('userormail')
-      %= hidden_field fwd => $c->url_with
-      % if (stash('client_id')) {
-        %= hidden_field 'client_id' => stash('client_id')
-        %= hidden_field 'client_name' => stash('client_name')
-        %= hidden_field 'state' => stash('state')
-        %= hidden_field 'scope' => stash('scope')
-        %= hidden_field 'redirect_uri' => stash('close_redirect_uri')
-      % };
-      <div>
-        %= password_field 'pwd', placeholder => loc('pwd')
-        <button type="submit"><span><%= loc 'go' %></span></button>
+%#    <fieldset class="fieldset-login">
+%#    %= form_for 'login', 'accept-charset' => 'utf-8', class => 'login', begin
+%#      %= csrf_field
+%#      %= text_field 'handle_or_email', placeholder => loc('userormail')
+%#      %= hidden_field fwd => $c->url_with
+%#      % if (stash('client_id')) {
+%#        %= hidden_field 'client_id' => stash('client_id')
+%#        %= hidden_field 'client_name' => stash('client_name')
+%#        %= hidden_field 'state' => stash('state')
+%#        %= hidden_field 'scope' => stash('scope')
+%#        %= hidden_field 'redirect_uri' => stash('close_redirect_uri')
+%#      % };
+%#      <div>
+%#        %= password_field 'pwd', placeholder => loc('pwd')
+%#        <button type="submit" class="btn-login"><span><%= loc 'go' %></span></button>
+%#      </div>
+%#    % end
+
+%#    %= content_block 'loginInfo', separator => '<hr />'
+
+%#    </fieldset>
+
+    <nav class="dropdown">
+      <div class="dropdown-btn login"></div>
+      <div class="dropdown-content dropdown-content--right">
+        %= form_for 'login', 'accept-charset' => 'utf-8', class => 'login', begin
+          <legend><span><%= loc 'login' %></span></legend>
+          %= csrf_field
+          %= text_field 'handle_or_email', placeholder => loc('userormail')
+          %= hidden_field fwd => $c->url_with
+          % if (stash('client_id')) {
+            %= hidden_field 'client_id' => stash('client_id')
+            %= hidden_field 'client_name' => stash('client_name')
+            %= hidden_field 'state' => stash('state')
+            %= hidden_field 'scope' => stash('scope')
+            %= hidden_field 'redirect_uri' => stash('close_redirect_uri')
+          % };
+          %= password_field 'pwd', placeholder => loc('pwd')
+          <button type="submit" class="btn-login"><span><%= loc 'go' %></span></button>
+        % end
+          %= content_block 'loginInfo', separator => '<hr />'
       </div>
-    % end
-
-    %= content_block 'loginInfo', separator => '<hr />'
-
-    </fieldset>
+    </nav>
 % }
diff --git a/lib/Kalamar/Plugin/Auth/templates/partial/auth/logout.html.ep b/lib/Kalamar/Plugin/Auth/templates/partial/auth/logout.html.ep
index 5464664..5424e57 100644
--- a/lib/Kalamar/Plugin/Auth/templates/partial/auth/logout.html.ep
+++ b/lib/Kalamar/Plugin/Auth/templates/partial/auth/logout.html.ep
@@ -1,6 +1,18 @@
 % if ($c->auth->token) {
    %# TODO: CSRF protection
-   <a href="<%= url_for 'logout' %>"
-      class="logout"
-      title="<%= loc 'logout' %>: <%= user_handle %>"><span><%= loc 'logout' %></span></a>
+   <nav class="dropdown">
+      <div class="dropdown-btn profile">
+         <h3 class="user-name">
+            <%= user_handle %>
+         </h3>
+      </div>
+      <div class="dropdown-content dropdown-content--left">
+         <%= link_to loc('settings') => 'settings', class => 'dropdown-item' %>
+         <a href="<%= url_for 'logout' %>"
+         class="dropdown-item logout"
+         title="<%= loc 'logout' %>: <%= user_handle %>">
+            <span><%= loc 'logout' %></span>
+         </a>
+      </div>
+   </nav>
 % };
diff --git a/lib/Kalamar/Plugin/KalamarUser.pm b/lib/Kalamar/Plugin/KalamarUser.pm
index 3963fec..0b3fee8 100644
--- a/lib/Kalamar/Plugin/KalamarUser.pm
+++ b/lib/Kalamar/Plugin/KalamarUser.pm
@@ -54,7 +54,7 @@
         $c->stash(user => $user);
         return $user;
       };
-
+      
       return 'not_logged_in';
     }
   );
