diff --git a/.gitignore b/.gitignore
index 2c0568a588f2c2759a62bc94151c0597f8c09abe..b5c98c948d9c2eb75df122268b315b29f15a9e93 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,5 @@ php53.cgi
 include/ost-config.php
 *.sw[a-z]
 .DS_Store
+.vagrant
+Vagrantfile
diff --git a/assets/default/about-custom-themes.md b/assets/default/about-custom-themes.md
new file mode 100644
index 0000000000000000000000000000000000000000..eecf1bbbed3d3002d3d4abe686f8ec6d82717094
--- /dev/null
+++ b/assets/default/about-custom-themes.md
@@ -0,0 +1,14 @@
+Customizng Your Theme
+====
+
+When modifying the default theme, it is recommended that you do not
+edit the CSS files directly. Instead, you should use the included
+LESS files and recompile the CSS file with your edits.
+
+Even if you decide to edit the CSS directly, we recommend that you
+keep the LESS files, so that you can quickly rebuild the default
+theme should you need to recover it, or for upgrade purposes.
+
+*Please do not submit any CSS edits to the official branch, unless
+they are done within the LESS files.*
+
diff --git a/assets/default/css/print.css b/assets/default/css/print.css
index 9f1c25746ca0486d2524e24ea850b1d2ffcd9e6c..aca3d50f9265e03c3a95d5a5dbbe78aa891b0a21 100644
--- a/assets/default/css/print.css
+++ b/assets/default/css/print.css
@@ -1,29 +1 @@
-#header, #nav, #meta, #footer, #reply, #pagination, .reload, .refresh, form, .thread, hr, #kbAttachments, .back {
-  display: none;
-}
-
-th {
-  text-align: left;
-}
-
-a {
-  color: #000;
-  text-decoration: none;
-}
-
-caption {
-  text-align: left;
-  padding-bottom: 10px;
-  font-weight: bold;
-}
-
-.message, .response {
-  border-bottom: 1px solid #000;
-  margin-bottom: 20px;
-  padding-bottom: 10px;
-}
-.message th, .response th {
-  font-size: 12pt;
-  font-weight: bold;
-  padding-bottom: 5px;
-}
+#header,#nav,#meta,#footer,#reply,#pagination,.reload,.refresh,form,.thread,hr,#kbAttachments,.back{display:none}th{text-align:left}a{color:#000;text-decoration:none}caption{text-align:left;padding-bottom:10px;font-weight:bold}.message,.response{border-bottom:1px solid #000;margin-bottom:20px;padding-bottom:10px}.message th,.response th{font-size:12pt;font-weight:bold;padding-bottom:5px}
\ No newline at end of file
diff --git a/assets/default/css/theme.css b/assets/default/css/theme.css
index b59f6af8955857d2008dff647e8e4d83d4924e72..206cbe9fd0eb86d67fa1d16abae23e9a49aab9ca 100644
--- a/assets/default/css/theme.css
+++ b/assets/default/css/theme.css
@@ -1,31 +1,29 @@
-/* Based on Normalize.css - with tags we won't use removed. */
 html {
   font-size: 100%;
   overflow-y: scroll;
   -webkit-text-size-adjust: 100%;
   -ms-text-size-adjust: 100%;
 }
-
 body {
   margin: 0;
   font-size: 13px;
   line-height: 1.231;
   padding: 0;
 }
-
-body, input, select, textarea {
+body,
+input,
+select,
+textarea {
   font-family: sans-serif;
   color: #000;
 }
-
-b, strong {
+b,
+strong {
   font-weight: bold;
 }
-
 blockquote {
   margin: 1em 40px;
 }
-
 hr {
   display: block;
   height: 1px;
@@ -34,119 +32,120 @@ hr {
   margin: 1em 0;
   padding: 0;
 }
-
 small {
   font-size: 85%;
 }
-
-ul, ol {
+ul,
+ol {
   margin: 1em 0;
   padding: 0 0 0 30px;
 }
-
 img {
   border: 0;
   vertical-align: middle;
 }
-
 form {
   margin: 0;
 }
-
 fieldset {
   border: 0;
   margin: 0;
   padding: 0;
 }
-
 label {
   cursor: pointer;
 }
-
-input, select, textarea {
+input,
+select,
+textarea {
   font-size: 100%;
   margin: 0;
   vertical-align: baseline;
   *vertical-align: middle;
 }
-
 input {
   line-height: normal;
   *overflow: visible;
 }
-
 table input {
   *overflow: auto;
 }
-
-input[type="button"], input[type="reset"], input[type="submit"] {
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
   cursor: pointer;
   -webkit-appearance: button;
 }
-
-input[type="checkbox"], input[type="radio"] {
+input[type="checkbox"],
+input[type="radio"] {
   box-sizing: border-box;
 }
-
 input[type="search"] {
   -webkit-appearance: textfield;
   -moz-box-sizing: content-box;
   -webkit-box-sizing: content-box;
   box-sizing: content-box;
 }
-
 textarea {
   overflow: auto;
   vertical-align: top;
   resize: vertical;
 }
-
 table {
   border-collapse: collapse;
   border-spacing: 0;
 }
-
-th, td {
+th,
+td {
   vertical-align: top;
 }
-
-th { text-align: left; font-weight: normal; }
-
-h1, h2, h3, h4, h5, h6, form, fieldset {
+th {
+  text-align: left;
+  font-weight: normal;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+form,
+fieldset {
   margin: 0;
   padding: 0;
 }
-
 /* Typography */
 a {
   color: #0072bc;
   text-decoration: none;
 }
-
 h1 {
   color: #00AEEF;
   font-weight: normal;
   font-size: 20px;
 }
-
 h3 {
   font-size: 16px;
 }
-
 h2 {
   font-size: 16px;
   color: #999;
 }
-
 /* Helpers */
-.centered { text-align: center;}
-
-.clear { clear:both; height: 1px; visibility: none;}
-
-.hidden { display: none;}
-
-.faded { color:#666;}
-
+.centered {
+  text-align: center;
+}
+.clear {
+  clear: both;
+  height: 1px;
+  visibility: none;
+}
+.hidden {
+  display: none;
+}
+.faded {
+  color: #666;
+}
 /* Pagination */
 #pagination {
   border: 0;
@@ -161,24 +160,26 @@ h2 {
   list-style: none;
   display: inline;
 }
-#pagination a {
+#pagination li a {
   margin-right: 2px;
   display: block;
   float: left;
   padding: 3px 6px;
   text-decoration: none;
 }
-#pagination a:hover {
+#pagination li a:hover {
   color: #ff0084;
 }
-#pagination .previousOff, #pagination .nextOff {
+#pagination .previousOff,
+#pagination .nextOff {
   color: #666;
   display: block;
   float: left;
   font-weight: bold;
   padding: 3px 4px;
 }
-#pagination .next a, #pagination .previous a {
+#pagination .next a,
+#pagination .previous a {
   font-weight: bold;
 }
 #pagination .active {
@@ -190,16 +191,34 @@ h2 {
   padding: 3px 6px;
   text-decoration: none;
 }
-
 /* Alerts & Notices */
-
-#msg_notice { margin: 0; padding: 5px 10px 5px 36px; height: 16px; line-height: 16px; margin-bottom: 10px; border: 1px solid #0a0; background: url('../images/icons/ok.png') 10px 50% no-repeat #e0ffe0; }
-
-#msg_warning { margin: 0; padding: 5px 10px 5px 36px; height: 16px; line-height: 16px; margin-bottom: 10px; border: 1px solid #f26522; background: url('../images/icons/alert.png') 10px 50% no-repeat #ffffdd; }
-
-#msg_error { margin: 0; padding: 5px 10px 5px 36px; height: 16px; line-height: 16px; margin-bottom: 10px; border: 1px solid #a00; background: url('../images/icons/error.png') 10px 50% no-repeat #fff0f0; }
-
-
+#msg_notice {
+  margin: 0;
+  padding: 5px 10px 5px 36px;
+  height: 16px;
+  line-height: 16px;
+  margin-bottom: 10px;
+  border: 1px solid #0a0;
+  background: url('../images/icons/ok.png') 10px 50% no-repeat #e0ffe0;
+}
+#msg_warning {
+  margin: 0;
+  padding: 5px 10px 5px 36px;
+  height: 16px;
+  line-height: 16px;
+  margin-bottom: 10px;
+  border: 1px solid #f26522;
+  background: url('../images/icons/alert.png') 10px 50% no-repeat #ffffdd;
+}
+#msg_error {
+  margin: 0;
+  padding: 5px 10px 5px 36px;
+  height: 16px;
+  line-height: 16px;
+  margin-bottom: 10px;
+  border: 1px solid #a00;
+  background: url('../images/icons/error.png') 10px 50% no-repeat #fff0f0;
+}
 .warning {
   background: #ffc;
   font-style: italic;
@@ -209,19 +228,64 @@ h2 {
   color: #a00;
   font-style: normal;
 }
-
 .error {
-    color:#f00;
+  color: #f00;
 }
-
 .error input {
-  border:1px solid #f00;}
-
-/* Main layout */
+  border: 1px solid #f00;
+}
+.button,
+.button:visited {
+  background: #222;
+  display: inline-block;
+  font-size: 16px;
+  padding: 8px 16px 6px 16px;
+  width: 160px;
+  text-align: center;
+  color: #fff;
+  font-weight: bold;
+  text-decoration: none;
+  border-radius: 5px;
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
+  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
+  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
+  text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.25);
+  border-bottom: 1px solid rgba(0, 0, 0, 0.25);
+  position: relative;
+  cursor: pointer;
+  font-family: helvetica, arial, sans-serif;
+}
+.button:hover {
+  background-color: #111;
+  color: #fff;
+}
+.button:active {
+  top: 1px;
+  box-shadow: none;
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+}
+.button,
+.button:visited,
+.green.button,
+.green.button:visited {
+  background-color: #91bd09;
+}
+.green.button:hover {
+  background-color: #749a02;
+}
+.blue.button,
+.blue.button:visited {
+  background-color: #00AEEF;
+}
+.blue.button:hover {
+  background-color: #0299d2;
+}
 body {
   background: url('../images/page_bg.png') top left repeat-x #c8c8c8;
 }
-
 #container {
   background: #fff;
   width: 840px;
@@ -230,7 +294,6 @@ body {
   -moz-box-shadow: 0 0 6px rgba(0, 0, 0, 0.5);
   -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.5);
 }
-
 #header {
   position: relative;
   height: 71px;
@@ -241,7 +304,6 @@ body {
   height: 71px;
   float: left;
 }
-
 #header p {
   width: 400px;
   text-align: right;
@@ -249,16 +311,15 @@ body {
   padding: 10px 0;
   float: right;
 }
-
 #nav {
   margin: 0 20px;
   padding: 2px 10px;
   height: 20px;
   background: url('../images/nav_bg.png') top left repeat-x;
   border-top: 1px solid #aaa;
-  box-shadow:0 3px 2px rgba(0, 0, 0, 0.4);
-  -moz-box-shadow:0 3px 2px rgba(0, 0, 0, 0.4);
-  -webkit-box-shadow:0 3px 2px rgba(0, 0, 0, 0.4);
+  box-shadow: 0 3px 2px rgba(0, 0, 0, 0.4);
+  -moz-box-shadow: 0 3px 2px rgba(0, 0, 0, 0.4);
+  -webkit-box-shadow: 0 3px 2px rgba(0, 0, 0, 0.4);
 }
 #nav li {
   margin: 0;
@@ -282,7 +343,8 @@ body {
   background-position: 10px 50%;
   background-repeat: no-repeat;
 }
-#nav li a.active, #nav li a:hover {
+#nav li a.active,
+#nav li a:hover {
   background-color: #dbefff;
   color: #000;
 }
