From 425ec3b70738e693922755b4ee8a8a73642b7fee Mon Sep 17 00:00:00 2001
From: Thomas Pointhuber <thomas.pointhuber@gmx.at>
Date: Wed, 5 Mar 2014 15:20:30 +0100
Subject: [PATCH 1/8] Using .less instead of .css

to generate the .css file from the .less file run: $make styles
---
 .travis.yml                       |   3 +-
 Makefile                          |   7 +-
 searx/static/css/definitions.less |  92 +++++
 searx/static/css/mixins.less      |  27 ++
 searx/static/css/style.css        | 291 ++++------------
 searx/static/css/style.less       | 556 ++++++++++++++++++++++++++++++
 6 files changed, 749 insertions(+), 227 deletions(-)
 create mode 100644 searx/static/css/definitions.less
 create mode 100644 searx/static/css/mixins.less
 create mode 100644 searx/static/css/style.less

diff --git a/.travis.yml b/.travis.yml
index 29d1401a0..42cb092f4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,10 +5,11 @@ before_install:
   - "export DISPLAY=:99.0"
   - "sh -e /etc/init.d/xvfb start"
 install:
-  - "make"
+  - "make node-less"
 script:
   - "make tests"
   - "make robot"
+  - "make styles"
 notifications:
   irc:
     channels:
diff --git a/Makefile b/Makefile
index cc5967581..051cad36e 100644
--- a/Makefile
+++ b/Makefile
@@ -43,11 +43,14 @@ production: bin/buildout production.cfg setup.py
 minimal: bin/buildout minimal.cfg setup.py
 	bin/buildout -c minimal.cfg $(options)
 
+styles:
+	@lessc -x searx/static/css/style.less > searx/static/css/style.css
+
 locales:
 	@pybabel compile -d searx/translations
 
 clean:
 	@rm -rf .installed.cfg .mr.developer.cfg bin parts develop-eggs \
