changeset 143:7a27b1c9cb84

Add LESS compilation (toggled in settings) Disabled by default to make development easier, but should be used in production environments.
author dellsystem <ilostwaldo@gmail.com>
date Fri, 12 Oct 2012 22:59:56 -0400
parents c3c4aaccbcd0
children 77babc4afe34
files agora-example.conf context_processors.py settings.py static/css/agora.css templates/base.djhtml
diffstat 5 files changed, 609 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/agora-example.conf
+++ b/agora-example.conf
@@ -4,10 +4,11 @@
 # the real file should be called 'agora.conf'
 
 
-#You probably want this enabled unless you're running Agora in a
-#production environment
+# You probably want to keep these defaults unless you're running Agora
+# in a production environment.
 [debug]
 debug = yes
+compile_less = no
 
 #This is used for salting the hashes of users' passwords and other
 #hashing algorithms.
new file mode 100644
--- /dev/null
+++ b/context_processors.py
@@ -0,0 +1,5 @@
+from django.conf import settings
+
+
+def less_compilation(request):
+    return {'compile_less': settings.COMPILE_LESS}
--- a/settings.py
+++ b/settings.py
@@ -24,6 +24,11 @@
 except:
     DEBUG = False
 
+try:
+    COMPILE_LESS = config.get('debug', 'compile_less').lower() != 'no'
+except:
+    COMPILE_LESS = True
+
 TEMPLATE_DEBUG = DEBUG
 
 try:
@@ -123,6 +128,7 @@
 
 TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
     'django.core.context_processors.request',