@@ -305,7 +367,6 @@ body {
 #nav li a.tickets {
   background-image: url('../images/icons/tix.png');
 }
-
 #content {
   padding: 20px 0;
   margin: 0 20px;
@@ -313,7 +374,6 @@ body {
   height: 350px;
   min-height: 350px;
 }
-
 #footer {
   text-align: center;
   font-size: 11px;
@@ -322,7 +382,6 @@ body {
 #footer a {
   color: #333;
 }
-
 #footer p {
   margin: 10px 0 0 0;
 }
@@ -333,45 +392,23 @@ body {
   outline: none;
   text-indent: -9999px;
   margin: 0 auto;
-  background: url('../images/poweredby.png?1319571688') top left no-repeat;
+  background: url('../images/poweredby.png') top left no-repeat;
 }
-
-/* Landing page */
 #landing_page #new_ticket {
   margin-top: 40px;
   width: 295px;
   padding-left: 75px;
   float: left;
-  background: url('../images/new_ticket_icon.png?1319577021') top left no-repeat;
-}
-#landing_page #new_ticket input[type=submit] {
-  background: url('../images/open_ticket_btn.png?1319566422') top left no-repeat;
+  background: url('../images/new_ticket_icon.png') top left no-repeat;
 }
 #landing_page #check_status {
   margin-top: 40px;
   width: 295px;
   padding-left: 75px;
   float: right;
-  background: url('../images/check_status_icon.png?1319577072') top left no-repeat;
-}
-#landing_page #check_status input[type=submit] {
-  background: url('../images/check_status_btn.png?1319571066') top left no-repeat;
+  background: url('../images/check_status_icon.png') top left no-repeat;
 }
-#landing_page form div {
-  margin-bottom: 20px;
-  height: 60px;
-  min-height: 60px;
-}
-#landing_page form input[type=submit] {
-  display: block;
-  width: 192px;
-  height: 38px;
-  border: none;
-  margin: 0;
-  padding: 0;
-  text-indent: -9999px;
-}
-
+/* Landing page FAQ not yet implemented. */
 #faq {
   clear: both;
   margin: 0;
@@ -381,136 +418,129 @@ body {
   font-size: 15px;
   margin-left: 0;
   padding-left: 0;
-  border-top:1px solid #ddd;
+  border-top: 1px solid #ddd;
 }
 #faq ol li {
   list-style: none;
   margin: 0;
-  padding:0;
+  padding: 0;
   color: #999;
 }
 #faq ol li a {
-  display:block;
-  padding:5px 0;
-  height:auto !important;
-  overflow:hidden;
-  margin:0;
-  border-bottom:1px solid #ddd;
+  display: block;
+  padding: 5px 0;
+  height: auto !important;
+  overflow: hidden;
+  margin: 0;
+  border-bottom: 1px solid #ddd;
   line-height: 16px;
   padding-left: 24px;
-  background: url('../images/icons/page.png?1319579499') 0 50% no-repeat;
+  background: url('../images/icons/page.png') 0 50% no-repeat;
 }
 #faq ol li a:hover {
-  background-color:#e9f5ff;
+  background-color: #e9f5ff;
 }
-
-.article-meta {
-  padding:5px;
-  background:#fafafa;
+#faq .article-meta {
+  padding: 5px;
+  background: #fafafa;
 }
-
-/* Knowledgebase */
 #kb {
   margin: 2px 0;
   padding: 5px;
   overflow: hidden;
 }
-
 #kb > li {
-  padding:10px;
-  height:auto !important;
-  overflow:hidden;
-  margin:0;
-  background:url(../images/kb_category_bg.png) bottom left repeat-x;
-  border-bottom:1px solid #ddd;
-}
-
-#kb li i {
-  display:block;
-  width:32px;
-  height:32px;
-  float:left;
-  margin-right:6px;
-  background:url(../images/kb_large_folder.png) top left no-repeat;
-}
-
+  padding: 10px;
+  height: auto !important;
+  overflow: hidden;
+  margin: 0;
+  background: url(../images/kb_category_bg.png) bottom left repeat-x;
+  border-bottom: 1px solid #ddd;
+}
 #kb > li h4 {
-    padding-bottom:3px;
-    margin-bottom:3px;
+  padding-bottom: 3px;
+  margin-bottom: 3px;
 }
-
 #kb > li h4 span {
-    color:#666;
+  color: #666;
 }
