$ git clone http://thingshare.ion.nu/thingshare.git
commit 8b3fabf11f55e34c37f1a0927c7e27502a95c182
Author: Alicia <...>
Date:   Sun Jan 31 00:48:50 2021 +0100

    Responsive design.

diff --git a/Licenses b/Licenses
index 830c5d5..1bad98b 100644
--- a/Licenses
+++ b/Licenses
@@ -6,3 +6,4 @@ mdjs: under the terms of the Apache license (https://github.com/hangxingliu/mdjs
 icons/default.svg: "Editor, software, text icon" from the Macaron icon set by Goescat Wei, under the terms of the Creative Commons Attribution 3.0 Unported (https://www.iconfinder.com/icons/3246744/editor_software_text_icon)
 icons/bell.svg/png: "Alarm, alert, attention, bell, notification, notifications, ring icon" by DIVYA A under the terms of the Creative Commons Attribution 3.0 Unported (https://www.iconfinder.com/icons/4964018/alarm_alert_attention_bell_notification_notifications_ring_icon)
 icons/scad.png: GNU GPLv2 (https://github.com/openscad/openscad/blob/master/icons/SCAD.png)
+icons/menu.svg/png: "Menu, lines, hamburger icon" from the Wirecons Free Vector Icons set by Timothy Miller under the terms of the Creative Commons Attribution-Share Alike 3.0 Unported (https://www.iconfinder.com/icons/134216/menu_lines_hamburger_icon)
diff --git a/docs/RPCs b/docs/RPCs
index c5fc97f..adeac25 100644
--- a/docs/RPCs
+++ b/docs/RPCs
@@ -150,3 +150,5 @@ Signed request format:
   "message": <Message>,
   "link": <...>
 }
+Return format:
+{"status":"OK"} or {"error":<Error message>}
diff --git a/foot.php b/foot.php
index 9f6a5a2..5b7e17c 100644
--- a/foot.php
+++ b/foot.php
@@ -5,7 +5,7 @@
       Thingshare is a federated system for sharing data for home manufacturing. For more information see <a href="https://thingshare.ion.nu/">thingshare.ion.nu</a>
     </div><div class="c2 top">
       <h4>Contact</h4>
-      E-mail address: <a href="mailto:<?=EMAIL?>"><?=EMAIL?></a>
+      E-mail address: <a href="mailto:<?=EMAIL?>"><?=str_replace('@','@<wbr/>',EMAIL)?></a>
     </div>
     <div class="footnote">
        Content displayed on Thingshare is property of respective creator, not of Thingshare or its operators
diff --git a/head.php b/head.php
index 23e63cb..bf80bc6 100644
--- a/head.php
+++ b/head.php
@@ -104,6 +104,7 @@ if($path[1]=='tag')
 <html lang="en">
 <head>
   <title><?=NODENAME?></title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <link rel="stylesheet" href="<?=BASEURL?>/style.css" type="text/css" />
   <link rel="stylesheet" href="<?=BASEURL?>/x3dom.css" type="text/css" />
   <script src="<?=BASEURL?>/x3dom.debug.js"></script>
@@ -114,6 +115,7 @@ if($path[1]=='tag')
   <div id="logo" title="Yes this needs a logo or something. Got any art skills?"></div>
 <!-- TODO: Responsive design -->
   <nav>
+    <img src="<?=BASEURL?>/icons/menu.svg" width="32" height="32" onerror="this.src='<?=BASEURL?>/icons/menu.png';" id="menuicon" />
     <div id="menu">
       <a href="<?=BASEURL?>/browse/new">Latest designs</a>
       <?=$menu?>
@@ -136,7 +138,7 @@ if($path[1]=='tag')
     </div>
     <div id="search">
       <form method="get" action="<?=BASEURL?>/search">
-        <input type="text" name="q" value="<?=$search?>" />
+        <input type="text" name="q" value="<?=$search?>" placeholder="Search" />
         <button><img src="<?=BASEURL?>/icons/find.svg" onerror="this.src='<?=BASEURL?>/icons/find.png';" /></button>
       </form>
     </div>
diff --git a/icons/menu.png b/icons/menu.png
new file mode 100644
index 0000000..5bc9e87
Binary files /dev/null and b/icons/menu.png differ
diff --git a/icons/menu.svg b/icons/menu.svg
new file mode 100644
index 0000000..233bf21
--- /dev/null
+++ b/icons/menu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" ?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg height="32px" id="Layer_1" style="enable-background:new 0 0 32 32;" version="1.1" viewBox="0 0 32 32" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2  s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2  S29.104,22,28,22z"/></svg>
\ No newline at end of file
diff --git a/index.php b/index.php
index e6e1c4f..c9778da 100644
--- a/index.php
+++ b/index.php
@@ -85,5 +85,4 @@ switch($path[1])
     break;
 }
 include_once('foot.php');
-// TODO: Default/front page
 ?>
diff --git a/search.php b/search.php
index 829223c..1561f21 100644
--- a/search.php
+++ b/search.php
@@ -2,7 +2,7 @@
 /*
     This file is part of Thingshare, a federated system for sharing data for home manufacturing (e.g. 3D models to 3D print)
     https://thingshare.ion.nu/
-    Copyright (C) 2020  Alicia <...>
+    Copyright (C) 2020-2021  Alicia <...>
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU Affero General Public License as published by
@@ -101,6 +101,7 @@ foreach($results as $thing)
   </form>
   <p>
     <h4><?=_('Advanced search options')?></h4>
+    <?=_('To search for something by tag:')?> <span class="code">tag:searchterm</span><br />
     <?=_('To search for something specifically in the name:')?> <span class="code">name:searchterm</span><br />
     <?=_('To search for something specifically in the description:')?> <span class="code">description:searchterm</span><br />
     <?=_('To negate a searchterm, skipping everything that matches:')?> <span class="code">-searchterm</span><br />
diff --git a/style.css b/style.css
index f316e7e..a53e596 100644
--- a/style.css
+++ b/style.css
@@ -25,11 +25,13 @@ body {
   background-color:#00ff00;
 }
 #user {
-  float:right;
+  display:block;
+  margin-left:10px;
 }
 #search {
-  float:right;
   padding-top:0px;
+  display:block;
+  margin-left:10px;
 }
 #search input {
   vertical-align:top;
@@ -47,9 +49,11 @@ body {
 }
 #menu>a {
   margin-left:10px;
+  display:block;
 }
 #user>a {
   margin-right:10px;
+  display:block;
 }
 #loginform {
 /* This doesn't work as intended, but it seems to work ok for now */
@@ -59,7 +63,7 @@ body {
   color:#f00000;
 }
 #content {
-  width:80%;
+  width:98%;
   margin-left:auto;
   margin-right:auto;
   margin-top:10px;
@@ -94,10 +98,16 @@ nav {
   background: -o-linear-gradient(#e0e0e0, #c0c0c0);
   background: -moz-linear-gradient(#e0e0e0, #c0c0c0);
   background: linear-gradient(#e0e0e0, #c0c0c0);
+  position:sticky;
+  top:0px;
+  z-index:10;
+  overflow:hidden;
+  height:32px;
 }
-nav>div {
-  padding: 10px;
-  display:inline-block;
+nav:hover {
+  height:auto;
+  padding-bottom:10px;
+  font-size:30px;
 }
 nav>div>a {
   color:#000000;
@@ -125,8 +135,6 @@ span.blacklist {
   background-color:#ff0000;
 }
 div.sidebar {
-  float:left;
-  width:240px;
   margin:5px;
   border:solid 1px #ffffff;
 }
@@ -199,3 +207,41 @@ div.notification {
 div.notification-unseen {
   font-weight:bold;
 }
+img#menuicon {
+  display:block;
+  margin-left:auto;
+  margin-right:auto;
+}
+@media only screen and (min-width: 750px) {
+  #content {
+    width:80%;
+  }
+  nav {
+    position:static;
+    overflow:visible;
+    height:auto;
+  }
+  nav:hover {
+    padding-bottom:0px;
+    font-size:16px;
+  }
+  nav>div {
+    padding: 10px;
+    display:inline-block;
+  }
+  #user { float:right; }
+  #search { float:right; }
+  img#menuicon {
+    display:none;
+  }
+  #menu>a {
+    display:inline;
+  }
+  #user>a {
+    display:inline;
+  }
+  div.sidebar {
+    float:left;
+    width:240px;
+  }
+}