+    'context_processors.less_compilation',
 )
 
 INSTALLED_APPS = (
new file mode 100644
--- /dev/null
+++ b/static/css/agora.css
@@ -0,0 +1,589 @@
+.inline-block{display:inline-block;zoom:1;*display:inline;}
+.wrap{width:960px;margin:0 auto;}
+.center-align{text-align:center;}
+.right-float{float:right;}
+.button{line-height:20px;display:inline-block;zoom:1;*display:inline;background-color:#1b749d;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#22a2ca), to(#1b749d));background-image:-moz-linear-gradient(top, #22a2ca, #1b749d);background-image:-ms-linear-gradient(top, #22a2ca, #1b749d);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #22a2ca), color-stop(100%, #1b749d));background-image:-webkit-linear-gradient(top, #22a2ca, #1b749d);background-image:-o-linear-gradient(top, #22a2ca, #1b749d);background-image:linear-gradient(top, #22a2ca, #1b749d);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#22a2ca', endColorstr='#1b749d', GradientType=0);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:10px;color:#ffffff;text-shadow:rgba(0, 0, 0, 0.5) 0px 1px 0;border:1px solid #1b749d;}.button:hover{color:#ffffff;text-decoration:none;background-color:#1b749d;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#1b749d), to(#1b749d));background-image:-moz-linear-gradient(top, #1b749d, #1b749d);background-image:-ms-linear-gradient(top, #1b749d, #1b749d);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #1b749d), color-stop(100%, #1b749d));background-image:-webkit-linear-gradient(top, #1b749d, #1b749d);background-image:-o-linear-gradient(top, #1b749d, #1b749d);background-image:linear-gradient(top, #1b749d, #1b749d);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1b749d', endColorstr='#1b749d', GradientType=0);}
+.button.large{font-size:1.5em;}
+button.button{cursor:pointer;outline:0;}
+.pill{display:block;background:#f0f0f0;border:1px solid #c3c3c3;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;color:#555555;padding:8px 20px;font-weight:bold;line-height:1;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:inset 0 0 3px 0px #ffffff;-moz-box-shadow:inset 0 0 3px 0px #ffffff;box-shadow:inset 0 0 3px 0px #ffffff;margin-bottom:10px;text-align:center;}.pill:hover{color:#ffffff;text-decoration:none;background:#22a2ca;border-color:#22a2ca;text-shadow:0 1px 0 #1b749d;-webkit-box-shadow:inset 0 0 2px 0 #60cae1;-moz-box-shadow:inset 0 0 2px 0 #60cae1;box-shadow:inset 0 0 2px 0 #60cae1;}
+.hidden{display:none;}
+.disable-select{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}
+*{margin:0;padding:0;}
+a{color:#22a2ca;text-decoration:none;}a:hover{color:#1b749d;text-decoration:underline;}
+img{border:0;}
+body{font-family:"Helvetica Neue","Helvetica LT Std",Helvetica,Arial,sans-serif;font-size:13px;}
+#header{background-color:#f0f0f0;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fbfbfb), to(#f0f0f0));background-image:-moz-linear-gradient(top, #fbfbfb, #f0f0f0);background-image:-ms-linear-gradient(top, #fbfbfb, #f0f0f0);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fbfbfb), color-stop(100%, #f0f0f0));background-image:-webkit-linear-gradient(top, #fbfbfb, #f0f0f0);background-image:-o-linear-gradient(top, #fbfbfb, #f0f0f0);background-image:linear-gradient(top, #fbfbfb, #f0f0f0);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbfbfb', endColorstr='#f0f0f0', GradientType=0);height:100px;line-height:100px;-webkit-box-shadow:0 5px 27px 0 rgba(77, 77, 77, 0.3);-moz-box-shadow:0 5px 27px 0 rgba(77, 77, 77, 0.3);box-shadow:0 5px 27px 0 rgba(77, 77, 77, 0.3);position:relative;z-index:100;}#header .logo{display:inline-block;padding-top:15px;padding-left:15px;}
+#header .nav{float:right;list-style-type:none;text-transform:lowercase;}#header .nav li{float:left;}#header .nav li a{background-image:url('../img/header_icons.png');background-repeat:no-repeat;display:block;margin:20px 7px;padding:0 10px;height:47px;color:#555555;font-size:1.1em;}#header .nav li a:hover{text-decoration:none;color:#333333;}
+#header .nav li:last-child a{margin-right:0;padding-right:0;}
+#header .nav #code-icon{background-position:-62px 0px;}#header .nav #code-icon:hover{background-position:-62px -60px;}
+#header .nav #discuss-icon{background-position:-125px 0px;}#header .nav #discuss-icon:hover{background-position:-125px -60px;}
+#header .nav #help-icon{background-position:-209px 0px;}#header .nav #help-icon:hover{background-position:-209px -60px;}
+#header .nav #about-icon{background-position:12px 0px;}#header .nav #about-icon:hover{background-position:12px -60px;}
+#header .nav .login{background-position-x:-267px;}
+#billboard{background-color:#22a2ca;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#1b749d), to(#22a2ca));background-image:-moz-linear-gradient(top, #1b749d, #22a2ca);background-image:-ms-linear-gradient(top, #1b749d, #22a2ca);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #1b749d), color-stop(100%, #22a2ca));background-image:-webkit-linear-gradient(top, #1b749d, #22a2ca);background-image:-o-linear-gradient(top, #1b749d, #22a2ca);background-image:linear-gradient(top, #1b749d, #22a2ca);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1b749d', endColorstr='#22a2ca', GradientType=0);}#billboard .grid{padding:30px 0;background-image:url('../img/grid.png');background-repeat:repeat;}
+#billboard h1{color:#ffffff;font-weight:normal;text-shadow:rgba(0, 0, 0, 0.7) 1px 1px 0;font-size:2.1em;padding:0 100px;}#billboard h1 a{color:#ffffff;font-weight:bold;}
+#login-box{margin:0 auto;margin-top:10px;width:300px;height:70px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 0 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 0 7px rgba(0, 0, 0, 0.3);box-shadow:0 0 7px rgba(0, 0, 0, 0.3);background-color:#fbfbfb;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#fbfbfb));background-image:-moz-linear-gradient(top, #ffffff, #fbfbfb);background-image:-ms-linear-gradient(top, #ffffff, #fbfbfb);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #fbfbfb));background-image:-webkit-linear-gradient(top, #ffffff, #fbfbfb);background-image:-o-linear-gradient(top, #ffffff, #fbfbfb);background-image:linear-gradient(top, #ffffff, #fbfbfb);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fbfbfb', GradientType=0);}
+#billboard-below{height:20px;margin-bottom:10px;background-color:#ffffff;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#f0f0f0), to(#ffffff));background-image:-moz-linear-gradient(top, #f0f0f0, #ffffff);background-image:-ms-linear-gradient(top, #f0f0f0, #ffffff);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f0f0f0), color-stop(100%, #ffffff));background-image:-webkit-linear-gradient(top, #f0f0f0, #ffffff);background-image:-o-linear-gradient(top, #f0f0f0, #ffffff);background-image:linear-gradient(top, #f0f0f0, #ffffff);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ffffff', GradientType=0);}
+#header-below{border-top:1px solid #e6e6e6;height:30px;position:relative;z-index:101;background:#ffffff;}
+#breadcrumbs{border-bottom:1px solid #e6e6e6;margin-bottom:10px;padding-bottom:5px;}
+#info-box{margin-top:20px;clear:both;}#info-box h2{font-weight:normal;font-size:1.9em;}
+#content{width:960px;margin:0 auto;padding-bottom:30px;color:#333333;}
+#footer{width:960px;margin:0 auto;text-align:center;padding:15px 0;}
+h1,h2,h3,h4,h5,h6{padding:10px 0;}
+h1{font-size:2.1em;}
+h2{font-size:1.7em;}
+p{padding-bottom:5px;}
+.snippetform input[type=text],.snippetform textarea{width:698px;padding:5px;margin:10px 0;outline:none;border:1px solid #aaaaaa;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;line-height:20px;}.snippetform input[type=text]:focus,.snippetform textarea:focus{border-color:#60cae1;}
+.snippetform #id_description{height:100px;}
+#sidebar{margin-top:10px;width:208px;border:1px solid #e6e6e6;padding:10px;background:#fbfbfb;display:inline-block;zoom:1;*display:inline;}
+#non-sidebar{display:inline-block;zoom:1;*display:inline;width:710px;padding-right:20px;vertical-align:top;}
+.hint{border:1px solid #60cae1;background:#c3e9f5;padding:10px;margin-bottom:10px;}
+hr{border:0;border-top:1px solid #aaaaaa;margin:5px 0;}
+.tree ul{list-style-type:none;}
+#diff{display:none;border:1px solid #e6e6e6;padding:10px;background:#fbfbfb;}#diff .code{white-space:pre-wrap;}
+#diff .gi{background:#DFD;}
+#diff .gu{color:#aaaaaa;}
+#diff .gd{background:#FDD;}
+table.default{width:100%;border:1px solid #e6e6e6;}table.default thead th{padding:5px 0;border-bottom:1px solid #e6e6e6;}
+ul{padding:5px 0;margin-left:20px;}
+#login-popup{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0, 0, 0, 0.3);z-index:200;}
+#login-form{-webkit-box-shadow:0 0 5px 1px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 0 5px 1px rgba(0, 0, 0, 0.3);box-shadow:0 0 5px 1px rgba(0, 0, 0, 0.3);width:600px;height:320px;position:absolute;top:50%;left:50%;margin-left:-300px;margin-top:-180px;background:#ffffff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:20px 30px;}
+.errors{padding-top:5px;padding-left:5px;background:#ffccaa;margin-bottom:10px;border:1px solid #ff7f2a;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+form .form-line label{float:left;text-align:right;padding-right:20px;padding-top:10px;font-weight:bold;width:180px;}
+form .form-input{margin-left:200px;padding:5px 0;}form .form-input input[type=text]{width:400px;height:20px;}
+form .form-input textarea{width:400px;}
+form .form-input p{padding-top:10px;padding-bottom:0;}
+form .errors{clear:both;}
+dl dt{float:left;clear:left;font-weight:bold;padding-right:5px;}
+dl dd{margin-left:200px;}
+.row{clear:both;}
+.span3{width:300px;display:inline-block;zoom:1;*display:inline;vertical-align:top;padding-right:30px;}.span3:last-child{padding-right:0px !important;}
+.snippet{width:670px;font-family:monospace;position:relative;}.snippet .code-lines{counter-reset:line;position:relative;left:40px;padding:10px;border:1px solid #e6e6e6;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;}.snippet .code-lines .line{word-wrap:break-word;counter-increment:line;white-space:pre-wrap;}
+.snippet .line-counters{position:absolute;top:0;font-weight:bold;}.snippet .line-counters p{width:30px;text-align:right;position:absolute;}
+.snippet.vibrant{}.snippet.vibrant .code-lines{color:#ffffff;background:#1b1b1b;}
+.snippet.vibrant .c{color:#3A6EF2;font-style:italic;}
+.snippet.vibrant .err{color:#A61717;background-color:#E3D2D2;}
+.snippet.vibrant .k{color:#ffffff;font-weight:bold;}
+.snippet.vibrant .o{color:#ffffff;font-weight:bold;}
+.snippet.vibrant .cm{color:#3A6EF2;font-style:italic;}
+.snippet.vibrant .cp{color:#3A6EF2;font-weight:bold;}
+.snippet.vibrant .c1{color:#3A6EF2;font-style:italic;}
+.snippet.vibrant .cs{color:#3A6EF2;font-weight:bold;font-style:italic;}
+.snippet.vibrant .gd{color:#000000;background-color:#FFDDDD;}
+.snippet.vibrant .gd .x{background-color:#FFAAAA;}
+.snippet.vibrant .ge{font-style:italic;}
+.snippet.vibrant .gr{color:#AA0000;}
+.snippet.vibrant .gh{color:#999999;}
+.snippet.vibrant .gi{color:#000000;background-color:#DDFFDD;}
+.snippet.vibrant .gi .x{background-color:#AAFFAA;}
+.snippet.vibrant .go{color:#888;}
+.snippet.vibrant .gp{color:#555;}
+.snippet.vibrant .gs{font-weight:bold;}
+.snippet.vibrant .gu{font-weight:#AAA;}
+.snippet.vibrant .gt{color:#AA0000;}
+.snippet.vibrant .kc{font-weight:bold;}
+.snippet.vibrant .kd{font-weight:bold;}
+.snippet.vibrant .kp{font-weight:bold;}
+.snippet.vibrant .kr{font-weight:bold;}
+.snippet.vibrant .kt{color:#445588;font-weight:bold;}
+.snippet.vibrant .m{color:#009999;}
+.snippet.vibrant .s{color:#66FF00;}
+.snippet.vibrant .na{color:#99CC99;}
+.snippet.vibrant .nb{color:#00AA00;}
+.snippet.vibrant .nc{color:#ffffff;font-weight:bold;}
+.snippet.vibrant .no{color:#ffffff;}
+.snippet.vibrant .ni{color:#339999;}
+.snippet.vibrant .ne{color:#FF0000;font-weight:bold;}
+.snippet.vibrant .nf{color:#FFCC00;font-weight:bold;}
+.snippet.vibrant .nn{color:#AAA;}
+.snippet.vibrant .nt{color:#FF6600;}
+.snippet.vibrant .nv{color:#BBB;}
+.snippet.vibrant .ow{font-weight:bold;}
+.snippet.vibrant .w{color:#BBB;}
+.snippet.vibrant .mf{color:#CCFF33;}
+.snippet.vibrant .mh{color:#ccff33;}
+.snippet.vibrant .mi{color:#ccff33;}
+.snippet.vibrant .mo{color:#ccff33;}
+.snippet.vibrant .sb{background:#CCCC33;color:#000000;}
+.snippet.vibrant .sc{color:#66ff00;}
+.snippet.vibrant .sd{color:#66ff00;}
+.snippet.vibrant .s2{color:#66ff00;}
+.snippet.vibrant .se{color:#66ff00;}
+.snippet.vibrant .sh{color:#66ff00;}
+.snippet.vibrant .si{color:#d55555 5;}
+.snippet.vibrant .sx{color:#66ff00;}
+.snippet.vibrant .sr{color:#009926;}
+.snippet.vibrant .s1{color:#66ff00;}
+.snippet.vibrant .ss{color:#339999;}
+.snippet.vibrant .bp{color:#60cae1;font-weight:bold;}
+.snippet.vibrant .vc{color:#008080;}
+.snippet.vibrant .vg{color:#008080;}
+.snippet.vibrant .vi{color:#008080;}
+.snippet.vibrant .il{color:#009999;}
+.snippet.autumn{}.snippet.autumn .hll{background-color:#ffffcc;}
+.snippet.autumn .c{color:#aaaaaa;font-style:italic;}
+.snippet.autumn .err{color:#F00000;background-color:#f0a0a0;}
+.snippet.autumn .k{color:#0000aa;}
+.snippet.autumn .cm{color:#aaaaaa;font-style:italic;}
+.snippet.autumn .cp{color:#4c8317;}
+.snippet.autumn .c1{color:#aaaaaa;font-style:italic;}
+.snippet.autumn .cs{color:#0000aa;font-style:italic;}
+.snippet.autumn .gd{color:#aa0000;}
+.snippet.autumn .ge{font-style:italic;}
+.snippet.autumn .gr{color:#aa0000;}
+.snippet.autumn .gh{color:#000080;font-weight:bold;}
+.snippet.autumn .gi{color:#00aa00;}
+.snippet.autumn .go{color:#888888;}
+.snippet.autumn .gp{color:#555555;}
+.snippet.autumn .gs{font-weight:bold;}
+.snippet.autumn .gu{color:#800080;font-weight:bold;}
+.snippet.autumn .gt{color:#aa0000;}
+.snippet.autumn .kc{color:#0000aa;}
+.snippet.autumn .kd{color:#0000aa;}
+.snippet.autumn .kn{color:#0000aa;}
+.snippet.autumn .kp{color:#0000aa;}
+.snippet.autumn .kr{color:#0000aa;}
+.snippet.autumn .kt{color:#00aaaa;}
+.snippet.autumn .m{color:#009999;}
+.snippet.autumn .s{color:#aa5500;}
+.snippet.autumn .na{color:#1e90ff;}
+.snippet.autumn .nb{color:#00aaaa;}
+.snippet.autumn .nc{color:#00aa00;text-decoration:underline;}
+.snippet.autumn .no{color:#aa0000;}
+.snippet.autumn .nd{color:#888888;}
+.snippet.autumn .ni{color:#800000;font-weight:bold;}
+.snippet.autumn .nf{color:#00aa00;}
+.snippet.autumn .nn{color:#00aaaa;text-decoration:underline;}
+.snippet.autumn .nt{color:#1e90ff;font-weight:bold;}
+.snippet.autumn .nv{color:#aa0000;}
+.snippet.autumn .ow{color:#0000aa;}
+.snippet.autumn .w{color:#bbbbbb;}
+.snippet.autumn .mf{color:#009999;}
+.snippet.autumn .mh{color:#009999;}
+.snippet.autumn .mi{color:#009999;}
+.snippet.autumn .mo{color:#009999;}
+.snippet.autumn .sb{color:#aa5500;}
+.snippet.autumn .sc{color:#aa5500;}
+.snippet.autumn .sd{color:#aa5500;}
+.snippet.autumn .s2{color:#aa5500;}
+.snippet.autumn .se{color:#aa5500;}
+.snippet.autumn .sh{color:#aa5500;}
+.snippet.autumn .si{color:#aa5500;}
+.snippet.autumn .sx{color:#aa5500;}
+.snippet.autumn .sr{color:#009999;}
+.snippet.autumn .s1{color:#aa5500;}
+.snippet.autumn .ss{color:#0000aa;}
+.snippet.autumn .bp{color:#00aaaa;}
+.snippet.autumn .vc{color:#aa0000;}
+.snippet.autumn .vg{color:#aa0000;}
+.snippet.autumn .vi{color:#aa0000;}
+.snippet.autumn .il{color:#009999;}
+.snippet.borland{}.snippet.borland .hll{background-color:#ffffcc;}
+.snippet.borland .c{color:#008800;font-style:italic;}
+.snippet.borland .err{color:#a61717;background-color:#e3d2d2;}
+.snippet.borland .k{color:#000080;font-weight:bold;}
+.snippet.borland .cm{color:#008800;font-style:italic;}
+.snippet.borland .cp{color:#008080;}
+.snippet.borland .c1{color:#008800;font-style:italic;}
+.snippet.borland .cs{color:#008800;font-weight:bold;}
+.snippet.borland .gd{color:#000000;background-color:#ffdddd;}
+.snippet.borland .ge{font-style:italic;}
+.snippet.borland .gr{color:#aa0000;}
+.snippet.borland .gh{color:#999999;}
+.snippet.borland .gi{color:#000000;background-color:#ddffdd;}
+.snippet.borland .go{color:#888888;}
+.snippet.borland .gp{color:#555555;}
+.snippet.borland .gs{font-weight:bold;}
+.snippet.borland .gu{color:#aaaaaa;}
+.snippet.borland .gt{color:#aa0000;}
+.snippet.borland .kc{color:#000080;font-weight:bold;}
+.snippet.borland .kd{color:#000080;font-weight:bold;}
+.snippet.borland .kn{color:#000080;font-weight:bold;}
+.snippet.borland .kp{color:#000080;font-weight:bold;}
+.snippet.borland .kr{color:#000080;font-weight:bold;}
+.snippet.borland .kt{color:#000080;font-weight:bold;}
+.snippet.borland .m{color:#0000ff;}
+.snippet.borland .s{color:#0000ff;}
+.snippet.borland .na{color:#ff0000;}
+.snippet.borland .nt{color:#000080;font-weight:bold;}
+.snippet.borland .ow{font-weight:bold;}
+.snippet.borland .w{color:#bbbbbb;}
+.snippet.borland .mf{color:#0000ff;}
+.snippet.borland .mh{color:#0000ff;}
+.snippet.borland .mi{color:#0000ff;}
+.snippet.borland .mo{color:#0000ff;}
+.snippet.borland .sb{color:#0000ff;}
+.snippet.borland .sc{color:#800080;}
+.snippet.borland .sd{color:#0000ff;}
+.snippet.borland .s2{color:#0000ff;}
+.snippet.borland .se{color:#0000ff;}
+.snippet.borland .sh{color:#0000ff;}
+.snippet.borland .si{color:#0000ff;}
+.snippet.borland .sx{color:#0000ff;}
+.snippet.borland .sr{color:#0000ff;}
+.snippet.borland .s1{color:#0000ff;}
+.snippet.borland .ss{color:#0000ff;}
+.snippet.borland .il{color:#0000ff;}
+.snippet.fruity{}.snippet.fruity .code-lines{background:#1b1b1b;}
+.snippet.fruity .hll{background-color:#333333;}
+.snippet.fruity .c{color:#008800;font-style:italic;}
+.snippet.fruity .err{color:#ffffff;}
+.snippet.fruity .g{color:#ffffff;}
+.snippet.fruity .k{color:#fb660a;font-weight:bold;}
+.snippet.fruity .l{color:#ffffff;}
+.snippet.fruity .n{color:#ffffff;}
+.snippet.fruity .o{color:#ffffff;}
+.snippet.fruity .x{color:#ffffff;}
+.snippet.fruity .p{color:#ffffff;}
+.snippet.fruity .cm{color:#008800;font-style:italic;}
+.snippet.fruity .cp{color:#ff0007;font-weight:bold;font-style:italic;}
+.snippet.fruity .c1{color:#008800;font-style:italic;}
+.snippet.fruity .cs{color:#008800;font-style:italic;}
+.snippet.fruity .gd{color:#ffffff;}
+.snippet.fruity .ge{color:#ffffff;}
+.snippet.fruity .gr{color:#ffffff;}
+.snippet.fruity .gh{color:#ffffff;font-weight:bold;}
+.snippet.fruity .gi{color:#ffffff;}
+.snippet.fruity .go{color:#444444;background-color:#222222;}
+.snippet.fruity .gp{color:#ffffff;}
+.snippet.fruity .gs{color:#ffffff;}
+.snippet.fruity .gu{color:#ffffff;font-weight:bold;}
+.snippet.fruity .gt{color:#ffffff;}
+.snippet.fruity .kc{color:#fb660a;font-weight:bold;}
+.snippet.fruity .kd{color:#fb660a;font-weight:bold;}
+.snippet.fruity .kn{color:#fb660a;font-weight:bold;}
+.snippet.fruity .kp{color:#fb660a;}
+.snippet.fruity .kr{color:#fb660a;font-weight:bold;}
+.snippet.fruity .kt{color:#cdcaa9;font-weight:bold;}
+.snippet.fruity .ld{color:#ffffff;}
+.snippet.fruity .m{color:#0086f7;font-weight:bold;}
+.snippet.fruity .s{color:#0086d2;}
+.snippet.fruity .na{color:#ff0086;font-weight:bold;}
+.snippet.fruity .nb{color:#ffffff;}
+.snippet.fruity .nc{color:#ffffff;}
+.snippet.fruity .no{color:#0086d2;}
+.snippet.fruity .nd{color:#ffffff;}
+.snippet.fruity .ni{color:#ffffff;}
+.snippet.fruity .ne{color:#ffffff;}
+.snippet.fruity .nf{color:#ff0086;font-weight:bold;}
+.snippet.fruity .nl{color:#ffffff;}
+.snippet.fruity .nn{color:#ffffff;}
+.snippet.fruity .nx{color:#ffffff;}
+.snippet.fruity .py{color:#ffffff;}
+.snippet.fruity .nt{color:#fb660a;font-weight:bold;}
+.snippet.fruity .nv{color:#fb660a;}
+.snippet.fruity .ow{color:#ffffff;}
+.snippet.fruity .w{color:#888888;}
+.snippet.fruity .mf{color:#0086f7;font-weight:bold;}
+.snippet.fruity .mh{color:#0086f7;font-weight:bold;}
+.snippet.fruity .mi{color:#0086f7;font-weight:bold;}
+.snippet.fruity .mo{color:#0086f7;font-weight:bold;}
+.snippet.fruity .sb{color:#0086d2;}
+.snippet.fruity .sc{color:#0086d2;}
+.snippet.fruity .sd{color:#0086d2;}
+.snippet.fruity .s2{color:#0086d2;}
+.snippet.fruity .se{color:#0086d2;}
+.snippet.fruity .sh{color:#0086d2;}
+.snippet.fruity .si{color:#0086d2;}
+.snippet.fruity .sx{color:#0086d2;}
+.snippet.fruity .sr{color:#0086d2;}
+.snippet.fruity .s1{color:#0086d2;}
+.snippet.fruity .ss{color:#0086d2;}
+.snippet.fruity .bp{color:#ffffff;}
+.snippet.fruity .vc{color:#fb660a;}
+.snippet.fruity .vg{color:#fb660a;}
+.snippet.fruity .vi{color:#fb660a;}
+.snippet.fruity .il{color:#0086f7;font-weight:bold;}
+.snippet.tango{}.snippet.tango .hll{background-color:#ffffcc;}
+.snippet.tango .c{color:#8f5902;font-style:italic;}
+.snippet.tango .err{color:#a40000;border:1px solid #ef2929;}
+.snippet.tango .g{color:#000000;}
+.snippet.tango .k{color:#204a87;font-weight:bold;}
+.snippet.tango .l{color:#000000;}
+.snippet.tango .n{color:#000000;}
+.snippet.tango .o{color:#ce5c00;font-weight:bold;}
+.snippet.tango .x{color:#000000;}
+.snippet.tango .p{color:#000000;font-weight:bold;}
+.snippet.tango .cm{color:#8f5902;font-style:italic;}
+.snippet.tango .cp{color:#8f5902;font-style:italic;}
+.snippet.tango .c1{color:#8f5902;font-style:italic;}
+.snippet.tango .cs{color:#8f5902;font-style:italic;}
+.snippet.tango .gd{color:#a40000;}
+.snippet.tango .ge{color:#000000;font-style:italic;}
+.snippet.tango .gr{color:#ef2929;}
+.snippet.tango .gh{color:#000080;font-weight:bold;}
+.snippet.tango .gi{color:#00a000;}
+.snippet.tango .go{color:#000000;font-style:italic;}
+.snippet.tango .gp{color:#8f5902;}
+.snippet.tango .gs{color:#000000;font-weight:bold;}
+.snippet.tango .gu{color:#800080;font-weight:bold;}
+.snippet.tango .gt{color:#a40000;font-weight:bold;}
+.snippet.tango .kc{color:#204a87;font-weight:bold;}
+.snippet.tango .kd{color:#204a87;font-weight:bold;}
+.snippet.tango .kn{color:#204a87;font-weight:bold;}
+.snippet.tango .kp{color:#204a87;font-weight:bold;}
+.snippet.tango .kr{color:#204a87;font-weight:bold;}
+.snippet.tango .kt{color:#204a87;font-weight:bold;}
+.snippet.tango .ld{color:#000000;}
+.snippet.tango .m{color:#0000cf;font-weight:bold;}
+.snippet.tango .s{color:#4e9a06;}
+.snippet.tango .na{color:#c4a000;}
+.snippet.tango .nb{color:#204a87;}
+.snippet.tango .nc{color:#000000;}
+.snippet.tango .no{color:#000000;}
+.snippet.tango .nd{color:#5c35cc;font-weight:bold;}
+.snippet.tango .ni{color:#ce5c00;}
+.snippet.tango .ne{color:#cc0000;font-weight:bold;}
+.snippet.tango .nf{color:#000000;}
+.snippet.tango .nl{color:#f57900;}
+.snippet.tango .nn{color:#000000;}
+.snippet.tango .nx{color:#000000;}
+.snippet.tango .py{color:#000000;}
+.snippet.tango .nt{color:#204a87;font-weight:bold;}
+.snippet.tango .nv{color:#000000;}
+.snippet.tango .ow{color:#204a87;font-weight:bold;}
+.snippet.tango .w{color:#f8f8f8;text-decoration:underline;}
+.snippet.tango .mf{color:#0000cf;font-weight:bold;}
+.snippet.tango .mh{color:#0000cf;font-weight:bold;}
+.snippet.tango .mi{color:#0000cf;font-weight:bold;}
+.snippet.tango .mo{color:#0000cf;font-weight:bold;}
+.snippet.tango .sb{color:#4e9a06;}
+.snippet.tango .sc{color:#4e9a06;}
+.snippet.tango .sd{color:#8f5902;font-style:italic;}
+.snippet.tango .s2{color:#4e9a06;}
+.snippet.tango .se{color:#4e9a06;}
+.snippet.tango .sh{color:#4e9a06;}
+.snippet.tango .si{color:#4e9a06;}
+.snippet.tango .sx{color:#4e9a06;}
+.snippet.tango .sr{color:#4e9a06;}
+.snippet.tango .s1{color:#4e9a06;}
+.snippet.tango .ss{color:#4e9a06;}
+.snippet.tango .bp{color:#3465a4;}
+.snippet.tango .vc{color:#000000;}
+.snippet.tango .vg{color:#000000;}
+.snippet.tango .vi{color:#000000;}
+.snippet.tango .il{color:#0000cf;font-weight:bold;}
+.snippet.native{}.snippet.native .code-lines{background:#1b1b1b;}
+.snippet.native .hll{background-color:#404040;}
+.snippet.native .c{color:#999999;font-style:italic;}
+.snippet.native .err{color:#a61717;background-color:#e3d2d2;}
+.snippet.native .g{color:#d0d0d0;}
+.snippet.native .k{color:#6ab825;font-weight:bold;}
+.snippet.native .l{color:#d0d0d0;}
+.snippet.native .n{color:#d0d0d0;}
+.snippet.native .o{color:#d0d0d0;}
+.snippet.native .x{color:#d0d0d0;}
+.snippet.native .p{color:#d0d0d0;}
+.snippet.native .cm{color:#999999;font-style:italic;}
+.snippet.native .cp{color:#cd2828;font-weight:bold;}
+.snippet.native .c1{color:#999999;font-style:italic;}
+.snippet.native .cs{color:#e50808;font-weight:bold;background-color:#520000;}
+.snippet.native .gd{color:#d22323;}
+.snippet.native .ge{color:#d0d0d0;font-style:italic;}
+.snippet.native .gr{color:#d22323;}
+.snippet.native .gh{color:#ffffff;font-weight:bold;}
+.snippet.native .gi{color:#589819;}
+.snippet.native .go{color:#cccccc;}
+.snippet.native .gp{color:#aaaaaa;}
+.snippet.native .gs{color:#d0d0d0;font-weight:bold;}
+.snippet.native .gu{color:#ffffff;text-decoration:underline;}
+.snippet.native .gt{color:#d22323;}
+.snippet.native .kc{color:#6ab825;font-weight:bold;}
+.snippet.native .kd{color:#6ab825;font-weight:bold;}
+.snippet.native .kn{color:#6ab825;font-weight:bold;}
+.snippet.native .kp{color:#6ab825;}
+.snippet.native .kr{color:#6ab825;font-weight:bold;}
+.snippet.native .kt{color:#6ab825;font-weight:bold;}
+.snippet.native .ld{color:#d0d0d0;}
+.snippet.native .m{color:#3677a9;}
+.snippet.native .s{color:#ed9d13;}
+.snippet.native .na{color:#bbbbbb;}
+.snippet.native .nb{color:#24909d;}
+.snippet.native .nc{color:#447fcf;text-decoration:underline;}
+.snippet.native .no{color:#40ffff;}
+.snippet.native .nd{color:#ffa500;}
+.snippet.native .ni{color:#d0d0d0;}
+.snippet.native .ne{color:#bbbbbb;}
+.snippet.native .nf{color:#447fcf;}
+.snippet.native .nl{color:#d0d0d0;}
+.snippet.native .nn{color:#447fcf;text-decoration:underline;}
+.snippet.native .nx{color:#d0d0d0;}
+.snippet.native .py{color:#d0d0d0;}
+.snippet.native .nt{color:#6ab825;font-weight:bold;}
+.snippet.native .nv{color:#40ffff;}
+.snippet.native .ow{color:#6ab825;font-weight:bold;}
+.snippet.native .w{color:#666666;}
+.snippet.native .mf{color:#3677a9;}
+.snippet.native .mh{color:#3677a9;}
+.snippet.native .mi{color:#3677a9;}
+.snippet.native .mo{color:#3677a9;}
+.snippet.native .sb{color:#ed9d13;}
+.snippet.native .sc{color:#ed9d13;}
+.snippet.native .sd{color:#ed9d13;}
+.snippet.native .s2{color:#ed9d13;}
+.snippet.native .se{color:#ed9d13;}
+.snippet.native .sh{color:#ed9d13;}
+.snippet.native .si{color:#ed9d13;}
+.snippet.native .sx{color:#ffa500;}
+.snippet.native .sr{color:#ed9d13;}
+.snippet.native .s1{color:#ed9d13;}
+.snippet.native .ss{color:#ed9d13;}
+.snippet.native .bp{color:#24909d;}
+.snippet.native .vc{color:#40ffff;}
+.snippet.native .vg{color:#40ffff;}
+.snippet.native .vi{color:#40ffff;}
+.snippet.native .il{color:#3677a9;}
+.snippet.vs{}.snippet.vs .hll{background-color:#ffffcc;}
+.snippet.vs .c{color:#008000;}
+.snippet.vs .err{border:1px solid #ff0000;}
+.snippet.vs .k{color:#0000ff;}
+.snippet.vs .cm{color:#008000;}
+.snippet.vs .cp{color:#0000ff;}
+.snippet.vs .c1{color:#008000;}
+.snippet.vs .cs{color:#008000;}
+.snippet.vs .ge{font-style:italic;}
+.snippet.vs .gh{font-weight:bold;}
+.snippet.vs .gp{font-weight:bold;}
+.snippet.vs .gs{font-weight:bold;}
+.snippet.vs .gu{font-weight:bold;}
+.snippet.vs .kc{color:#0000ff;}
+.snippet.vs .kd{color:#0000ff;}
+.snippet.vs .kn{color:#0000ff;}
+.snippet.vs .kp{color:#0000ff;}
+.snippet.vs .kr{color:#0000ff;}
+.snippet.vs .kt{color:#2b91af;}
+.snippet.vs .s{color:#a31515;}
+.snippet.vs .nc{color:#2b91af;}
+.snippet.vs .ow{color:#0000ff;}
+.snippet.vs .sb{color:#a31515;}
+.snippet.vs .sc{color:#a31515;}
+.snippet.vs .sd{color:#a31515;}
+.snippet.vs .s2{color:#a31515;}
+.snippet.vs .se{color:#a31515;}
+.snippet.vs .sh{color:#a31515;}
+.snippet.vs .si{color:#a31515;}
+.snippet.vs .sx{color:#a31515;}
+.snippet.vs .sr{color:#a31515;}
+.snippet.vs .s1{color:#a31515;}
+.snippet.vs .ss{color:#a31515;}
+.snippet.monokai{}.snippet.monokai .code-lines{background:#272822;color:#F8F8F2;}
+.snippet.monokai .hll{background-color:#49483e;}
+.snippet.monokai .c{color:#75715e;}
+.snippet.monokai .err{color:#960050;background-color:#1e0010;}
+.snippet.monokai .k{color:#66d9ef;}
+.snippet.monokai .l{color:#ae81ff;}
+.snippet.monokai .n{color:#f8f8f2;}
+.snippet.monokai .o{color:#f92672;}
+.snippet.monokai .p{color:#f8f8f2;}
+.snippet.monokai .cm{color:#75715e;}
+.snippet.monokai .cp{color:#75715e;}
+.snippet.monokai .c1{color:#75715e;}
+.snippet.monokai .cs{color:#75715e;}
+.snippet.monokai .ge{font-style:italic;}
+.snippet.monokai .gs{font-weight:bold;}
+.snippet.monokai .kc{color:#66d9ef;}
+.snippet.monokai .kd{color:#66d9ef;}
+.snippet.monokai .kn{color:#f92672;}
+.snippet.monokai .kp{color:#66d9ef;}
+.snippet.monokai .kr{color:#66d9ef;}
+.snippet.monokai .kt{color:#66d9ef;}
+.snippet.monokai .ld{color:#e6db74;}
+.snippet.monokai .m{color:#ae81ff;}
+.snippet.monokai .s{color:#e6db74;}
+.snippet.monokai .na{color:#a6e22e;}
+.snippet.monokai .nb{color:#f8f8f2;}
+.snippet.monokai .nc{color:#a6e22e;}
+.snippet.monokai .no{color:#66d9ef;}
+.snippet.monokai .nd{color:#a6e22e;}
+.snippet.monokai .ni{color:#f8f8f2;}
+.snippet.monokai .ne{color:#a6e22e;}
+.snippet.monokai .nf{color:#a6e22e;}
+.snippet.monokai .nl{color:#f8f8f2;}
+.snippet.monokai .nn{color:#f8f8f2;}
+.snippet.monokai .nx{color:#a6e22e;}
+.snippet.monokai .py{color:#f8f8f2;}
+.snippet.monokai .nt{color:#f92672;}
+.snippet.monokai .nv{color:#f8f8f2;}
+.snippet.monokai .ow{color:#f92672;}
+.snippet.monokai .w{color:#f8f8f2;}
+.snippet.monokai .mf{color:#ae81ff;}
+.snippet.monokai .mh{color:#ae81ff;}
+.snippet.monokai .mi{color:#ae81ff;}
+.snippet.monokai .mo{color:#ae81ff;}
+.snippet.monokai .sb{color:#e6db74;}
+.snippet.monokai .sc{color:#e6db74;}
+.snippet.monokai .sd{color:#e6db74;}
+.snippet.monokai .s2{color:#e6db74;}
+.snippet.monokai .se{color:#ae81ff;}
+.snippet.monokai .sh{color:#e6db74;}
+.snippet.monokai .si{color:#e6db74;}
+.snippet.monokai .sx{color:#e6db74;}
+.snippet.monokai .sr{color:#e6db74;}
+.snippet.monokai .s1{color:#e6db74;}
+.snippet.monokai .ss{color:#e6db74;}
+.snippet.monokai .bp{color:#f8f8f2;}
+.snippet.monokai .vc{color:#f8f8f2;}
+.snippet.monokai .vg{color:#f8f8f2;}
+.snippet.monokai .vi{color:#f8f8f2;}
+.snippet.monokai .il{color:#ae81ff;}
+.snippet.emacs{}.snippet.emacs .hll{background-color:#ffffcc;}
+.snippet.emacs .c{color:#008800;font-style:italic;}
+.snippet.emacs .err{border:1px solid #ff0000;}
+.snippet.emacs .k{color:#AA22FF;font-weight:bold;}
+.snippet.emacs .o{color:#666666;}
+.snippet.emacs .cm{color:#008800;font-style:italic;}
+.snippet.emacs .cp{color:#008800;}
+.snippet.emacs .c1{color:#008800;font-style:italic;}
+.snippet.emacs .cs{color:#008800;font-weight:bold;}
+.snippet.emacs .gd{color:#a00000;}
+.snippet.emacs .ge{font-style:italic;}
+.snippet.emacs .gr{color:#ff0000;}
+.snippet.emacs .gh{color:#000080;font-weight:bold;}
+.snippet.emacs .gi{color:#00a000;}
+.snippet.emacs .go{color:#808080;}
+.snippet.emacs .gp{color:#000080;font-weight:bold;}
+.snippet.emacs .gs{font-weight:bold;}
+.snippet.emacs .gu{color:#800080;font-weight:bold;}
+.snippet.emacs .gt{color:#0040d0;}
+.snippet.emacs .kc{color:#AA22FF;font-weight:bold;}
+.snippet.emacs .kd{color:#AA22FF;font-weight:bold;}
+.snippet.emacs .kn{color:#AA22FF;font-weight:bold;}
+.snippet.emacs .kp{color:#aa22ff;}
+.snippet.emacs .kr{color:#AA22FF;font-weight:bold;}
+.snippet.emacs .kt{color:#00BB00;font-weight:bold;}
+.snippet.emacs .m{color:#666666;}
+.snippet.emacs .s{color:#bb4444;}
+.snippet.emacs .na{color:#bb4444;}
+.snippet.emacs .nb{color:#aa22ff;}
+.snippet.emacs .nc{color:#0000ff;}
+.snippet.emacs .no{color:#880000;}
+.snippet.emacs .nd{color:#aa22ff;}
+.snippet.emacs .ni{color:#999999;font-weight:bold;}
+.snippet.emacs .ne{color:#D2413A;font-weight:bold;}
+.snippet.emacs .nf{color:#00a000;}
+.snippet.emacs .nl{color:#a0a000;}
+.snippet.emacs .nn{color:#0000FF;font-weight:bold;}
+.snippet.emacs .nt{color:#008000;font-weight:bold;}
+.snippet.emacs .nv{color:#b8860b;}
+.snippet.emacs .ow{color:#AA22FF;font-weight:bold;}
+.snippet.emacs .w{color:#bbbbbb;}
+.snippet.emacs .mf{color:#666666;}
+.snippet.emacs .mh{color:#666666;}
+.snippet.emacs .mi{color:#666666;}
+.snippet.emacs .mo{color:#666666;}
+.snippet.emacs .sb{color:#bb4444;}
+.snippet.emacs .sc{color:#bb4444;}
+.snippet.emacs .sd{color:#BB4444;font-style:italic;}
+.snippet.emacs .s2{color:#bb4444;}
+.snippet.emacs .se{color:#BB6622;font-weight:bold;}
+.snippet.emacs .sh{color:#bb4444;}
+.snippet.emacs .si{color:#BB6688;font-weight:bold;}
+.snippet.emacs .sx{color:#008000;}
+.snippet.emacs .sr{color:#bb6688;}
+.snippet.emacs .s1{color:#bb4444;}
+.snippet.emacs .ss{color:#b8860b;}
+.snippet.emacs .bp{color:#aa22ff;}
+.snippet.emacs .vc{color:#b8860b;}
+.snippet.emacs .vg{color:#b8860b;}
+.snippet.emacs .vi{color:#b8860b;}
+.snippet.emacs .il{color:#666666;}
--- a/templates/base.djhtml
+++ b/templates/base.djhtml
@@ -23,11 +23,15 @@
     enables collaboration with Octave-related personal projects and
     code" />
 
+    {% if compile_less %}
+    <link href="/static/css/agora.css" rel="stylesheet" type="text/css" />
+    {% else %}
     <link href="/static/css/imports.less"
           rel="stylesheet/less" type="text/css" media="screen" />
 
-    <script src="/static/js/less.min.js" type="text/javascript">
-    </script>
+    <script src="/static/js/less.min.js" type="text/javascript"></script>
+    {% endif %}
+
     {% block extrahead %}{% endblock %}
   </head>