-
 #kb > li h4 a {
   font-size: 14px;
 }
-
+#kb li i {
+  display: block;
+  width: 32px;
+  height: 32px;
+  float: left;
+  margin-right: 6px;
+  background: url(../images/kb_large_folder.png) top left no-repeat;
+}
 #kb-search {
-    padding:10px 0;
-    overflow:hidden;
+  padding: 10px 0;
+  overflow: hidden;
 }
-
 #kb-search div {
-    clear:both;
-    overflow:hidden;
-    padding-top:5px;
+  clear: both;
+  overflow: hidden;
+  padding-top: 5px;
 }
-
 #kb-search #query {
-    margin:0;
-    display:inline-block;
-    float:left;
-    width:200px;
-    margin-right:5px;
+  margin: 0;
+  display: inline-block;
+  float: left;
+  width: 200px;
+  margin-right: 5px;
 }
-
 #kb-search #cid {
-    margin:0;
-    display:inline-block;
-    float:left;
-    width:200px;
-    margin-right:5px;
-    position:relative;
-    top:2px;
-}
-
+  margin: 0;
+  display: inline-block;
+  float: left;
+  width: 200px;
+  margin-right: 5px;
+  position: relative;
+  top: 2px;
+}
 #kb-search #topic-id {
-    margin:0;
-    display:inline-block;
-    float:left;
-    width:410px;
+  margin: 0;
+  display: inline-block;
+  float: left;
+  width: 410px;
 }
-
 #kb-search #searchSubmit {
-    margin:0;
-    display:inline-block;
-    float:left;
-    position:relative;
-    top:2px;
-}
-
-#breadcrumbs {
+  margin: 0;
+  display: inline-block;
+  float: left;
+  position: relative;
+  top: 2px;
+}
+#kb-search #breadcrumbs {
   color: #333;
   margin-bottom: 15px;
 }
-#breadcrumbs a {
+#kb-search #breadcrumbs #breadcrumbs a {
   color: #555;
 }
-
-/* New Ticket & Log In Forms */
-#ticketForm div, #clientLogin div {
+#ticketForm div,
+#clientLogin div {
   clear: both;
   padding: 3px 0;
   overflow: hidden;
 }
-#ticketForm div label, #clientLogin div label {
+#ticketForm div label,
+#clientLogin div label {
   display: block;
   width: 140px;
   float: left;
 }
-#ticketForm div input, #ticketForm div textarea, #clientLogin div input, #clientLogin div textarea {
+#ticketForm div label.required,
+#clientLogin div label.required {
+  font-weight: bold;
+  text-align: left;
+}
+#ticketForm div input,
+#clientLogin div input,
+#ticketForm div textarea,
+#clientLogin div textarea {
   width: auto;
   border: 1px solid #aaa;
   background: #fff;
@@ -518,23 +548,40 @@ body {
   display: block;
   float: left;
 }
-
-#ticketForm div input[type=file] {
+#ticketForm div input[type=file],
+#clientLogin div input[type=file] {
   border: 0;
 }
-
-#ticketForm div select, #clientLogin div select {
+#ticketForm div select,
+#clientLogin div select {
   display: block;
   float: left;
 }
-#ticketForm td textarea, #clientLogin div textarea {
+#ticketForm div div.captchaRow,
+#clientLogin div div.captchaRow {
+  line-height: 31px;
+}
+#ticketForm div div.captchaRow input,
+#clientLogin div div.captchaRow input {
+  position: relative;
+  top: 6px;
+}
+#ticketForm td textarea,
+#clientLogin td textarea,
+#ticketForm div textarea,
+#clientLogin div textarea {
   width: 600px;
 }
-
-#ticketForm td em, #clientLogin div em {
+#ticketForm td em,
+#clientLogin td em,
+#ticketForm div em,
+#clientLogin div em {
   color: #777;
 }
-#ticketForm td .captcha, #clientLogin div .captcha {
+#ticketForm td .captcha,
+#clientLogin td .captcha,
+#ticketForm div .captcha,
+#clientLogin div .captcha {
   width: 88px;
   height: 31px;
   background: #000;
@@ -542,44 +589,31 @@ body {
   float: left;
   margin-right: 20px;
 }
-#ticketForm td label.inline, #clientLogin div label.inline {
+#ticketForm td label.inline,
+#clientLogin td label.inline,
+#ticketForm div label.inline,
+#clientLogin div label.inline {
   width: auto;
   padding: 0 10px;
 }
-
-#ticketTable table tr th { 
+#ticketForm div.error input,
+#clientLogin div.error input {
+  border: 1px solid #a00;
+}
+#ticketForm div.error label,
+#clientLogin div.error label {
+  color: #a00;
+}
+#ticketTable th {
   width: 160px;
   font-weight: normal;
   text-align: left;
 }
-
-#ticketForm table th.required, #ticketForm table td.required, #clientLogin div label.required {
+#ticketTable th.required,
+#ticketTable td.required {
   font-weight: bold;
   text-align: left;
 }
-
-
-
-#ticketForm tr.captchaRow, #clientLogin div.captchaRow {
-  line-height: 31px;
-}
-
-.captchaRow td input, #clientLogin div.captchaRow input {
-  position: relative;
-  top: 6px;
-}
-
-#ticketForm div.error input, #clientLogin div.error input {
-  border: 1px solid #a00;
-}
-#ticketForm div.error label, #clientLogin div.error label {
-  color: #a00;
-}
-#clientLogin p {
-  clear: both;
-  text-align: center;
-}
-
 #clientLogin {
   width: 400px;
   margin-top: 20px;
@@ -587,6 +621,10 @@ body {
   border: 1px solid #ccc;
   background: url('../images/lock.png?1319655200') 440px 50% no-repeat #f6f6f6;
 }
+#clientLogin p {
+  clear: both;
+  text-align: center;
+}
 #clientLogin strong {
   font-size: 11px;
   color: #d00;
@@ -601,59 +639,89 @@ body {
   width: 120px;
   margin-right: 0;
 }
-
-/* Ticket List */
+#reply {
+  margin-top: 20px;
+  padding: 10px 5px;
+  background: #f9f9f9;
+  border: 1px solid #ccc;
+}
+#reply h2 {
+  margin-bottom: 10px;
+}
+#reply table {
+  width: 800px;
+}
+#reply table td {
+  vertical-align: top;
+}
+#reply textarea {
+  width: 628px !important;
+}
+#reply input[type=text],
+#reply #response_options textarea {
+  border: 1px solid #aaa;
+  background: #fff;
+}
+#reply .attachments .uploads div {
+  display: inline-block;
+  padding-right: 20px;
+}
+#reply .file {
+  display: inline-block;
+  padding-left: 20px;
+  margin-right: 20px;
+  background: url('../images/icons/file.gif') 0 50% no-repeat;
+}
+.uploads {
+  display: inline-block;
+  padding-right: 20px;
+}
+.uploads label {
+  padding: 3px;
+  padding-right: 10px;
+  width: auto !important;
+}
+/* Ticket icons */
 .Icon {
   width: auto;
   padding-left: 20px;
-  background-position: left center;
+  background-position: top left;
   background-repeat: no-repeat;
   color: #006699;
   text-decoration: none;
 }
-
-a.Icon:hover {
-  text-decoration: underline;
-}
-
 .Icon.Ticket {
-  background: url('../images/icons/ticket.gif?1319654018') 0 0 no-repeat;
+  background-image: url('../images/icons/ticket.gif');
 }
-
 .Icon.webTicket {
-  background: url('../images/icons/ticket_source_web.gif?1319654283') 0 0 no-repeat;
+  background-image: url('../images/icons/ticket_source_web.gif');
 }
-
 .Icon.emailTicket {
-  background: url('../images/icons/ticket_source_email.gif?1319654484') 0 0 no-repeat;
+  background-image: url('../images/icons/ticket_source_email.gif');
 }
-
 .Icon.phoneTicket {
-  background: url('../images/icons/ticket_source_phone.gif?1319654401') 0 0 no-repeat;
+  background-image: url('../images/icons/ticket_source_phone.gif');
 }
