From 1a5df2e641635d358b3c4c452b1a24d111c7c060 Mon Sep 17 00:00:00 2001 From: turboderp Date: Mon, 6 Nov 2023 05:51:12 +0100 Subject: [PATCH] Add switchable theme --- backend/settings.py | 1 + static/chat.css | 48 ++++---- static/controls.css | 9 +- static/gfx/icon_chat.png | Bin 14902 -> 17210 bytes static/gfx/icon_model.png | Bin 18487 -> 16485 bytes static/gfx/icon_settings.png | Bin 0 -> 17066 bytes static/mainmenu.css | 4 +- static/models.css | 16 ++- static/overlay.css | 5 +- static/roles.js | 4 +- static/settings.css | 10 +- static/settings.js | 7 ++ static/slider.css | 23 ++-- static/style.css | 49 +------- static/theme.css | 224 +++++++++++++++++++++++++++++++++++ static/theme.js | 21 ++++ templates/index.html | 2 + templates/svg_icons.html | 4 +- 18 files changed, 322 insertions(+), 105 deletions(-) create mode 100644 static/gfx/icon_settings.png create mode 100644 static/theme.css create mode 100644 static/theme.js diff --git a/backend/settings.py b/backend/settings.py index c422095..e404c4d 100644 --- a/backend/settings.py +++ b/backend/settings.py @@ -6,6 +6,7 @@ def default_settings(): j = {} j["smooth_scrolling"] = True j["show_stats"] = False + j["theme"] = "Dark" return j def get_settings(): diff --git a/static/chat.css b/static/chat.css index 25cb97c..51b4c69 100644 --- a/static/chat.css +++ b/static/chat.css @@ -5,7 +5,7 @@ flex-direction: column; width: 250px; min-width: 250px; - height: calc(100vh - 140px); + height: calc(100vh - 56px); flex-grow: 0; padding: 0px; padding-top: 10px; @@ -34,24 +34,23 @@ .session-list-entry svg { text-shadow: 5px 5px 5px rgba(0, 0, 0, 1.0); padding: 8px; - filter: brightness(50%); margin-left: 5px; } .session-list-entry.active { - background-color: var(--background-color-view); - filter: brightness(120%); + background-color: var(--background-color-active); + color: var(--textcolor-text); + filter: brightness(var(--select-brightness)); } .session-list-entry.active:hover { text-decoration: underline; - background-color: var(--background-color-view); cursor: pointer; } .session-list-entry.inactive:hover { cursor: pointer; - filter: brightness(150%); + filter: brightness(var(--hover-brightness)); } .session-list-controls { @@ -67,7 +66,7 @@ } .session-view { - background-color: var(--background-color-body); + background-color: var(--background-color-chat); display: flex; flex-direction: column; height: 100vh; @@ -83,7 +82,7 @@ } .session-input-surround { - background-color: var(--background-color-body); + background-color: var(--background-color-chat); display: flex; flex-direction: column; width: calc(100vw - 685px); @@ -104,8 +103,9 @@ padding: 18px; resize: vertical; border: 0px solid var(--textbox-border); + line-height: 23px; border-radius: 10px; - background-color: var(--background-color-view); + background-color: var(--background-color-control); color: var(--textcolor-text); max-height: 200px; min-height: 55px; @@ -118,11 +118,11 @@ .session-input:focus { outline: none; - filter: brightness(120%); + filter: brightness(var(--select-brightness)); } .session-input:hover { - filter: brightness(125%); + filter: brightness(var(--hover-brightness)); } .session-input::placeholder { @@ -168,11 +168,11 @@ .block-actions span:hover { cursor: pointer; - filter: brightness(150%); + filter: brightness(var(--hover-brightness)); } .session-block.user { - background-color: var(--background-color-view); + background-color: var(--background-color-user); } .session-block p { @@ -193,6 +193,7 @@ font-family: var(--font-family); font-size: var(--font-size-small); font-weight: bold; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); color: var(--textcolor-head); padding-bottom: 5px; } @@ -290,7 +291,7 @@ } .session-settings { - background-color: var(--background-color-body); + background-color: var(--background-color-chatsettings); display: flex; flex-direction: column; width: 310px; @@ -337,7 +338,7 @@ } .sss-item-combobox { - background-color: var(--background-color-view); + background-color: var(--background-color-control); color: var(--textcolor-text); border-radius: 5px; border: 1px solid var(--textbox-border); @@ -347,7 +348,7 @@ .sss-item-textbox { font-family: var(--font-family); font-size: var(--font-size-medium); - background-color: var(--background-color-view); + background-color: var(--background-color-control); color: var(--textcolor-text); border-radius: 5px; border: 1px solid var(--textbox-border); @@ -361,7 +362,7 @@ .sss-item-textbox-r { font-family: var(--font-family); font-size: var(--font-size-medium); - background-color: var(--background-color-view); + background-color: var(--background-color-control); color: var(--textcolor-text); border-radius: 5px; border: 1px solid var(--textbox-border); @@ -380,30 +381,31 @@ .sss-item-textbox:focus { outline: none; - filter: brightness(120%); + filter: brightness(var(--select-brightness)); } .sss-item-textbox-r:focus { outline: none; - filter: brightness(120%); + filter: brightness(var(--select-brightness)); } .sss-item-big-textbox { font-family: var(--font-family); font-size: var(--font-size-medium); - background-color: var(--background-color-view); + background-color: var(--background-color-control); color: var(--textcolor-text); border-radius: 5px; border: 1px solid var(--textbox-border); padding: 10px; resize: vertical; + line-height: 1.5; min-width: 100px; flex-grow: 1; } .sss-item-big-textbox:focus { outline: none; - filter: brightness(120%); + filter: brightness(var(--select-brightness)); } .sss-item-mid { @@ -428,7 +430,7 @@ } .sss-item-right.clickable:hover { - filter: brightness(140%); + filter: brightness(var(--hover-brightness)); cursor: pointer; } @@ -437,7 +439,7 @@ } .sss-item-left.clickable:hover { - filter: brightness(140%); + filter: brightness(var(--hover-brightness)); cursor: pointer; } diff --git a/static/controls.css b/static/controls.css index ad1a6ef..5ac7c32 100644 --- a/static/controls.css +++ b/static/controls.css @@ -27,12 +27,15 @@ } .textbutton { + font-size: var(--font-size-medium); + font-weight: bold; background-color: var(--button-background); border-radius: 10px; border: 1px solid var(--button-border); padding: 10px; padding-top: 10px; padding-bottom: 6px; + padding-right: 14px; margin-right: 10px; display: flex; } @@ -52,7 +55,7 @@ } .textbutton.enabled:hover { - filter: brightness(150%); + filter: brightness(var(--hover-brightness)); cursor: pointer; } @@ -74,7 +77,7 @@ } .linkbutton.enabled:hover { - filter: brightness(140%); + filter: brightness(var(--hover-brightness)); cursor: pointer; } @@ -101,7 +104,7 @@ } .block-header:hover { - filter: brightness(140%); + filter: brightness(var(--hover-brightness)); cursor: pointer; } diff --git a/static/gfx/icon_chat.png b/static/gfx/icon_chat.png index cb76c59f55f60fb4c286a3add6b05e8adbfdf9d7..bf2a4324934c05175ff2793a7d42b1e8692dea6e 100644 GIT binary patch literal 17210 zcmce7<8viUuy<@b+1SP=+1R$tJ+W<{*tR#eZ6_Ni8{6iId7pc$-hbhpnx3wj{?gs^ zq4k?cWko4u1OfywFfe2pX>ry6c)|Y?9L#@b^sEIF7#Mi4m6({ajF=dyqqBp#m8}^V z7;U0oqJZ>}FyV-inw$g!io3GYxN`30AM!ZeP;zy+7SSpc>U4jRIM zZ**WFYnZ7yzDrUH@aCmcDzMJODeoxYdUn3-mnP9KD2s_{)A~pw`5fJ z`H&^%@G;e_c9Bp7BU&2>g^plNTLkgLN!Lx4vDivz?|{Vp6QcvmIdx#XA&{P9yq4qx z)!)Mgo0_J(SQ-MZhkIs>7Hu0k%Wdpc&^_lE9?ch~_Mx?J9n4%%rmn4J6@9J`Szo`6 z(+stJ6C5TVX)VQoPFjr?EAW~9t(1_}5%HngtEc73=?%=Zyy_paqa$1lHl5Gb$<|hG z&!<|wct>d+7cekpivJ~W&k`Z`|1M!& zWfUY}PY_|CpjhXU8vm1l;k!y`yNWs3*_qk9f{8hs{dP4oCH1g!wIr32QBc+jLcs+C zBL$NY7g6_IzwGhK(YJ6r`4l+m(C8`GduP^ZG}B2kn~b(yyC20#1A`|EVPgCZKS@b8 z(S1nt(?KxPi-sjRQ(oGfn#?qV5sDRx5F&(A7--l3YxI|)nOqv~+IqUC+}3%?`Sv^i z$>)LBbq)Q5@G<*=ggZ&V`N6fS+ft3stia^W#|#fE1^dtcAA76OdC~?p@7g3GbMkgG z*-fh#v^3Bd4`td=1P5hNO8FAAJxn+WcMg2beNGlnURXpgqQ za+J(d=Q&wuL&A@ht2b1#DJ8WB#X!uAC;zy8zH_EDHH5M-Qy1)y-jy)yIN#Lz`+u@z zUt7P}khyRFsiLId!6dIwHWUuDw-wYWowvdN(@;W|>&75xRC8#KG^eL|;N7T;coB(n zsJhtoY2KywtK|Re_-<<0;k@yTrg@LpLuX?Ibw5g6beKCG;fnzl}#(BQpziNH% zFO)GdW_0k+D(bk+U%MGsU3cegGw>V%3Gbuc z4S{>-Cb#FxHlQZlse@0Jjj4s-MJnFaA-kcCmX4p0urIr9?#{GwWyUMR0S5J4@9y_2^Oqzh@Fox|%J)X~i!){nQ+9eS< zB$=66Tf+f{Uv&Ublova!}p%1%`^ zQ0+$H9d~=EtaoNZsduF2!i6E4w$#AEqG`%ZE8`$a_+`2};O-w!de0{e@N=u5_1p0V zIUf)9R%Dr!cu^Q^m>*JSm*_v&&D!esXF`T~#lHvwS>`trL`iXrYuZ~a8oUhsmQ`_P z@sEd|`G=oOF!2a-+eF~v++r7a0QQmUuC^jwi#}>cOhqhgl|K5%r?7-CHJzKH9l^i~% z*X~}W+ZoRjN-bOO-V@RhE;}dql+w0)t)PD$eqCK=;Bc6}c>0i1N8lx;j%EF9y$i|~ z^tk1z2t4WC-Lg0?`QU@Ut|5DYq3N0@DGW?%rqq_kRrKbNa<9(tP0inw(_W zOQI4pwF_=F4rMch`g(|af4%5Autd;8szB9-QI_{;%JD9!<(Bbt~w9k+io@HEmfs88gJVk&k&a;!qdM|5bj~-WF_n0 zV;18ZsN{TxV6I=>Ulqrvff*Jc1>Hr`xyKS7%!fZaUf6AT?G6NosH#NEIzUJYPbqWs zgpRz-BdPGHra9+}<(0{rV}Ma0vL3E~JTe$fK@TC*hG_Dg2<-9(YV~*hH#RD+Ktw` z)Vj@q!}c3lG~WClv7N9jR;l}1lbCx9eobLJdi^(O8KIuatK4!OPhPVY(sI4^HmKjn zL1R`gNH^pXlWeaOl15*88-1Xlp|zc0{scRe=Dw`#YK+wTTXdx2#+w8!o{3og)o zy5V%G%gWEybO}TY0);5oh1dk3m6s~k+*cd+MiK-u?kpTiERW9{*AN_3aK*&0jq8n> zwq9q*o$qTgjosCT@#7#2iHTt&T;Fe>Vx625KhTei8A;iHyTQ0M2U%1guPZKx17S3v z+D{;-{zaSn=EvRlle)o)MKOeZ`|(ve^v-iAp{8Zq?*=e(Zq9Ac@yXq}R&PSnjCNR* zs}9*&WTPkzY;9fY1NV~Q5&R>FOt2W{S~ct~SzWsmFh1ksVX>u3@}ryw7^rQmn_>Xh zLEuNLpq2wKa_|g?HxRRcMIuYQ){*V-@hNnd>#&)Q(l`uPu5n{u-cF<$*NxJ42p#s$ zDqiLFRV}jJ?k_;n4gwFsARFRT{Fol%^1IJfI%@GBrQ3b0+Ij3GH_a!vRGY>;2irmm z*6K5*==+G%YWSL3I@{%I$Vv}+#?Qc>BcPEd9=dlLFH3MnKs1XYIfz&+~E2cJZbk8Et_ znaW#+0wz{?{kFXl+xgx!nbm>je?Is4y4ZXZIt-ru2LY@C%`C~iy=?9HvuoLQBnVCj zGvyhpNe8uuS`7}1489O&@J7A;ibKO5WbBwq*~(mkMwxO`lswJo=2dB}HIh$u4uV;E zB+fmTdi=WUfkF%mc}OxA&(T3+_dU+k_JxTztk1McSHUoF5+O~uyc;esO8ITY3YH=q zw~Optz?A1(dHDYQVj%duS0`$yNs@Mr6ffN`%HHV$AE+9Y=oRjfR|@jD>V9>|b5=cP zhlw!sSYr9M-#84$p&wa1wZH2=AGz@Qe)o?wi#}dr(?TOlC`?JnFW_%Q4ERvVnYGG@ z$1^PXVZd33z+TP91=*s^fL%H-s;QBzopn0!O4*Yhsy&GY3BM2|y`X1xO562?dpyTDc4_q-c=V8b6qE!q0A6K> zus@#adVxDHsa$LhmZy|HSBdvfM}=1@u-AhMmu2|t?O++ve=&JwY0d^Qn`gMIzN4)^ zz2RleA)d?Vv2#fj`(OaTwu> z;G&|{Ln9}QN9<8Ar|zNsFG<+^o_AF8TyJ+6mU7j6FK@rGgo9Kf666YMz#T;KcMGs` z>XSq!5{g5DBB;W8VNPs&5+){02-m%6^Rivrw^~SKf~pn+*B@>Ox4QfucuE3K3_oY8 zCg)yMSx@Bo>8XHogdBozM%$C1y7q{$PR|wUNny*yZ4Xq!&ipTDULC$pKo`B90yAm_ zQ;vEqN5>Mq`1wapwVv~|icS)Qh9I}Aep@KBgks(tkV*Dw$=9c zpLr!ZwuU*<6aWVjjOr*~iGr+*EF2UjgeVzXIuVT{BNoTfJZqu&1U5p!7OaJScVdMz zF!B8vAZ^;J4weK51e%%>*k7%Dh=o7#-)=e$WY>CK-19$tyTI9_;8`Qf$LRd=eSu^- z_R_MWa)Ioz=OQV4JViYv*${(_&%B_G3Yt@CUQg9czt1o()kdRq-L!XYo1mh>tud%W zzxe6^=?_ZnTf80)`kgdUb=a_x!L<*vvjyNk8#IKTjiQCc*DlA1hOz@2b+W4q2UP7? z@%bspu_oxl9=r;9A}=;OwV(h$I`b3GCe(V+H{gzdwzRPd8?|M)OQmuT4e0 zQP-$po9^dkZjP%(%~owQCaxy9Z`m@vVRH8M*Jf=D7v(bv#5tKI7@g&8=Ip0l-J$0< zBY#*MT!Z?m;bKe+vsh8nu()za?lyZVxY)tY?-cT84LB%SLV&CuBqpA9L1jw|5*&qs z$$Tj?;p-k`N|9PaslMOurV}QC17JMSnvcT;PhsGXS})LFek4Dcm@rM{MsI(Akgq?; z>|{6mcz>onu-+J%%%SL=q@QRb80Sh{NP2kT5Mx^PtmdyRB-=p^7K5}MQ_;Sq0aF8g z!>M~qYBVx}VRGsvZH>2rX7k2U>0cuWZFn;9fAgvN+Vu%UdTp%hLO+U&Q^u#@$vwdx zB;^RJoF0nYxcRUl+H@id56L~@Qvg#aqZ->zy=F)l+~w#1I*E+_MX;39IJpoR{;}{> z=!<3N-R%F;WcUazd4eJ73?J89WUU1H{>H<>tyjTvJc>n^K_QzhCK^^L{1L+&Q!#&K7n zSC5%&iQkBlL9y=UL5MlfWR;hM3$t$AR%QKIO#kUR`6=(~U;(i?p!`T4fTaJa&akVt zjNAPR?SR2DErbA2O@!=5a9HP0uUcjt(G$k0mW-%{N6O@liX$2Gx-iY4n`|Zxp`UzM zkDTrXU>~PJklo#R0f9V zzYNs5wX}Z00b#_F7fK)u?6$~9)3G`#BQlI-5~~d3CicMH?Rs)Pn@%9m`Q!eYyH(Vn zl}N7|1X18h(e>7Pho~2!5Ox26B%V)F4#k;Rh=YVx;nyKT9Am`4hZ;3ew!Vynx52GH zoz@EGE?-9h7M$J)*kI3PJc8e$44CY*{oH>1NX_9aZ_safn9?Rd82$IOVaf0KV|wDC zr3A6p0f&f;ne z4nbde-havnD^D5Bj=|n12p9767IUV=gJor*9JY&sR-zt5h!whb78r0d8@R< zPe0UAgI)zb$xwNG-|bR-x45O=LkLu4wSOrIaIn;owTaiIgZzF%0nk6IxS(0*8I}#6 zmh-)rM*=Mz{8o+(AAYuAh^rVEsNBDSW`oF`k2W{4BfRbtAs^xi`)|cVYXZAdA~i?i zupFS(#QA+_^fsSgxSub79DNBK@cZ6E^*%7>3k`QLn7iynb?Ddo3Z5`#Dh%<9q*QbG z{;AZw#JezGEhAO!goAO_62j0C5of)_n)Y`$Y7HGbo((qkgog*`Pz|E&)Ng{L{gIM% zd1*Q`084Vx-)eB#^UUTh)EIx(V3pPMGcB(pg`HV@Xft}oe16pB#BJH(DWgf0ZSDdRcK2Jf9@Wn~pe21NRzzrC_Zg{T~V z7q#xK$nxFxThn2@nk2<~(LtPeBhZF>ks=|N)902;dE=dwu=&c}W0if1jla#*Lv_5W zk+Mv^gVGu`7{-RdrEQEtLt z<#?KMMUdCHX8eqe+hnmP%1X=euOUx{zNkc1o0T@iGM5^GxclqZ*WH0p89zU=;l;}g zcyDS`fGg_z^?J1Ly<}E2QF`Aa_INal#f@XIV6dR9rkrFx{D5(Zxur^Av{Na}KqN(o zsU0S``%5S;`&+}0M0W`r2Kdw2>aI&%&Fk(fkWW4~>(rW7ubX@Qu@M4CRn9-F-S5u| zg(*AJ^6>o_?9(Ldl<=p;)lcd0LX1wQj?=uVt`4NUI{S^;zRo8RdoN#LccqVdcXzG- z#JNSd#R`<~=k+IHKHEPa6zM%y++PjS4)UD3SU2XOUusuISD(1 zE;MBQO0&TTn%5^rA3)B2H|}5i-V^Va^%`7nnmC>+T=hrQvFUcVYk6)# z86cjd1)i|jZ%zcfESq3$V>%L9rwkL66-NOr+kVoc49Sgdg|BbE-zv7&>P%mTRe@V! zn9~Y?c|beMsdi^Hz_0@+SN)D8E)Cpawo}qTFP+`hiMnPDG$rzQZYYFZ&njPUJ0I{g z#M!cImN~)&X;jK8b5X8(^B)Jc208FoCTjfmH6*MKYy9RlIwK;XUB20T)w|&+2sIe# z)_9SuXL3;?`1p66v4!A@zMr*G)u|D^t(O0VViG@1N;3Lu&V{ASLMX$AJH|$Ssp^Qe zqdC^!fE?RH%fmId0TRxl;U8qCP)7G!J3bkxTh4)ucykfpt@N=|+N@G%4tQi{o(oG| zKdM~d_u=#OBndv2Pwe-1)v-^^;JsxCusREH9Hikw9`yU+5Z+n(0(&MkRSB>#FbsO5 zxf3=4nf}Z{2dGzjm?ST>Um5>~wJ`_&vD*k|u&?5dl^4!SN=HQM{S6Ba_0;Fte8?9Z zDsHX5j^#kw)>9?CtX3z3mne@A9 zbz5mhcB@nFs@>1m{SB2nrVvDvhqvZjYiNL}kgKk>3ks_aSt8 zljAj-AB2m=qstN1#p`&$cVCD31p?vpDn(BDDNM>fZAlQmuh)r_{c1y*IZN5P*54>9 zYBUk}3c*V@6vOVIV20VjXjL?TS_dBSK=%IhZ;`vw6icA)?hMOz|Gbovam4^3w*RM{ z&`6)(cNh0_H9MX)2mW}9#w5`+$of;vS)&u+8FfMO%Ao|ey_NT;JpDodSZby^Ow zXpGTOr>zu^=-v9)Vf(wkTx~Ze^O61utKO&oKzx07(K#)?PFeSK6}@zD_=sWeul;p> z&`S{Fa0b`y1VUtZp`L=y2kz8z7%1AWa|nmmAy9?_McKa^9j18>37Cx5G*m&Hh$Ee= z(`?s2gj`dy1-(o@OxdBv)>DJKU#IKHU0i96FlthV+PyERw?WZbBkRubloE3JeBRH* zaa*lSiSi}SZU&UGXPb%@--57ruoFN?vuFv3;V3@bkLLP~ar1Nys;yY{U)Eu0 zx1P*|Z-p;I`tcJAc(9jtlIJI7vtT_^Nd`6S(YPIne6iZ)PeiQs>?l5&zCS1)%Th&9 zr+$@E|DNVkzv*^o5}O}zlsZL3SYD%k6H+Vv({CP;B|fdzy^bdMgzGn~KyjuTPct;bAlYnXOFuM#^I?Ug0E=yK18TFO}zEgimRDLg{tkZS%_F;Os@(Ze= zYRP`Xo9y{OjLhPg@DLQ@OcJY;(8j*X1Lnn&tFxs;%Bk z!|NV7M6V>TP>gOUbnQE~Cx-cs;v5xwi7&h=!7iuCY5c&XC(nIG(S80}Rs&%k`_)pI z+BAkDFStT*6|71H#`x)S_lAjX6K(fX>9)wP zDsy&wcX-|@$HRbfG=kIr=z?p}S^`+^c8dBKizDChUTc@}S?nn92woZ=LtU?vXADq~ zn30B;UO9xpnHJ!gg?)H%8yIK|rPuUGgRl3UQ66rov}K1=gP3OejPgNrY#*o0UZE!Ih>&x|+b$oSnf1|H~&CIPoDS*qi+J z6cdMD5c;np9w_B$`(MKL{{5jVYvn%`%5htXrFP{>xWI!Ogo4?fy-UO>PLPAzz7~v* zh*eYL6jse|hph}@qtu&!%-Mto`N}LQvp1nD;YXtzg*x4QZ9D`~8Hq=ldu$!ZN5VhV z_tj70I13rSKM4U(1vNX6NcZ(nlz%)#(sz_HOwsBkIG}(jDj-YCE!Atv6VB3`&~R)l z&-ia~SzEU1u9vwrIvq~&ogP1NweErqIBFf`P9!T_zx$Fa)EyUZ@XjMSO8rL^s%RYX z`epBz|Iz1ns@TCouvwljN+sw5o6?0wDet=d9~ME1xi;KmF$}Wgn)2XB5OXq}c71Fa z3))qqpy*8~iM441&XV72Fqu~bNS0pKmvg)ekOc;Uh2b;d9PXq}CurN|8@$-L%kQ|| zq^j2Qpf)j~d3k#FSYS5jJZT!o9wyTro)*SPM#SI~XPi?%bwK(}K#Ri+INV3fu$&ou z6}~3*NWFJ^sWL<6Mxf3$c(?H(;e^`KEp>Le;N0#0h zx!UdV-8s??_e;PS1?Gfx_$iQSrkCr^tzTtqLJiKd_DHo|DdJ$bfdLNTFI?4*U zq`?@6(7w#1xh$mSxtPva$1gk!6YW%O1rv;-q1C!Xs!lC8&9fow+eN0tVhv_j@y@a!FVX1Dz47~-SK766TRf!DY;YKy?+T0c1(3S1b8wMsIlRnW(T&|n5OA7XMi`_sw*DGy z6_fSAs_%WOCZJw9PU&@%U3<*64KjZtdXbwkx!Vu@Snqq416mdPlsrkHwdOSua#>^) z;TjB^?kN9UZm{Z3c!@|2f%+Nk3Wh18sniu@d6sfw{_L`x`eV)Ivo&h@B?Ql)#CPcu zClx64rPMc(hPbjP-oD=$O*biYGWqQq5FgE1z!QKoohk=M-2mSM`_3*4TIy$R{u|f@ zI8T7@Nk*z+vshaLjS};+dasWJ68$s^#n3+2j0t@}K%*M|De|FX;?iL?Ew&O;Sd+yb zE{8iKi`mq9Kr)cGi!P@%nyO_O;}V4{A>RIw1j<+{>%lj&hUvTigJ_i-KwR@B2z*`j z$d)uoIYUepm^#j&RiBW=ehF8PL)6HjxdY93&L4Bc7MSeulBF->=`Xnu%Hy44GH*6B z`&(eX{fJBN_Oub`Vs%3=BG7(h*Q@Vkgg5}?R!Z?sn?-E7sSmAJMPiiB-@A2yq-B+F zV$K%X;pc6Q9Bx^#N?=(GGMtLx_3W+ePGvG3PdN}CQ}fykeW^2N;jC$vj*j4o?;r?C zcqGliEmSzy7wt+xhRz~5DK$1YjsqH6jsQne^F&Ry^ib7(r1=HPJwKWG;zeaFdYqp5 zA%7Hf2Pw8=qt3+RMx8RoaBgV&v$ue%t4zEfVpJ$Ou6PGyV;6}olBDHi$iJ6BZIW_~ z%h0TDXf>O@F#~?#OD1HECOKS|sWc@_`%)ymXAkPaj0&?&GZE`&eBu=?q#rpDB{W^4rdln01z=J*q!L;-9ry1wVwo@`&Ou2Uz2jTHBvGSr$?7x5P%K zz5K5p>w=DjE3M%q6zHY@(yVj-SJ95vnhufo?9c#2N5X0u6SW-0{A|BcwVtU_gmBgn zUkW~E``(a>Xi8Zz-LKbYjePg3+ztx?58zeXj-0Veld1u7b#iU$?{?7fFLR3?${iLb z$eB}oT*JwI(&rPg;09}1v`vMINaTa!8*oh!*0t=v5yU_V%XMzgUz$G5yfh|g2RniR zh0`(Iyk`hW$QaEo|G}T0-&>nqh&)!W;doP)3+zD9kyXr zpDrmX076yenshRqPthKC|5YF9REXxFmmrmOLCDxzF3duQPx9s7ucOGt^b}^wxWZQ~ z0@|9vgYMGnez+m^Wj%yK{+}XZq6FbZ(&IErJE}SN+VO0#l4ZILCtSs8e_b1?;k_lIu_B)`{A{?#>U2CR@9kTl!pEST zVa!UgC45_S8revoC;`@*LQ7kgr><`JH!j)Dxq$b9JbK|$phDjhFOHpV&>Z*Dox6#z zf!Fej`fj1X*o0i{wiv`QlEK1k+V@HBYEB`_m)71U-4}aIE7W>#1eZH5{=gKVY}fTi z<|&g+RFjmF9`w{Cpw5zp8Z%^TY!m~2fERgt0Ig1YvNH_9ZC^<4!=2r+1PyrdigYqUBG7OIPv7Rc2Ses0Lv-34Spa|e-u}`x1nuMQ>kEaBic>^H zAA)nX+V$lJeBXRWu=rm8h#}sb{M%xauqOhfwTo?j=N3)xgrb2rEPA;79DROS@B3tZ z_P_s;a$v&Pb;>_QSDI+e60D%9-;`Nx6|?!SJaS0gK)u=Halj``ZSKj-`1 zr0eGE+NvVZC9OK!nfJvIoh#=!osBma6m5|^BD_-jOC~e`G3-Gqo!&q=bLq1!H%L4! zYdoFTb3&)8-En}tbe+d%l!lGqA$6Lgv(B0}>Zqc`Z}~ri~SB+YLDDj zg*%p68!|ccD*f{-Vz$ehsofwV2)#2kkyXDG)^?iTsVwAa;wG<|Iz&6U)Qz zyeq^#i2e7+mjEMg0H&Ri z?uU_s>0On7l=Cv0VMuk}d1@Fr^th<-9KzB5_%PJ=7`J5ik`G88s!kRZCq;YX+g%iB z4Rk;Qb=`9nKQ(t5F(_enm__-pP`5kuF^g-V;DA50(`@+|9& z(ID3ueM03;-fM5aL%-+2`KisBSkOJB2h)VmQYxLjYTo$KSg7h``uEXb36cYUI>0l+ zeYsyxlGzEvFB6ZMYH%P?nbJpKzRS~ zDc-yN#^?~2JNViyZ#3pI4*2ac7Y=uRm`*d+yrzX+D zpMKv%ZKA0q7{iiLP&Y($SZ0qSW>cH}AeoaC%Us$iebtXyXtM;XZFi9SjF%;spO?HZ zhbxg7tESw{8|*Wy-;v}Kb4F}aI}8wQAL=K$4tF-amEA`41wJDB6aQOqU%=(VG%)C= z{1z=XdH%oiu5c77oQ6kx405Pq=w=ENalc}Co%+0(s}!jf$v@UaVwzCJ5pzHs<%j=p zj`?H%ZdnJ+JPA8!LoHPW72dg1TImD*H8E7JB&@OSTP1VEBtc}D9Fp< z%nVD%p@N#Uhym$;0C4(TDb-QcNbMpt8DwkEmCPg!%iZcN8q32lY&6+@%a4Wn zg#sk$vxb6pcaq6?VvDOo@#+9r)yH76+bH+|2DuR3}= zpYg!%26D(2jrNOEbbs%&zyH4VkY(i8S0OGy((HC^NImu9J(=ZY3d`OR@EDBdo?@W- z*dMo_!JMC!ShP0IBAxb2<@)Fdv5P45S|ow7u`yh=J%O+wwrhNngWkvk{$+cYKjUn{ zVVF1^geS9E)1fXWPJ44`V^K1-En+W~PaEkHo2*yKV%|ZZYr*X~3D`;t6_17w2qy^b z9G%?V>MSyK^!kO@2PewNbZ%~e5ESIT@swV2R=3YzFrqmrq=A+?P#=rx)5PD54?ac zuaxNl?KWi1XUH~*aS4-HEj5fJu#+^Xx3I9z?JaJ80T~y=na*DD8H1d=PHZ_eHU7k1 zG`?d%jSeXAc=3{jzcela3cu-ix=39PSws`|V~LCHtOi-n!oaKSQagBZFpmA$iB2|v zwn&eYynDfbiVM=Yl|^q#%{o@K!x|7=QiTe8jK`IDM3O()XBM8VSn9Tihs#EH3YI) z&F01mIbfO&`V)u39L<*3s|%WO6Ik^ zv%F-QXswQ^Vg~`lHT5j{#jZ|oK^T^`y80}DdwQZl(Py-8`vptDqbKEjFRyVch2v~g z$EM#1fpe_p+=4=2Jg1{lfA#biG~~w;l?7`BP$ww!M%`+d*1kh1lnF)^gB&PGxc=j^gwWSh2yb)eiJzNi zp!AE(c5Z+3d`5Nm^twB~whs==+}CEd;S^2+4jE6shrBh)-ETJUt%cv|vu{K6js8p& zPirq(%iehGJha-+mBSt;ReO(C-10Ta?{n}`&fG=I1&;wF&4w6O0uA>09yi}xsCLP! z^3y7oCyGVT28)$m|Mdj;z9QU2AN;xXHPr3?2*1n~#=BPJs@TZ@Eu`|NN!6fPR@)lI z)d326&agdUzZ*FvHYUN_-Ostn%ef_VI2Bf6|L&-`P(-yM$Ar=Kb+UGkgt)U-u(WTr zEnCQcsDvY%srkqXi}*1PO_d=CReBFzVjve5v6quKlmiPLkJ|+Nvr2RLzRlI{JVouM zkmR##DWGcLHz2#Rl(YfVSJoQ?pCfW2B%FPfk)Jy^$NiLs*`RY`<=5I zLka$Mb_)OX_GE`;cD{iMXT1Q-HQjuCiA zKagrL@B$)Q5!}A|?y&xnzct&_GXq%`Fv2Q{|i3};mbE=fNaVPCE=axOu0UtEY614iR^CfT{ zz#E639`m-uJ!gXa__EpAsI5GnFL*Y`)4vUiNRY{p*>S0nYlS?4sJ_p?iJ1ZDQ*=nS z+Jj*peTjc&-LASCXdGJ>TDmLRS_-n?wK=Vpiq?yZ#uuU7iTEU|a>ve0wlRJCfl4?F ztk{jDDJ%Xz)&y`?HW11YP1oO6i5$M-e(O0-fB_rLc>52?pLYENJ5&<8 ziI7oFUvN5YB-&&pv}1<3i8!fZ>3t74+`%@&W1*VkhSM>bB!~I8*tf$vL|dIMmjZWO zBPn%peE}O~ojfHgO|XnUWTiY|lB?EYe;7SZz!^@4QVVnJU~!a*V$t{JmeM1x6`!dj zOjDh|mZbI-^`_)z5V^rdsk+LSrUJF(eSUrnWy|m!!`Q;c=h6t?09l`B@L(*?*%g4` zTjHCjN^J!Z&_8Ys_0H$;_AlKt>WEIG-vsuCr(rinZoPn| zCJ>fwZ>EB6hKSJA&IPXy9NFMSixacN2Aq?2q?0oyzlQ)GKa}1uRF$Yh&Do8!t3Pql;*T{^GSa_ z7|T|gJV)2^86kd@sW}IY*PPR=!Q&(cHmCltl{!#FUQLHEQbUq>7GWE;hlAkaxyp8l!m!2dmTEqWa2! z5fJXEv&phX5E34JsLDO~5Z;_FS5;OsedE7aq)6M`g@BQqD9V6G-SWrvYX33v*`jjF zuq%v{r8_5Rq$z`t$jsZe)9?%%>U2`u>(MLcd9rT*vh5S1(UT2h-#McIhXLJL^&mxh zrE+x!LZWJQZei(<@Fi9Z7SIx1DJ02&f+9wtbuLLe8FBtzBgSP4j+xrc_fr$5_fz^q z5x|YEF2|zVeHV1|d4-Y(lUQ~jwqp3!8hcv35$nua-0G~NolO_ec;>wP>z(2~GuhkE zAozZ>$*M*-D1FuXEIGPnzgycnc!BfJLdR*C3+|Skik5JQK9k_i5wNE;_E7fIuoose zRunQgbUrJ~)Z3bT*#P$E+sPCa($oBcdaTNTO^%dWYIWDo$hf6swHiZD;0XZL3rP=R zv~U^gJudcO!;5|_v>BPcIF#?K$si{B-N6s-ebvM2IOr#`z1GQu>l+2?)lmk#L4loe3AY2}LDj7AB5T2*naV2% zUH<5a9PabkF>|L@e&g03S=opQ$;1?TXz+5tlLo*BnE zYpne8^OnUrLFfRsSouq}l=y9p5v6f}kEk@SaygqJ7Qgo;E$kTet(S1HQf>&iZ{{(n zr0qf#Sln?>*IZvWxYnpLDGEFsN8|pJ`Lh2|;@HjeEFClyUPi!7?t*3B8fh0Tvh)xX z%4q0{^XyNROzaib&Oo?1~u^=E!+u*6|g5CGnO|lTUs;A8-ux zt4k^#blPwr-vXfYI__VI9R*Rn;OXlHMb*O{%>FVMmk^V)w9}q^xW}f8b0&&D)~^XH z5xoXDjH-)GG$GidcMnIF3hw!J=&DZ5jQ&}W*E_=CqzaqI zamK;~fSx>(nGA7cikN?)gcb*S*@2tLpqJ{zp7{vkh|lkIymlPv^F=ZB>9=|nX? zL9G?2x1ZcFj6(XFD+GxG@etVD(|BMFl1q}t^OqRY)JJYBT$j?4-g9qTBt?FZMU+(s z?pUiBOKUQs$*C>C-}|i-8m4B~Fekgk24hyGR#Zy=Yshu02}YOOy`4bUU#qFi&9_mN zSOI$^HOStG&bpS!BFcC@^{)wok#49PT*X?$wI97+4Sj=iv$FOYSFhP=3Ap;Qh`1N1 zVKZ(c+zObzgJxj%L~G>AqQyqk2xM5Pu^8!=aI;%kX)ux}bq=*td~wb%DiN(9V>7B| zh;A|6Q{39Y;Q>1BNS5<$d1D57&$T_$+lS7(#V^&se7o9}NsG@bI~-QaMrbfVq%rFL zd5(UTjzC2gY*8Jx|D~{8S1DqmatATD`h@qivIAHS4nKHXjWVZ1aqGQYe0nEtKf)wA z!l%5>bS9O0-fA)V`m2CTu-3sjEfb;l*jlg*^n4E1!@xSkGSL8iAO)!HE= zXpaKqOP0u3$f|pYsT4E~G=jR^G%X)#Gaeoa{<*E!N~y;co8ol-4PWBVk=?64@v6aQ zecH^#a zU8`-g^wHQi%3YahJJ>hpF*$nskUM_=(5aFZn--(j=@kD-ON_x})bn|4L$ZrcJ4*{~ zEBnrj80_KG5?z^AkSisLpP6Us{>>8oXz#*F-+8>69LKzmdVm3 zQM9_c1o!FMvQ`pnbQ|&9`sY=p7tLFtU+yub;ZSI>M7XmEXYhWk>s0d9@g8;xy^mg^ z;`wn9ZnfP2dA%ChiparC9ARUzxQ&4wpZtMoM!WsJTa!<8girsUM!u(U7nhezH*du4 z(Uq7+2r)T$Cglz|JPk4@Pt?9ON|`w0C6r3c|Kx=A)Z}-b#0K;HPP3Ze)Ai*Y1iLw} z6Tne#ZlW69csS__upJLUbill=LmvdZ<45rkQ%Q@sgA7bJNJN)w6$_*ZB&Zis4aHwd zvLu)0gR$UCd+b^)e(gAwcrQTUfe%a3mS+3xn2~ky`_Asj<`zR0YwRjE!;Ov75%Y;V znPNN!g|%fdVOD})FU0N0_p3*THGffRf02-U4OonEBOl_I1y(pzgF+CXgIW=G9L#-N zcGybDnBo7mLo8L5=^V#wISPziS&e%{;QVoW&vkqkpefAnu_4fJOTR$a?aEv?Xsu)* zJ0s%IVOnb4He3imM`BnOcr?5~o(wK=bAN^5D{-&pK&MTpxaj{L%Wd;N7Ez?|I@S?h zi7@d=7IQLxDO}t9r`|gcs|IMsoPh;raVpz5^l&JA`RkF46GA|O$tE9FE5|G_WrIGD zEks3}!hB)+)CXLlDb_uYr08L8YYofw%XM4OkKIA5O5Ki@G&HKL|F;7kpGkzo`zk~8 zwkPHAzR{Btc8}B?n6vVqrEMt4jWsMq{c74Wkz~Z{iiygqhTpSTMx6~+voyb$HJr38 zkSlUjKOzGTylnt9Kj?h^JeEBj)ad>-tbhf$Bge~QC#m7q%f@5JNnLbp3PrGyANPWf zoaFM|wS?P$hXWV2^HdQ21Cw2F7OX^szMY#g;5hBfk=CHmE{%QK;*hJfaK?Qv2&rzm zD%pA~RpFmk7e?Qjnk$tD{!ajf0($-N>bg@bUWUYPE(n zj=|NP+nM^}H<0~DYImjPkpI8EJ9dpC3gS5ao7p`*12#5xg8zV(t$&1qf?y+RYwLfZ zU}-6GLO|Qt2q_{lV6ad;k>Dv94Qg>Q(d2ITy|LKMafgM3SV;JO$}NtC8ScG(yEEfi z=Jjqa>I?R3d$~9|cPiEOq{m*KMEgkdnR^bIrq%|PIN0v?D zAsz4PSl2ar_e$gS5Bl-qwTiDp)t*(>?Mo-4vj6}9`$baWpFVCjjE_tR>W?62dr{?+c+vWLh zgp~x`w-j-0W+UFdqAFslRisUieQ0joRc#bj-CA3DaG!9JfCt$Bbxz9mYJc<8lcTqT z_u53Xw!%yC$!v75PCxGsRv&K?N)qs3OK|Kwa_io(@Tqnb?HtQ!#;b;WqqMY`lpdTaYs>-rx$i&D1002#1PD=eB=Ka?Z;s1?MQ`W5i0Lev8*Bt;r!TGO40Wz`( z0RUtbTS-Y(RU2myXLlQC7YcbvNeUM?XDeF=O8~%YHCw|PsBwZX{IGc|p%4yAQgBws zL!?lbhyvlp(=kyZVSWv#%wNG%>&23mh9w!!3x|n`0Y&4fv7kmGFC*+z7Q_S6sP$g#GAh6VzBA`bpvxkE;>;vOeBHaKA6b#kl5&uO25rhj6^NEot z0f@;!fwI%+Gyr+90FyCuvps++E5L;Q$Kf0Rl>M0Q3kA?mqQryBiw98PScXdhYy<(7 zQ(BSI038khu9d<7KVX>^z#*?~B?qW&2J}o~qWl6Nq5?S7!b2DVu)YA3VQOkGKyW$$ zSLRw<=!&@-^N8u6r_z53wbJlQ2kIlTx*}+6vyn4Q$`df-@|i-LW{9!%d8ZR`1@d5Q z-;Do@Nj%;^Yj57XCef=WC;4KU(2ZG7yWu~m%*^)Q52h+y!~lRDkARtX7WR5#kRUwB z@x6fd0@lU|CGXoql+`Z`u|`1N$*T5^%YVL+&W~$dSvlC>U;a8Ep>H~>?f-7wXWXOx z=I|6C^!jkO-L*>-$YmHP3;Vd;H-4*FOgfc-6l}JB7%ThQjPmhHHb*reZ`P{AguADP z?HVJM5q-l|Ocf!K!1$YX_QPU#i{%AIWQ!M2YbOHb8_!y1Xby9)K#!^8(X;yi09>~_ z_s%mQ!hmdocBVW(E=AvD^JoDeEBORh0KiC!h7CAcFFJ$>07&HpGS!Nc-1ZW(^uUw$ z!manByqfR@OVAATNnlDKTYyO2Oc*P{5)7dewPZ{t?DJw|JUwbQp@}Z&Y<-$7=)x`- z&!&huy$l_JNU-9=h&ZN{tKm>)kvh~dhy>{&kCeS~u-H*F6eHodYE%mGymFlCkw6Mf zIkIbEH)#Ga1DUpX!C?Rw_%*acmNO~vmzwZAYNKRp*=OQlnF5q)3lGkWSp2-qX}1Pq z;b^}6qv;A8jMZ2X$svxOV?qS(0S6AY!G4LlFDyuj=3{kKm8cbi#I;(LFzpd{=2LZ^ zu-JjpJxF}8o)Q$Mlk8Jo>mz5IiMbX%YV0zokJ^1DI>0>OIe@oJ;}X{_%uwGb%Liid z#_CB_3b$q;$|OV}v?lT-tVvTWA)1RK8Uk{B=KPa(l#Y?^tf|A)#N>w;KZ>0E zHJL7%gozzk4k>|bLQphsG{=Ck^HcF98@s)%H?yA`!_QfRm z?NXlIPNf%VIbBAe97X5SP4CX5XHtLmH{hG&bLpKdst$ZTDh>P^>Lj7iZ(dhtAu{%% zwJSAA!+tTzV$)>P)Sck?))}F~1(}~R7}2(a275Gnj)RVag>>+AlynM8r%D$Y>PoF8 zj3t7Kf{H^E;}ZoFi|M?X!kkN7N0~>NOPO2ECVF0aEKOxiEtc}X_Vr41FPb`>LiG4` zi*+>h4C`g8va4tp+pF43u}WK&6O}7+7OnehubM`h%A1L550>HAs+$~}{7tRR2&|ib zSNC5eb|(6_`Tu+qMnDT&L9ZawBMWeEaKjbQ64=a`%(@Wu|9zWs!fvfIg*mm%z1M^@ z#yDV`t&uq=YfWI?>K=3x9u=Vg9%D-tVap^L+!*fM|LSq)YPjPwdzYPApV@a_wpMe& zcVT-Gww^oAlgpT+%k4hhKPH+-FQUJZq6RBUA0u(TImb9;OY#TxhsB4_#|)qpLsL zs1N<}=;KG(9V05RW_kZ>mRJQiF9KIpBYv>85&tD<~3N}G(Iv_%h54LDw$ zMld}zjp`3Tr4I=U(GC@jaS7KUp5aX8^_*Fkbl;MCmP(P@%(UiI;jdx+%F84IVY3rj z{oKaWCOXJwr8~Z$ldU7~pg_vc##GJcqD#WW0jU6 zzutd4MK!aNCnJp5*T+@D>9Qg>Nt7G|^%$0z5Pn%(YFl+rM2zyMROB#EoR8O!uEl-M zy3GAJ$L_=4NoXn#RnTT7(>d&{wB!FJn%M2=SNwL`^M|NrZLn{UylcdZ zo73o4>*c)HbKR5dvTzGSW#5nD2g8TWQ{A1$bm>bXQDWi;EKJ(Xt2sC8+CRQYVJ@ex z1OWKZ0sx>O0O0B4AD#dJ-#7q(QxgC{APoQ@a85A(Edv0so61Xx1HD$y{Jk42tu>FF zFE6tMJL`;;ur4a}3qO`W=3b%8IgDTqVK0 z!LZR+fCmR-W8;dY2oeK*RhPH((yW1Ox`eq;HhX?t`ET)W@jrBZ?MzcP+F7yR@Ojwq zo$5SVc-j!Y+@jNzX08&_>O21-&ddtXw}o2%`u~Y5ya{KEIKFpN@3Z4W(y$v&1X~|( z?7jI>7$*Mq!Tn*El5F4u80KMmq8K3;QiS_U$<_1iK%AkvFKIBt+m8|EI=VUoCbgh< zlUknRznX(-3X5U-DjnC63N@`qn=i!-XJ(~|5{Rniv%!g*R^9clB%apvm&9iE{YltZ zIN^XeL1rq=kms#DOguU7StevnW{8AD20@5JjEw%tyRh-Nickwv_Qjk3$mKcO=S%&u z(B-*KSaa^ctPP1Dws0_*GB}~a-pCtoFL9@^tz_mM@#b&Gwxk`0cDD)W${PXn9$bNf zjkZs_HKN^c+l6e9S}F>vQ;#+Rc2-sqb8p+H^tXVAmCj)HuZS&Ptr%o6e+Q!2p|SFy z5pnskq7h}X%&3WW2uqI>BsBA&jFADbnrNOI1aJm#*hVmLs4(!;Y;ix~8a!A5zjZAV zovghoqMP4KjQ@VZ`PtoLhN8ZKuUZAaen3T~T5$2YzOAp7l49iE->B{PMj?L~%_Ijq zNC`s)&w*aagp3GmS zh6o6?D;3;*ujg2Ps4UFruBPvwni^YO)9CY!KCN3tXauZpm`UeFZsu+I?);4HK3qV6 z52{ff{^DPRU!*?AG@#es0YTSiK@O+-3~$DTh!ad!iwMhFRXYcQg=VDCsH{gXmx6_Y zI*la&MT1T9CFF_$1EwNFuW0t}?%j1ID^ts7XZo`Rk7W4#fpTL_fc0;ST9gGkEA_X+ zsm5&|Dal5cr(MuzN=#TL5qSex9P8b?P`f+@KcaEJ!qSzVCn1gk!9c2QCfrG+${f!~ z<&CMsJ@f?CJG&$RC3M|~A)KmMQL~%zs&D;COn{qlNsX~-0D|sB1KhR~HaNVew)J`Y zJ=t@8`qJNC1qlEkGity06#g_=Ttfs2Roy^(v5jrnk)`Y>pT_enf?<*pUWBlkn^Ng+%j z)a%M@uc5G+c6#TG3uKZ^HeC=K7Bc}@{! zdl-S>3ROcHBtzDfsJYQ$LOvXnP156VdrDSr9A#7QySr6&Y2vRdIR7l#^^hI@ZSpk$ z#t}Ymh>VOWCV+a@4(-NZuVVU%^JF6h!-zJ0pz{XArqhr{#3^(^%PP8pw!Oz>^g4f(WsgkDI3K6_QaI7Ozz-{gBW@W55VsLX1B&>k% zQ`E#&G&}g0LUU54pNg&1Xhs_`#Grsv-s-Z zp(%p4!!bn!Xx4rBdR5!fsA~@Vei3bAu$=p*Z&j4Kf$yoP zhSzLo89MhwQxGw^0L+S%Uo!8FTil)+jg4N{t&N!V3@~Xs3{iR#OSMWBFHM{-dNj3- zo{e9&gRKSl-kGohP2xZ>Ti z3ab~%L)*RYNP+Z>_1pteW?>_g44(^chiu@tcLBjvKREWU&E`ZLGk9kqKs%X_ufMYzU>zLLeVQPSTFzgB|7(Ux35_8U z!MdnNAx2ctl)oXg-4XGfjal=c?a&v5iA#r2UvqJZ%^*iaQu1SCd;6PcoyXb5(%L`c zRR&2id2f8*eyY5-hBWjSY`V;Ph{#j^XY=MOfO<*fo(3llA4CVx<-khA4K~5{W_tW` z$)gIJcKRUGF#Vdqqv-r7k4s-#ZVD+s%W=)^B`><0qW>TT=E2owuzbA4q<_F@Sa_bW z!SAr~_1XhK1q^>5?P~%~M)Phw@S&`}{D2J<`#blb^0#7$2C=wumM`XYFlB5wanHz7@|){{H8v1e z3!wGT9Iv-O-D~qSZI4m8@lnI72e{Bt?>DNaZQ0-6)Gis{R9u8A0Hkrf9@e3LJb8gd zicMJkCdVIk;P7xxTe;c8C*e)bIU)4N!~tZ`g_)IrxVhF@W6{!hGS9CFLA=7DWM@=~3P1v3LWAZ}2 z?yEqa2in6i{O~k41>LYSvA7Wjq2YX@GH+7-ovj3h6O2%LvWHJk%)iv#Qyd-&vXj#o zE`<>UPGR@Z=uB{T>;#fZt_AHxC`|vd=lZ#-59!&?YQ%^vSRyK}pXI?G-og}>sr$ee znR>&$LMxlGjc5ZEoCfSL0Bm{qq)Jk=^gO#?63Bunc9}SskZGZ!Oy&&(C>ie<#`JMI za86V)O2*z49zH!Pd%BKwnHm3fnb~))QvN&guRd4;pb1Ra7)-#P+*nkuXXR4U#jmuN z%LU>81PHwNZzv`#1*^G8sJSx{TYYviaLh?WUZ|hld62_{V9UYnS-666~+fo}=p9EFe`$qAt1f=$1RT4Bi= zPrHVi3+t%#Ug@IUI*sNLME&4pVZslHRo-_3xvN0cYRIrfDlvkU2XG{%X0!K)n7VNR*$m4@NiAJMoDt1qc-iP0EB;l%`uh{Ut4awG`n; zMT#@f7!3)_RtSrLwh#|GVS1&K!VEzu*MyA(Z~lvWBvXy{)SL87wN!5erW_&-dK%Nk zhpco*`gbvUOEKi=@mFsABR&K`C@Ww}qb=zD{XOra#qOHV%|PC@WcW&ykJV@1Q|%I1 z;3e}4S@3t%ri?Sj&CgIAEuqr_I|_=_r+Sa+TGEU*8!WI=F2ge&~haMbJXhaQVaHm3u# z6{3i}mcD%Mf@#J?Ry{ibc=3*pq1uC^xX4UiH866Jgs?7>7UX66xksaFg!f$t0D*?i zr>Or?n@_5wTVeo*)?W?b#|~dZ!PSulfKN zzgEj+0BVjYPp_pW+9!@F@J%Y|@!s~=F0Z{Ib3!Zx4lHzTv;t2l822aFW#Jv&BDM@v z;Nu`Cwbhj##P2GCX}jSR`kD}%^%EKOo7fwyl^49Ot~hoQcU2cmKh=bF4YvJ z$AVwVZ>a&nSZ-vV)xY?c{ehUC8qLq zdlPW7!mGG>BU<-f*9}W12$hMJZ!vAC6Ke1s=`i<>ea8Q}p7J<LuA(=4E5OsuY#*M?IzrRLphayg&KaGIGQUtdV!95# zVH)P*vHQzaMK|j6^@f}xK~|B82LS&#eXgfmGwbb^>^R`H@c3=oK5vWws<1A$ONp17 z6nh*uTX#P(qHQ=y(!3lf>?;$Pq#jpI{Sjo`|CjnljIs!P0(#G2r)Nsgg=pmNyJwK- z73FRBjplIIdpifQe(ksS{HP?dwt011yKIO@SK*joC@4&v3UIZF4-&-0%BmMX$anKa z4LqL;6n$#`;yyOjmn9HU)C_>{edgDvaw8Cx7cUwX4Pf>-M}-%?vx>%l2#Vx%NWxl_ zk(xg+}}Y*tKsP1nI=5dH;1GyRJ5tg221Y zp>QN1>9o)&yM?K;a(x#ugY(0J(zfiLbn2LF_i-_4pVb|PPnZPf-6W!Zi?0?2ad$u2 zbCfQ|dBE3Js_t0_?ENA_WMTBGj@@-{Hotvw4v_~mm5A)F*fd5?IA*yx$@CPUo&s*W zKQNyhn+ui<0cyw*&lu@M<7Z%OH95ODJ7oXMH52kzp|p0kG~|(zFDkh7`NcCa?lHHj zC_V1dy(Ob~OM@)^4l-&z&llLN)SBNJQSHTS!80$SfYt}2H07ZM8GG%CdU7vfUd~N} zyQ8>|bJ-r_7L--_-oD9!-dL^Yc=;vIZF1^w5vKRf3VI7pKe>i!jw{I}-)Ar=ZL>eBp=9lN7g2JvJiq$64!41<>mLLY zR8?N^X_Nd>3qS9LhuT(;Y^dqS1$CYVy;wx=lhRbX9ZD&g$Hk-m_PiPctq2(~c@q<( zb!oMX9knU=ABFT3^76TZv6d|rhlh{pnmU+ul!b`^C< zU4K0AzVENYj=SY-eNo=uE29PoRH-gMpS0~9Vtw%S;*GRN#HPTiwD%0l4N9^+ z%+CwjZ)yX*Sp-2&UHU0)rbUc+qUgB4{Nxn}L*o5?vz}m!^YonBVYm3@`IwV(iS(0D z=FT?^LIBdR<>A+yt~fd@s;YNj`FTDYI?6ePVRH=6R%Wi*Ub01Z1JK32X(;4I z_A1biv{n5y&;JN75iLc?PfW(KkMgG0Z*S>VzPL*|UZf-4%VX(Ql7^Wv)!G(GLL|Ke zrBry~bm!4q!27Z6kL9qCU)7$f>IVMXHxv; zsD#|kfsy$gkl79lo>ESnjjm0xD^XAtJA9zJyvqwo!q)~tBulKodvc6LR)nBG%8X*$ zt(~e$aoCQ6xS(yOM>XiUF-G(`^x77J+VDZ_^&|DHl*rX42p`*z-F6Qai=}4}9j!Vc zbQ>WJ_)TgVW{>}4yL8Qu-tA8GV%&&Q4&4BJfu{|%LKr-NgXE35=!4SeaO0-d4AP7X z*w8TT-Q1~Z%N$eQFSDhT>Pxn|+ev1~x{_|EEEp=bf2|KEkVHL$1dtheSaz(C0>+oZ zKXK=xFd}OGqz-gY)li-a#ME)a^=0q-TjCtNU*~;SPh^xiISOT0uQ0gPoG$&&y9Man z^|46_i?b_X*DEm}hWf$|TS$@{QP8ZKpcZNKjji!1!3N0f1_N9Z+Kwqsv-nM8>c8Hx z{ZkvtxqEXPO`BxB<(SQ+;7muwnkHWyq&&Fo{KofpNfeFH>5+mON}9l!I+9l%u0kN- z_{fjotShLNFZN~?a)vldlqFk@rWS1ZV%-ik=`Nf zlrfZ%>z97VQUN&z7an_7&%;acxW3m%dy|hj-DyKl@KIZB=*Dx%uZc0~W(a@Fvc%PT zs>wCG5hD2tajrX@%YAQ8G+1(;nb_wHrp|&BswwAHk%pvH_4R7a^h=Pu07YZmbl1Vu znocOL3ZozUMF(ED4r5*Aw@<_!1bVmX$z-cU>| zs{46DLHk6(GQ-`6BpiMxnH(nuaM8tI38dM?b?*@wq6KMQ(Gy023KdYER4N6qOGQp8 z3u5_puS;1j{;{00aC{9gB^`Bp{k8~Dg@w?9Y!vP(mI9!DBF?S5sVO z1ZS%pUQ5s}{+zw#e$f@vL7>r&94OQJT0(tozC@y*L3+g854oEoEL>LmOCm^K>xm|G zM05$Q=85QO8q1`4YCHb47{9odvwuh4sg9f-q+Kc>G;L7@ zvF~AECb|=OWJu29<4G5ziv&NLY_&QMR@bP|xV*cbJS=!Yjpfsd%ctl*gZ2Ei_H!^B zljE|bd*3=o);_7S&9c6(MYSzUMsiDe{fVI5^zMkNHU%_grK)a~8^kNao9O(Q$wqct zQu7PxT?hzK2L`1hUz?}jQ9)}qn*46^=r~{~UXr0z?__+4?(Nz?V)XI%jLMXc_~s*Z zuFnR9G%gxrG!Z z+B^9M9sj3cb!LsxE-bN53~99M8C|Q-*KZ{d??|GX9K1O^VwSf9{v_kP7A}o= z#)-e|1zVQ)uQmq7ffuWqVeP48QP^_`GhC?3(dwkq=(W8a(BO5?n+fz?;f~P_k~<#; z%|wZ{a2G|=71$i*cv&sFv=R{EG78VxJ%kq3`un`H?49L^ntfqm<4`}4^psVv_`5^9 z>31(Psymkte&w%Qu%1ZJeilAT~&ljysa^_n03E!zz(1kT$gu-yb+) zsE8Av3Y!2e%BCBbP`vv}P2wWn_||teBt+{m^T>n_rNKR_2~um+W!&DRey<$9O@t`W zM_lNYY#O47(J^?Nxm;y3<+IVTaHHFxh7{_;+qkr_cieIC}?0WRnH3c%xbpD_6A$?dZs#0HYVZy$q zu-tWmNDo;oRuxmkW+G*(cq-I8Ic*ieMR)h*ULJ4()MAJMlCmBgV+Z_^myuT)daz8@ zcfC5o8_+HY5^9;qyu6`{T&#_VzfPQn;w{JFxF(Ybr(zt9jq2dFgxs&9p&Hq4`{`qgST5f+ZR}kTz z<5MQVaw7LI4cpx|x4T;|FaRLCF{4EqGte&d$#D~E;z5v`@=8Uq(t>4O``VHlFkYZ) zVjvGqh5ctQu!0I^41nBthTUniF<@4ZU#MD36)f7 zy`>A{13R93-a=e-l%DT4|LCw79b+!MxrQ`>*_}*y)BKR@rQ)4m zs$I1%hrRZC54f$w$h%w(zDK)K7)bg=&YU>KcB0g^Nk)t#h0LOMRs8Qqj$f!Bn%HbD zoG+%2_{l@y0Rd}r+g^#xh4M!lb2rkC1eJsG3gLt1hB&>~{?vZEv^Gr>lPie9W{rA5 zl_KT6>o6u1BF3Q@I2Jj#tlfHL!j<+XcJ`@3TndXV;b}{0KW~U`5MDsEJ%IPZ*}(Bt zAK#z*m%>u4Sh%UzpBZ^nn1J`TUDjBWt{m8SLqq-MS2?x#-CU)Jh$dkz5pIdO*TNuk7>aO6`mNLlvb>Kl>!s2I3 z2}lFbW>i&w#tjy2f`Qy31?PV==gx~m(Ak#rbE8J27%zTkxP%k?Dwur9i5h(AqkuQ6 z_S;TV%c6jC7;ZZ`h=PM5w$MI@GK%aLp{F7Aq$iefk;! zL&(az56<$gsmrwaSL)%f=ZDe=a9+)Q4U#`}!q+VOWX-||7Gfn?aPt-+2!kv#V`m;N z(-a=kr;L37Rc)YOUOxp2UE+cMi96cw1(+O+6h{tN^2lRm26;qR1%(5fM5 zQj+1vk7`&Lfsl}3AYFdNrYLg99M}z>2B2Q$H7N;YAAme8DjaGH)q+EmYk;5|MRWd^ zW8|?hk%YjEV@vc?xO;Scwz5(8O6$gvM#mce$o*86L*i3pSNn3x=z#menruA#Af76$ zI22<=hLYY0ZcUr$%n5MR1ZiiP^>;KR|}(R1?Ge#_x^u zHAj27emL0{pD}))nH!iq%jC}Vldm@NK}I^m^hXlNX&(HxHMaX2QM^0>mEty877WHpn$65yiK340v!~&O>f6O+L%Ga|5ulwFi2v}o)mER4UI0o-VY7~5 zQm9^PCZo@@FE%A7GEiLg@6$?$8dH6-m-YRoZOEh0cAoQxLD&e6{z}ER>AY~)7yqOA ztHni?mV(RZQKzV#{{cLFl+U$w@`9eZiIT!hJ2hvfq~{tjHGk{MgS>=X_5*q>`Ao>$mh&T_G68{Ki9jlel1fj9coYpe~b<*YQu4 zk3f>qYOkw1&gnSX7|R^mqIKw@;{9vu?oQJnj?Xh;VvH8AP?cHK(Nj>&m;>z;ly2jr zVD%r0xvb77$XE3~J9R60KP!LGY+K>RnJBwVTujzZ`V?)H2tssKjM^N#F6MMhDsT(SU5 zt!TRC;)o*@8JLn1ZvQ{Gfj_Gjip@RWND?iq0|!{2n6s~mT8~1Xs@~XsvdZS)*+PJ` z92FB*pz=7q)0(vswC)n#G2$AGvT~rR(WcSB?diL|l&i&!*#><)f6J}io+DXmW^rJ$nsh-3m@*4F|J76c-+@+#5 zR#|%c;C%+$Z(~KStRw3t%!s+=Y2sYVig_B2tZgs_M?pv@M2j=8#|m3vJ9V)K9;QE^ z&WuuCBeJ+{wMpM+U$oJqjlJ!*?mm=Q<3k=T`38#z=Dib=Uj`O%b#V_uJ*X5&lT;^i zEh0jD{eP`~BXb9qR#9z!VVJ4aVy>msfnba)%*&I>aVpf4VAK@$#+c-%%&75qrfs}! zJnb)s-ThPY319(X|Oi@NS3p&L2yUD0Rbt0AxY6Q$yTIz=M!K@t67=`qDz z_J(C`O@e~3Y=g}6FEr3A!3cEa-URvNt8M9*n?D;oPc-?< zjq(RI41mMm-qqS6x>+877l0K`gj070Y6}t&H$uO81vSU!;F`M$&0bVwN<7&d`vocc z+JX%CFAE7wKPBl_xNBr!751MpMkdhv+rE9S#Me@f1HdP`f_F*))FkfI?{m za6C%Z_pD8T*AG+hRFG11-td=ByWmaQ!1TQE&+=5)y>=`&`SV%`pH_P4PJ1k2Yh~gf zhMJ8P`23vZH34t|Ce0nnlClyuhLlv=-(0gncw5mmR^j1&U^GBosI6Oz?20Vmll9Bf zJ~x>|06#*19OH>x7q%sVr&KJt-b;Dj_HP9^#(5Qx=7>3yJlJkPL`nUMi%Pn&Itnzv zl@!>zJ8pcYFL-UHx9ZLnRvb*I1*kxZKulX^)npZC#l#9B1`|_psn*pl+L11YvjXD_ z&9QZeC`%1+ES*jEh%dD1{(ct*gthWx0I+3jABa&zVR1@}=$m1(NG49D<*F8}@L*Wfdnx}R;OcAC&8;#@je~419bfT8u=Z|Co;q>SI_11Za zO@L};JZV^cu)1l5$!_ZXa~_DnxC$M2zCq?;KWyy%{pbIw)>oLXtw`M;CxOSz*r2zG z*ZgS&WyOptRHw2=+81$myUGP*UN)w%ZZ$2Ub(1f>W#)aSG32jzwC(q&&<+Y!Qt)>4 z6xkGGL?b5XhE{Qn0HkolCI*T^EGZ2T{E@NkKVtM^kuWQ{|AFh>{DH>bwiM<^lI-{u zE76bQ9O;`LQiDC#{LGu)J`Ih6EEG?c8*ER zCzCH#*0>aAx8L^WUmu4R5cbSPdkU;)bPmLt<~vNgM&FcP?_Dd&o}$jx=_*x9!!YW+v?>qybqq#j(V z^&VUbC%lT5-uu9;*JZ!&*9YHQyqoD@nnM`5F0+**CnYf8G>C?=ap5xY>PCLcz(ySX zW{SmwV(eEBtkh{M^4`=<5Mml~L+O!~`PJtHBNjDb@r0+PI8^p6D^N4#_h)3U1X&Ey z=BKRb9S0%$e*J`>?49yT-I#~zD|?$1A)N9HfJhD~2O$#E>{d}5B{s&DlC88jA-bU^ zfM43|pL=V&?vAyWwu#mtQ8Q%McovAVDRPy%2<@JLCZS>^Ta!o!yWrKH#p8XQ`pC^v zv|}`-YG3UlpV)Tj)&fELhD&P;qo8Ph$pPk*2lB{NkqgG3$yD!(&0LR`QUH@6Nv)Q@zk;sFiZ z99WO8W7E)dp!E0$-^v(As7IHeIQdSJ&?2!qufHpQIl(0*wMOK z=)dvtF;c{;aPvgt*+wm|_&OA7jB6EysQ4ivZQ{<2d;W=yo@|*j>`p{Nsup_JytxWM zyr)3{haBe{y^u61#=Ajf(z-a!YQigF{baF{TYHg7@DbCj%X9YLw&RK>m$FTa9 z=qWoNLNy$pZibBb_BzAgH1}_{ScZCkOP0(E>tB^BqQW+Nq@g7D6H-(1EliY}7RH7y zbxFy8)TcWHa~ftuoFjmvX0!pfc+g9@ zFcXFz0|)ljB8FW8TCU3H*8X`t4#C^yK(+Q^b|gOawn^(_ohB%;l5rk$ zAM4X>{*A(ZDC3tn%i&cIU%Z{08voI8$&ZVpTum!YKqZveHQ6PklkRLb@)JG7A%+1I zm4uHL>(TFw_{8BAvCz^u4+0Ze{+NS5ga#nTu%gxb(#Gp$q~;H}ss?~VF`NnW{{>nu djeU>+$QfEid^4F`{yoeG$V)3rRZEzF{|6pzMe+au diff --git a/static/gfx/icon_model.png b/static/gfx/icon_model.png index 6c9d95309998749fba20d67fee9e7da08f8ab890..6b908098643a31be358fa41d3267f208fbbf22fe 100644 GIT binary patch literal 16485 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 literal 18487 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 literal 0 HcmV?d00001 diff --git a/static/mainmenu.css b/static/mainmenu.css index 953ab92..603e3fa 100644 --- a/static/mainmenu.css +++ b/static/mainmenu.css @@ -47,7 +47,7 @@ font-size: var(--font-size-small); font-weight: bold; color: var(--textcolor-menu); - text-shadow: 0px 0px 0px #000000, 0px 5px 10px #0d0d0d; + text-shadow: 0px 0px 0px #000000, 0px 5px 10px #0d0d0d80; } .mainmenu-button img { @@ -62,6 +62,6 @@ } .mainmenu-button.inactive:hover { - filter: brightness(150%); + filter: brightness(var(--hover-brightness)); cursor: pointer; } diff --git a/static/models.css b/static/models.css index 8906d8c..269350c 100644 --- a/static/models.css +++ b/static/models.css @@ -38,18 +38,18 @@ .model-list-entry svg { text-shadow: 5px 5px 5px rgba(0, 0, 0, 1.0); padding: 8px; - filter: brightness(50%); margin-left: 5px; } .model-list-entry.active { - background-color: var(--background-color-view); - filter: brightness(120%); + color: var(--textcolor-text); + background-color: var(--background-color-active); + filter: brightness(var(--select-brightness)); } .model-list-entry.inactive:hover { cursor: pointer; - filter: brightness(150%); + filter: brightness(var(--hover-brightness)); } .model-view { @@ -76,7 +76,7 @@ } .model-view-text.divider { - border-bottom: 1px solid var(--textcolor-dim); + border-bottom: 1px solid var(--textcolor-dim2); width: 100%; color: var(--textcolor-text); padding-top: 5px; @@ -133,6 +133,10 @@ padding: 5px; } +.model-view-item-textbox::placeholder { + color: var(--textcolor-dim); +} + .model-view-item-textbox.wide { flex-grow: 1; } @@ -150,7 +154,7 @@ .model-view-item-textbox:focus { outline: none; - filter: brightness(120%); + filter: brightness(var(--select-brightness)); } .model-view-item-combobox { diff --git a/static/overlay.css b/static/overlay.css index 31d45f9..d0029e2 100644 --- a/static/overlay.css +++ b/static/overlay.css @@ -15,9 +15,10 @@ .overlay { background-color: var(--background-color-view); + color: var(--textcolor-head); padding: 20px; padding-bottom: 40px; - box-shadow: 0 14px 18px rgba(0, 0, 0, 0.3); + box-shadow: 0 10px 18px rgba(0, 0, 0, 0.2); border-radius: 8px; display: flex; flex-direction: column; @@ -32,7 +33,7 @@ width: 320px; background-color: var(--progress-color-back); border: 1px solid var(--progress-color); - padding: 2px; + padding: 0px; border-radius: 0px; } diff --git a/static/roles.js b/static/roles.js index 08c16c6..b9c67bd 100644 --- a/static/roles.js +++ b/static/roles.js @@ -11,7 +11,7 @@ export const roleAvatars = [ ]; export const roleColors = [ - "rgba(167, 231, 0, 255)", + "rgba(167, 211, 10, 255)", "rgba(136, 70, 104, 255)", "rgba(58, 90, 208, 255)", "rgba(215, 86, 98, 255)", @@ -30,7 +30,7 @@ export const instructAvatars = [ ]; export const instructColors = [ - "rgba(167, 231, 0, 255)", + "rgba(107, 201, 0, 255)", "rgba(136, 70, 104, 255)", ]; diff --git a/static/settings.css b/static/settings.css index c006199..9857089 100644 --- a/static/settings.css +++ b/static/settings.css @@ -4,8 +4,8 @@ bottom: 10px; left: 90px; width: 228px; - height: 65px; - background: var(--background-color-view); + height: 95px; + background: var(--background-color-popup); border-radius: 10px; box-shadow: 5px 5px 15px rgba(0,0,0,0.2); color: white; @@ -18,14 +18,14 @@ content: ''; position: absolute; right: 100%; - top: 30%; + top: 40%; border-width: 15px 22px 15px 0; border-style: solid; border-color: transparent var(--background-color-view); transparent transparent; } .checkbox-sc { - color: var(--textcolor-menu); + color: var(--textcolor-head); align-items: center; padding: 0px; margin: 0px; @@ -35,6 +35,6 @@ } .checkbox-sc:hover { - filter: brightness(140%); + filter: brightness(var(--hover-brightness)); cursor: pointer; } diff --git a/static/settings.js b/static/settings.js index ba1ee5d..0564300 100644 --- a/static/settings.js +++ b/static/settings.js @@ -1,6 +1,7 @@ import * as util from "./util.js"; import * as controls from "./controls.js"; import * as globals from "./globals.js"; +import * as theme from "./theme.js"; export class SettingsPopup { constructor() { @@ -26,6 +27,7 @@ export class SettingsPopup { .then(response => { this.settings = response.settings; this.populate(); + this.applyGlobals(); }); } @@ -34,13 +36,16 @@ export class SettingsPopup { this.s_smoothScrolling = new controls.CheckboxLabel("checkbox-sc noselect", "Smooth scrolling", this.settings, "smooth_scrolling", () => { this.saveSettings(); }); this.s_showStats = new controls.CheckboxLabel("checkbox-sc noselect", "Display stats", this.settings, "show_stats", () => { this.saveSettings(); }); + this.s_theme = new controls.LabelCombobox("sss-item-left", "Theme", "sss-item-right sss-item-combobox", theme.getThemesList(), this.settings, "theme", () => { this.saveSettings(); }); this.element.appendChild(this.s_smoothScrolling.element); this.element.appendChild(this.s_showStats.element); + this.element.appendChild(this.s_theme.element); this.refresh(); } refresh() { + this.s_theme.refresh(); this.s_smoothScrolling.refresh(); this.s_showStats.refresh(); } @@ -62,6 +67,8 @@ export class SettingsPopup { let r = document.querySelector(':root'); r.style.setProperty("--show-stats", this.settings.show_stats ? "flex" : "none"); + + theme.setTheme(this.settings.theme); } } \ No newline at end of file diff --git a/static/slider.css b/static/slider.css index 49eac2e..854fd01 100644 --- a/static/slider.css +++ b/static/slider.css @@ -7,20 +7,19 @@ input[type=range] { } input[type=range]:focus { outline: none; - background: var(--background-color-body); } input[type=range]::-webkit-slider-runnable-track { width: 100%; - height: 8.4px; + height: 6.4px; cursor: pointer; - box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; + box-shadow: 1px 1px 1px #00000020, 0px 0px 1px #0d0d0d40; background: var(--slider-track-color); - border-radius: 1.3px; - border: 0.2px solid #010101; + border-radius: 1.0px; + border: 0.2px solid #01010120; } input[type=range]::-webkit-slider-thumb { - box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; - border: 1px solid #000000; + box-shadow: 1px 1px 1px #00000080, 0px 0px 1px #0d0d0d40; + border: 1px solid #00000080; height: 16px; width: 16px; border-radius: 3px; @@ -34,16 +33,16 @@ input[type=range]:hover::-webkit-slider-runnable-track { } input[type=range]::-moz-range-track { width: 100%; - height: 6.4px; + height: 4.4px; cursor: pointer; - box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; + box-shadow: 1px 1px 1px #00000080, 0px 0px 1px #0d0d0d40; background: var(--slider-track-color); border-radius: 1.3px; - border: 0.2px solid #010101; + border: 0.2px solid var(--slider-track-color);; } input[type=range]::-moz-range-thumb { - box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; - border: 1px solid #000000; + box-shadow: 1px 1px 1px #00000080, 0px 0px 1px #0d0d0d40; + border: 1px solid #00000080; height: 13px; width: 13px; border-radius: 3px; diff --git a/static/style.css b/static/style.css index a667de2..4e09897 100644 --- a/static/style.css +++ b/static/style.css @@ -1,51 +1,3 @@ -:root { - --font-family: Helvetica, sans-serif; - --font-size-large: 20px; - --font-size-chat: 16px; - --font-size-medium: 14px; - --font-size-small: 12px; - - --textcolor-menu: rgba(217, 217, 217, 255); - --textcolor-text: rgba(217, 217, 217, 255); - --textcolor-error: rgba(255, 167, 167, 255); - --textcolor-danger: rgba(255, 127, 127, 255); - --textcolor-dim: rgba(97, 97, 97, 255); - --textcolor-dim2: rgba(120, 120, 120, 255); - --textcolor-head: rgba(150, 150, 150, 255); - --textcolor-link: rgba(110, 110, 200, 255); - --textcolor-stats: rgba(110, 160, 150, 255); - - --iconcolor: rgba(217, 217, 217, 255); - --iconcolor-active: rgba(167, 231, 0, 255); - - --background-color-menu: rgba(32, 32, 32, 255); - --background-color-body: rgba(42, 42, 42, 255); - --background-color-view: rgba(52, 52, 52, 255); - - --background-color-code: rgba(32, 32, 32, 255); - --border-color-code: rgba(52, 52, 52, 255); - --textcolor-code: rgba(200, 217, 208, 255); - - --button-textcolor: rgba(217, 217, 217, 255); - --button-background: rgba(64, 64, 128, 255); - --button-border: rgba(96, 96, 192, 255); - --button-disabled-textcolor: rgba(117, 117, 117, 255); - --button-disabled-background: rgba(64, 64, 64, 255); - --button-disabled-border: rgba(96, 96, 96, 255); - - --textbox-background: rgba(42, 42, 42, 255); - --textbox-border: rgba(70, 70, 70, 255); - - --spinner-color: rgba(230, 120, 20, 255); - --progress-color: rgba(137, 201, 80, 255); - --progress-color-back: rgba(40, 65, 20, 255); - - --slider-thumb-color: rgb(135, 150, 155); - --slider-track-color: rgb(77, 77, 77); - --slider-hover-color: rgb(88, 88, 88); - - --show-stats: none; -} body { font-family: var(--font-family); @@ -93,6 +45,7 @@ body { svg { fill: var(--iconcolor); + color: var(--iconcolor); text-shadow: 5px 5px 5px rgba(0, 0, 0, 1.0); } diff --git a/static/theme.css b/static/theme.css new file mode 100644 index 0000000..5c0764e --- /dev/null +++ b/static/theme.css @@ -0,0 +1,224 @@ +/* Default theme (dark) */ + +:root { + --font-family: Helvetica, sans-serif; + --font-size-large: 20px; + --font-size-chat: 16px; + --font-size-medium: 14px; + --font-size-small: 12px; + + --textcolor-menu: rgba(217, 217, 217, 255); + --textcolor-text: rgba(217, 217, 217, 255); + --textcolor-error: rgba(255, 167, 167, 255); + --textcolor-danger: rgba(255, 127, 127, 255); + --textcolor-dim: rgba(97, 97, 97, 255); + --textcolor-dim2: rgba(120, 120, 120, 255); + --textcolor-head: rgba(150, 150, 150, 255); + --textcolor-link: rgba(110, 110, 200, 255); + --textcolor-stats: rgba(110, 160, 150, 255); + + --iconcolor: rgba(117, 117, 117, 255); + --iconcolor-active: rgba(167, 231, 0, 255); + + --background-color-menu: rgba(32, 32, 32, 255); + --background-color-body: rgba(42, 42, 42, 255); + --background-color-view: rgba(52, 52, 52, 255); + --background-color-user: rgba(52, 52, 52, 255); + --background-color-chat: rgba(42, 42, 42, 255); + --background-color-chatsettings: rgba(42, 42, 42, 255); + --background-color-active: rgba(52, 52, 52, 255); + --background-color-control: rgba(52, 52, 52, 255); + --background-color-popup: rgba(52, 52, 52, 255); + + --background-color-code: rgba(32, 32, 32, 255); + --border-color-code: rgba(52, 52, 52, 255); + --textcolor-code: rgba(200, 217, 208, 255); + + --button-textcolor: rgba(217, 217, 217, 255); + --button-background: rgba(64, 64, 128, 255); + --button-border: rgba(96, 96, 192, 255); + --button-disabled-textcolor: rgba(117, 117, 117, 255); + --button-disabled-background: rgba(64, 64, 64, 255); + --button-disabled-border: rgba(96, 96, 96, 255); + + --textbox-background: rgba(42, 42, 42, 255); + --textbox-border: rgba(70, 70, 70, 255); + + --spinner-color: rgba(230, 120, 20, 255); + --progress-color: rgba(137, 201, 80, 255); + --progress-color-back: rgba(40, 65, 20, 255); + + --slider-thumb-color: rgb(135, 150, 155); + --slider-track-color: rgb(77, 77, 77); + --slider-hover-color: rgb(88, 88, 88); + + --select-brightness: 125%; + --hover-brightness: 150%; + + --show-stats: none; +} + +/* Dark */ + +.theme-dark { +} + +/* Darker */ + +.theme-darker { + --background-color-menu: rgba(12, 12, 12, 255); + --background-color-body: rgba(16, 16, 16, 255); + --background-color-view: rgba(32, 32, 32, 255); + --background-color-user: rgba(32, 32, 32, 255); + --background-color-chat: rgba(16, 16, 16, 255); + --background-color-chatsettings: rgba(16, 16, 16, 255); + --background-color-active: rgba(32, 32, 32, 255); + --background-color-control: rgba(32, 32, 32, 255); + --background-color-popup: rgba(32, 32, 32, 255); + + --textbox-background: rgba(16, 16, 16, 255); + --textbox-border: rgba(40, 40, 40, 255); + + --iconcolor: rgba(77, 77, 77, 255); + --iconcolor-active: rgba(167, 231, 0, 255); +} + +/* Dark blue */ + +.theme-darkblue { + --background-color-menu: rgba(23, 26, 28, 255); + --background-color-body: rgba(33, 36, 40, 255); + --background-color-view: rgba(33, 36, 40, 255); + --background-color-user: rgba(43, 45, 49, 255); + --background-color-chat: rgba(33, 36, 40, 255); + --background-color-chatsettings: rgba(33, 36, 40, 255); + --background-color-active: rgba(43, 45, 49, 255); + --background-color-control: rgba(43, 45, 49, 255); + --background-color-popup: rgba(43, 45, 49, 255); + + --textcolor-dim2: rgba(70, 75, 90, 255); + + --textbox-background: rgba(43, 45, 49, 255); + --textbox-border: rgba(48, 52, 57, 255); + + --iconcolor: rgba(77, 77, 77, 255); + --iconcolor-active: rgba(127, 171, 60, 255); + + --font-family: Arial, sans-serif; + + --button-textcolor: rgba(217, 217, 217, 255); + --button-background: rgba(84, 90, 118, 255); + --button-border: rgba(90, 94, 126, 255); + --button-disabled-textcolor: rgba(96, 100, 108, 255); + --button-disabled-background: rgba(64, 65, 72, 255); + --button-disabled-border: rgba(70, 73, 86, 255); + + --background-color-code: rgba(23, 26, 28, 255); + --border-color-code: rgba(44, 47, 52, 255); + --textcolor-code: rgba(200, 217, 208, 255); +} + +/* Light */ + +.theme-light { + --background-color-menu: rgba(255, 255, 255, 255); + --background-color-body: rgba(227, 227, 227, 255); + --background-color-view: rgba(255, 255, 255, 255); + --background-color-user: rgba(227, 227, 227, 255); + --background-color-chat: rgba(255, 255, 255, 255); + --background-color-chatsettings: rgba(255, 255, 255, 255); + --background-color-active: rgba(142, 175, 222, 255); + --background-color-control: rgba(205, 205, 205, 255); + --background-color-popup: rgba(255, 255, 255, 255); + + --textbox-background: rgba(205, 205, 205, 255); + --textbox-border: rgba(222, 222, 200, 255); + + --textcolor-menu: rgba(117, 117, 117, 255); + --textcolor-text: rgba(17, 17, 17, 255); + --textcolor-error: rgba(225, 117, 117, 255); + --textcolor-danger: rgba(255, 67, 67, 255); + --textcolor-dim: rgba(117, 117, 117, 255); + --textcolor-dim2: rgba(180, 180, 180, 255); + --textcolor-head: rgba(90, 90, 90, 255); + --textcolor-link: rgba(110, 110, 200, 255); + --textcolor-stats: rgba(110, 160, 150, 255); + + --iconcolor: rgba(117, 117, 117, 255); + --iconcolor-active: rgba(187, 255, 40, 255); + + --background-color-code: rgba(64, 64, 64, 255); + --border-color-code: rgba(255, 255, 255, 255); + --textcolor-code: rgba(200, 217, 208, 255); + + --slider-thumb-color: rgb(195, 160, 125); + --slider-track-color: rgb(177, 177, 177); + --slider-hover-color: rgb(88, 88, 88); + + --select-brightness: 100%; + --hover-brightness: 90%; + + --iconcolor: rgba(117, 117, 117, 255); + --iconcolor-active: rgba(117, 117, 117, 255); + + --button-textcolor: rgba(47, 57, 80, 255); + --button-background: rgba(142, 175, 222, 255); + --button-border: rgba(142, 175, 222, 255); + --button-disabled-textcolor: rgba(117, 117, 117, 255); + --button-disabled-background: rgba(180, 180, 180, 255); + --button-disabled-border: rgba(150, 150, 150, 255); + + --progress-color: rgba(142, 175, 222, 255); + --progress-color-back: rgba(47, 57, 80, 255); +} + +/* Unholy */ + +.theme-bold { + + --background-color-menu: rgba(38, 38, 38, 255); + --background-color-body: rgba(12, 151, 236, 255); + --background-color-view: rgba(255, 255, 255, 255); + --background-color-user: rgba(227, 227, 227, 255); + --background-color-chat: rgba(255, 255, 255, 255); + --background-color-chatsettings: rgba(255, 255, 255, 255); + --background-color-active: rgba(124, 205, 223, 255); + --background-color-control: rgba(197, 218, 236, 255); + --background-color-popup: rgba(255, 255, 255, 255); + + --textbox-background: rgba(197, 218, 236, 255); + --textbox-border: rgba(197, 218, 236, 255); + + --textcolor-menu: rgba(255, 255, 255, 255); + --textcolor-text: rgba(17, 17, 17, 255); + --textcolor-error: rgba(225, 117, 117, 255); + --textcolor-danger: rgba(255, 67, 67, 255); + --textcolor-dim: rgba(8, 121, 156, 255); + --textcolor-dim2: rgba(117, 128, 173, 255); + --textcolor-head: rgba(70, 80, 90, 255); + --textcolor-link: rgba(110, 110, 200, 255); + --textcolor-stats: rgba(110, 160, 150, 255); + + --font-family: Arial, sans-serif; + + --iconcolor: rgba(47, 77, 117, 255); + --iconcolor-active: rgba(252, 152, 72, 255); + + --select-brightness: 100%; + --hover-brightness: 100%; + + --button-textcolor: rgba(47, 37, 20, 255); + --button-background: rgba(242, 162, 92, 255); + --button-border: rgba(242, 162, 92, 255); + --button-disabled-textcolor: rgba(137, 137, 137, 255); + --button-disabled-background: rgba(196, 196, 196, 255); + --button-disabled-border: rgba(189, 189, 189, 255); + + --progress-color: rgba(252, 152, 72, 255); + --progress-color-back: rgba(122, 79, 42, 255); + + --slider-thumb-color: rgba(102, 122, 132, 255); + --slider-track-color: rgb(197, 197, 197); + --slider-hover-color: rgb(88, 88, 88); + +} \ No newline at end of file diff --git a/static/theme.js b/static/theme.js new file mode 100644 index 0000000..50c0cb7 --- /dev/null +++ b/static/theme.js @@ -0,0 +1,21 @@ + +const themes = { + Dark: "theme-dark", + Darker: "theme-darker", + Darkblue: "theme-darkblue", + Light: "theme-light", + Bold: "theme-bold", +} + +export function getThemesList() { + return Object.keys(themes); +} + +export function setTheme(theme) { + const root = document.documentElement; + + for (let t of getThemesList()) { + if (t == theme) root.classList.add(themes[t]); + else root.classList.remove(themes[t]); + } +} diff --git a/templates/index.html b/templates/index.html index f2b9581..44ede4c 100644 --- a/templates/index.html +++ b/templates/index.html @@ -2,6 +2,7 @@ ExUI + @@ -24,6 +25,7 @@ + diff --git a/templates/svg_icons.html b/templates/svg_icons.html index ac9c2cf..9fbccaa 100644 --- a/templates/svg_icons.html +++ b/templates/svg_icons.html @@ -42,8 +42,8 @@ - - + +