-		searx.egg-info lib include .coverage coverage
+		searx.egg-info lib include .coverage coverage searx/static/css/*.css
 
-.PHONY: all tests robot flake8 coverage production minimal locales clean
+.PHONY: all tests robot flake8 coverage production minimal styles locales clean
diff --git a/searx/static/css/definitions.less b/searx/static/css/definitions.less
new file mode 100644
index 000000000..a7d892303
--- /dev/null
+++ b/searx/static/css/definitions.less
@@ -0,0 +1,92 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ *
+ * To change the colors of the site, simple edit this variables
+ */
+
+/// Basic Colors
+
+@color-base: #3498DB;
+@color-base-dark: #2980B9;
+@color-base-light: #ECF0F1;
+
+
+/// General
+
+@color-font: #444;
+
+@color-url-font: #1a11be;
+@color-url-visited-font: #8E44AD;
+
+
+/// Start-Screen
+
+// hmarg
+@color-hmarg-border: @color-base;
+@color-hmarg-font: @color-base;
+@color-hmarg-font-hover: @color-base;
+
+
+/// Search-Input
+
+@color-search-border: @color-base;
+@color-search-background: #FFF;
+@color-search-font: #222;
+
+/// Categories
+
+@color-categories-item-selected: @color-base;
+@font-color-categories-item-selected: #FFF;
+
+@color-categories-item-border-selected: @color-base-dark;
+@color-categories-item-border-unselected: #E8E7E6;
+@color-categories-item-border-unselected-hover: @color-base;
+
+
+/// Results
+
+@color-suggestions-button-background: @color-base;
+@color-suggestions-button-font: #FFF;
+
+@color-download-button-background: @color-base;
+@color-download-button-font: #FFF;
+
+@color-result-search-background: @color-base-light;
+
+@color-result-definition-border: gray;
+@color-result-torrent-border: lightgray;
+@color-result-top-border: #E8E7E6;
+
+// Link to result
+@color-result-link-font: @color-base-dark;
+@color-result-link-visited-font: @color-url-visited-font;
+
+// Url to result
+@color-result-url-font: #C0392B;
+
+// Images
+@color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
+@color-result-image-span-font: #FFF;
+
+// Search-URL
+@color-result-search-url-border: #888;
+@color-result-search-url-font: #444;
+
+
+/// Settings
+
+@color-settings-fieldset: @color-base;
+@color-settings-tr-hover: #DDD;
+
+// Labels
+@color-settings-label-allowed-background: #E74C3C;
+@color-settings-label-allowed-font: #FFF;
+
+@color-settings-label-deny-background: #2ECC71;
+@color-settings-label-deny-font: @color-font;
+
+
+/// Other
+
+@color-engines-font: #888;
+@color-percentage-div-background: #444;
diff --git a/searx/static/css/mixins.less b/searx/static/css/mixins.less
new file mode 100644
index 000000000..dbccce6e3
--- /dev/null
+++ b/searx/static/css/mixins.less
@@ -0,0 +1,27 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ */
+
+// Mixins
+
+.text-size-adjust (@property: 100%) {  	
+	-webkit-text-size-adjust: @property;
+	-ms-text-size-adjust: @property;
+	-moz-text-size-adjust: @property;
+	text-size-adjust: @property;
+}
+
+.rounded-corners (@radius: 4px) {	
+	-webkit-border-radius: @radius;
+	-moz-border-radius: @radius;
+	border-radius: @radius;
+}
+
+.user-select () {
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
diff --git a/searx/static/css/style.css b/searx/static/css/style.css
index 4b2d3c36d..59c5c1436 100644
--- a/searx/static/css/style.css
+++ b/searx/static/css/style.css
@@ -1,224 +1,67 @@
-html {
-  font-family: sans-serif;
-  font-size: 0.9em;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-  -moz-text-size-adjust: 100%;
-  color: #444444;
-  padding: 0;
-  margin: 0;
-}
-
-body, #container {
-  padding: 0;
-  margin: 0;
-}
-
-#container {
-    width: 100%;
-    position: absolute;
-    top: 0;
-}
-
-.row { max-width: 800px; margin: auto; text-align: justify; }
-.row h1 { font-size: 3em; margin-top: 50px; }
-.row p { padding: 0 10px; max-width: 700px; }
-.row h3,ul { margin: 4px 8px;}
-
-.hmarg {
-    margin: 0 20px;
-    border: 1px solid #3498DB;
-    padding: 4px 10px;
-}
-
-a:link.hmarg { color: #3498DB; }
-a:visited.hmarg { color: #3498DB; }
-a:active.hmarg { color: #3498DB; }
-a:hover.hmarg { color: #3498DB; }
-
-.top_margin { margin-top: 60px; }
-
-.center { text-align: center; }
-
-h1 { font-size: 5em; }
-
-div.title { background: url('/static/img/searx.png') no-repeat; width: 100%; background-position: center; }
-div.title h1 { visibility: hidden; }
-
-input[type="submit"] { padding: 2px 6px; margin: 2px 4px; display: inline-block; background: #3498DB; color: #FFFFFF; border-radius: 4px; border: 0; cursor: pointer;  }
-
-input[type="checkbox"] { visibility: hidden; }
-
-fieldset { margin: 8px; border: 1px solid #3498DB; }
-
-#categories { margin: 0 10px; }
-
-.checkbox_container { display: inline-block; position: relative; margin: 0 3px; padding: 0px; }
-.checkbox_container input {
-    display: none;
-}
-.checkbox_container label, .engine_checkbox label {
-    cursor: pointer;
-    padding: 4px 10px;
-    margin: 0;
-    display: block;
-    text-transform: capitalize;
-
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-.checkbox_container input[type="checkbox"]:checked + label { background: #3498DB; color: #FFFFFF; }
-.search .checkbox_container label { border-bottom: 4px solid #e8e7e6; }
-.search .checkbox_container label:hover { border-bottom: 4px solid #3498DB; }
-.search .checkbox_container input[type="checkbox"]:checked + label { border-bottom: 4px solid #2980B9; }
-
-.engine_checkbox { padding: 4px; }
-label.allow { background: #E74C3C; color: #FFFFFF; padding: 4px 8px; display: none; }
-label.deny { background: #2ECC71; padding: 4px 8px; display: inline; }
-.engine_checkbox input[type="checkbox"]:checked + label:nth-child(2) + label { display: none; }
-.engine_checkbox input[type="checkbox"]:checked + label.allow { display: inline; }
-
-a { text-decoration: none; color: #1a11be; }
-a:visited { color: #8E44AD; }
-
-.result { margin: 19px 0 18px 0; padding: 0; max-width: 55em;  clear: both; }
-.result_title { margin-bottom: 0; }
-.result_title a { color: #1168CC; font-weight: normal; font-size: 1.1em; }
-.result_title a:hover { text-decoration: underline; }
-.result_title a:visited { color: #8E44AD }
-.result h3 { font-size: 1em; word-wrap:break-word; margin: 5px 0 1px 0; padding: 0 }
-.result .content { font-size: 0.8em; margin: 0; padding: 0; max-width: 54em; word-wrap:break-word; line-height: 1.24; }
-.result .url { font-size: 0.8em; margin: 3px 0 0 0; padding: 0; max-width: 54em; word-wrap:break-word; color: #C0392B; }
-
-.q { width: 30em; }
-
-.engines { color: #888888; }
-
-.small_font { font-size: 0.8em; }
-
-.small p { margin: 2px 0; }
-
-.search { background: #ECF0F1; padding: 0; margin: 0 }
-
-.right { float: right; }
-
-.invisible { display: none; }
-
-.left { float: left; }
-
-.image_result { float: left; margin: 10px 10px; position: relative;  height: 160px;}
-.image_result img { border: 0;  height: 160px;}
-.image_result p { margin: 0; padding: 0; }
-.image_result p span a { display: none; }
-.image_result p span a { color: #FFFFFF; }
-.image_result p:hover span a { display: block; position: absolute; bottom: 0; right: 0; padding: 4px; background-color: rgba(0, 0, 0, 0.6); font-size: 0.7em; }
-
-.torrent_result { border-left: 10px solid lightgray; padding-left: 3px; }
-.torrent_result p { margin: 3px; font-size: 0.8em; }
-
-.definition_result { border-left: 10px solid gray; padding-left: 3px; }
-
-.percentage { position: relative; width: 300px; }
-.percentage div { background: #444444; }
-table { width: 100%; }
-td { padding: 0 4px;  }
-tr:hover { background: #DDDDDD; }
-
-#search_wrapper { position: relative; max-width: 600px; padding: 10px; }
-.center #search_wrapper { margin-left: auto; margin-right: auto; }
-.q {
-    background: none repeat scroll 0 0 #FFFFFF;
-    border: 1px solid #3498DB;
-    color: #222222;
-    font-size: 16px;
-    height: 28px;
-    margin: 0;
-    outline: medium none;
-    padding: 2px;
-    padding-left: 8px;
-    padding-right: 0px !important;
-    width: 100%;
-    z-index: 2;
-}
-#search_submit {
-    position: absolute;
-    top: 13px;
-    right: 1px;
-    padding: 0;
-    border: 0;
-    background: url('/static/img/search-icon.png') no-repeat;
-    background-size: 24px 24px;
-    opacity: 0.8;
-    width: 24px;
-    height: 30px;
-    font-size: 0;
-}
-
-#results { margin: 10px; padding: 0; margin-bottom: 20px; }
-
-#sidebar { position: absolute; left: 54em; width: 12em; margin: 0 2px 5px 5px; padding: 0 2px 2px 2px; }
-#suggestions span { display: block; margin: 0 2px 2px 2px; padding: 0; }
-#suggestions form { display: block; }
-#suggestions input { padding: 2px 6px; margin: 2px 4px;  font-size: 0.8em; display: inline-block; background: #3498DB; color: #FFFFFF; border-radius: 4px; border: 0; cursor: pointer; }
-#search_url { margin-top: 8px; }
-#search_url input { border: 1px solid #888888; padding: 4px; color: #444444; width: 20em; display: block; margin: 4px; }
-
-#preferences {
-    top: 10px;
-    padding: 0;
-    border: 0;
-    background: url('/static/img/preference-icon.png') no-repeat;
-    background-size: 28px 28px;
-    opacity: 0.8;
-    width: 28px;
-    height: 30px;
-    display: block;
-}
-
-#preferences * {
-    display: none;
-}
-
-#pagination {
-    clear: both;
-}
-
-#apis {
-    margin-top: 8px;
-    clear: both;
-}
-
-@media screen and (max-width: 60em) {
-
-  #sidebar { position: static; max-width: 50em; margin: 0 0 2px 0; padding: 0; float: none; border: none; width: auto }
-  #suggestions span { display: inline; font-size: 0.8em }
-  #suggestions form { display: inline; }
-  #suggestions input { padding: 2px 6px; margin: 2px 4px;  font-size: 0.8em; display: inline-block; border-radius: 4px; border: 0; cursor: pointer; }
-
-}
-
-@media screen and (max-width: 680px) {
-
-  #search_wrapper { width: 90%; clear:both; overflow: hidden }
-
-  .right { display: none; postion: fixed !important; top: 100px; right: 0px; }
-
-  #apis { display: none; }
-
-  #categories { font-size: 80%; clear: both; }
-
-  #categories .checkbox_container { margin-top: 2px; margin: 0 2px; }
-  .checkbox_container { display: block; width: 100%; float: left; }
-  .checkbox_container label { border-bottom: 0; }
-
-  .result { border-top: 1px solid #e8e7e6; margin: 7px 0 6px 0;  }
-
-  .result img { max-width: 90%; width: auto; height: auto }
-}
-
-.favicon { float: left; margin-right: 4px; margin-top: 2px; }
+html{font-family:sans-serif;font-size:.9em;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:#444;padding:0;margin:0}
+body,#container{padding:0;margin:0}
+#container{width:100%;position:absolute;top:0}
+.row{max-width:800px;margin:auto;text-align:justify}.row h1{font-size:3em;margin-top:50px}
+.row p{padding:0 10px;max-width:700px}
+.row h3,.row ul{margin:4px 8px}
+.hmarg{margin:0 20px;border:1px solid #3498db;padding:4px 10px}
+a:link.hmarg{color:#3498db}
+a:visited.hmarg{color:#3498db}
+a:active.hmarg{color:#3498db}
+a:hover.hmarg{color:#3498db}
+.top_margin{margin-top:60px}
+.center{text-align:center}
+h1{font-size:5em}
+div.title{background:url('/static/img/searx.png') no-repeat;width:100%;background-position:center}div.title h1{visibility:hidden}
+input[type="submit"]{padding:2px 6px;margin:2px 4px;display:inline-block;background:#3498db;color:#fff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}
+input[type="checkbox"]{visibility:hidden}
+fieldset{margin:8px;border:1px solid #3498db}
+#categories{margin:0 10px}
+.checkbox_container{display:inline-block;position:relative;margin:0 3px;padding:0}.checkbox_container input{display:none}
+.checkbox_container label,.engine_checkbox label{cursor:pointer;padding:4px 10px;margin:0;display:block;text-transform:capitalize;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+.checkbox_container input[type="checkbox"]:checked+label{background:#3498db;color:#fff}
+.search .checkbox_container label{border-bottom:4px solid #e8e7e6}
+.search .checkbox_container label:hover{border-bottom:4px solid #3498db}
+.search .checkbox_container input[type="checkbox"]:checked+label{border-bottom:4px solid #2980b9}
+.engine_checkbox{padding:4px}
+label.allow{background:#e74c3c;padding:4px 8px;color:#fff;display:none}
+label.deny{background:#2ecc71;padding:4px 8px;color:#444;display:inline}
+.engine_checkbox input[type="checkbox"]:checked+label:nth-child(2)+label{display:none}
+.engine_checkbox input[type="checkbox"]:checked+label.allow{display:inline}
+a{text-decoration:none;color:#1a11be}a:visited{color:#8e44ad}
+.result{margin:19px 0 18px 0;padding:0;max-width:55em;clear:both}
+.result_title{margin-bottom:0}.result_title a{color:#2980b9;font-weight:normal;font-size:1.1em}.result_title a:hover{text-decoration:underline}
+.result_title a:visited{color:#8e44ad}
+.result h3{font-size:1em;word-wrap:break-word;margin:5px 0 1px 0;padding:0}
+.result .content{font-size:.8em;margin:0;padding:0;max-width:54em;word-wrap:break-word;line-height:1.24}
+.result .url{font-size:.8em;margin:3px 0 0 0;padding:0;max-width:54em;word-wrap:break-word;color:#c0392b}
+.engines{color:#888}
+.small_font{font-size:.8em}
+.small p{margin:2px 0}
+.search{background:#ecf0f1;padding:0;margin:0}
+.right{float:right}
+.invisible{display:none}
+.left{float:left}
+.image_result{float:left;margin:10px 10px;position:relative;height:160px}.image_result img{border:0;height:160px}
+.image_result p{margin:0;padding:0}.image_result p span a{display:none;color:#fff}
+.image_result p:hover span a{display:block;position:absolute;bottom:0;right:0;padding:4px;background-color:rgba(0,0,0,0.6);font-size:.7em}
+.torrent_result{border-left:10px solid #d3d3d3;padding-left:3px}.torrent_result p{margin:3px;font-size:.8em}
+.definition_result{border-left:10px solid #808080;padding-left:3px}
+.percentage{position:relative;width:300px}.percentage div{background:#444}
+table{width:100%}
+td{padding:0 4px}
+tr:hover{background:#ddd}
+#search_wrapper{position:relative;max-width:600px;padding:10px}
+.center #search_wrapper{margin-left:auto;margin-right:auto}
+.q{background:none repeat scroll 0 0 #fff;border:1px solid #3498db;color:#222;font-size:16px;height:28px;margin:0;outline:medium none;padding:2px;padding-left:8px;padding-right:0 !important;width:100%;z-index:2}
+#search_submit{position:absolute;top:13px;right:1px;padding:0;border:0;background:url('/static/img/search-icon.png') no-repeat;background-size:24px 24px;opacity:.8;width:24px;height:30px;font-size:0}
+#results{margin:10px;padding:0;margin-bottom:20px}
+#sidebar{position:absolute;left:54em;width:15em;margin:0 2px 5px 5px;padding:0 2px 2px 2px}
+#suggestions span{display:block;margin:0 2px 2px 2px;padding:0}
+#suggestions form{display:block}
+#suggestions input{padding:2px 6px;margin:2px 4px;font-size:.8em;display:inline-block;background:#3498db;color:#fff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}
+#search_url{margin-top:8px}#search_url input{border:1px solid #888;padding:4px;color:#444;width:20em;display:block;margin:4px}
+#preferences{top:10px;padding:0;border:0;background:url('/static/img/preference-icon.png') no-repeat;background-size:28px 28px;opacity:.8;width:28px;height:30px;display:block}#preferences *{display:none}
+#pagination{clear:both}
+#apis{margin-top:8px;clear:both}
+@media screen and (max-width:60em){#sidebar{position:static;max-width:50em;margin:0 0 2px 0;padding:0;float:none;border:none;width:auto} #suggestions span{display:inline;font-size:.8em} #suggestions form{display:inline} #suggestions input{padding:2px 6px;margin:2px 4px;font-size:.8em;display:inline-block;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}}@media screen and (max-width:680px){#search_wrapper{width:90%;clear:both;overflow:hidden} .right{display:none;postion:fixed !important;top:100px;right:0} #apis{display:none} #categories{font-size:80%;clear:both}#categories .checkbox_container{margin-top:2px;margin:0 2px} .checkbox_container{display:block;width:100%;float:left}.checkbox_container label{border-bottom:0} .result{border-top:1px solid #e8e7e6;margin:7px 0 6px 0}.result img{max-width:90%;width:auto;height:auto}}.favicon{float:left;margin-right:4px;margin-top:2px}
diff --git a/searx/static/css/style.less b/searx/static/css/style.less
new file mode 100644
index 000000000..c34587322
--- /dev/null
+++ b/searx/static/css/style.less
@@ -0,0 +1,556 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ *
+ * To convert "style.less" to "style.css" run: $make styles
+ */
+
+@import "definitions.less";
+
+@import "mixins.less";
+
+// Main LESS-Code
+
+html {
+	font-family: sans-serif;
+	font-size: 0.9em;
+	.text-size-adjust;
+	color: @color-font;
+	padding: 0;
+	margin: 0;
+}
+
+body, #container {
+	padding: 0;
+	margin: 0;
+}
+
+#container {
+    width: 100%;
+    position: absolute;
+    top: 0;
+}
+
+.row {
+	max-width: 800px;
+	margin: auto;
+	text-align: justify;
+
+	h1 { 
+		font-size: 3em;
+		margin-top: 50px; 
+	}
+
+	p { 
+		padding: 0 10px;
+		max-width: 700px;
+	}
+
+	h3,ul { 
+		margin: 4px 8px;
+	}
+}
+
+.hmarg {
+    margin: 0 20px;
+    border: 1px solid @color-hmarg-border;
+    padding: 4px 10px;
+}
+
+a {
+	&:link.hmarg { 
+		color: @color-hmarg-font; 
+	}
+
+	&:visited.hmarg {
+		color: @color-hmarg-font;
+	}
+
+	&:active.hmarg { 
+		color: @color-hmarg-font-hover; 
+	}
+
+	&:hover.hmarg { 
+		color: @color-hmarg-font-hover; 
+	}
+}
+
+.top_margin { 
+	margin-top: 60px; 
+}
+
+.center {
+	text-align: center;
+}
+
+h1 {
+	font-size: 5em;
+}
+
+div.title {
+	background: url('/static/img/searx.png') no-repeat;
+	width: 100%;
+	background-position: center;
+
+	h1 {
+		visibility: hidden;
+	}
+}
+
+input[type="submit"] {
+	padding: 2px 6px;
+	margin: 2px 4px;
+	display: inline-block;
+	background: @color-download-button-background;
+	color: @color-download-button-font;
+	.rounded-corners;
+	border: 0;
+	cursor: pointer;
+}
+
+input[type="checkbox"] {
+	visibility: hidden;
+}
+
+fieldset {
+	margin: 8px;
+	border: 1px solid @color-settings-fieldset;
+}
+
+#categories {
+	margin: 0 10px;
+}
+
+.checkbox_container {
+	display: inline-block;
+	position: relative;
+	margin: 0 3px;
+	padding: 0px;
+
+	input {
+		display: none;
+	}
+}
+
+.checkbox_container label, .engine_checkbox label {
+	cursor: pointer;
+	padding: 4px 10px;
+	margin: 0;
+	display: block;
+	text-transform: capitalize;
+	.user-select;
+}
+
+.checkbox_container input[type="checkbox"]:checked + label {
+	background: @color-categories-item-selected;
+	color: @font-color-categories-item-selected;
+}
+
+.search  {
+	.checkbox_container label {
+		border-bottom: 4px solid @color-categories-item-border-unselected;
+	}
+
+	.checkbox_container label:hover {
+		border-bottom: 4px solid @color-categories-item-border-unselected-hover;
+	}
+
+	.checkbox_container input[type="checkbox"]:checked + label { 
+		border-bottom: 4px solid @color-categories-item-border-selected;
+	}
+}
+
+.engine_checkbox {
+	padding: 4px;
+}
+
+label {
+	&.allow {
+		background: @color-settings-label-allowed-background;
+		padding: 4px 8px; 
+		color: @color-settings-label-allowed-font;
+		display: none;
+	}
+
+	&.deny {
+		background: @color-settings-label-deny-background;
+		padding: 4px 8px; 
+		color: @color-settings-label-deny-font;
+		display: inline;
+	}
+}
+
+.engine_checkbox input[type="checkbox"]:checked + label {
+	&:nth-child(2) + label {
+		display: none;
+	}
+
+	&.allow {
+		display: inline;
+	}
+}
+
+a {
+	text-decoration: none;
+	color: @color-url-font;
+
+	&:visited {
+		color: @color-url-visited-font;
+	}
+}
+
+.result {
+	margin: 19px 0 18px 0;
+	padding: 0;
+	max-width: 55em;
+	clear: both;
+}
+
+.result_title {
+	margin-bottom: 0;
+
+	a { 
+		color: @color-result-link-font;
+		font-weight: normal;
+		font-size: 1.1em;
+
+		&:hover {
+			text-decoration: underline;
+		}
+
+		&:visited {
+			color: @color-result-link-visited-font;
+		}
+	}
+}
+
+.result {
+	h3 {
+		font-size: 1em;
+		word-wrap:break-word;
+		margin: 5px 0 1px 0;
+		padding: 0
+	}
+
+	.content {
+		font-size: 0.8em;
+		margin: 0;
+		padding: 0;
+		max-width: 54em;
+		word-wrap:break-word;
+		line-height: 1.24;
+	}
+
+	.url {
+		font-size: 0.8em;
+		margin: 3px 0 0 0;
+		padding: 0;
+		max-width: 54em;
+		word-wrap:break-word;
+		color: @color-result-url-font;
+	}
+}
+
+.engines {
+	color: @color-engines-font;
+}
+
+.small_font {
+	font-size: 0.8em;
+}
+
+.small p {
+	margin: 2px 0;
+}
+
+.search {
+	background: @color-result-search-background;
+	padding: 0;
+	margin: 0
+}
+
+.right {
+	float: right;
+}
+
+.invisible {
+	display: none;
+}
+
+.left {
+	float: left;
+}
+
+.image_result {
+	float: left;
+	margin: 10px 10px;
+	position: relative;
+	height: 160px;
+
+	img {
+		border: 0;
+		height: 160px;
+	}
+
+	p {
+		margin: 0;
+		padding: 0;
+
+		span a {
+			display: none;
+			color: @color-result-image-span-font;
+		}
+
+		&:hover span a {
+			display: block;
+			position: absolute;
+			bottom: 0;
+			right: 0;
+			padding: 4px;
+			background-color: @color-result-image-span-background-hover;
+			font-size: 0.7em;
+		}
+	}
+}
+
+.torrent_result {
+	border-left: 10px solid @color-result-torrent-border;
+	padding-left: 3px;
+
+	p {
+		margin: 3px;
+		font-size: 0.8em;
+	}
+}
+
+.definition_result {
+	border-left: 10px solid @color-result-definition-border;
+	padding-left: 3px;
+}
+
+.percentage {
+	position: relative;
+	width: 300px;
+
+	div {
+		background: @color-percentage-div-background;
+	}
+}
+
+table {
+	width: 100%;
+}
+
+td {
+	padding: 0 4px;
+}
+
+tr {
+	&:hover {
+		background: @color-settings-tr-hover;
+	}
+}
+
+#search_wrapper {
+	position: relative;
+	max-width: 600px;
+	padding: 10px;
+}
+
+.center #search_wrapper {
+	margin-left: auto;
+	margin-right: auto;
+}
+
+.q {
+	background: none repeat scroll 0 0 @color-search-background;
+	border: 1px solid @color-search-border;
+	color: @color-search-font;
+	font-size: 16px;
+	height: 28px;
+	margin: 0;
+	outline: medium none;
+	padding: 2px;
+	padding-left: 8px;
+	padding-right: 0px !important;
+	width: 100%;
+	z-index: 2;
+}
+
+#search_submit {
+	position: absolute;
+	top: 13px;
+	right: 1px;
+	padding: 0;
+	border: 0;
+	background: url('/static/img/search-icon.png') no-repeat;
+	background-size: 24px 24px;
+	opacity: 0.8;
+	width: 24px;
+	height: 30px;
+	font-size: 0;
+}
+
+#results {
+	margin: 10px;
+	padding: 0;
+	margin-bottom: 20px;
+}
+
+#sidebar {
+	position: absolute;
+	left: 54em;
+	width: 15em;
+	margin: 0 2px 5px 5px;
+	padding: 0 2px 2px 2px;
+}
+
+#suggestions {
+	span {
+		display: block;
+		margin: 0 2px 2px 2px;
+		padding: 0;
+	}
+
+	form {
+		display: block;
+	}
+
+	input {
+		padding: 2px 6px;
+		margin: 2px 4px;
+		font-size: 0.8em;
+		display: inline-block;
+		background: @color-suggestions-button-background;
+		color: @color-suggestions-button-font;
+		.rounded-corners;
+		border: 0;
+		cursor: pointer;
+	}
+}
+
+#search_url {
+	margin-top: 8px;
+
+	input {
+		border: 1px solid @color-result-search-url-border;
+		padding: 4px;
+		color: @color-result-search-url-font;
+		width: 20em;
+		display: block;
+		margin: 4px;
+	}
+} 
+
+#preferences {
+	top: 10px;
+	padding: 0;
+	border: 0;
+	background: url('/static/img/preference-icon.png') no-repeat;
+	background-size: 28px 28px;
+	opacity: 0.8;
+	width: 28px;
+	height: 30px;
+	display: block;
+
+	* {
+		display: none;
+	}
+}
+
+#pagination {
+	clear: both;
+}
+
+#apis {
+	margin-top: 8px;
+	clear: both;
+}
+
+@media screen and (max-width: 60em) {
+	#sidebar {
+		position: static;
+		max-width: 50em;
+		margin: 0 0 2px 0;
+		padding: 0;
+		float: none;
+		border: none;
+		width: auto
+	}
+
+	#suggestions {
+		span {
+			display: inline;
+			font-size: 0.8em
+		}
+
+		form {
+			display: inline;
+		}
+
+		input {
+			padding: 2px 6px;
+			margin: 2px 4px;
+			font-size: 0.8em;
+			display: inline-block;
+			.rounded-corners;
+			border: 0;
+			cursor: pointer;
+		}
+	}
+}
+
+@media screen and (max-width: 680px) {
+	#search_wrapper {
+		width: 90%;
+		clear:both;
+		overflow: hidden
+	}
+
+	.right {
+		display: none;
+		postion: fixed !important;
+		top: 100px;
+		right: 0px;
+	}
+
+	#apis {
+		display: none;
+	}
+
+	#categories {
+		font-size: 80%;
+		clear: both;
+
+		.checkbox_container {
+			margin-top: 2px;
+			margin: 0 2px; 
+		}
+	}
+
+	.checkbox_container {
+		display: block;
+		width: 100%;
+		float: left;
+
+		label {
+			border-bottom: 0;
+		}
+	}
+
+	.result {
+		border-top: 1px solid @color-result-top-border;
+		margin: 7px 0 6px 0;
+
+		img {
+			max-width: 90%;
+			width: auto;
+			height: auto
+		}
+	}
+}
+
+.favicon {
+	float: left;
+	margin-right: 4px;
+	margin-top: 2px;
+}

From a6c9a571aca13bde3d93a54dafca33b29e0afcac Mon Sep 17 00:00:00 2001
From: Thomas Pointhuber <thomas.pointhuber@gmx.at>
Date: Wed, 5 Mar 2014 16:03:13 +0100
Subject: [PATCH 2/8] rewrite wrong variable name

---
 searx/static/css/definitions.less | 2 +-
 searx/static/css/style.less       | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/searx/static/css/definitions.less b/searx/static/css/definitions.less
index a7d892303..013d24f2f 100644
--- a/searx/static/css/definitions.less
+++ b/searx/static/css/definitions.less
@@ -36,7 +36,7 @@
 /// Categories
 
 @color-categories-item-selected: @color-base;
-@font-color-categories-item-selected: #FFF;
+@color-categories-item-selected-font: #FFF;
 
 @color-categories-item-border-selected: @color-base-dark;
 @color-categories-item-border-unselected: #E8E7E6;
diff --git a/searx/static/css/style.less b/searx/static/css/style.less
index c34587322..1aa4bdfaa 100644
--- a/searx/static/css/style.less
+++ b/searx/static/css/style.less
@@ -142,7 +142,7 @@ fieldset {
 
 .checkbox_container input[type="checkbox"]:checked + label {
 	background: @color-categories-item-selected;
-	color: @font-color-categories-item-selected;
+	color: @color-categories-item-selected-font;
 }
 
 .search  {

From 6d9affc1fc33a653fc5abaf657543766c35b0b10 Mon Sep 17 00:00:00 2001
From: Thomas Pointhuber <thomas.pointhuber@gmx.at>
Date: Wed, 5 Mar 2014 16:06:33 +0100
Subject: [PATCH 3/8] fix .travis.yml

---
 .travis.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 42cb092f4..cd9ee9624 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,7 +5,8 @@ before_install:
   - "export DISPLAY=:99.0"
   - "sh -e /etc/init.d/xvfb start"
 install:
-  - "make node-less"
+  - "make"
+  - "node-less"
 script:
   - "make tests"
   - "make robot"

From c62528d848b86d2d2a803a430450a977fd640f08 Mon Sep 17 00:00:00 2001
From: Thomas Pointhuber <thomas.pointhuber@gmx.at>
Date: Wed, 5 Mar 2014 16:16:30 +0100
Subject: [PATCH 4/8] fix .travis.yml

---
 .travis.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index cd9ee9624..65c702bb1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,9 +4,10 @@ python:
 before_install:
   - "export DISPLAY=:99.0"
   - "sh -e /etc/init.d/xvfb start"
+  - sudo apt-get -qq update
+  - sudo apt-get -qq install node-less
 install:
   - "make"
-  - "node-less"
 script:
   - "make tests"
   - "make robot"

From 3032e15e3ab83d41eac98191d48a620990a41d2d Mon Sep 17 00:00:00 2001
From: Thomas Pointhuber <thomas.pointhuber@gmx.at>
Date: Wed, 5 Mar 2014 16:25:00 +0100
Subject: [PATCH 5/8] fix .travis.yml

---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 65c702bb1..fb4a47f60 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,7 +5,7 @@ before_install:
   - "export DISPLAY=:99.0"
   - "sh -e /etc/init.d/xvfb start"
   - sudo apt-get -qq update
-  - sudo apt-get -qq install node-less
+  - sudo apt-get -qq install less node-less
 install:
   - "make"
 script:

From e8b74c9e094c3b726100ac72de04e7c6a192b3b7 Mon Sep 17 00:00:00 2001
From: Thomas Pointhuber <thomas.pointhuber@gmx.at>
Date: Wed, 5 Mar 2014 16:59:44 +0100
Subject: [PATCH 6/8] using npm instead of apt-get in .travis.yml

---
 .travis.yml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index fb4a47f60..ee0b506a5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,8 +4,7 @@ python:
 before_install:
   - "export DISPLAY=:99.0"
   - "sh -e /etc/init.d/xvfb start"
-  - sudo apt-get -qq update
-  - sudo apt-get -qq install less node-less
+  - npm install -g less
 install:
   - "make"
 script:

From 3b31c60f07dbc5b6e240295885b672e46b1583bd Mon Sep 17 00:00:00 2001
From: Thomas Pointhuber <thomas.pointhuber@gmx.at>
Date: Thu, 6 Mar 2014 16:25:15 +0100
Subject: [PATCH 7/8] fix little style errors

---
 searx/static/css/definitions.less |  2 ++
 searx/static/css/style.css        |  5 +++--
 searx/static/css/style.less       | 18 ++++++++++++++++--
 searx/templates/preferences.html  |  4 ++--
 4 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/searx/static/css/definitions.less b/searx/static/css/definitions.less
index 013d24f2f..f71f55782 100644
--- a/searx/static/css/definitions.less
+++ b/searx/static/css/definitions.less
@@ -85,6 +85,8 @@
 @color-settings-label-deny-background: #2ECC71;
 @color-settings-label-deny-font: @color-font;
 
+@color-settings-return-background: @color-base;
+@color-settings-return-font: #FFF;
 
 /// Other
 
diff --git a/searx/static/css/style.css b/searx/static/css/style.css
index 59c5c1436..bc4c034dc 100644
--- a/searx/static/css/style.css
+++ b/searx/static/css/style.css
@@ -1,7 +1,7 @@
 html{font-family:sans-serif;font-size:.9em;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:#444;padding:0;margin:0}
 body,#container{padding:0;margin:0}
 #container{width:100%;position:absolute;top:0}
-.row{max-width:800px;margin:auto;text-align:justify}.row h1{font-size:3em;margin-top:50px}
+.row{max-width:800px;margin:20px auto;text-align:justify}.row h1{font-size:3em;margin-top:50px}
 .row p{padding:0 10px;max-width:700px}
 .row h3,.row ul{margin:4px 8px}
 .hmarg{margin:0 20px;border:1px solid #3498db;padding:4px 10px}
@@ -64,4 +64,5 @@ tr:hover{background:#ddd}
 #preferences{top:10px;padding:0;border:0;background:url('/static/img/preference-icon.png') no-repeat;background-size:28px 28px;opacity:.8;width:28px;height:30px;display:block}#preferences *{display:none}
 #pagination{clear:both}
 #apis{margin-top:8px;clear:both}
-@media screen and (max-width:60em){#sidebar{position:static;max-width:50em;margin:0 0 2px 0;padding:0;float:none;border:none;width:auto} #suggestions span{display:inline;font-size:.8em} #suggestions form{display:inline} #suggestions input{padding:2px 6px;margin:2px 4px;font-size:.8em;display:inline-block;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}}@media screen and (max-width:680px){#search_wrapper{width:90%;clear:both;overflow:hidden} .right{display:none;postion:fixed !important;top:100px;right:0} #apis{display:none} #categories{font-size:80%;clear:both}#categories .checkbox_container{margin-top:2px;margin:0 2px} .checkbox_container{display:block;width:100%;float:left}.checkbox_container label{border-bottom:0} .result{border-top:1px solid #e8e7e6;margin:7px 0 6px 0}.result img{max-width:90%;width:auto;height:auto}}.favicon{float:left;margin-right:4px;margin-top:2px}
+@media screen and (max-width:60em){#sidebar{position:static;max-width:50em;margin:0 0 2px 0;padding:0;float:none;border:none;width:auto} #suggestions span{display:inline;font-size:.8em} #suggestions form{display:inline} #suggestions input{padding:2px 6px;margin:2px 4px;font-size:.8em;display:inline-block;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}}@media screen and (max-width:680px){#search_wrapper{width:90%;clear:both;overflow:hidden} .right{display:none;postion:fixed !important;top:100px;right:0} #apis{display:none} #categories{font-size:80%;clear:both}#categories .checkbox_container{margin-top:2px;margin:0 2px} .checkbox_container{display:block;width:100%}.checkbox_container label{border-bottom:0} .result{border-top:1px solid #e8e7e6;margin:7px 0 6px 0}.result img{max-width:90%;width:auto;height:auto}}.favicon{float:left;margin-right:4px;margin-top:2px}
+.preferences_back{background:none repeat scroll 0 0 #3498db;border:0 none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;cursor:pointer;display:inline-block;margin:2px 4px;padding:4px 6px}.preferences_back a{color:#fff}
diff --git a/searx/static/css/style.less b/searx/static/css/style.less
index 1aa4bdfaa..556ecd615 100644
--- a/searx/static/css/style.less
+++ b/searx/static/css/style.less
@@ -32,7 +32,7 @@ body, #container {
 
 .row {
 	max-width: 800px;
-	margin: auto;
+	margin: 20px auto;
 	text-align: justify;
 
 	h1 { 
@@ -530,7 +530,7 @@ tr {
 	.checkbox_container {
 		display: block;
 		width: 100%;
-		float: left;
+		//float: left;
 
 		label {
 			border-bottom: 0;
@@ -554,3 +554,17 @@ tr {
 	margin-right: 4px;
 	margin-top: 2px;
 }
+
+.preferences_back {
+	background: none repeat scroll 0 0 @color-settings-return-background;
+    border: 0 none;
+    .rounded-corners;
+    cursor: pointer;
+    display: inline-block;
+    margin: 2px 4px;
+    padding: 4px 6px;
+
+	a {
+		color: @color-settings-return-font;
+	}
+}
diff --git a/searx/templates/preferences.html b/searx/templates/preferences.html
index 5632accd2..c1b9a8968 100644
--- a/searx/templates/preferences.html
+++ b/searx/templates/preferences.html
@@ -65,7 +65,7 @@
     </p>
 
     <input type="submit" value="{{ _('save') }}" />
-    </form>
-    <div class="right"><a href="{{ url_for('index') }}">{{ _('back') }}</a></div>
+	<div class="right preferences_back"><a href="{{ url_for('index') }}">{{ _('back') }}</a></div>
+    </form>    
 </div>
 {% endblock %}

From 2fe2af71588c5040fc27385e83c5ec3d57ebf7b3 Mon Sep 17 00:00:00 2001
From: Thomas Pointhuber <thomas.pointhuber@gmx.at>
Date: Thu, 6 Mar 2014 16:37:25 +0100
Subject: [PATCH 8/8] Adding placeholder in search-field

---
 searx/templates/search.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/searx/templates/search.html b/searx/templates/search.html
index 270d350ac..95e312e5a 100644
--- a/searx/templates/search.html
+++ b/searx/templates/search.html
@@ -1,6 +1,6 @@
 <form method="post" action="{{ url_for('index') }}" id="search_form">
   <div id="search_wrapper">
-    <input type="text" id="q" class="q" name="q" tabindex="1" autocomplete="off" {% if q %}value="{{ q }}"{% endif %}/>
+    <input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" autocomplete="off" {% if q %}value="{{ q }}"{% endif %}/>
     <input type="submit" value="search" id="search_submit" />
   </div>
   {% include 'categories.html' %}