-
 .Icon.otherTicket {
-  background: url('../images/icons/ticket_source_other.gif?1319654433') 0 0 no-repeat;
+  background-image: url('../images/icons/ticket_source_other.gif');
 }
-
 .Icon.attachment {
-  background-image: url('../images/icons/attachment.gif?1319556657');
+  background-image: url('../images/icons/attachment.gif');
 }
-
 .Icon.file {
-  background-image: url('../images/icons/attachment.gif?1319556657');
+  background-image: url('../images/icons/attachment.gif');
 }
-
 .Icon.refresh {
-  background-image: url('../images/icons/refresh.gif?1319556657');
+  background-image: url('../images/icons/refresh.gif');
 }
-
 .Icon.thread {
   font-weight: bold;
   font-size: 1em;
   background-image: url('../images/icons/thread.gif?1319556657');
 }
-
+.Icon:hover {
+  text-decoration: underline;
+}
 #ticketTable {
   border: 1px solid #aaa;
   border-left: none;
@@ -688,13 +756,11 @@ a.Icon:hover {
 #ticketTable tr.alt td {
   background: #f9f9f9;
 }
-
 #ticketSearchForm {
   display: inline-block;
   float: left;
   padding: 0 0 5px 0;
 }
-
 a.refresh {
   display: block;
   width: auto;
@@ -708,16 +774,14 @@ a.refresh {
   color: #333;
   background-position: 5px 50%;
   background-repeat: no-repeat;
-  background-image: url('../images/icons/refresh.png?1319653435');
+  background-image: url('../images/icons/refresh.png');
 }
-
 .infoTable {
   background: #F4FAFF;
 }
 .infoTable th {
   text-align: left;
 }
-
 #ticketThread table {
   margin-top: 10px;
   border: 1px solid #aaa;
@@ -729,13 +793,11 @@ a.refresh {
   font-size: 12px;
   padding: 5px;
 }
-
 #ticketThread table th span {
-    font-weight:normal;
-    color:#888;
-    padding-left:20px;
+  font-weight: normal;
+  color: #888;
+  padding-left: 20px;
 }
-
 #ticketThread table td {
   padding: 5px;
 }
@@ -761,76 +823,3 @@ a.refresh {
   background-position: 0 50%;
   background-repeat: no-repeat;
 }
