diff --git a/lightwrite/templates/light.html b/lightwrite/templates/light.html
index ddb3917..730d50d 100644
--- a/lightwrite/templates/light.html
+++ b/lightwrite/templates/light.html
@@ -19,8 +19,11 @@
+
+
+
-
@@ -32,6 +35,7 @@
diff --git a/static/smoke.css b/static/smoke.css
new file mode 100644
index 0000000..7a3c2a4
--- /dev/null
+++ b/static/smoke.css
@@ -0,0 +1,114 @@
+.smoke-base {
+ position: fixed;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ visibility: hidden;
+ opacity: 0;
+ -moz-transition: all .3s;
+ -webkit-transition: opacity .3s;
+ -o-transition: all .3s;
+ transition: all .3s;
+}
+
+.smoke-base.smoke-visible {
+ opacity: 1;
+ visibility: visible;
+}
+
+.smokebg {
+ position: fixed;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+
+.smoke-base .dialog {
+ position: absolute
+}
+
+.dialog-prompt {
+ margin-top: 5px;
+ text-align: center;
+}
+
+.dialog-buttons {
+ margin: 10px 0 5px 0
+}
+
+.smoke {
+ font-family: sans-serif;
+ font-weight: bold;
+ text-align: center;
+ font-size: 30px;
+ line-height: 130%;
+}
+
+.dialog-buttons button {
+ display: inline-block;
+ vertical-align: baseline;
+ cursor: pointer;
+ font-family: sans-serif;
+ font-style: normal;
+ text-decoration: none;
+ border: 0;
+ outline: 0;
+ margin: 0 5px;
+ -webkit-background-clip: padding-box;
+ font-size: 13px;
+ line-height: 13px;
+ font-weight: bold;
+ padding: 9px 12px;
+}
+
+.dialog-prompt input {
+ margin: 0;
+ border: 0;
+ font-family: sans-serif;
+ outline: none;
+ border: 1px solid #333;
+ width: 97%;
+ background-color: #fff;
+ font-size: 15px;
+ padding: 5px;
+}
+
+.smoke-base {
+ background: rgba(0,0,0,.3);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#90000000,endColorstr=#900000000);
+}
+
+.smoke-base .dialog {
+ top: 25%;
+ left: 25%;
+ width: 50%;
+}
+
+.smoke-base .dialog-inner {
+ padding: 15px
+}
+
+.smoke {
+ text-transform: uppercase;
+ background-color: rgba(255,255,255,1);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff);
+}
+
+.dialog-buttons button {
+ border-radius: 5px;
+ text-transform: uppercase;
+ background-color: rgba(0,0,0,.9);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#222222,endColorstr=#222222);
+ color: #fff;
+}
+
+button.cancel {
+ background-color: rgba(0,0,0,.7);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#444444,endColorstr=#444444);
+}
+
+.queue{
+ display:none;
+}
\ No newline at end of file
diff --git a/static/smoke.min.js b/static/smoke.min.js
new file mode 100644
index 0000000..a29fe36
--- /dev/null
+++ b/static/smoke.min.js
@@ -0,0 +1 @@
+eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('7 2={N:[],I:9,S:1o,i:0,Y:6(a){7 b=8.1k(\'o\');b.1j(\'B\',\'2-Q-\'+a);b.10=\'2-X\';b.1m.1n=2.S;2.S++;8.1p.1r(b)},H:6(){7 a=1s 1t().1x();a=1z.1D(1,1G)+a;3(!2.I){2.q(F,"U",6(){2.Y(a)})}w{2.Y(a)}C a},1H:6(){},G:6(e,f){2.i++;f.1I=2.i;e=e.15(/\\n/g,\'<1c />\');e=e.15(/\\r/g,\'<1c />\');7 a=\'\';3(f.5==\'t\'){a=\'\'+\'\'+\'\'}7 b=\'1A\';7 c=\'1y\';7 d=\'\';3(f.p.u){b=f.p.u}3(f.p.y){c=f.p.y}3(f.p.14){d=f.p.14}7 g=\'\';3(f.5!=\'L\'){g=\'\';3(f.5==\'E\'){g+=\'\'+b+\'\'}3(f.5==\'t\'||f.5==\'z\'){g+=\'\'+c+\'\'+\'\'+b+\'\'}g+=\'\'}7 h=\'\'+\'\'+\'\'+e+a+g+\'\'+\'\';3(!2.I){2.q(F,"U",6(){2.Z(e,f,h)})}w{2.Z(e,f,h)}},Z:6(e,f,a){7 b=8.l(\'2-Q-\'+f.4+\'\');b.10=\'2-X 2-1g\';b.K=a;1h(b.K==""){b.K=a}3(2.N[f.4]){1i(2.N[f.4])}7 g=8.l(\'2-1a-\'+f.4+\'\');2.q(g,"s",6(){2.k(f.5,f.4);3(f.5==\'t\'||f.5==\'z\'){f.m(9)}});3(f.5==\'E\'){7 h=8.l(\'E-u-\'+f.4+\'\');2.q(h,"s",6(){2.k(f.5,f.4)});8.O=6(e){3(!e)e=F.W;3(e.v==13||e.v==16||e.v==V){2.k(f.5,f.4)}}}3(f.5==\'z\'){7 h=8.l(\'z-y-\'+f.4+\'\');2.q(h,"s",6(){2.k(f.5,f.4);f.m(9)});7 i=8.l(\'z-u-\'+f.4+\'\');2.q(i,"s",6(){2.k(f.5,f.4);f.m(P)});8.O=6(e){3(!e)e=F.W;3(e.v==13||e.v==16){2.k(f.5,f.4);f.m(P)}w 3(e.v==V){2.k(f.5,f.4);f.m(9)}}}3(f.5==\'t\'){7 c=8.l(\'x-M-\'+f.4+\'\');11(6(){c.1u();c.1f()},1w);7 h=8.l(\'t-y-\'+f.4+\'\');2.q(h,"s",6(){2.k(f.5,f.4);f.m(9)});7 j=8.l(\'x-M-\'+f.4+\'\');7 i=8.l(\'t-u-\'+f.4+\'\');2.q(i,"s",6(){2.k(f.5,f.4);f.m(j.1b)});8.O=6(e){3(!e)e=F.W;3(e.v==13){2.k(f.5,f.4);f.m(j.1b)}w 3(e.v==V){2.k(f.5,f.4);f.m(9)}}}3(f.5==\'L\'){2.N[f.4]=11(6(){2.k(f.5,f.4)},f.19)}},k:6(a,b){7 c=8.l(\'2-Q-\'+b);c.10=\'2-X\';3(g=8.l(a+\'-u-\'+b)){2.T(g,"s",6(){});8.O=1B}3(h=8.l(a+\'-y-\'+b)){2.T(h,"s",6(){})}2.i=0;c.K=\'\'},E:6(e,f){3(J(f)!=\'R\'){f=9}7 a=2.H();2.G(e,{5:\'E\',p:f,4:a})},L:6(e,f){3(J(f)==\'1E\'){f=1F}7 a=2.H();2.G(e,{5:\'L\',19:f,p:9,4:a})},z:6(e,f,g){3(J(g)!=\'R\'){g=9}7 a=2.H();2.G(e,{5:\'z\',m:f,p:g,4:a})},t:6(e,f,g){3(J(g)!=\'R\'){g=9}7 a=2.H();C 2.G(e,{5:\'t\',m:f,p:g,4:a})},q:6(e,f,g){3(e.12){e.12(f,g,9)}w 3(e.1e){7 r=e.1e(\'18\'+f,g);C r}w{C 9}},T:6(e,f,g){3(e.17){e.17("s",g,9)}w 3(e.1d){7 r=e.1d(\'18\'+f,g);C r}w{C 9}}};3(!2.I){2.q(F,"U",6(){2.I=P})}',62,107,'||smoke|if|newid|type|function|var|document|false|||||||||||destroy|getElementById|callback||div|params|listen||click|prompt|ok|keyCode|else|dialog|cancel|confirm|class|id|return|button|alert|window|build|newdialog|init|typeof|innerHTML|signal|input|smoketimeout|onkeyup|true|out|object|zindex|stoplistening|load|27|event|base|bodyload|finishbuild|className|setTimeout|addEventListener||classname|replace|32|removeEventListener|on|timeout|bg|value|br|detachEvent|attachEvent|select|visible|while|clearTimeout|setAttribute|createElement|smokebg|style|zIndex|1000|body|buttons|appendChild|new|Date|focus|inner|100|getTime|Cancel|Math|OK|null|text|random|undefined|5000|99|forceload|stack'.split('|'),0,{}))
\ No newline at end of file
diff --git a/static/themes/dark.css b/static/themes/dark.css
new file mode 100644
index 0000000..82af859
--- /dev/null
+++ b/static/themes/dark.css
@@ -0,0 +1,67 @@
+.smoke-base {
+ position: fixed;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ visibility: hidden;
+ opacity: 0;
+ -moz-transition: all .3s;
+ -webkit-transition: opacity .3s;
+ -o-transition: all .3s;
+ transition: all .3s;
+}
+.smoke-base .dialog {
+ top: 25%;
+ left: 0%;
+ width: 100%;
+}
+
+.smoke-base .dialog-inner {
+ padding: 15px;
+}
+
+.smoke {
+ text-transform: none;
+ color:#000000;
+ font-weight: normal;
+ background-color: rgba(f,f,f,.75);
+ border-top:2px solid #333;
+ border-bottom:2px solid #333;
+ font: 48px/120% 'Georgia',Georgia,serif;
+ text-shadow: 0 0 1px #666677;
+}
+
+.smoke #sub{
+ text-transform: none;
+ color:#000000;
+ font-weight: normal;
+ background-color: rgba(f,f,f,.75);
+ font: 28px/120% 'Georgia',Georgia,serif;
+ text-shadow: 0 0 1px #666677;
+ padding: 15px;
+}
+.dialog-buttons {
+ margin: 5px 0 5px 0;
+}
+
+.dialog-buttons button {
+ border-radius: 3px;
+ text-transform: uppercase;
+ background-color: #ebebeb;
+ color: #333;
+ font-size:11px;
+ padding:6px 9px;
+ border:1px solid #333;
+}
+
+button.cancel {
+ background-color: #999;
+ color:#222
+}
+
+.dialog-prompt input{
+ width:300px;
+ text-align:center;
+ background-color:#ccc;
+}