-
-#reply {
-  margin-top: 20px;
-  padding: 10px 5px;
-  background: #f9f9f9;
-  border: 1px solid #ccc;
-}
-#reply h2 {
-  margin-bottom: 10px;
-}
-#reply table {
-  width: 800px;
-}
-#reply table td {
-  vertical-align: top;
-}
-#reply textarea {
-  width: 628px !important;
-}
-#reply input[type=text], #reply #response_options textarea {
-  border: 1px solid #aaa;
-  background: #fff;
-}
-#reply .attachments .uploads div {
-  display: inline-block;
-  padding-right: 20px;
-}
-#reply .file {
-  display: inline-block;
-  padding-left: 20px;
-  margin-right: 20px;
-  background: url('../images/icons/file.gif') 0 50% no-repeat;
-}
-
-.button, .button:visited {
-    background: #222;
-    display: inline-block;
-    font-size: 16px;
-    padding: 8px 16px 6px 16px;
-    width:160px;
-    text-align:center;
-    color: #fff;
-    font-weight:bold;
-    text-decoration: none;
-    border-radius: 5px;
-    -moz-border-radius: 5px;
-    -webkit-border-radius: 5px;
-    box-shadow: 0 1px 3px rgba(0,0,0,0.5);
-    -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.5);
-    -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5);
-    text-shadow: 0 -1px 1px rgba(0,0,0,0.25);
-    border-bottom: 1px solid rgba(0,0,0,0.25);
-    position: relative;
-    cursor: pointer;
-    font-family:helvetica, arial, sans-serif;
-}
-
-
-.uploads {
-    display:inline-block;
-    padding-right:20px;
-}
-
-.uploads label { padding:3px; padding-right:10px; width: auto !important }
-
-.button:hover                          { background-color: #111; color: #fff; }
-.button:active                         { top: 1px; box-shadow:none; -moz-box-shadow:none; -webkit-box-shadow:none; }
-.button, .button:visited,
-.green.button, .green.button:visited      { background-color: #91bd09; }
-.green.button:hover                        { background-color: #749a02; }
-.blue.button, .blue.button:visited        { background-color: #00AEEF; }
-.blue.button:hover                         { background-color: #0299d2; }
-
diff --git a/assets/default/css/theme.min.css b/assets/default/css/theme.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..8e747a44528fe4376371c967fd867ec835f01fce
--- /dev/null
+++ b/assets/default/css/theme.min.css
@@ -0,0 +1 @@
+html{font-size:100%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0;font-size:13px;line-height:1.231;padding:0}body,input,select,textarea{font-family:sans-serif;color:#000}b,strong{font-weight:bold}blockquote{margin:1em 40px}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}small{font-size:85%}ul,ol{margin:1em 0;padding:0 0 0 30px}img{border:0;vertical-align:middle}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}input{line-height:normal;*overflow:visible}table input{*overflow:auto}input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}input[type="checkbox"],input[type="radio"]{box-sizing:border-box}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}th,td{vertical-align:top}th{text-align:left;font-weight:normal}h1,h2,h3,h4,h5,h6,form,fieldset{margin:0;padding:0}a{color:#0072bc;text-decoration:none}h1{color:#00aeef;font-weight:normal;font-size:20px}h3{font-size:16px}h2{font-size:16px;color:#999}.centered{text-align:center}.clear{clear:both;height:1px;visibility:none}.hidden{display:none}.faded{color:#666}#pagination{border:0;margin:0 0 40px 0;padding:0}#pagination li{border:0;margin:0;padding:0;font-size:11px;list-style:none;display:inline}#pagination li a{margin-right:2px;display:block;float:left;padding:3px 6px;text-decoration:none}#pagination li a:hover{color:#ff0084}#pagination .previousOff,#pagination .nextOff{color:#666;display:block;float:left;font-weight:bold;padding:3px 4px}#pagination .next a,#pagination .previous a{font-weight:bold}#pagination .active{color:#000;font-weight:bold;margin-right:2px;display:block;float:left;padding:3px 6px;text-decoration:none}#msg_notice{margin:0;padding:5px 10px 5px 36px;height:16px;line-height:16px;margin-bottom:10px;border:1px solid #0a0;background:url('../images/icons/ok.png') 10px 50% no-repeat #e0ffe0}#msg_warning{margin:0;padding:5px 10px 5px 36px;height:16px;line-height:16px;margin-bottom:10px;border:1px solid #f26522;background:url('../images/icons/alert.png') 10px 50% no-repeat #ffd}#msg_error{margin:0;padding:5px 10px 5px 36px;height:16px;line-height:16px;margin-bottom:10px;border:1px solid #a00;background:url('../images/icons/error.png') 10px 50% no-repeat #fff0f0}.warning{background:#ffc;font-style:italic}.warning strong{text-transform:uppercase;color:#a00;font-style:normal}.error{color:#f00}.error input{border:1px solid #f00}.button,.button:visited{background:#222;display:inline-block;font-size:16px;padding:8px 16px 6px 16px;width:160px;text-align:center;color:#fff;font-weight:bold;text-decoration:none;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,0.5);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.5);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.5);text-shadow:0 -1px 1px rgba(0,0,0,0.25);border-bottom:1px solid rgba(0,0,0,0.25);position:relative;cursor:pointer;font-family:helvetica,arial,sans-serif}.button:hover{background-color:#111;color:#fff}.button:active{top:1px;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}.button,.button:visited,.green.button,.green.button:visited{background-color:#91bd09}.green.button:hover{background-color:#749a02}.blue.button,.blue.button:visited{background-color:#00aeef}.blue.button:hover{background-color:#0299d2}body{background:url('../images/page_bg.png') top left repeat-x #c8c8c8}#container{background:#fff;width:840px;margin:0 auto;box-shadow:0 0 6px rgba(0,0,0,0.5);-moz-box-shadow:0 0 6px rgba(0,0,0,0.5);-webkit-box-shadow:0 0 6px rgba(0,0,0,0.5)}#header{position:relative;height:71px;padding:0 20px}#header #logo{width:220px;height:71px;float:left}#header p{width:400px;text-align:right;margin:0;padding:10px 0;float:right}#nav{margin:0 20px;padding:2px 10px;height:20px;background:url('../images/nav_bg.png') top left repeat-x;border-top:1px solid #aaa;box-shadow:0 3px 2px rgba(0,0,0,0.4);-moz-box-shadow:0 3px 2px rgba(0,0,0,0.4);-webkit-box-shadow:0 3px 2px rgba(0,0,0,0.4)}#nav li{margin:0;padding:0;list-style:none;display:inline}#nav li a{display:block;width:auto;float:left;height:20px;line-height:20px;text-align:center;padding:0 10px 0 32px;margin-left:10px;color:#333;border-radius:20px;-webkit-border-radius:20px;-moz-border-radius:20px;background-position:10px 50%;background-repeat:no-repeat}#nav li a.active,#nav li a:hover{background-color:#dbefff;color:#000}#nav li a:hover{background-color:#ededed;color:#0054a6}#nav li a.home{background-image:url('../images/icons/home.png')}#nav li a.kb{background-image:url('../images/icons/kb.png')}#nav li a.new{background-image:url('../images/icons/new.png')}#nav li a.status{background-image:url('../images/icons/status.png')}#nav li a.tickets{background-image:url('../images/icons/tix.png')}#content{padding:20px 0;margin:0 20px;height:auto!important;height:350px;min-height:350px}#footer{text-align:center;font-size:11px;color:#333}#footer a{color:#333}#footer p{margin:10px 0 0 0}#footer #poweredBy{display:block;width:126px;height:23px;outline:0;text-indent:-9999px;margin:0 auto;background:url('../images/poweredby.png') top left no-repeat}#landing_page #new_ticket{margin-top:40px;width:295px;padding-left:75px;float:left;background:url('../images/new_ticket_icon.png') top left no-repeat}#landing_page #check_status{margin-top:40px;width:295px;padding-left:75px;float:right;background:url('../images/check_status_icon.png') top left no-repeat}#faq{clear:both;margin:0;padding:5px}#faq ol{font-size:15px;margin-left:0;padding-left:0;border-top:1px solid #ddd}#faq ol li{list-style:none;margin:0;padding:0;color:#999}#faq ol li a{display:block;padding:5px 0;height:auto!important;overflow:hidden;margin:0;border-bottom:1px solid #ddd;line-height:16px;padding-left:24px;background:url('../images/icons/page.png') 0 50% no-repeat}#faq ol li a:hover{background-color:#e9f5ff}#faq .article-meta{padding:5px;background:#fafafa}#kb{margin:2px 0;padding:5px;overflow:hidden}#kb>li{padding:10px;height:auto!important;overflow:hidden;margin:0;background:url(../images/kb_category_bg.png) bottom left repeat-x;border-bottom:1px solid #ddd}#kb>li h4{padding-bottom:3px;margin-bottom:3px}#kb>li h4 span{color:#666}#kb>li h4 a{font-size:14px}#kb li i{display:block;width:32px;height:32px;float:left;margin-right:6px;background:url(../images/kb_large_folder.png) top left no-repeat}#kb-search{padding:10px 0;overflow:hidden}#kb-search div{clear:both;overflow:hidden;padding-top:5px}#kb-search #query{margin:0;display:inline-block;float:left;width:200px;margin-right:5px}#kb-search #cid{margin:0;display:inline-block;float:left;width:200px;margin-right:5px;position:relative;top:2px}#kb-search #topic-id{margin:0;display:inline-block;float:left;width:410px}#kb-search #searchSubmit{margin:0;display:inline-block;float:left;position:relative;top:2px}#kb-search #breadcrumbs{color:#333;margin-bottom:15px}#kb-search #breadcrumbs #breadcrumbs a{color:#555}#ticketForm div,#clientLogin div{clear:both;padding:3px 0;overflow:hidden}#ticketForm div label,#clientLogin div label{display:block;width:140px;float:left}#ticketForm div label.required,#clientLogin div label.required{font-weight:bold;text-align:left}#ticketForm div input,#clientLogin div input,#ticketForm div textarea,#clientLogin div textarea{width:auto;border:1px solid #aaa;background:#fff;margin-right:10px;display:block;float:left}#ticketForm div input[type=file],#clientLogin div input[type=file]{border:0}#ticketForm div select,#clientLogin div select{display:block;float:left}#ticketForm div div.captchaRow,#clientLogin div div.captchaRow{line-height:31px}#ticketForm div div.captchaRow input,#clientLogin div div.captchaRow input{position:relative;top:6px}#ticketForm td textarea,#clientLogin td textarea,#ticketForm div textarea,#clientLogin div textarea{width:600px}#ticketForm td em,#clientLogin td em,#ticketForm div em,#clientLogin div em{color:#777}#ticketForm td .captcha,#clientLogin td .captcha,#ticketForm div .captcha,#clientLogin div .captcha{width:88px;height:31px;background:#000;display:block;float:left;margin-right:20px}#ticketForm td label.inline,#clientLogin td label.inline,#ticketForm div label.inline,#clientLogin div label.inline{width:auto;padding:0 10px}#ticketForm div.error input,#clientLogin div.error input{border:1px solid #a00}#ticketForm div.error label,#clientLogin div.error label{color:#a00}#ticketTable th{width:160px;font-weight:normal;text-align:left}#ticketTable th.required,#ticketTable td.required{font-weight:bold;text-align:left}#clientLogin{width:400px;margin-top:20px;padding:10px 100px 10px 10px;border:1px solid #ccc;background:url('../images/lock.png?1319655200') 440px 50% no-repeat #f6f6f6}#clientLogin p{clear:both;text-align:center}#clientLogin strong{font-size:11px;color:#d00;display:block;padding-left:140px}#clientLogin #email{width:250px;margin-right:0}#clientLogin #ticketno{width:120px;margin-right:0}#reply{margin-top:20px;padding:10px 5px;background:#f9f9f9;border:1px solid #ccc}#reply h2{margin-bottom:10px}#reply table{width:800px}#reply table td{vertical-align:top}#reply textarea{width:628px!important}#reply input[type=text],#reply #response_options textarea{border:1px solid #aaa;background:#fff}#reply .attachments .uploads div{display:inline-block;padding-right:20px}#reply .file{display:inline-block;padding-left:20px;margin-right:20px;background:url('../images/icons/file.gif') 0 50% no-repeat}.uploads{display:inline-block;padding-right:20px}.uploads label{padding:3px;padding-right:10px;width:auto!important}.Icon{width:auto;padding-left:20px;background-position:top left;background-repeat:no-repeat;color:#069;text-decoration:none}.Icon.Ticket{background-image:url('../images/icons/ticket.gif')}.Icon.webTicket{background-image:url('../images/icons/ticket_source_web.gif')}.Icon.emailTicket{background-image:url('../images/icons/ticket_source_email.gif')}.Icon.phoneTicket{background-image:url('../images/icons/ticket_source_phone.gif')}.Icon.otherTicket{background-image:url('../images/icons/ticket_source_other.gif')}.Icon.attachment{background-image:url('../images/icons/attachment.gif')}.Icon.file{background-image:url('../images/icons/attachment.gif')}.Icon.refresh{background-image:url('../images/icons/refresh.gif')}.Icon.thread{font-weight:bold;font-size:1em;background-image:url('../images/icons/thread.gif?1319556657')}.Icon:hover{text-decoration:underline}#ticketTable{border:1px solid #aaa;border-left:none;border-bottom:0}#ticketTable caption{padding:5px;text-align:left;color:#000;background:#ddd;border:1px solid #aaa;border-bottom:0;font-weight:bold}#ticketTable th{height:24px;line-height:24px;background:#e1f2ff;border:1px solid #aaa;border-right:0;border-top:0}#ticketTable th a{color:#000}#ticketTable td{padding:2px;border:1px solid #aaa;border-right:0;border-top:0}#ticketTable tr.alt td{background:#f9f9f9}#ticketSearchForm{display:inline-block;float:left;padding:0 0 5px 0}a.refresh{display:block;width:auto;float:right;height:20px;line-height:20px;text-align:center;padding:0 10px 0 28px;border:1px solid #aaa;margin-left:10px;color:#333;background-position:5px 50%;background-repeat:no-repeat;background-image:url('../images/icons/refresh.png')}.infoTable{background:#f4faff}.infoTable th{text-align:left}#ticketThread table{margin-top:10px;border:1px solid #aaa;border-bottom:2px solid #aaa}#ticketThread table th{text-align:left;border-bottom:1px solid #aaa;font-size:12px;padding:5px}#ticketThread table th span{font-weight:normal;color:#888;padding-left:20px}#ticketThread table td{padding:5px}#ticketThread .message th{background:#d8efff}#ticketThread .response th{background:#ddd}#ticketThread .info{padding:2px;background:#f9f9f9;border-top:1px solid #ddd;height:16px;line-height:16px}#ticketThread .info a{display:inline-block;margin:5px 10px 5px 0;padding-left:24px;height:16px;line-height:16px;background-position:0 50%;background-repeat:no-repeat}
\ No newline at end of file
diff --git a/assets/default/less/base.less b/assets/default/less/base.less
new file mode 100644
index 0000000000000000000000000000000000000000..b6b4681574e7f11178100467eca70ab2ef0fa266
--- /dev/null
+++ b/assets/default/less/base.less
@@ -0,0 +1,131 @@
+/* Typography */
+a {
+  color: #0072bc;
+  text-decoration: none;
+}
+
+h1 {
+  color: #00AEEF;
+  font-weight: normal;
+  font-size: 20px;
+}
+
+h3 {
+  font-size: 16px;
+}
+
+h2 {
+  font-size: 16px;
+  color: #999;
+}
+
+/* Helpers */
+.centered { text-align: center;}
+
+.clear { clear:both; height: 1px; visibility: none;}
+
+.hidden { display: none;}
+
+.faded { color:#666;}
+
+/* Pagination */
+#pagination {
+  border: 0;
+  margin: 0 0 40px 0;
+  padding: 0;
+  li {
+    border: 0;
+    margin: 0;
+    padding: 0;
+    font-size: 11px;
+    list-style: none;
+    display: inline;
+    a {
+      margin-right: 2px;
+      display: block;
+      float: left;
+      padding: 3px 6px;
+      text-decoration: none;
+    }
+    a:hover {
+      color: #ff0084;
+    }
+  }
+  .previousOff, .nextOff {
+    color: #666;
+    display: block;
+    float: left;
+    font-weight: bold;
+    padding: 3px 4px;
+  }
+  .next a, .previous a {
+    font-weight: bold;
+  }
+  .active {
+    color: #000;
+    font-weight: bold;
+    margin-right: 2px;
+    display: block;
+    float: left;
+    padding: 3px 6px;
+    text-decoration: none;
+  }
+}
+
+/* Alerts & Notices */
+
+#msg_notice { margin: 0; padding: 5px 10px 5px 36px; height: 16px; line-height: 16px; margin-bottom: 10px; border: 1px solid #0a0; background: url('../images/icons/ok.png') 10px 50% no-repeat #e0ffe0; }
+
+#msg_warning { margin: 0; padding: 5px 10px 5px 36px; height: 16px; line-height: 16px; margin-bottom: 10px; border: 1px solid #f26522; background: url('../images/icons/alert.png') 10px 50% no-repeat #ffffdd; }
+
+#msg_error { margin: 0; padding: 5px 10px 5px 36px; height: 16px; line-height: 16px; margin-bottom: 10px; border: 1px solid #a00; background: url('../images/icons/error.png') 10px 50% no-repeat #fff0f0; }
+
+
+.warning {
+  background: #ffc;
+  font-style: italic;
+  strong {
+    text-transform: uppercase;
+    color: #a00;
+    font-style: normal;
+  }
+}
+
+.error {
+  color:#f00;
+  input {
+    border:1px solid #f00;
+  }
+}
+
+
+.button, .button:visited {
+    background: #222;
+    display: inline-block;
+    font-size: 16px;
+    padding: 8px 16px 6px 16px;
+    width:160px;
+    text-align:center;
+    color: #fff;
+    font-weight:bold;
+    text-decoration: none;
+    border-radius: 5px;
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    box-shadow: 0 1px 3px rgba(0,0,0,0.5);
+    -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.5);
+    -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5);
+    text-shadow: 0 -1px 1px rgba(0,0,0,0.25);
+    border-bottom: 1px solid rgba(0,0,0,0.25);
+    position: relative;
+    cursor: pointer;
+    font-family:helvetica, arial, sans-serif;
+}
+
+.button:hover                          { background-color: #111; color: #fff; }
+.button:active                         { top: 1px; box-shadow:none; -moz-box-shadow:none; -webkit-box-shadow:none; }
+.button, .button:visited,
+.green.button, .green.button:visited      { background-color: #91bd09; }
+.green.button:hover                        { background-color: #749a02; }
+.blue.button, .blue.button:visited        { background-color: #00AEEF; }
+.blue.button:hover                         { background-color: #0299d2; }
diff --git a/assets/default/less/kb.less b/assets/default/less/kb.less
new file mode 100644
index 0000000000000000000000000000000000000000..f31faa4d0b99d4decd83dfda5dff3adad24b5bba
--- /dev/null
+++ b/assets/default/less/kb.less
@@ -0,0 +1,88 @@
+#kb {
+  margin: 2px 0;
+  padding: 5px;
+  overflow: hidden;
+
+  > li {
+    padding:10px;
+    height:auto !important;
+    overflow:hidden;
+    margin:0;
+    background:url(../images/kb_category_bg.png) bottom left repeat-x;
+    border-bottom:1px solid #ddd;
+    h4 {
+      padding-bottom:3px;
+      margin-bottom:3px;
+      span {
+        color:#666;
+      }
+      a {
+        font-size: 14px;
+      }
+    }
+  }
+
+  li {
+    i {
+      display:block;
+      width:32px;
+      height:32px;
+      float:left;
+      margin-right:6px;
+      background:url(../images/kb_large_folder.png) top left no-repeat;
+    }
+  }
+}
+
+#kb-search {
+  padding:10px 0;
+  overflow:hidden;
+
+  div {
+    clear:both;
+    overflow:hidden;
+    padding-top:5px;
+  }
+
+  #query {
+    margin:0;
+    display:inline-block;
+    float:left;
+    width:200px;
+    margin-right:5px;
+  }
+
+  #cid {
+    margin:0;
+    display:inline-block;
+    float:left;
+    width:200px;
+    margin-right:5px;
+    position:relative;
+    top:2px;
+  }
+
+  #topic-id {
+    margin:0;
+    display:inline-block;
+    float:left;
+    width:410px;
+  }
+
+  #searchSubmit {
+    margin:0;
+    display:inline-block;
+    float:left;
+    position:relative;
+    top:2px;
+  }
+
+  #breadcrumbs {
+    color: #333;
+    margin-bottom: 15px;
+
+    #breadcrumbs a {
+      color: #555;
+    }
+  }
+}
diff --git a/assets/default/less/landing-page.less b/assets/default/less/landing-page.less
new file mode 100644
index 0000000000000000000000000000000000000000..cfcfcfcbf63ff4b7295372dc49b5124043e80d01
--- /dev/null
+++ b/assets/default/less/landing-page.less
@@ -0,0 +1,58 @@
+#landing_page {
+  #new_ticket {
+    margin-top: 40px;
+    width: 295px;
+    padding-left: 75px;
+    float: left;
+    background: url('../images/new_ticket_icon.png') top left no-repeat;
+  }
+
+  #check_status {
+    margin-top: 40px;
+    width: 295px;
+    padding-left: 75px;
+    float: right;
+    background: url('../images/check_status_icon.png') top left no-repeat;
+  }
+}
+
+/* Landing page FAQ not yet implemented. */
+#faq {
+  clear: both;
+  margin: 0;
+  padding: 5px;
+
+  ol {
+    font-size: 15px;
+    margin-left: 0;
+    padding-left: 0;
+    border-top:1px solid #ddd;
+
+    li {
+      list-style: none;
+      margin: 0;
+      padding:0;
+      color: #999;
+      a {
+        display:block;
+        padding:5px 0;
+        height:auto !important;
+        overflow:hidden;
+        margin:0;
+        border-bottom:1px solid #ddd;
+        line-height: 16px;
+        padding-left: 24px;
+        background: url('../images/icons/page.png') 0 50% no-repeat;
+      }
+
+      a:hover {
+        background-color:#e9f5ff;
+      }
+    }
+  }
+  .article-meta {
+    padding:5px;
+    background:#fafafa;
+  }
+}
+
diff --git a/assets/default/less/main-layout.less b/assets/default/less/main-layout.less
new file mode 100644
index 0000000000000000000000000000000000000000..a40cac090aad2fa4f287fbfa8955d0da04f246de
--- /dev/null
+++ b/assets/default/less/main-layout.less
@@ -0,0 +1,114 @@
+body {
+  background: url('../images/page_bg.png') top left repeat-x #c8c8c8;
+}
+
+#container {
+  background: #fff;
+  width: 840px;
+  margin: 0 auto;
+  box-shadow: 0 0 6px rgba(0, 0, 0, 0.5);
+  -moz-box-shadow: 0 0 6px rgba(0, 0, 0, 0.5);
+  -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.5);
+}
+
+#header {
+  position: relative;
+  height: 71px;
+  padding: 0 20px;
+
+  #logo {
+    width: 220px;
+    height: 71px;
+    float: left;
+  }
+
+  p {
+    width: 400px;
+    text-align: right;
+    margin: 0;
+    padding: 10px 0;
+    float: right;
+  }
+}
+
+#nav {
+  margin: 0 20px;
+  padding: 2px 10px;
+  height: 20px;
+  background: url('../images/nav_bg.png') top left repeat-x;
+  border-top: 1px solid #aaa;
+  box-shadow:0 3px 2px rgba(0, 0, 0, 0.4);
+  -moz-box-shadow:0 3px 2px rgba(0, 0, 0, 0.4);
+  -webkit-box-shadow:0 3px 2px rgba(0, 0, 0, 0.4);
+
+  li {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+    display: inline;
+    a {
+      display: block;
+      width: auto;
+      float: left;
+      height: 20px;
+      line-height: 20px;
+      text-align: center;
+      padding: 0 10px 0 32px;
+      margin-left: 10px;
+      color: #333;
+      border-radius: 20px;
+      -webkit-border-radius: 20px;
+      -moz-border-radius: 20px;
+      background-position: 10px 50%;
+      background-repeat: no-repeat;
+    }
+
+    a.active, a:hover {
+      background-color: #dbefff;
+      color: #000;
+    }
+
+    a:hover {
+      background-color: #ededed;
+      color: #0054a6;
+    }
+
+    a.home    { background-image: url('../images/icons/home.png'); }
+    a.kb      { background-image: url('../images/icons/kb.png'); }
+    a.new     {  background-image: url('../images/icons/new.png'); }
+    a.status  { background-image: url('../images/icons/status.png'); }
+    a.tickets { background-image: url('../images/icons/tix.png'); }
+  }
+}
+
+#content {
+  padding: 20px 0;
+  margin: 0 20px;
+  height: auto !important;
+  height: 350px;
+  min-height: 350px;
+}
+
+#footer {
+  text-align: center;
+  font-size: 11px;
+  color: #333;
+
+  a {
+    color: #333;
+  }
+
+  p {
+    margin: 10px 0 0 0;
+  }
+
+  #poweredBy {
+    display: block;
+    width: 126px;
+    height: 23px;
+    outline: none;
+    text-indent: -9999px;
+    margin: 0 auto;
+    background: url('../images/poweredby.png') top left no-repeat;
+  }
+}
\ No newline at end of file
diff --git a/assets/default/less/print.less b/assets/default/less/print.less
new file mode 100644
index 0000000000000000000000000000000000000000..dbe21bc7e8d2d2f16cbc7f6db5974383903357f7
--- /dev/null
+++ b/assets/default/less/print.less
@@ -0,0 +1,30 @@
+#header, #nav, #meta, #footer, #reply, #pagination, .reload, .refresh, form, .thread, hr, #kbAttachments, .back {
+  display: none;
+}
+
+th {
+  text-align: left;
+}
+
+a {
+  color: #000;
+  text-decoration: none;
+}
+
+caption {
+  text-align: left;
+  padding-bottom: 10px;
+  font-weight: bold;
+}
+
+.message, .response {
+  border-bottom: 1px solid #000;
+  margin-bottom: 20px;
+  padding-bottom: 10px;
+
+  th {
+    font-size: 12pt;
+    font-weight: bold;
+    padding-bottom: 5px;
+  }
+}
diff --git a/assets/default/less/reset.less b/assets/default/less/reset.less
new file mode 100644
index 0000000000000000000000000000000000000000..8cf9581eb2516d2c21e5b7b2be0bf614e85d9592
--- /dev/null
+++ b/assets/default/less/reset.less
@@ -0,0 +1,117 @@
+html {
+  font-size: 100%;
+  overflow-y: scroll;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+
+body {
+  margin: 0;
+  font-size: 13px;
+  line-height: 1.231;
+  padding: 0;
+}
+
+body, input, select, textarea {
+  font-family: sans-serif;
+  color: #000;
+}
+
+b, strong {
+  font-weight: bold;
+}
+
+blockquote {
+  margin: 1em 40px;
+}
+
+hr {
+  display: block;
+  height: 1px;
+  border: 0;
+  border-top: 1px solid #ccc;
+  margin: 1em 0;
+  padding: 0;
+}
+
+small {
+  font-size: 85%;
+}
+
+ul, ol {
+  margin: 1em 0;
+  padding: 0 0 0 30px;
+}
+
+img {
+  border: 0;
+  vertical-align: middle;
+}
+
+form {
+  margin: 0;
+}
+
+fieldset {
+  border: 0;
+  margin: 0;
+  padding: 0;
+}
+
+label {
+  cursor: pointer;
+}
+
+input, select, textarea {
+  font-size: 100%;
+  margin: 0;
+  vertical-align: baseline;
+  *vertical-align: middle;
+}
+
+input {
+  line-height: normal;
+  *overflow: visible;
+}
+
+table input {
+  *overflow: auto;
+}
+
+input[type="button"], input[type="reset"], input[type="submit"] {
+  cursor: pointer;
+  -webkit-appearance: button;
+}
+
+input[type="checkbox"], input[type="radio"] {
+  box-sizing: border-box;
+}
+
+input[type="search"] {
+  -webkit-appearance: textfield;
+  -moz-box-sizing: content-box;
+  -webkit-box-sizing: content-box;
+  box-sizing: content-box;
+}
+
+textarea {
+  overflow: auto;
+  vertical-align: top;
+  resize: vertical;
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+th, td {
+  vertical-align: top;
+}
+
+th { text-align: left; font-weight: normal; }
+
+h1, h2, h3, h4, h5, h6, form, fieldset {
+  margin: 0;
+  padding: 0;
+}
\ No newline at end of file
diff --git a/assets/default/less/theme.less b/assets/default/less/theme.less
new file mode 100644
index 0000000000000000000000000000000000000000..c3835f9e608d91533abb782a560b5f4c868cd675
--- /dev/null
+++ b/assets/default/less/theme.less
@@ -0,0 +1,7 @@
+@import 'reset';
+@import 'base';
+@import 'main-layout';
+@import 'landing-page';
+@import 'kb';
+@import 'ticket-forms';
+@import 'ticket';
diff --git a/assets/default/less/ticket-forms.less b/assets/default/less/ticket-forms.less
new file mode 100644
index 0000000000000000000000000000000000000000..96db30b28a692d7db08e3389e2b35317f60b9859
--- /dev/null
+++ b/assets/default/less/ticket-forms.less
@@ -0,0 +1,170 @@
+#ticketForm, #clientLogin {
+  div {
+    clear: both;
+    padding: 3px 0;
+    overflow: hidden;
+
+    label {
+      display: block;
+      width: 140px;
+      float: left;
+    }
+
+    label.required {
+        font-weight: bold;
+        text-align: left;
+    }
+
+    input, textarea {
+      width: auto;
+      border: 1px solid #aaa;
+      background: #fff;
+      margin-right: 10px;
+      display: block;
+      float: left;
+    }
+
+    input[type=file] {
+      border: 0;
+    }
+
+    select {
+      display: block;
+      float: left;
+    }
+    div.captchaRow {
+      line-height: 31px;
+
+      input {
+        position: relative;
+        top: 6px;
+      }
+    }
+
+  }
+
+  td, div {
+    textarea {
+      width: 600px;
+    }
+
+    em {
+      color: #777;
+    }
+
+    .captcha {
+      width: 88px;
+      height: 31px;
+      background: #000;
+      display: block;
+      float: left;
+      margin-right: 20px;
+    }
+
+    label.inline {
+      width: auto;
+      padding: 0 10px;
+    }
+  }
+
+  div.error {
+    input {
+      border: 1px solid #a00;
+    }
+    label {
+      color: #a00;
+    }
+  }
+}
+
+#ticketTable {
+  th {
+    width: 160px;
+    font-weight: normal;
+    text-align: left;
+  }
+  th.required, td.required {
+    font-weight: bold;
+    text-align: left;
+  }
+}
+
+#clientLogin {
+  width: 400px;
+  margin-top: 20px;
+  padding: 10px 100px 10px 10px;
+  border: 1px solid #ccc;
+  background: url('../images/lock.png?1319655200') 440px 50% no-repeat #f6f6f6;
+
+  p {
+    clear: both;
+    text-align: center;
+  }
+
+  strong {
+    font-size: 11px;
+    color: #d00;
+    display: block;
+    padding-left: 140px;
+  }
+
+  #email {
+    width: 250px;
+    margin-right: 0;
+  }
+
+  #ticketno {
+    width: 120px;
+    margin-right: 0;
+  }
+}
+
+#reply {
+  margin-top: 20px;
+  padding: 10px 5px;
+  background: #f9f9f9;
+  border: 1px solid #ccc;
+
+  h2 {
+    margin-bottom: 10px;
+  }
+
+  table {
+    width: 800px;
+
+    td {
+      vertical-align: top;
+    }
+  }
+
+  textarea {
+    width: 628px !important;
+  }
+
+  input[type=text], #response_options textarea {
+    border: 1px solid #aaa;
+    background: #fff;
+  }
+
+  .attachments .uploads div {
+    display: inline-block;
+    padding-right: 20px;
+  }
+  .file {
+    display: inline-block;
+    padding-left: 20px;
+    margin-right: 20px;
+    background: url('../images/icons/file.gif') 0 50% no-repeat;
+  }
+}
+
+.uploads {
+  display:inline-block;
+  padding-right:20px;
+
+  label {
+    padding:3px;
+    padding-right:10px;
+    width: auto !important
+  }
+}
\ No newline at end of file
diff --git a/assets/default/less/ticket.less b/assets/default/less/ticket.less
new file mode 100644
index 0000000000000000000000000000000000000000..d7f2d307930432c2b41e3396f716d77fca5bc3e9
--- /dev/null
+++ b/assets/default/less/ticket.less
@@ -0,0 +1,145 @@
+/* Ticket icons */
+.Icon {
+  width: auto;
+  padding-left: 20px;
+  background-position: top left;
+  background-repeat: no-repeat;
+  color: #006699;
+  text-decoration: none;
+}
+
+.Icon.Ticket { background-image: url('../images/icons/ticket.gif') }
+.Icon.webTicket { background-image: url('../images/icons/ticket_source_web.gif'); }
+.Icon.emailTicket { background-image: url('../images/icons/ticket_source_email.gif'); }
+.Icon.phoneTicket { background-image: url('../images/icons/ticket_source_phone.gif'); }
+.Icon.otherTicket { background-image: url('../images/icons/ticket_source_other.gif'); }
+.Icon.attachment { background-image: url('../images/icons/attachment.gif'); }
+.Icon.file { background-image: url('../images/icons/attachment.gif'); }
+.Icon.refresh { background-image: url('../images/icons/refresh.gif'); }
+
+.Icon.thread {
+  font-weight: bold;
+  font-size: 1em;
+  background-image: url('../images/icons/thread.gif?1319556657');
+}
+
+.Icon:hover {
+  text-decoration: underline;
+}
+
+
+#ticketTable {
+  border: 1px solid #aaa;
+  border-left: none;
+  border-bottom: none;
+
+  caption {
+    padding: 5px;
+    text-align: left;
+    color: #000;
+    background: #ddd;
+    border: 1px solid #aaa;
+    border-bottom: none;
+    font-weight: bold;
+  }
+
+  th {
+    height: 24px;
+    line-height: 24px;
+    background: #e1f2ff;
+    border: 1px solid #aaa;
+    border-right: none;
+    border-top: none;
+
+    a {
+      color: #000;
+    }
+  }
+
+  td {
+    padding: 2px;
+    border: 1px solid #aaa;
+    border-right: none;
+    border-top: none;
+  }
+
+  tr.alt td {
+    background: #f9f9f9;
+  }
+}
+
+#ticketSearchForm {
+  display: inline-block;
+  float: left;
+  padding: 0 0 5px 0;
+}
+
+a.refresh {
+  display: block;
+  width: auto;
+  float: right;
+  height: 20px;
+  line-height: 20px;
+  text-align: center;
+  padding: 0 10px 0 28px;
+  border: 1px solid #aaa;
+  margin-left: 10px;
+  color: #333;
+  background-position: 5px 50%;
+  background-repeat: no-repeat;
+  background-image: url('../images/icons/refresh.png');
+}
+
+.infoTable {
+  background: #F4FAFF;
+  th {
+    text-align: left;
+  }
+}
+
+#ticketThread {
+  table {
+    margin-top: 10px;
+    border: 1px solid #aaa;
+    border-bottom: 2px solid #aaa;
+
+    th {
+      text-align: left;
+      border-bottom: 1px solid #aaa;
+      font-size: 12px;
+      padding: 5px;
+
+      span {
+          font-weight:normal;
+          color:#888;
+          padding-left:20px;
+      }
+    }
+
+    td {
+      padding: 5px;
+    }
+  }
+
+  .message th { background: #d8efff; }
+  .response th { background: #ddd; }
+
+  .info {
+    padding: 2px;
+    background: #f9f9f9;
+    border-top: 1px solid #ddd;
+    height: 16px;
+    line-height: 16px;
+
+    a {
+      display: inline-block;
+      margin: 5px 10px 5px 0;
+      padding-left: 24px;
+      height: 16px;
+      line-height: 16px;
+      background-position: 0 50%;
+      background-repeat: no-repeat;
+    }
+  }
+}
+
diff --git a/include/client/header.inc.php b/include/client/header.inc.php
index da763a7bbf7b1e5b9481b8d26a0dfca2c79a9997..81191f98b7dacefb7bc34ba03d6b53920d9d16a7 100644
--- a/include/client/header.inc.php
+++ b/include/client/header.inc.php
@@ -10,7 +10,7 @@ header("Content-Type: text/html; charset=UTF-8\r\n");
     <meta name="description" content="customer support platform">
     <meta name="keywords" content="osTicket, Customer support system, support ticket system">
     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-    <link rel="stylesheet" href="<?php echo ASSETS_PATH; ?>css/theme.css" media="screen">
+    <link rel="stylesheet" href="<?php echo ASSETS_PATH; ?>css/theme.min.css" media="screen">
     <link rel="stylesheet" href="<?php echo ASSETS_PATH; ?>css/print.css" media="print">
     <script src="<?php echo ROOT_PATH; ?>js/jquery-1.7.2.min.js"></script>
     <script src="<?php echo ROOT_PATH; ?>js/jquery.multifile.js"></script>