From 92219b5ba61488726fd14c088b31573d0e2f3768 Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Thu, 19 Jan 2012 12:02:37 -0300 Subject: fixed feed issues with cache. --- askbot/feed.py | 26 +++++++++++----------- .../skins/default/templates/main_page/tab_bar.html | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/askbot/feed.py b/askbot/feed.py index 7f41fd4f..dff8973c 100644 --- a/askbot/feed.py +++ b/askbot/feed.py @@ -24,7 +24,7 @@ class RssIndividualQuestionFeed(Feed): """rss feed class for particular questions """ title = askbot_settings.APP_TITLE + _(' - ')+ _('Individual question feed') - link = askbot_settings.APP_URL + #link = askbot_settings.APP_URL description = askbot_settings.APP_DESCRIPTION copyright = askbot_settings.APP_COPYRIGHT @@ -32,11 +32,11 @@ class RssIndividualQuestionFeed(Feed): if len(bits) != 1: raise ObjectDoesNotExist return Question.objects.get(id__exact = bits[0]) - + def item_link(self, item): """get full url to the item """ - return self.link + item.get_absolute_url() + return askbot_settings.APP_URL + item.get_absolute_url() def item_pubdate(self, item): """get date of creation for the item @@ -58,7 +58,7 @@ class RssIndividualQuestionFeed(Feed): content_type = ContentType.objects.get_for_model(Question) ) ) - + answer_content_type = ContentType.objects.get_for_model(Answer) answers = Answer.objects.filter(question = item.id) for answer in answers: @@ -71,7 +71,7 @@ class RssIndividualQuestionFeed(Feed): ) return itertools.chain(*chain_elements) - + def item_title(self, item): """returns the title for the item """ @@ -83,7 +83,7 @@ class RssIndividualQuestionFeed(Feed): elif item.post_type == "comment": title = "Comment by %s for %s" % (item.user, self.title) return title - + def item_description(self, item): """returns the description for the item """ @@ -98,7 +98,7 @@ class RssLastestQuestionsFeed(Feed): """rss feed class for the latest questions """ title = askbot_settings.APP_TITLE + _(' - ')+ _('latest questions') - link = askbot_settings.APP_URL + #link = askbot_settings.APP_URL description = askbot_settings.APP_DESCRIPTION #ttl = 10 copyright = askbot_settings.APP_COPYRIGHT @@ -106,7 +106,7 @@ class RssLastestQuestionsFeed(Feed): def item_link(self, item): """get full url to the item """ - return self.link + item.get_absolute_url() + return askbot_settings.APP_URL + item.get_absolute_url() def item_author_name(self, item): """get name of author @@ -127,8 +127,8 @@ class RssLastestQuestionsFeed(Feed): """returns url without the slug because the slug can change """ - return self.link + item.get_absolute_url(no_slug = True) - + return askbot_settings.APP_URL + item.get_absolute_url(no_slug = True) + def item_description(self, item): """returns the desciption for the item """ @@ -152,12 +152,12 @@ class RssLastestQuestionsFeed(Feed): if tags: #if there are tags in GET, filter the #questions additionally - for tag in tags: + for tag in tags: qs = qs.filter(tags__name = tag) - + return qs.order_by('-last_activity_at')[:30] - + def main(): """main function for use as a script diff --git a/askbot/skins/default/templates/main_page/tab_bar.html b/askbot/skins/default/templates/main_page/tab_bar.html index 5ed6e5b5..420f7053 100644 --- a/askbot/skins/default/templates/main_page/tab_bar.html +++ b/askbot/skins/default/templates/main_page/tab_bar.html @@ -2,9 +2,9 @@ {% cache 0 "scope_sort_tabs" search_tags request.user scope sort query context.page context.page_size language_code %} {% trans %}RSS{% endtrans %} -- cgit v1.2.3-1-g7c22 From 88976e867b8a76429523a9bedc17e8733637492d Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Thu, 19 Jan 2012 14:25:24 -0300 Subject: updated feed class again --- askbot/feed.py | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/askbot/feed.py b/askbot/feed.py index dff8973c..e13a9488 100644 --- a/askbot/feed.py +++ b/askbot/feed.py @@ -23,10 +23,16 @@ import itertools class RssIndividualQuestionFeed(Feed): """rss feed class for particular questions """ - title = askbot_settings.APP_TITLE + _(' - ')+ _('Individual question feed') - #link = askbot_settings.APP_URL - description = askbot_settings.APP_DESCRIPTION - copyright = askbot_settings.APP_COPYRIGHT + + def title(self): + return askbot_settings.APP_TITLE + _(' - ') + \ + _('Individual question feed') + + def feed_copyright(self): + return askbot_settings.APP_COPYRIGHT + + def description(self): + return askbot_settings.APP_DESCRIPTION def get_object(self, bits): if len(bits) != 1: @@ -38,6 +44,9 @@ class RssIndividualQuestionFeed(Feed): """ return askbot_settings.APP_URL + item.get_absolute_url() + def link(self): + return askbot_settings.APP_URL + def item_pubdate(self, item): """get date of creation for the item """ @@ -97,17 +106,25 @@ class RssIndividualQuestionFeed(Feed): class RssLastestQuestionsFeed(Feed): """rss feed class for the latest questions """ - title = askbot_settings.APP_TITLE + _(' - ')+ _('latest questions') - #link = askbot_settings.APP_URL - description = askbot_settings.APP_DESCRIPTION - #ttl = 10 - copyright = askbot_settings.APP_COPYRIGHT + + def title(self): + return askbot_settings.APP_TITLE + _(' - ') + \ + _('Individual question feed') + + def feed_copyright(self): + return askbot_settings.APP_COPYRIGHT + + def description(self): + return askbot_settings.APP_DESCRIPTION def item_link(self, item): """get full url to the item """ return askbot_settings.APP_URL + item.get_absolute_url() + def link(self): + return askbot_settings.APP_URL + def item_author_name(self, item): """get name of author """ @@ -130,7 +147,7 @@ class RssLastestQuestionsFeed(Feed): return askbot_settings.APP_URL + item.get_absolute_url(no_slug = True) def item_description(self, item): - """returns the desciption for the item + """returns the description for the item """ return item.text -- cgit v1.2.3-1-g7c22 From 5bfa8dd17f8849134e24b72e6b4621d093fec074 Mon Sep 17 00:00:00 2001 From: Byron Corrales Date: Tue, 21 Feb 2012 15:32:52 -0600 Subject: Ignoring .DS_Store files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 586c4c8a..aa6d1ac6 100755 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ run recaptcha /.ve /db.sq3 +*.DS_Store -- cgit v1.2.3-1-g7c22 From ae1f7e20492c13d1c203be24f158dee65c3a8f82 Mon Sep 17 00:00:00 2001 From: Byron Corrales Date: Wed, 22 Feb 2012 00:57:40 -0600 Subject: Making the style of the buttons a css style standart easy to customize with less --- askbot/skins/default/media/style/lib_style.css | 22 + askbot/skins/default/media/style/lib_style.less | 37 + askbot/skins/default/media/style/style.css | 3166 +---------------------- askbot/skins/default/media/style/style.less | 144 +- 4 files changed, 105 insertions(+), 3264 deletions(-) create mode 100644 askbot/skins/default/media/style/lib_style.css diff --git a/askbot/skins/default/media/style/lib_style.css b/askbot/skins/default/media/style/lib_style.css new file mode 100644 index 00000000..a92af477 --- /dev/null +++ b/askbot/skins/default/media/style/lib_style.css @@ -0,0 +1,22 @@ +/* General Predifined classes, read more in lesscss.org */ +/* Variables for Colors*/ +/* Variables for fonts*/ +/* "Trebuchet MS", sans-serif;*/ +/* Buttons */ +.button-style-hover { + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + text-decoration: none; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; +} +/* General styles for gradients */ +/* Receive exactly positions for background Sprite */ +/* CSS3 Elements */ diff --git a/askbot/skins/default/media/style/lib_style.less b/askbot/skins/default/media/style/lib_style.less index 941c83ff..bedd8c60 100644 --- a/askbot/skins/default/media/style/lib_style.less +++ b/askbot/skins/default/media/style/lib_style.less @@ -17,6 +17,43 @@ @main-font:'Yanone Kaffeesatz', sans-serif; @secondary-font:Arial; +/* Buttons */ + +.button-style(@w:100px ,@h:20px, @f:14px){ + width:@w; + height:@h; + font-size:@f; + text-align:center; + text-decoration:none; + cursor:pointer; + color:@button-label; + font-family:@main-font; + .text-shadow(0px,1px,0px,#c6d9dd); + border-top:#eaf2f3 1px solid; + .linear-gradient(#d1e2e5,#a9c2c7); + .rounded-corners(4px); + .box-shadow(1px, 1px, 2px, #636363) +} + +.button-style-hover{ + .linear-gradient(#cde5e9,#94b3ba); + text-decoration:none; + .text-shadow(0px, 1px, 0px, #c6d9dd); +} + +/* General styles for gradients */ + +.linear-gradient(@start:#eee,@end:#fff,@stop:25%){ + background-color: @start; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@start), color-stop(@stop, @start), to(@end)); + background-image: -webkit-linear-gradient(@start, @start @stop, @end); + background-image: -moz-linear-gradient(top, @start, @start @stop, @end); + background-image: -ms-linear-gradient(@start, @start @stop, @end); + background-image: -o-linear-gradient(@start, @start @stop, @end); + background-image: linear-gradient(@start, @start @stop, @end); +} + /* Receive exactly positions for background Sprite */ .sprites(@hor,@vert,@back:url(../images/sprites.png)){ diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index 737dcdd2..ad2ac00d 100644 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -1,3165 +1 @@ -@import url(jquery.autocomplete.css); -/* General Predifined classes, read more in lesscss.org */ -/* Variables for Colors*/ -/* Variables for fonts*/ -/* "Trebuchet MS", sans-serif;*/ -/* Receive exactly positions for background Sprite */ -/* CSS3 Elements */ -/* Library of predifined less functions styles */ -/* ----- General HTML Styles----- */ -body { - background: #FFF; - font-size: 14px; - line-height: 150%; - margin: 0; - padding: 0; - color: #000; - font-family: Arial; -} -div { - margin: 0 auto; - padding: 0; -} -h1, -h2, -h3, -h4, -h5, -h6, -ul, -li, -dl, -dt, -dd, -form, -img, -p { - margin: 0; - padding: 0; - border: none; -} -label { - vertical-align: middle; -} -hr { - border: none; - border-top: 1px dashed #ccccce; -} -input, select { - vertical-align: middle; - font-family: Trebuchet MS, "segoe ui", Helvetica, Tahoma, Verdana, MingLiu, PMingLiu, Arial, sans-serif; - margin-left: 0px; -} -textarea:focus, input:focus { - outline: none; -} -iframe { - border: none; -} -p { - font-size: 14px; - line-height: 140%; - margin-bottom: 6px; -} -a { - color: #1b79bd; - text-decoration: none; - cursor: pointer; -} -h2 { - font-size: 21px; - padding: 3px 0 3px 5px; -} -h3 { - font-size: 19px; - padding: 3px 0 3px 5px; -} -ul { - list-style: disc; - margin-left: 20px; - padding-left: 0px; - margin-bottom: 1em; -} -ol { - list-style: decimal; - margin-left: 30px; - margin-bottom: 1em; - padding-left: 0px; -} -td ul { - vertical-align: middle; -} -li input { - margin: 3px 3px 4px 3px; -} -pre { - font-family: Consolas, Monaco, Liberation Mono, Lucida Console, Monospace; - font-size: 100%; - margin-bottom: 10px; - /*overflow: auto;*/ - - background-color: #F5F5F5; - padding-left: 5px; - padding-top: 5px; - /*width: 671px;*/ - - padding-bottom: 20px ! ie7; -} -code { - font-family: Consolas, Monaco, Liberation Mono, Lucida Console, Monospace; - font-size: 100%; -} -blockquote { - margin-bottom: 10px; - margin-right: 15px; - padding: 10px 0px 1px 10px; - background-color: #F5F5F5; -} -/* http://pathfindersoftware.com/2007/09/developers-note-2/ */ -* html .clearfix, * html .paginator { - height: 1; - overflow: visible; -} -+ html .clearfix, + html .paginator { - min-height: 1%; -} -.clearfix:after, .paginator:after { - clear: both; - content: "."; - display: block; - height: 0; - visibility: hidden; -} -.badges a { - color: #763333; - text-decoration: underline; -} -a:hover { - text-decoration: underline; -} -.badge-context-toggle.active { - cursor: pointer; - text-decoration: underline; -} -h1 { - font-size: 24px; - padding: 10px 0 5px 0px; -} -/* ----- Extra space above for messages ----- */ -body.user-messages { - margin-top: 2.4em; -} -/* ----- Custom positions ----- */ -.left { - float: left; -} -.right { - float: right; -} -.clean { - clear: both; -} -.center { - margin: 0 auto; - padding: 0; -} -/* ----- Notify message bar , check blocks/system_messages.html ----- */ -.notify { - position: fixed; - top: 0px; - left: 0px; - width: 100%; - z-index: 100; - padding: 0; - text-align: center; - background-color: #f5dd69; - border-top: #fff 1px solid; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.notify p.notification { - margin-top: 6px; - margin-bottom: 6px; - font-size: 16px; - color: #424242; -} -#closeNotify { - position: absolute; - right: 5px; - top: 7px; - color: #735005; - text-decoration: none; - line-height: 18px; - background: -6px -5px url(../images/sprites.png) no-repeat; - cursor: pointer; - width: 20px; - height: 20px; -} -#closeNotify:hover { - background: -26px -5px url(../images/sprites.png) no-repeat; -} -/* ----- Header, check blocks/header.html ----- */ -#header { - margin-top: 0px; - background: #16160f; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.content-wrapper { - /* wrapper positioning class */ - - width: 960px; - margin: auto; - position: relative; -} -#logo img { - padding: 5px 0px 5px 0px; - height: 75px; - width: auto; - float: left; -} -#userToolsNav { - /* Navigation bar containing login link or user information, check widgets/user_navigation.html*/ - - height: 20px; - padding-bottom: 5px; -} -#userToolsNav a { - height: 35px; - text-align: right; - margin-left: 20px; - text-decoration: underline; - color: #d0e296; - font-size: 16px; -} -#userToolsNav a:first-child { - margin-left: 0; -} -#userToolsNav a#ab-responses { - margin-left: 3px; -} -#userToolsNav .user-info, #userToolsNav .user-micro-info { - color: #b5b593; -} -#userToolsNav a img { - vertical-align: middle; - margin-bottom: 2px; -} -#userToolsNav .user-info a { - margin: 0; - text-decoration: none; -} -#metaNav { - /* Top Navigation bar containing links for tags, people and badges, check widgets/header.html */ - - float: right; - /* for #header.with-logo it is modified */ - -} -#metaNav a { - color: #e2e2ae; - padding: 0px 0px 0px 35px; - height: 25px; - line-height: 30px; - margin: 5px 0px 0px 10px; - font-size: 18px; - font-weight: 100; - text-decoration: none; - display: block; - float: left; -} -#metaNav a:hover { - text-decoration: underline; -} -#metaNav a.on { - font-weight: bold; - color: #FFF; - text-decoration: none; -} -#metaNav a.special { - font-size: 18px; - color: #B02B2C; - font-weight: bold; - text-decoration: none; -} -#metaNav a.special:hover { - text-decoration: underline; -} -#metaNav #navTags { - background: -50px -5px url(../images/sprites.png) no-repeat; -} -#metaNav #navUsers { - background: -125px -5px url(../images/sprites.png) no-repeat; -} -#metaNav #navBadges { - background: -210px -5px url(../images/sprites.png) no-repeat; -} -#header.with-logo #userToolsNav { - position: absolute; - bottom: 0; - right: 0px; -} -#header.without-logo #userToolsNav { - float: left; - margin-top: 7px; -} -#header.without-logo #metaNav { - margin-bottom: 7px; -} -#secondaryHeader { - /* Div containing Home button, scope navigation, search form and ask button, check blocks/secondary_header.html */ - - height: 55px; - background: #e9e9e1; - border-bottom: #d3d3c2 1px solid; - border-top: #fcfcfc 1px solid; - margin-bottom: 10px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -#secondaryHeader #homeButton { - border-right: #afaf9e 1px solid; - background: -6px -36px url(../images/sprites.png) no-repeat; - height: 55px; - width: 43px; - display: block; - float: left; -} -#secondaryHeader #homeButton:hover { - background: -51px -36px url(../images/sprites.png) no-repeat; -} -#secondaryHeader #scopeWrapper { - width: 688px; - float: left; -} -#secondaryHeader #scopeWrapper a { - display: block; - float: left; -} -#secondaryHeader #scopeWrapper .scope-selector { - font-size: 21px; - color: #5a5a4b; - height: 55px; - line-height: 55px; - margin-left: 24px; -} -#secondaryHeader #scopeWrapper .on { - background: url(../images/scopearrow.png) no-repeat center bottom; -} -#secondaryHeader #scopeWrapper .ask-message { - font-size: 24px; -} -#searchBar { - /* Main search form , check widgets/search_bar.html */ - - display: inline-block; - background-color: #fff; - width: 412px; - border: 1px solid #c9c9b5; - float: right; - height: 42px; - margin: 6px 0px 0px 15px; -} -#searchBar .searchInput, #searchBar .searchInputCancelable { - font-size: 30px; - height: 40px; - font-weight: 300; - background: #FFF; - border: 0px; - color: #484848; - padding-left: 10px; - font-family: Arial; - vertical-align: middle; -} -#searchBar .searchInput { - width: 352px; -} -#searchBar .searchInputCancelable { - width: 317px; -} -#searchBar .logoutsearch { - width: 337px; -} -#searchBar .searchBtn { - font-size: 10px; - color: #666; - background-color: #eee; - height: 42px; - border: #FFF 1px solid; - line-height: 22px; - text-align: center; - float: right; - margin: 0px; - width: 48px; - background: -98px -36px url(../images/sprites.png) no-repeat; - cursor: pointer; -} -#searchBar .searchBtn:hover { - background: -146px -36px url(../images/sprites.png) no-repeat; -} -#searchBar .cancelSearchBtn { - font-size: 30px; - color: #ce8888; - background: #fff; - height: 42px; - border: 0px; - border-left: #deded0 1px solid; - text-align: center; - width: 35px; - cursor: pointer; -} -#searchBar .cancelSearchBtn:hover { - color: #d84040; -} -body.anon #searchBar { - width: 500px; -} -body.anon #searchBar .searchInput { - width: 440px; -} -body.anon #searchBar .searchInputCancelable { - width: 405px; -} -#askButton { - /* check blocks/secondary_header.html and widgets/ask_button.html*/ - - background: url(../images/bigbutton.png) repeat-x bottom; - line-height: 44px; - text-align: center; - width: 200px; - height: 42px; - font-size: 23px; - color: #4a757f; - margin-top: 7px; - float: right; - text-transform: uppercase; - border-radius: 5px; - -ms-border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-box-shadow: 1px 1px 2px #636363; - -moz-box-shadow: 1px 1px 2px #636363; - box-shadow: 1px 1px 2px #636363; -} -#askButton:hover { - text-decoration: none; - background: url(../images/bigbutton.png) repeat-x top; - text-shadow: 0px 1px 0px #c6d9dd; - -moz-text-shadow: 0px 1px 0px #c6d9dd; - -webkit-text-shadow: 0px 1px 0px #c6d9dd; -} -/* ----- Content layout, check two_column_body.html or one_column_body.html ----- */ -#ContentLeft { - width: 730px; - float: left; - position: relative; - padding-bottom: 10px; -} -#ContentRight { - width: 200px; - float: right; - padding: 0 0px 10px 0px; -} -#ContentFull { - float: left; - width: 960px; -} -/* ----- Sidebar Widgets Box, check main_page/sidebar.html or question/sidebar.html ----- */ -.box { - background: #fff; - padding: 4px 0px 10px 0px; - width: 200px; - /* widgets for question template */ - - /* notify by email box */ - -} -.box p { - margin-bottom: 4px; -} -.box p.info-box-follow-up-links { - text-align: right; - margin: 0; -} -.box h2 { - padding-left: 0; - background: #eceeeb; - height: 30px; - line-height: 30px; - text-align: right; - font-size: 18px !important; - font-weight: normal; - color: #656565; - padding-right: 10px; - margin-bottom: 10px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.box h3 { - color: #4a757f; - font-size: 18px; - text-align: left; - font-weight: normal; - font-family: 'Yanone Kaffeesatz', sans-serif; - padding-left: 0px; -} -.box .contributorback { - background: #eceeeb url(../images/contributorsback.png) no-repeat center left; -} -.box label { - color: #707070; - font-size: 15px; - display: block; - float: right; - text-align: left; - font-family: 'Yanone Kaffeesatz', sans-serif; - width: 80px; - margin-right: 18px; -} -.box #displayTagFilterControl label { - /*Especial width just for the display tag filter box in index page*/ - - width: 160px; -} -.box ul { - margin-left: 22px; -} -.box li { - list-style-type: disc; - font-size: 13px; - line-height: 20px; - margin-bottom: 10px; - color: #707070; -} -.box ul.tags { - list-style: none; - margin: 0; - padding: 0; - line-height: 170%; - display: block; -} -.box #displayTagFilterControl p label { - color: #707070; - font-size: 15px; -} -.box .inputs #interestingTagInput, .box .inputs #ignoredTagInput { - width: 153px; - padding-left: 5px; - border: #c9c9b5 1px solid; - height: 25px; -} -.box .inputs #interestingTagAdd, .box .inputs #ignoredTagAdd { - background: url(../images/small-button-blue.png) repeat-x top; - border: 0; - color: #4a757f; - font-weight: bold; - font-size: 12px; - width: 30px; - height: 27px; - margin-top: -2px; - cursor: pointer; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; - text-shadow: 0px 1px 0px #e6f6fa; - -moz-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-box-shadow: 1px 1px 2px #808080; - -moz-box-shadow: 1px 1px 2px #808080; - box-shadow: 1px 1px 2px #808080; -} -.box .inputs #interestingTagAdd:hover, .box .inputs #ignoredTagAdd:hover { - background: url(../images/small-button-blue.png) repeat-x bottom; -} -.box img.gravatar { - margin: 1px; -} -.box a.followed, .box a.follow { - background: url(../images/medium-button.png) top repeat-x; - height: 34px; - line-height: 34px; - text-align: center; - border: 0; - font-family: 'Yanone Kaffeesatz', sans-serif; - color: #4a757f; - font-weight: normal; - font-size: 21px; - margin-top: 3px; - display: block; - width: 120px; - text-decoration: none; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; - -webkit-box-shadow: 1px 1px 2px #636363; - -moz-box-shadow: 1px 1px 2px #636363; - box-shadow: 1px 1px 2px #636363; - margin: 0 auto; - padding: 0; -} -.box a.followed:hover, .box a.follow:hover { - text-decoration: none; - background: url(../images/medium-button.png) bottom repeat-x; - text-shadow: 0px 1px 0px #c6d9dd; - -moz-text-shadow: 0px 1px 0px #c6d9dd; - -webkit-text-shadow: 0px 1px 0px #c6d9dd; -} -.box a.followed div.unfollow { - display: none; -} -.box a.followed:hover div { - display: none; -} -.box a.followed:hover div.unfollow { - display: inline; - color: #a05736; -} -.box .favorite-number { - padding: 5px 0 0 5px; - font-size: 100%; - font-family: Arial; - font-weight: bold; - color: #777; - text-align: center; -} -.box .notify-sidebar #question-subscribe-sidebar { - margin: 7px 0 0 3px; -} -.statsWidget p { - color: #707070; - font-size: 16px; - border-bottom: #cccccc 1px solid; - font-size: 13px; -} -.statsWidget p strong { - float: right; - padding-right: 10px; -} -.questions-related { - word-wrap: break-word; -} -.questions-related p { - line-height: 20px; - padding: 4px 0px 4px 0px; - font-size: 16px; - font-weight: normal; - border-bottom: #cccccc 1px solid; -} -.questions-related a { - font-size: 13px; -} -/* tips and markdown help are widgets for ask template */ -#tips li { - color: #707070; - font-size: 13px; - list-style-image: url(../images/tips.png); -} -#tips a { - font-size: 16px; -} -#markdownHelp li { - color: #707070; - font-size: 13px; -} -#markdownHelp a { - font-size: 16px; -} -/* ----- Sorting top Tab, check main_page/tab_bar.html ------*/ -.tabBar { - background-color: #eff5f6; - height: 30px; - margin-bottom: 3px; - margin-top: 3px; - float: right; - font-family: Georgia, serif; - font-size: 16px; - border-radius: 5px; - -ms-border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - -khtml-border-radius: 5px; -} -.tabBar h2 { - float: left; -} -.tabsA, .tabsC { - float: right; - position: relative; - display: block; - height: 20px; -} -/* tabsA - used for sorting */ -.tabsA { - float: right; -} -.tabsC { - float: left; -} -.tabsA a, .tabsC a { - border-left: 1px solid #d0e1e4; - color: #7ea9b3; - display: block; - float: left; - height: 20px; - line-height: 20px; - padding: 4px 7px 4px 7px; - text-decoration: none; -} -.tabsA a.on, -.tabsC a.on, -.tabsA a:hover, -.tabsC a:hover { - color: #4a757f; -} -.tabsA .label, .tabsC .label { - float: left; - color: #646464; - margin-top: 4px; - margin-right: 5px; -} -.main-page .tabsA .label { - margin-left: 8px; -} -.tabsB a { - background: #eee; - border: 1px solid #eee; - color: #777; - display: block; - float: left; - height: 22px; - line-height: 28px; - margin: 5px 0px 0 4px; - padding: 0 11px 0 11px; - text-decoration: none; -} -.tabsC .first { - border: none; -} -.rss { - float: right; - font-size: 16px; - color: #f57900; - margin: 5px 0px 3px 7px; - width: 52px; - padding-left: 2px; - padding-top: 3px; - background: #ffffff url(../images/feed-icon-small.png) no-repeat center right; - float: right; - font-family: Georgia, serif; - font-size: 16px; -} -.rss:hover { - color: #F4A731 !important; -} -/* ----- Headline, containing number of questions and tags selected, check main_page/headline.html ----- */ -#questionCount { - font-weight: bold; - font-size: 23px; - color: #7ea9b3; - width: 200px; - float: left; - margin-bottom: 8px; - padding-top: 6px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -#listSearchTags { - float: left; - margin-top: 3px; - color: #707070; - font-size: 16px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -ul#searchTags { - margin-left: 10px; - float: right; - padding-top: 2px; -} -.search-tips { - font-size: 16px; - line-height: 17px; - color: #707070; - margin: 5px 0 10px 0; - padding: 0px; - float: left; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.search-tips a { - text-decoration: underline; - color: #1b79bd; -} -/* ----- Question list , check main_page/content.html and macros/macros.html----- */ -#question-list { - float: left; - position: relative; - background-color: #FFF; - padding: 0; - width: 100%; -} -.short-summary { - position: relative; - filter: inherit; - padding: 10px; - border-bottom: 1px solid #DDDBCE; - margin-bottom: 1px; - overflow: hidden; - width: 710px; - float: left; - background: url(../images/summary-background.png) repeat-x; -} -.short-summary h2 { - font-size: 24px; - font-weight: normal; - line-height: 26px; - padding-left: 0; - margin-bottom: 6px; - display: block; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.short-summary a { - color: #464646; -} -.short-summary .userinfo { - text-align: right; - line-height: 16px; - font-family: Arial; - padding-right: 4px; -} -.short-summary .userinfo .relativetime, .short-summary span.anonymous { - font-size: 11px; - clear: both; - font-weight: normal; - color: #555; -} -.short-summary .userinfo a { - font-weight: bold; - font-size: 11px; -} -.short-summary .counts { - float: right; - margin: 4px 0 0 5px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.short-summary .counts .item-count { - padding: 0px 5px 0px 5px; - font-size: 25px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.short-summary .counts .votes div, -.short-summary .counts .views div, -.short-summary .counts .answers div, -.short-summary .counts .favorites div { - margin-top: 3px; - font-size: 14px; - line-height: 14px; - color: #646464; -} -.short-summary .tags { - margin-top: 0; -} -.short-summary .votes, -.short-summary .answers, -.short-summary .favorites, -.short-summary .views { - text-align: center; - margin: 0 3px; - padding: 8px 2px 0px 2px; - width: 51px; - float: right; - height: 44px; - border: #dbdbd4 1px solid; -} -.short-summary .votes { - background: url(../images/vote-background.png) repeat-x; -} -.short-summary .answers { - background: url(../images/answers-background.png) repeat-x; -} -.short-summary .views { - background: url(../images/view-background.png) repeat-x; -} -.short-summary .no-votes .item-count { - color: #b1b5b6; -} -.short-summary .some-votes .item-count { - color: #4a757f; -} -.short-summary .no-answers .item-count { - color: #b1b5b6; -} -.short-summary .some-answers .item-count { - color: #eab243; -} -.short-summary .no-views .item-count { - color: #b1b5b6; -} -.short-summary .some-views .item-count { - color: #d33f00; -} -.short-summary .accepted .item-count { - background: url(../images/accept.png) no-repeat top right; - display: block; - text-align: center; - width: 40px; - color: #eab243; -} -.short-summary .some-favorites .item-count { - background: #338333; - color: #d0f5a9; -} -.short-summary .no-favorites .item-count { - background: #eab243; - color: yellow; -} -/* ----- Question list Paginator , check main_content/pager.html and macros/utils_macros.html----- */ -.evenMore { - font-size: 13px; - color: #707070; - padding: 15px 0px 10px 0px; - clear: both; -} -.evenMore a { - text-decoration: underline; - color: #1b79bd; -} -.pager { - margin-top: 10px; - margin-bottom: 16px; -} -.pagesize { - margin-top: 10px; - margin-bottom: 16px; - float: right; -} -.paginator { - padding: 5px 0 10px 0; - font-size: 13px; - margin-bottom: 10px; -} -.paginator .prev a, -.paginator .prev a:visited, -.paginator .next a, -.paginator .next a:visited { - background-color: #fff; - color: #777; - padding: 2px 4px 3px 4px; -} -.paginator a { - color: #7ea9b3; -} -.paginator .prev { - margin-right: .5em; -} -.paginator .next { - margin-left: .5em; -} -.paginator .page a, .paginator .page a:visited, .paginator .curr { - padding: .25em; - background-color: #fff; - margin: 0em .25em; - color: #ff; -} -.paginator .curr { - background-color: #8ebcc7; - color: #fff; - font-weight: bold; -} -.paginator .next a, .paginator .prev a { - color: #7ea9b3; -} -.paginator .page a:hover, -.paginator .curr a:hover, -.paginator .prev a:hover, -.paginator .next a:hover { - color: #8C8C8C; - background-color: #E1E1E1; - text-decoration: none; -} -.paginator .text { - color: #777; - padding: .3em; -} -.paginator .paginator-container-left { - padding: 5px 0 10px 0; -} -/* ----- Tags Styles ----- */ -/* tag formatting is also copy-pasted in template - because it must be the same in the emails - askbot/models/__init__.py:format_instant_notification_email() -*/ -/* tag cloud */ -.tag-size-1 { - font-size: 12px; -} -.tag-size-2 { - font-size: 13px; -} -.tag-size-3 { - font-size: 14px; -} -.tag-size-4 { - font-size: 15px; -} -.tag-size-5 { - font-size: 16px; -} -.tag-size-6 { - font-size: 17px; -} -.tag-size-7 { - font-size: 18px; -} -.tag-size-8 { - font-size: 19px; -} -.tag-size-9 { - font-size: 20px; -} -.tag-size-10 { - font-size: 21px; -} -ul.tags, ul.tags.marked-tags, ul#related-tags { - list-style: none; - margin: 0; - padding: 0; - line-height: 170%; - display: block; -} -ul.tags li { - float: left; - display: block; - margin: 0 8px 0 0; - padding: 0; - height: 20px; -} -.wildcard-tags { - clear: both; -} -ul.tags.marked-tags li, .wildcard-tags ul.tags li { - margin-bottom: 5px; -} -#tagSelector div.inputs { - clear: both; - float: none; - margin-bottom: 10px; -} -.tags-page ul.tags li, ul#ab-user-tags li { - width: 160px; - margin: 5px; -} -ul#related-tags li { - margin: 0 5px 8px 0; - float: left; - clear: left; -} -/* .tag-left and .tag-right are for the sliding doors decoration of tags */ -.tag-left { - cursor: pointer; - display: block; - float: left; - height: 17px; - margin: 0 5px 0 0; - padding: 0; - -webkit-box-shadow: 0px 0px 5px #d3d6d7; - -moz-box-shadow: 0px 0px 5px #d3d6d7; - box-shadow: 0px 0px 5px #d3d6d7; -} -.tag-right { - background: #f3f6f6; - border: #fff 1px solid ; - border-top: #fff 2px solid; - outline: #cfdbdb 1px solid; - /* .box-shadow(0px,1px,0px,#88a8a8);*/ - - display: block; - float: left; - height: 17px; - line-height: 17px; - font-weight: normal; - font-size: 11px; - padding: 0px 8px 0px 8px; - text-decoration: none; - text-align: center; - white-space: nowrap; - vertical-align: middle; - font-family: Arial; - color: #717179; -} -.deletable-tag { - margin-right: 3px; - white-space: nowrap; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-border-top-right-radius: 4px; -} -.tags a.tag-right, .tags span.tag-right { - color: #585858; - text-decoration: none; -} -.tags a:hover { - color: #1A1A1A; -} -.users-page h1, .tags-page h1 { - float: left; -} -.main-page h1 { - margin-right: 5px; -} -.delete-icon { - margin-top: -1px; - float: left; - height: 21px; - width: 18px; - display: block; - line-height: 20px; - text-align: center; - background: #bbcdcd; - cursor: default; - color: #fff; - border-top: #cfdbdb 1px solid; - font-family: Arial; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-border-top-right-radius: 4px; - text-shadow: 0px 1px 0px #7ea0a0; - -moz-text-shadow: 0px 1px 0px #7ea0a0; - -webkit-text-shadow: 0px 1px 0px #7ea0a0; -} -.delete-icon:hover { - background: #b32f2f; -} -.tag-number { - font-weight: normal; - float: left; - font-size: 16px; - color: #5d5d5d; -} -.badges .tag-number { - float: none; - display: inline; - padding-right: 15px; -} -/* ----- Ask and Edit Question Form template----- */ -.section-title { - color: #7ea9b3; - font-family: 'Yanone Kaffeesatz', sans-serif; - font-weight: bold; - font-size: 24px; -} -#fmask { - margin-bottom: 30px; - width: 100%; -} -#askFormBar { - display: inline-block; - padding: 4px 7px 5px 0px; - margin-top: 0px; -} -#askFormBar p { - margin: 0 0 5px 0; - font-size: 14px; - color: #525252; - line-height: 1.4; -} -#askFormBar .questionTitleInput { - font-size: 24px; - line-height: 24px; - height: 36px; - margin: 0px; - padding: 0px 0 0 5px; - border: #cce6ec 3px solid; - width: 725px; -} -.ask-page div#question-list, .edit-question-page div#question-list { - float: none; - border-bottom: #f0f0ec 1px solid; - float: left; - margin-bottom: 10px; -} -.ask-page div#question-list a, .edit-question-page div#question-list a { - line-height: 30px; -} -.ask-page div#question-list h2, .edit-question-page div#question-list h2 { - font-size: 13px; - padding-bottom: 0; - color: #1b79bd; - border-top: #f0f0ec 1px solid; - border-left: #f0f0ec 1px solid; - height: 30px; - line-height: 30px; - font-weight: normal; -} -.ask-page div#question-list span, .edit-question-page div#question-list span { - width: 28px; - height: 26px; - line-height: 26px; - text-align: center; - margin-right: 10px; - float: left; - display: block; - color: #fff; - background: #b8d0d5; - border-radius: 3px; - -ms-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - -khtml-border-radius: 3px; -} -.ask-page label, .edit-question-page label { - color: #525252; - font-size: 13px; -} -.ask-page #id_tags, .edit-question-page #id_tags { - border: #cce6ec 3px solid; - height: 25px; - padding-left: 5px; - width: 395px; - font-size: 14px; -} -.title-desc { - color: #707070; - font-size: 13px; -} -#fmanswer input.submit, .ask-page input.submit, .edit-question-page input.submit { - float: left; - background: url(../images/medium-button.png) top repeat-x; - height: 34px; - border: 0; - font-family: 'Yanone Kaffeesatz', sans-serif; - color: #4a757f; - font-weight: normal; - font-size: 21px; - margin-top: 3px; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; - -webkit-box-shadow: 1px 1px 2px #636363; - -moz-box-shadow: 1px 1px 2px #636363; - box-shadow: 1px 1px 2px #636363; - margin-right: 7px; -} -#fmanswer input.submit:hover, .ask-page input.submit:hover, .edit-question-page input.submit:hover { - text-decoration: none; - background: url(../images/medium-button.png) bottom repeat-x; - text-shadow: 0px 1px 0px #c6d9dd; - -moz-text-shadow: 0px 1px 0px #c6d9dd; - -webkit-text-shadow: 0px 1px 0px #c6d9dd; -} -#editor { - /*adjustment for editor preview*/ - - font-size: 100%; - min-height: 200px; - line-height: 18px; - margin: 0; - border-left: #cce6ec 3px solid; - border-bottom: #cce6ec 3px solid; - border-right: #cce6ec 3px solid; - border-top: 0; - padding: 10px; - margin-bottom: 10px; - width: 717px; -} -#id_title { - width: 100%; -} -.wmd-preview { - margin: 3px 0 5px 0; - padding: 6px; - background-color: #F5F5F5; - min-height: 20px; - overflow: auto; - font-size: 13px; - font-family: Arial; -} -.wmd-preview p { - margin-bottom: 14px; - line-height: 1.4; - font-size: 14px; -} -.wmd-preview pre { - background-color: #E7F1F8; -} -.wmd-preview blockquote { - background-color: #eee; -} -.wmd-preview IMG { - max-width: 600px; -} -.preview-toggle { - width: 100%; - color: #b6a475; - /*letter-spacing:1px;*/ - - text-align: left; -} -.preview-toggle span:hover { - cursor: pointer; -} -.after-editor { - margin-top: 15px; - margin-bottom: 15px; -} -.checkbox { - margin-left: 5px; - font-weight: normal; - cursor: help; -} -.question-options { - margin-top: 1px; - color: #666; - line-height: 13px; - margin-bottom: 5px; -} -.question-options label { - vertical-align: text-bottom; -} -.edit-content-html { - border-top: 1px dotted #D8D2A9; - border-bottom: 1px dotted #D8D2A9; - margin: 5px 0 5px 0; -} -.edit-question-page, #fmedit, .wmd-preview { - color: #525252; -} -.edit-question-page #id_revision, #fmedit #id_revision, .wmd-preview #id_revision { - font-size: 14px; - margin-top: 5px; - margin-bottom: 5px; -} -.edit-question-page #id_title, #fmedit #id_title, .wmd-preview #id_title { - font-size: 24px; - line-height: 24px; - height: 36px; - margin: 0px; - padding: 0px 0 0 5px; - border: #cce6ec 3px solid; - width: 725px; - margin-bottom: 10px; -} -.edit-question-page #id_summary, #fmedit #id_summary, .wmd-preview #id_summary { - border: #cce6ec 3px solid; - height: 25px; - padding-left: 5px; - width: 395px; - font-size: 14px; -} -.edit-question-page .title-desc, #fmedit .title-desc, .wmd-preview .title-desc { - margin-bottom: 10px; -} -/* ----- Question template ----- */ -.question-page h1 { - padding-top: 0px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.question-page h1 a { - color: #464646; - font-size: 30px; - font-weight: normal; - line-height: 1; -} -.question-page p.rss { - float: none; - clear: both; - padding: 3px 0 0 23px; - font-size: 15px; - width: 110px; - background-position: center left; - margin-left: 0px !important; -} -.question-page p.rss a { - font-family: 'Yanone Kaffeesatz', sans-serif; - vertical-align: top; -} -.question-page .question-content { - float: right; - width: 682px; - margin-bottom: 10px; -} -.question-page #question-table { - float: left; - border-top: #f0f0f0 1px solid; -} -.question-page #question-table, .question-page .answer-table { - margin: 6px 0 6px 0; - border-spacing: 0px; - width: 670px; - padding-right: 10px; -} -.question-page .answer-table { - margin-top: 0px; - border-bottom: 1px solid #D4D4D4; - float: right; -} -.question-page .answer-table td, .question-page #question-table td { - width: 20px; - vertical-align: top; -} -.question-page .question-body, .question-page .answer-body { - overflow: auto; - margin-top: 10px; - font-family: Arial; - color: #4b4b4b; -} -.question-page .question-body p, .question-page .answer-body p { - margin-bottom: 14px; - line-height: 1.4; - font-size: 14px; - padding: 0px 5px 5px 0px; -} -.question-page .question-body a, .question-page .answer-body a { - color: #1b79bd; -} -.question-page .question-body li, .question-page .answer-body li { - margin-bottom: 7px; -} -.question-page .question-body IMG, .question-page .answer-body IMG { - max-width: 600px; -} -.question-page .post-update-info-container { - float: right; - width: 175px; -} -.question-page .post-update-info { - background: #ffffff url(../images/background-user-info.png) repeat-x bottom; - float: right; - font-size: 9px; - font-family: Arial; - width: 158px; - padding: 4px; - margin: 0px 0px 5px 5px; - line-height: 14px; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; - -webkit-box-shadow: 0px 2px 1px #bfbfbf; - -moz-box-shadow: 0px 2px 1px #bfbfbf; - box-shadow: 0px 2px 1px #bfbfbf; -} -.question-page .post-update-info p { - line-height: 13px; - font-size: 11px; - margin: 0 0 2px 1px; - padding: 0; -} -.question-page .post-update-info a { - color: #444; -} -.question-page .post-update-info .gravatar { - float: left; - margin-right: 4px; -} -.question-page .post-update-info p.tip { - color: #444; - line-height: 13px; - font-size: 10px; -} -.question-page .post-controls { - font-size: 11px; - line-height: 12px; - min-width: 200px; - padding-left: 5px; - text-align: right; - clear: left; - float: right; - margin-top: 10px; - margin-bottom: 8px; -} -.question-page .post-controls a { - color: #777; - padding: 0px 3px 3px 22px; - cursor: pointer; - border: none; - font-size: 12px; - font-family: Arial; - text-decoration: none; - height: 18px; - display: block; - float: right; - line-height: 18px; - margin-top: -2px; - margin-left: 4px; -} -.question-page .post-controls a:hover { - background-color: #f5f0c9; - border-radius: 3px; - -ms-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - -khtml-border-radius: 3px; -} -.question-page .post-controls .sep { - color: #ccc; - float: right; - height: 18px; - font-size: 18px; -} -.question-page .post-controls .question-delete, .question-page .answer-controls .question-delete { - background: url(../images/delete.png) no-repeat center left; - padding-left: 16px; -} -.question-page .post-controls .question-flag, .question-page .answer-controls .question-flag { - background: url(../images/flag.png) no-repeat center left; -} -.question-page .post-controls .question-edit, .question-page .answer-controls .question-edit { - background: url(../images/edit2.png) no-repeat center left; -} -.question-page .post-controls .question-retag, .question-page .answer-controls .question-retag { - background: url(../images/retag.png) no-repeat center left; -} -.question-page .post-controls .question-close, .question-page .answer-controls .question-close { - background: url(../images/close.png) no-repeat center left; -} -.question-page .post-controls .permant-link, .question-page .answer-controls .permant-link { - background: url(../images/link.png) no-repeat center left; -} -.question-page .tabBar { - width: 100%; -} -.question-page #questionCount { - float: left; - font-family: 'Yanone Kaffeesatz', sans-serif; - line-height: 15px; -} -.question-page .question-img-upvote, -.question-page .question-img-downvote, -.question-page .answer-img-upvote, -.question-page .answer-img-downvote { - width: 25px; - height: 20px; - cursor: pointer; -} -.question-page .question-img-upvote, .question-page .answer-img-upvote { - background: url(../images/vote-arrow-up-new.png) no-repeat; -} -.question-page .question-img-downvote, .question-page .answer-img-downvote { - background: url(../images/vote-arrow-down-new.png) no-repeat; -} -.question-page .question-img-upvote:hover, -.question-page .question-img-upvote.on, -.question-page .answer-img-upvote:hover, -.question-page .answer-img-upvote.on { - background: url(../images/vote-arrow-up-on-new.png) no-repeat; -} -.question-page .question-img-downvote:hover, -.question-page .question-img-downvote.on, -.question-page .answer-img-downvote:hover, -.question-page .answer-img-downvote.on { - background: url(../images/vote-arrow-down-on-new.png) no-repeat; -} -.question-page #fmanswer_button { - margin: 8px 0px ; -} -.question-page .question-img-favorite:hover { - background: url(../images/vote-favorite-on.png); -} -.question-page div.comments { - padding: 0; -} -.question-page #comment-title { - font-weight: bold; - font-size: 23px; - color: #7ea9b3; - width: 200px; - float: left; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.question-page .comments { - font-size: 12px; - clear: both; - /* A small hack to solve 1px problem on webkit browsers */ - -} -.question-page .comments div.controls { - clear: both; - float: left; - width: 100%; - margin: 3px 0 20px 5px; -} -.question-page .comments .controls a { - color: #988e4c; - padding: 0 3px 2px 22px; - font-family: Arial; - font-size: 13px; - background: url(../images/comment.png) no-repeat center left; -} -.question-page .comments .controls a:hover { - background-color: #f5f0c9; - text-decoration: none; -} -.question-page .comments .button { - color: #988e4c; - font-size: 11px; - padding: 3px; - cursor: pointer; -} -.question-page .comments a { - background-color: inherit; - color: #1b79bd; - padding: 0; -} -.question-page .comments form.post-comments { - margin: 3px 26px 0 42px; -} -.question-page .comments form.post-comments textarea { - font-size: 13px; - line-height: 1.3; -} -.question-page .comments textarea { - height: 42px; - width: 100%; - margin: 7px 0 5px 1px; - font-family: Arial; - outline: none; - overflow: auto; - font-size: 12px; - line-height: 140%; - padding-left: 2px; - padding-top: 3px; - border: #cce6ec 3px solid; -} -@media screen and (-webkit-min-device-pixel-ratio:0) { - textarea { - padding-left: 3px !important; - } -} -.question-page .comments input { - margin-left: 10px; - margin-top: 1px; - vertical-align: top; - width: 100px; -} -.question-page .comments button { - background: url(../images/small-button-blue.png) repeat-x top; - border: 0; - color: #4a757f; - font-family: Arial; - font-size: 13px; - width: 100px; - font-weight: bold; - height: 27px; - line-height: 25px; - margin-bottom: 5px; - cursor: pointer; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; - text-shadow: 0px 1px 0px #e6f6fa; - -moz-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-box-shadow: 1px 1px 2px #808080; - -moz-box-shadow: 1px 1px 2px #808080; - box-shadow: 1px 1px 2px #808080; -} -.question-page .comments button:hover { - background: url(../images/small-button-blue.png) bottom repeat-x; - text-shadow: 0px 1px 0px #c6d9dd; - -moz-text-shadow: 0px 1px 0px #c6d9dd; - -webkit-text-shadow: 0px 1px 0px #c6d9dd; -} -.question-page .comments .counter { - display: inline-block; - width: 245px; - float: right; - color: #b6a475 !important; - vertical-align: top; - font-family: Arial; - float: right; - text-align: right; -} -.question-page .comments .comment { - border-bottom: 1px solid #edeeeb; - clear: both; - margin: 0; - margin-top: 8px; - padding-bottom: 4px; - overflow: auto; - font-family: Arial; - font-size: 11px; - min-height: 25px; - background: #ffffff url(../images/comment-background.png) bottom repeat-x; - border-radius: 5px; - -ms-border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - -khtml-border-radius: 5px; -} -.question-page .comments div.comment:hover { - background-color: #efefef; -} -.question-page .comments a.author { - background-color: inherit; - color: #1b79bd; - padding: 0; -} -.question-page .comments a.author:hover { - text-decoration: underline; -} -.question-page .comments span.delete-icon { - background: url(../images/close-small.png) no-repeat; - border: 0; - width: 14px; - height: 14px; -} -.question-page .comments span.delete-icon:hover { - border: #BC564B 2px solid; - border-radius: 10px; - -ms-border-radius: 10px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - -khtml-border-radius: 10px; - margin: -3px 0px 0px -2px; -} -.question-page .comments .content { - margin-bottom: 7px; -} -.question-page .comments .comment-votes { - float: left; - width: 37px; - line-height: 130%; - padding: 6px 5px 6px 3px; -} -.question-page .comments .comment-body { - line-height: 1.3; - margin: 3px 26px 0 46px; - padding: 5px 3px; - color: #666; - font-size: 13px; -} -.question-page .comments .comment-body .edit { - padding-left: 6px; -} -.question-page .comments .comment-body p { - font-size: 13px; - line-height: 1.3; - margin-bottom: 3px; - padding: 0; -} -.question-page .comments .comment-delete { - float: right; - width: 14px; - line-height: 130%; - padding: 8px 6px; -} -.question-page .comments .upvote { - margin: 0px; - padding-right: 17px; - padding-top: 2px; - text-align: right; - height: 20px; - font-size: 13px; - font-weight: bold; - color: #777; -} -.question-page .comments .upvote.upvoted { - color: #d64000; -} -.question-page .comments .upvote.hover { - background: url(../images/go-up-grey.png) no-repeat; - background-position: right 1px; -} -.question-page .comments .upvote:hover { - background: url(../images/go-up-orange.png) no-repeat; - background-position: right 1px; -} -.question-page .comments .help-text { - float: right; - text-align: right; - color: gray; - margin-bottom: 0px; - margin-top: 0px; - line-height: 50%; -} -.question-page #questionTools { - font-size: 22px; - margin-top: 11px; - text-align: left; -} -.question-page .question-status { - margin-top: 10px; - margin-bottom: 15px; - padding: 20px; - background-color: #fef7cc; - text-align: center; - border: #e1c04a 1px solid; -} -.question-page .question-status h3 { - font-size: 20px; - color: #707070; - font-weight: normal; -} -.question-page .vote-buttons { - float: left; - text-align: center; - padding-top: 2px; - margin: 10px 10px 0px 3px; -} -.question-page .vote-buttons IMG { - cursor: pointer; -} -.question-page .vote-number { - font-family: 'Yanone Kaffeesatz', sans-serif; - padding: 0px 0 5px 0; - font-size: 25px; - font-weight: bold; - color: #777; -} -.question-page .vote-buttons .notify-sidebar { - text-align: left; - width: 120px; -} -.question-page .vote-buttons .notify-sidebar label { - vertical-align: top; -} -.question-page .tabBar-answer { - margin-bottom: 15px; - padding-left: 7px; - width: 723px; - margin-top: 10px; -} -.question-page .answer .vote-buttons { - float: left; -} -.question-page .accepted-answer { - background-color: #f7fecc; - border-bottom-color: #9BD59B; -} -.question-page .accepted-answer .vote-buttons { - width: 27px; - margin-right: 10px; - margin-top: 10px; -} -.question-page .answer .post-update-info a { - color: #444444; -} -.question-page .answered { - background: #CCC; - color: #999; -} -.question-page .answered-accepted { - background: #DCDCDC; - color: #763333; -} -.question-page .answered-accepted strong { - color: #E1E818; -} -.question-page .answered-by-owner { - background: #F1F1FF; -} -.question-page .answered-by-owner .comments .button { - background-color: #E6ECFF; -} -.question-page .answered-by-owner .comments { - background-color: #E6ECFF; -} -.question-page .answered-by-owner .vote-buttons { - margin-right: 10px; -} -.question-page .answer-img-accept:hover { - background: url(../images/vote-accepted-on.png); -} -.question-page .answer-body a { - color: #1b79bd; -} -.question-page .answer-body li { - margin-bottom: 0.7em; -} -.question-page #fmanswer { - color: #707070; - line-height: 1.2; - margin-top: 10px; -} -.question-page #fmanswer h2 { - font-family: 'Yanone Kaffeesatz', sans-serif; - color: #7ea9b3; - font-size: 24px; -} -.question-page #fmanswer label { - font-size: 13px; -} -.question-page .message { - padding: 5px; - margin: 0px 0 10px 0; -} -.facebook-share.icon, -.twitter-share.icon, -.linkedin-share.icon, -.identica-share.icon { - background: url(../images/socialsprite.png) no-repeat; - display: block; - text-indent: -100em; - height: 25px; - width: 25px; - margin-bottom: 3px; -} -.facebook-share.icon:hover, -.twitter-share.icon:hover, -.linkedin-share.icon:hover, -.identica-share.icon:hover { - opacity: 0.8; - filter: alpha(opacity=80); -} -.facebook-share.icon { - background-position: -26px 0px; -} -.identica-share.icon { - background-position: -78px 0px; -} -.twitter-share.icon { - margin-top: 10px; - background-position: 0px 0px; -} -.linkedin-share.icon { - background-position: -52px 0px; -} -/* -----Content pages, Login, About, FAQ, Users----- */ -.openid-signin, -.meta, -.users-page, -.user-profile-edit-page { - font-size: 13px; - line-height: 1.3; - color: #525252; -} -.openid-signin p, -.meta p, -.users-page p, -.user-profile-edit-page p { - font-size: 13px; - color: #707070; - line-height: 1.3; - font-family: Arial; - color: #525252; - margin-bottom: 12px; -} -.openid-signin h2, -.meta h2, -.users-page h2, -.user-profile-edit-page h2 { - color: #525252; - padding-left: 0px; - font-size: 16px; -} -.openid-signin form, -.meta form, -.users-page form, -.user-profile-edit-page form, -.user-profile-page form { - margin-bottom: 15px; -} -.openid-signin input[type="text"], -.meta input[type="text"], -.users-page input[type="text"], -.user-profile-edit-page input[type="text"], -.user-profile-page input[type="text"], -.openid-signin input[type="password"], -.meta input[type="password"], -.users-page input[type="password"], -.user-profile-edit-page input[type="password"], -.user-profile-page input[type="password"], -.openid-signin select, -.meta select, -.users-page select, -.user-profile-edit-page select, -.user-profile-page select { - border: #cce6ec 3px solid; - height: 25px; - padding-left: 5px; - width: 395px; - font-size: 14px; -} -.openid-signin select, -.meta select, -.users-page select, -.user-profile-edit-page select, -.user-profile-page select { - width: 405px; - height: 30px; -} -.openid-signin textarea, -.meta textarea, -.users-page textarea, -.user-profile-edit-page textarea, -.user-profile-page textarea { - border: #cce6ec 3px solid; - padding-left: 5px; - padding-top: 5px; - width: 395px; - font-size: 14px; -} -.openid-signin input.submit, -.meta input.submit, -.users-page input.submit, -.user-profile-edit-page input.submit, -.user-profile-page input.submit { - background: url(../images/small-button-blue.png) repeat-x top; - border: 0; - color: #4a757f; - font-weight: bold; - font-size: 13px; - font-family: Arial; - height: 26px; - margin: 5px 0px; - width: 100px; - cursor: pointer; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; - text-shadow: 0px 1px 0px #e6f6fa; - -moz-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-box-shadow: 1px 1px 2px #808080; - -moz-box-shadow: 1px 1px 2px #808080; - box-shadow: 1px 1px 2px #808080; -} -.openid-signin input.submit:hover, -.meta input.submit:hover, -.users-page input.submit:hover, -.user-profile-edit-page input.submit:hover, -.user-profile-page input.submit:hover { - background: url(../images/small-button-blue.png) repeat-x bottom; - text-decoration: none; -} -.openid-signin .cancel, -.meta .cancel, -.users-page .cancel, -.user-profile-edit-page .cancel, -.user-profile-page .cancel { - background: url(../images/small-button-cancel.png) repeat-x top !important; - color: #525252 !important; -} -.openid-signin .cancel:hover, -.meta .cancel:hover, -.users-page .cancel:hover, -.user-profile-edit-page .cancel:hover, -.user-profile-page .cancel:hover { - background: url(../images/small-button-cancel.png) repeat-x bottom !important; -} -#email-input-fs, -#local_login_buttons, -#password-fs, -#openid-fs { - margin-top: 10px; -} -#email-input-fs #id_email, -#local_login_buttons #id_email, -#password-fs #id_email, -#openid-fs #id_email, -#email-input-fs #id_username, -#local_login_buttons #id_username, -#password-fs #id_username, -#openid-fs #id_username, -#email-input-fs #id_password, -#local_login_buttons #id_password, -#password-fs #id_password, -#openid-fs #id_password { - font-size: 12px; - line-height: 20px; - height: 20px; - margin: 0px; - padding: 0px 0 0 5px; - border: #cce6ec 3px solid; - width: 200px; -} -#email-input-fs .submit-b, -#local_login_buttons .submit-b, -#password-fs .submit-b, -#openid-fs .submit-b { - background: url(../images/small-button-blue.png) repeat-x top; - border: 0; - color: #4a757f; - font-weight: bold; - font-size: 13px; - font-family: Arial; - height: 24px; - margin-top: -2px; - padding-left: 10px; - padding-right: 10px; - cursor: pointer; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; - text-shadow: 0px 1px 0px #e6f6fa; - -moz-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-box-shadow: 1px 1px 2px #808080; - -moz-box-shadow: 1px 1px 2px #808080; - box-shadow: 1px 1px 2px #808080; -} -#email-input-fs .submit-b:hover, -#local_login_buttons .submit-b:hover, -#password-fs .submit-b:hover, -#openid-fs .submit-b:hover { - background: url(../images/small-button-blue.png) repeat-x bottom; -} -.openid-input { - background: url(../images/openid.gif) no-repeat; - padding-left: 15px; - cursor: pointer; -} -.openid-login-input { - background-position: center left; - background: url(../images/openid.gif) no-repeat 0% 50%; - padding: 5px 5px 5px 15px; - cursor: pointer; - font-family: Trebuchet MS; - font-weight: 300; - font-size: 150%; - width: 500px; -} -.openid-login-submit { - height: 40px; - width: 80px; - line-height: 40px; - cursor: pointer; - border: 1px solid #777; - font-weight: bold; - font-size: 120%; -} -/* People page */ -.tabBar-user { - width: 375px; -} -.user { - padding: 5px; - line-height: 140%; - width: 166px; - border: #eee 1px solid; - margin-bottom: 5px; - border-radius: 3px; - -ms-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - -khtml-border-radius: 3px; -} -.user .user-micro-info { - color: #525252; -} -.user ul { - margin: 0; - list-style-type: none; -} -.user .thumb { - clear: both; - float: left; - margin-right: 4px; - display: inline; -} -/* tags page */ -.tabBar-tags { - width: 270px; - margin-bottom: 15px; -} -/* badges page */ -a.medal { - font-size: 17px; - line-height: 250%; - margin-right: 5px; - color: #333; - text-decoration: none; - background: url(../images/medala.gif) no-repeat; - border-left: 1px solid #EEE; - border-top: 1px solid #EEE; - border-bottom: 1px solid #CCC; - border-right: 1px solid #CCC; - padding: 4px 12px 4px 6px; -} -a:hover.medal { - color: #333; - text-decoration: none; - background: url(../images/medala_on.gif) no-repeat; - border-left: 1px solid #E7E296; - border-top: 1px solid #E7E296; - border-bottom: 1px solid #D1CA3D; - border-right: 1px solid #D1CA3D; -} -#award-list .user { - float: left; - margin: 5px; -} -/* profile page */ -.tabBar-profile { - width: 100%; - margin-bottom: 15px; - float: left; -} -.user-profile-page { - font-size: 13px; - color: #525252; -} -.user-profile-page p { - font-size: 13px; - line-height: 1.3; - color: #525252; -} -.user-profile-page .avatar img { - border: #eee 1px solid; - padding: 5px; -} -.user-profile-page h2 { - padding: 10px 0px 10px 0px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -.user-details { - font-size: 13px; -} -.user-details h3 { - font-size: 16px; -} -.user-about { - background-color: #EEEEEE; - height: 200px; - line-height: 20px; - overflow: auto; - padding: 10px; - width: 90%; -} -.user-about p { - font-size: 13px; -} -.follow-toggle, .submit { - border: 0 !important; - color: #4a757f; - font-weight: bold; - font-size: 12px; - height: 26px; - line-height: 26px; - margin-top: -2px; - font-size: 15px; - cursor: pointer; - font-family: 'Yanone Kaffeesatz', sans-serif; - background: url(../images/small-button-blue.png) repeat-x top; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; - text-shadow: 0px 1px 0px #e6f6fa; - -moz-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-box-shadow: 1px 1px 2px #808080; - -moz-box-shadow: 1px 1px 2px #808080; - box-shadow: 1px 1px 2px #808080; -} -.follow-toggle:hover, .submit:hover { - background: url(../images/small-button-blue.png) repeat-x bottom; - text-decoration: none !important; -} -.follow-toggle .follow { - font-color: #000; - font-style: normal; -} -.follow-toggle .unfollow div.unfollow-red { - display: none; -} -.follow-toggle .unfollow:hover div.unfollow-red { - display: inline; - color: #fff; - font-weight: bold; - color: #A05736; -} -.follow-toggle .unfollow:hover div.unfollow-green { - display: none; -} -.count { - font-family: 'Yanone Kaffeesatz', sans-serif; - font-size: 200%; - font-weight: 700; - color: #777777; -} -.scoreNumber { - font-family: 'Yanone Kaffeesatz', sans-serif; - font-size: 35px; - font-weight: 800; - color: #777; - line-height: 40px; - /*letter-spacing:0px*/ - - margin-top: 3px; -} -.vote-count { - font-family: Arial; - font-size: 160%; - font-weight: 700; - color: #777; -} -.answer-summary { - display: block; - clear: both; - padding: 3px; -} -.answer-votes { - background-color: #EEEEEE; - color: #555555; - float: left; - font-family: Arial; - font-size: 15px; - font-weight: bold; - height: 17px; - padding: 2px 4px 5px; - text-align: center; - text-decoration: none; - width: 20px; - margin-right: 10px; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; -} -.karma-summary { - padding: 5px; - font-size: 13px; -} -.karma-summary h3 { - text-align: center; - font-weight: bold; - padding: 5px; -} -.karma-diagram { - width: 477px; - height: 300px; - float: left; - margin-right: 10px; -} -.karma-details { - float: right; - width: 450px; - height: 250px; - overflow-y: auto; - word-wrap: break-word; -} -.karma-details p { - margin-bottom: 10px; -} -.karma-gained { - font-weight: bold; - background: #eee; - width: 25px; - margin-right: 5px; - color: green; - padding: 3px; - display: block; - float: left; - text-align: center; - border-radius: 3px; - -ms-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - -khtml-border-radius: 3px; -} -.karma-lost { - font-weight: bold; - background: #eee; - width: 25px; - color: red; - padding: 3px; - display: block; - margin-right: 5px; - float: left; - text-align: center; - border-radius: 3px; - -ms-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - -khtml-border-radius: 3px; -} -.submit-row { - margin-bottom: 10px; -} -/*----- Revision pages ----- */ -.revision { - margin: 10px 0 10px 0; - font-size: 13px; - color: #525252; -} -.revision p { - font-size: 13px; - line-height: 1.3; - color: #525252; -} -.revision h3 { - font-family: 'Yanone Kaffeesatz', sans-serif; - font-size: 21px; - padding-left: 0px; -} -.revision .header { - background-color: #F5F5F5; - padding: 5px; - cursor: pointer; -} -.revision .author { - background-color: #e9f3f5; -} -.revision .summary { - padding: 5px 0 10px 0; -} -.revision .summary span { - background-color: #fde785; - padding: 6px; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; - display: inline; - -webkit-box-shadow: 1px 1px 4px #cfb852; - -moz-box-shadow: 1px 1px 4px #cfb852; - box-shadow: 1px 1px 4px #cfb852; -} -.revision .answerbody { - padding: 10px 0 5px 10px; -} -.revision .revision-mark { - width: 150px; - text-align: left; - display: inline-block; - font-size: 11px; - overflow: hidden; -} -.revision .revision-mark .gravatar { - float: left; - margin-right: 4px; - padding-top: 5px; -} -.revision .revision-number { - font-size: 300%; - font-weight: bold; - font-family: sans-serif; -} -del, del .post-tag { - color: #C34719; -} -ins .post-tag, ins p, ins { - background-color: #E6F0A2; -} -/* ----- Red Popup notification ----- */ -.vote-notification { - z-index: 1; - cursor: pointer; - display: none; - position: absolute; - font-family: Arial; - font-size: 14px; - font-weight: normal; - color: white; - background-color: #8e0000; - text-align: center; - padding-bottom: 10px; - -webkit-box-shadow: 0px 2px 4px #370000; - -moz-box-shadow: 0px 2px 4px #370000; - box-shadow: 0px 2px 4px #370000; - border-radius: 4px; - -ms-border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -khtml-border-radius: 4px; -} -.vote-notification h3 { - background: url(../images/notification.png) repeat-x top; - padding: 10px 10px 10px 10px; - font-size: 13px; - margin-bottom: 5px; - border-top: #8e0000 1px solid; - color: #fff; - font-weight: normal; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-topleft: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; -} -.vote-notification a { - color: #fb7321; - text-decoration: underline; - font-weight: bold; -} -/* ----- Footer links , check blocks/footer.html----- */ -#ground { - width: 100%; - clear: both; - border-top: 1px solid #000; - padding: 6px 0 0 0; - background: #16160f; - font-size: 16px; - font-family: 'Yanone Kaffeesatz', sans-serif; -} -#ground p { - margin-bottom: 0; -} -.footer-links { - color: #EEE; - text-align: left; - width: 500px; - float: left; -} -.footer-links a { - color: #e7e8a8; -} -.powered-link { - width: 500px; - float: left; - text-align: left; -} -.powered-link a { - color: #8ebcc7; -} -.copyright { - color: #616161; - width: 450px; - float: right; - text-align: right; -} -.copyright a { - color: #8ebcc7; -} -.copyright img.license-logo { - margin: 6px 0px 20px 10px; - float: right; -} -.notify-me { - float: left; -} -span.text-counter { - margin-right: 20px; -} -span.form-error { - color: #990000; - font-weight: normal; - margin-left: 5px; -} -ul.errorlist { - margin-bottom: 0; -} -p.form-item { - margin: 0px; -} -.deleted { - background: #F4E7E7 none repeat scroll 0 0; -} -/* openid styles */ -.form-row { - line-height: 25px; -} -table.form-as-table { - margin-top: 5px; -} -table.form-as-table ul { - list-style-type: none; - display: inline; -} -table.form-as-table li { - display: inline; -} -table.form-as-table td { - text-align: right; -} -table.form-as-table th { - text-align: left; - font-weight: normal; -} -table.ab-subscr-form { - width: 45em; -} -table.ab-tag-filter-form { - width: 45em; -} -.submit-row { - line-height: 30px; - padding-top: 10px; - display: block; - clear: both; -} -.errors { - line-height: 20px; - color: red; -} -.error { - color: darkred; - margin: 0; - font-size: 10px; -} -label.retag-error { - color: darkred; - padding-left: 5px; - font-size: 10px; -} -.fieldset { - border: none; - margin-top: 10px; - padding: 10px; -} -span.form-error { - color: #990000; - font-size: 90%; - font-weight: normal; - margin-left: 5px; -} -/* -.favorites-count-off { - color: #919191; - float: left; - text-align: center; -} - -.favorites-count { - color: #D4A849; - float: left; - text-align: center; -} -*/ -/* todo: get rid of this in html */ -.favorites-empty { - width: 32px; - height: 45px; - float: left; -} -.user-info-table { - margin-bottom: 10px; - border-spacing: 0; -} -/* todo: remove this hack? */ -.user-stats-table .narrow { - width: 660px; -} -.narrow .summary h3 { - padding: 0px; - margin: 0px; -} -.relativetime { - font-weight: bold; - text-decoration: none; -} -.narrow .tags { - float: left; -} -/* todo: make these more semantic */ -.user-action-1 { - font-weight: bold; - color: #333; -} -.user-action-2 { - font-weight: bold; - color: #CCC; -} -.user-action-3 { - color: #333; -} -.user-action-4 { - color: #333; -} -.user-action-5 { - color: darkred; -} -.user-action-6 { - color: darkred; -} -.user-action-7 { - color: #333; -} -.user-action-8 { - padding: 3px; - font-weight: bold; - background-color: #CCC; - color: #763333; -} -.revision-summary { - background-color: #FFFE9B; - padding: 2px; -} -.question-title-link a { - font-weight: bold; - color: #0077CC; -} -.answer-title-link a { - color: #333; -} -/* todo: make these more semantic */ -.post-type-1 a { - font-weight: bold; -} -.post-type-3 a { - font-weight: bold; -} -.post-type-5 a { - font-weight: bold; -} -.post-type-2 a { - color: #333; -} -.post-type-4 a { - color: #333; -} -.post-type-6 a { - color: #333; -} -.post-type-8 a { - color: #333; -} -.hilite { - background-color: #ff0; -} -.hilite1 { - background-color: #ff0; -} -.hilite2 { - background-color: #f0f; -} -.hilite3 { - background-color: #0ff; -} -.gold, .badge1 { - color: #FFCC00; -} -.silver, .badge2 { - color: #CCCCCC; -} -.bronze, .badge3 { - color: #CC9933; -} -.score { - font-weight: 800; - color: #333; -} -a.comment { - background: #EEE; - color: #993300; - padding: 5px; -} -a.offensive { - color: #999; -} -.message h1 { - padding-top: 0px; - font-size: 15px; -} -.message p { - margin-bottom: 0px; -} -p.space-above { - margin-top: 10px; -} -.warning { - color: red; -} -button::-moz-focus-inner { - padding: 0; - border: none; -} -.submit { - cursor: pointer; - /*letter-spacing:1px;*/ - - background-color: #D4D0C8; - height: 30px; - border: 1px solid #777777; - /* width:100px; */ - - font-weight: bold; - font-size: 120%; -} -.submit:hover { - text-decoration: underline; -} -.submit.small { - margin-right: 5px; - height: 20px; - font-weight: normal; - font-size: 12px; - padding: 1px 5px; -} -.submit.small:hover { - text-decoration: none; -} -.question-page a.submit { - display: -moz-inline-stack; - display: inline-block; - line-height: 30px; - padding: 0 5px; - *display: inline; -} -.noscript { - position: fixed; - top: 0px; - left: 0px; - width: 100%; - z-index: 100; - padding: 5px 0; - text-align: center; - font-family: sans-serif; - font-size: 120%; - font-weight: Bold; - color: #FFFFFF; - background-color: #AE0000; -} -.big { - font-size: 14px; -} -.strong { - font-weight: bold; -} -.orange { - /* used in django.po */ - - color: #d64000; - font-weight: bold; -} -.grey { - color: #808080; -} -.about div { - padding: 10px 5px 10px 5px; - border-top: 1px dashed #aaaaaa; -} -.highlight { - background-color: #FFF8C6; -} -.nomargin { - margin: 0; -} -.margin-bottom { - margin-bottom: 10px; -} -.margin-top { - margin-top: 10px; -} -.inline-block { - display: inline-block; -} -.action-status { - margin: 0; - border: none; - text-align: center; - line-height: 10px; - font-size: 12px; - padding: 0; -} -.action-status span { - padding: 3px 5px 3px 5px; - background-color: #fff380; - /* nice yellow */ - - font-weight: normal; - -moz-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-border-radius: 5px; -} -.list-table td { - vertical-align: top; -} -/* these need to go */ -table.form-as-table .errorlist { - display: block; - margin: 0; - padding: 0 0 0 5px; - text-align: left; - font-size: 10px; - color: darkred; -} -table.form-as-table input { - display: inline; - margin-left: 4px; -} -table.form-as-table th { - vertical-align: bottom; - padding-bottom: 4px; -} -.form-row-vertical { - margin-top: 8px; - display: block; -} -.form-row-vertical label { - margin-bottom: 3px; - display: block; -} -/* above stuff needs to go */ -.text-align-right { - text-align: center; -} -ul.form-horizontal-rows { - list-style: none; - margin: 0; -} -ul.form-horizontal-rows li { - position: relative; - height: 40px; -} -ul.form-horizontal-rows label { - display: inline-block; -} -ul.form-horizontal-rows ul.errorlist { - list-style: none; - color: darkred; - font-size: 10px; - line-height: 10px; - position: absolute; - top: 2px; - left: 180px; - text-align: left; - margin: 0; -} -ul.form-horizontal-rows ul.errorlist li { - height: 10px; -} -ul.form-horizontal-rows label { - position: absolute; - left: 0px; - bottom: 6px; - margin: 0px; - line-height: 12px; - font-size: 12px; -} -ul.form-horizontal-rows li input { - position: absolute; - bottom: 0px; - left: 180px; - margin: 0px; -} -.narrow .summary { - float: left; -} -.user-profile-tool-links { - font-weight: bold; - vertical-align: top; -} -ul.post-tags { - margin-left: 3px; -} -ul.post-tags li { - margin-top: 4px; - margin-bottom: 3px; -} -ul.post-retag { - margin-bottom: 0px; - margin-left: 5px; -} -#question-controls .tags { - margin: 0 0 3px 0; -} -#tagSelector { - padding-bottom: 2px; - margin-bottom: 0; -} -#related-tags { - padding-left: 3px; -} -#hideIgnoredTagsControl { - margin: 5px 0 0 0; -} -#hideIgnoredTagsControl label { - font-size: 12px; - color: #666; -} -#hideIgnoredTagsCb { - margin: 0 2px 0 1px; -} -#recaptcha_widget_div { - width: 318px; - float: left; - clear: both; -} -p.signup_p { - margin: 20px 0px 0px 0px; -} -.simple-subscribe-options ul { - list-style: none; - list-style-position: outside; - margin: 0; -} -/* a workaround to set link colors correctly */ -.wmd-preview a { - color: #1b79bd; -} -.wmd-preview li { - margin-bottom: 7px; - font-size: 14px; -} -.search-result-summary { - font-weight: bold; - font-size: 18px; - line-height: 22px; - margin: 0px 0px 0px 0px; - padding: 2px 0 0 0; - float: left; -} -.faq-rep-item { - text-align: right; - padding-right: 5px; -} -.user-info-table .gravatar { - margin: 0; -} -#responses { - clear: both; - line-height: 18px; - margin-bottom: 15px; -} -#responses div.face { - float: left; - text-align: center; - width: 54px; - padding: 3px; - overflow: hidden; -} -.response-parent { - margin-top: 18px; -} -.response-parent strong { - font-size: 20px; -} -.re { - min-height: 57px; - clear: both; - margin-top: 10px; -} -#responses input { - float: left; -} -#re_tools { - margin-bottom: 10px; -} -#re_sections { - margin-bottom: 6px; -} -#re_sections .on { - font-weight: bold; -} -.avatar-page ul { - list-style: none; -} -.avatar-page li { - display: inline; -} -.user-profile-page .avatar p { - margin-bottom: 0px; -} -.user-profile-page .tabBar a#stats { - margin-left: 0; -} -.user-profile-page img.gravatar { - margin: 2px 0 3px 0; -} -.user-profile-page h3 { - padding: 0; - margin-top: -3px; -} -.userList { - font-size: 13px; -} -img.flag { - border: 1px solid #eee; - vertical-align: text-top; -} -.main-page img.flag { - vertical-align: text-bottom; -} -/* Pretty printing styles. Used with prettify.js. */ -a.edit { - padding-left: 3px; - color: #145bff; -} -.str { - color: #080; -} -.kwd { - color: #008; -} -.com { - color: #800; -} -.typ { - color: #606; -} -.lit { - color: #066; -} -.pun { - color: #660; -} -.pln { - color: #000; -} -.tag { - color: #008; -} -/* name conflict here */ -.atn { - color: #606; -} -.atv { - color: #080; -} -.dec { - color: #606; -} -pre.prettyprint { - clear: both; - padding: 3px; - border: 0px solid #888; -} -@media print { - .str { - color: #060; - } - .kwd { - color: #006; - font-weight: bold; - } - .com { - color: #600; - font-style: italic; - } - .typ { - color: #404; - font-weight: bold; - } - .lit { - color: #044; - } - .pun { - color: #440; - } - .pln { - color: #000; - } - .tag { - color: #006; - font-weight: bold; - } - .atn { - color: #404; - } - .atv { - color: #060; - } -} -#leading-sidebar { - float: left; -} - -a.re_expand{ - color: #616161; - text-decoration:none; -} - -a.re_expand .re_content{ - display:none; - margin-left:77px; -} \ No newline at end of file +@import url(jquery.autocomplete.css);.button-style-hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}body{background:#FFF;font-size:14px;line-height:150%;margin:0;padding:0;color:#000;font-family:Arial}div{margin:0 auto;padding:0}h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p{margin:0;padding:0;border:0}label{vertical-align:middle}hr{border:0;border-top:1px dashed #ccccce}input,select{vertical-align:middle;font-family:Trebuchet MS,"segoe ui",Helvetica,Tahoma,Verdana,MingLiu,PMingLiu,Arial,sans-serif;margin-left:0}textarea:focus,input:focus{outline:0}iframe{border:0}p{font-size:14px;line-height:140%;margin-bottom:6px}a{color:#1b79bd;text-decoration:none;cursor:pointer}h2{font-size:21px;padding:3px 0 3px 5px}h3{font-size:19px;padding:3px 0 3px 5px}ul{list-style:disc;margin-left:20px;padding-left:0;margin-bottom:1em}ol{list-style:decimal;margin-left:30px;margin-bottom:1em;padding-left:0}td ul{vertical-align:middle}li input{margin:3px 3px 4px 3px}pre{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%;margin-bottom:10px;background-color:#f5f5f5;padding-left:5px;padding-top:5px;padding-bottom:20px!ie7}code{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%}blockquote{margin-bottom:10px;margin-right:15px;padding:10px 0 1px 10px;background-color:#f5f5f5}* html .clearfix,* html .paginator{height:1;overflow:visible}+html .clearfix,+html .paginator{min-height:1%}.clearfix:after,.paginator:after{clear:both;content:".";display:block;height:0;visibility:hidden}.badges a{color:#763333;text-decoration:underline}a:hover{text-decoration:underline}.badge-context-toggle.active{cursor:pointer;text-decoration:underline}h1{font-size:24px;padding:10px 0 5px 0}body.user-messages{margin-top:2.4em}.left{float:left}.right{float:right}.clean{clear:both}.center{margin:0 auto;padding:0}.notify{position:fixed;top:0;left:0;width:100%;z-index:100;padding:0;text-align:center;background-color:#f5dd69;border-top:#fff 1px solid;font-family:'Yanone Kaffeesatz',sans-serif}.notify p.notification{margin-top:6px;margin-bottom:6px;font-size:16px;color:#424242}#closeNotify{position:absolute;right:5px;top:7px;color:#735005;text-decoration:none;line-height:18px;background:-6px -5px url(../images/sprites.png) no-repeat;cursor:pointer;width:20px;height:20px}#closeNotify:hover{background:-26px -5px url(../images/sprites.png) no-repeat}#header{margin-top:0;background:#16160f;font-family:'Yanone Kaffeesatz',sans-serif}.content-wrapper{width:960px;margin:auto;position:relative}#logo img{padding:5px 0 5px 0;height:75px;width:auto;float:left}#userToolsNav{height:20px;padding-bottom:5px}#userToolsNav a{height:35px;text-align:right;margin-left:20px;text-decoration:underline;color:#d0e296;font-size:16px}#userToolsNav a:first-child{margin-left:0}#userToolsNav a#ab-responses{margin-left:3px}#userToolsNav .user-info,#userToolsNav .user-micro-info{color:#b5b593}#userToolsNav a img{vertical-align:middle;margin-bottom:2px}#userToolsNav .user-info a{margin:0;text-decoration:none}#metaNav{float:right}#metaNav a{color:#e2e2ae;padding:0 0 0 35px;height:25px;line-height:30px;margin:5px 0 0 10px;font-size:18px;font-weight:100;text-decoration:none;display:block;float:left}#metaNav a:hover{text-decoration:underline}#metaNav a.on{font-weight:bold;color:#FFF;text-decoration:none}#metaNav a.special{font-size:18px;color:#b02b2c;font-weight:bold;text-decoration:none}#metaNav a.special:hover{text-decoration:underline}#metaNav #navTags{background:-50px -5px url(../images/sprites.png) no-repeat}#metaNav #navUsers{background:-125px -5px url(../images/sprites.png) no-repeat}#metaNav #navBadges{background:-210px -5px url(../images/sprites.png) no-repeat}#header.with-logo #userToolsNav{position:absolute;bottom:0;right:0}#header.without-logo #userToolsNav{float:left;margin-top:7px}#header.without-logo #metaNav{margin-bottom:7px}#secondaryHeader{height:55px;background:#e9e9e1;border-bottom:#d3d3c2 1px solid;border-top:#fcfcfc 1px solid;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif}#secondaryHeader #homeButton{border-right:#afaf9e 1px solid;background:-6px -36px url(../images/sprites.png) no-repeat;height:55px;width:43px;display:block;float:left}#secondaryHeader #homeButton:hover{background:-51px -36px url(../images/sprites.png) no-repeat}#secondaryHeader #scopeWrapper{width:688px;float:left}#secondaryHeader #scopeWrapper a{display:block;float:left}#secondaryHeader #scopeWrapper .scope-selector{font-size:21px;color:#5a5a4b;height:55px;line-height:55px;margin-left:24px}#secondaryHeader #scopeWrapper .on{background:url(../images/scopearrow.png) no-repeat center bottom}#secondaryHeader #scopeWrapper .ask-message{font-size:24px}#searchBar{display:inline-block;background-color:#fff;width:412px;border:1px solid #c9c9b5;float:right;height:42px;margin:6px 0 0 15px}#searchBar .searchInput,#searchBar .searchInputCancelable{font-size:30px;height:40px;font-weight:300;background:#FFF;border:0;color:#484848;padding-left:10px;font-family:Arial;vertical-align:middle}#searchBar .searchInput{width:352px}#searchBar .searchInputCancelable{width:317px}#searchBar .logoutsearch{width:337px}#searchBar .searchBtn{font-size:10px;color:#666;background-color:#eee;height:42px;border:#FFF 1px solid;line-height:22px;text-align:center;float:right;margin:0;width:48px;background:-98px -36px url(../images/sprites.png) no-repeat;cursor:pointer}#searchBar .searchBtn:hover{background:-146px -36px url(../images/sprites.png) no-repeat}#searchBar .cancelSearchBtn{font-size:30px;color:#ce8888;background:#fff;height:42px;border:0;border-left:#deded0 1px solid;text-align:center;width:35px;cursor:pointer}#searchBar .cancelSearchBtn:hover{color:#d84040}body.anon #searchBar{width:500px}body.anon #searchBar .searchInput{width:440px}body.anon #searchBar .searchInputCancelable{width:405px}#askButton{line-height:44px;margin-top:6px;float:right;text-transform:uppercase;width:200px;height:42px;font-size:23px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}#askButton:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#ContentLeft{width:730px;float:left;position:relative;padding-bottom:10px}#ContentRight{width:200px;float:right;padding:0 0 10px 0}#ContentFull{float:left;width:960px}.box{background:#fff;padding:4px 0 10px 0;width:200px}.box p{margin-bottom:4px}.box p.info-box-follow-up-links{text-align:right;margin:0}.box h2{padding-left:0;background:#eceeeb;height:30px;line-height:30px;text-align:right;font-size:18px!important;font-weight:normal;color:#656565;padding-right:10px;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif}.box h3{color:#4a757f;font-size:18px;text-align:left;font-weight:normal;font-family:'Yanone Kaffeesatz',sans-serif;padding-left:0}.box .contributorback{background:#eceeeb url(../images/contributorsback.png) no-repeat center left}.box label{color:#707070;font-size:15px;display:block;float:right;text-align:left;font-family:'Yanone Kaffeesatz',sans-serif;width:80px;margin-right:18px}.box #displayTagFilterControl label{width:160px}.box ul{margin-left:22px}.box li{list-style-type:disc;font-size:13px;line-height:20px;margin-bottom:10px;color:#707070}.box ul.tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}.box #displayTagFilterControl p label{color:#707070;font-size:15px}.box .inputs #interestingTagInput,.box .inputs #ignoredTagInput{width:153px;padding-left:5px;border:#c9c9b5 1px solid;height:25px}.box .inputs #interestingTagAdd,.box .inputs #ignoredTagAdd{border:0;font-weight:bold;margin-top:-2px;width:30px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0 1px 0 #e6f6fa;-moz-text-shadow:0 1px 0 #e6f6fa;-webkit-text-shadow:0 1px 0 #e6f6fa}.box .inputs #interestingTagAdd:hover,.box .inputs #ignoredTagAdd:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box img.gravatar{margin:1px}.box a.followed,.box a.follow{line-height:34px;border:0;font-weight:normal;margin-top:3px;display:block;width:120px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin:0 auto;padding:0}.box a.followed:hover,.box a.follow:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box a.followed div.unfollow{display:none}.box a.followed:hover div{display:none}.box a.followed:hover div.unfollow{display:inline;color:#a05736}.box .favorite-number{padding:5px 0 0 5px;font-size:100%;font-family:Arial;font-weight:bold;color:#777;text-align:center}.box .notify-sidebar #question-subscribe-sidebar{margin:7px 0 0 3px}.statsWidget p{color:#707070;font-size:16px;border-bottom:#ccc 1px solid;font-size:13px}.statsWidget p strong{float:right;padding-right:10px}.questions-related{word-wrap:break-word}.questions-related p{line-height:20px;padding:4px 0 4px 0;font-size:16px;font-weight:normal;border-bottom:#ccc 1px solid}.questions-related a{font-size:13px}#tips li{color:#707070;font-size:13px;list-style-image:url(../images/tips.png)}#tips a{font-size:16px}#markdownHelp li{color:#707070;font-size:13px}#markdownHelp a{font-size:16px}.tabBar{background-color:#eff5f6;height:30px;margin-bottom:3px;margin-top:3px;float:right;font-family:Georgia,serif;font-size:16px;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.tabBar h2{float:left}.tabsA,.tabsC{float:right;position:relative;display:block;height:20px}.tabsA{float:right}.tabsC{float:left}.tabsA a,.tabsC a{border-left:1px solid #d0e1e4;color:#7ea9b3;display:block;float:left;height:20px;line-height:20px;padding:4px 7px 4px 7px;text-decoration:none}.tabsA a.on,.tabsC a.on,.tabsA a:hover,.tabsC a:hover{color:#4a757f}.tabsA .label,.tabsC .label{float:left;color:#646464;margin-top:4px;margin-right:5px}.main-page .tabsA .label{margin-left:8px}.tabsB a{background:#eee;border:1px solid #eee;color:#777;display:block;float:left;height:22px;line-height:28px;margin:5px 0 0 4px;padding:0 11px 0 11px;text-decoration:none}.tabsC .first{border:0}.rss{float:right;font-size:16px;color:#f57900;margin:5px 0 3px 7px;width:52px;padding-left:2px;padding-top:3px;background:#fff url(../images/feed-icon-small.png) no-repeat center right;float:right;font-family:Georgia,serif;font-size:16px}.rss:hover{color:#f4a731!important}#questionCount{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;margin-bottom:8px;padding-top:6px;font-family:'Yanone Kaffeesatz',sans-serif}#listSearchTags{float:left;margin-top:3px;color:#707070;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}ul#searchTags{margin-left:10px;float:right;padding-top:2px}.search-tips{font-size:16px;line-height:17px;color:#707070;margin:5px 0 10px 0;padding:0;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.search-tips a{text-decoration:underline;color:#1b79bd}#question-list{float:left;position:relative;background-color:#FFF;padding:0;width:100%}.short-summary{position:relative;filter:inherit;padding:10px;border-bottom:1px solid #dddbce;margin-bottom:1px;overflow:hidden;width:710px;float:left;background:url(../images/summary-background.png) repeat-x}.short-summary h2{font-size:24px;font-weight:normal;line-height:26px;padding-left:0;margin-bottom:6px;display:block;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary a{color:#464646}.short-summary .userinfo{text-align:right;line-height:16px;font-family:Arial;padding-right:4px}.short-summary .userinfo .relativetime,.short-summary span.anonymous{font-size:11px;clear:both;font-weight:normal;color:#555}.short-summary .userinfo a{font-weight:bold;font-size:11px}.short-summary .counts{float:right;margin:4px 0 0 5px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .item-count{padding:0 5px 0 5px;font-size:25px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .votes div,.short-summary .counts .views div,.short-summary .counts .answers div,.short-summary .counts .favorites div{margin-top:3px;font-size:14px;line-height:14px;color:#646464}.short-summary .tags{margin-top:0}.short-summary .votes,.short-summary .answers,.short-summary .favorites,.short-summary .views{text-align:center;margin:0 3px;padding:8px 2px 0 2px;width:51px;float:right;height:44px;border:#dbdbd4 1px solid}.short-summary .votes{background:url(../images/vote-background.png) repeat-x}.short-summary .answers{background:url(../images/answers-background.png) repeat-x}.short-summary .views{background:url(../images/view-background.png) repeat-x}.short-summary .no-votes .item-count{color:#b1b5b6}.short-summary .some-votes .item-count{color:#4a757f}.short-summary .no-answers .item-count{color:#b1b5b6}.short-summary .some-answers .item-count{color:#eab243}.short-summary .no-views .item-count{color:#b1b5b6}.short-summary .some-views .item-count{color:#d33f00}.short-summary .accepted .item-count{background:url(../images/accept.png) no-repeat top right;display:block;text-align:center;width:40px;color:#eab243}.short-summary .some-favorites .item-count{background:#338333;color:#d0f5a9}.short-summary .no-favorites .item-count{background:#eab243;color:yellow}.evenMore{font-size:13px;color:#707070;padding:15px 0 10px 0;clear:both}.evenMore a{text-decoration:underline;color:#1b79bd}.pager{margin-top:10px;margin-bottom:16px}.pagesize{margin-top:10px;margin-bottom:16px;float:right}.paginator{padding:5px 0 10px 0;font-size:13px;margin-bottom:10px}.paginator .prev a,.paginator .prev a:visited,.paginator .next a,.paginator .next a:visited{background-color:#fff;color:#777;padding:2px 4px 3px 4px}.paginator a{color:#7ea9b3}.paginator .prev{margin-right:.5em}.paginator .next{margin-left:.5em}.paginator .page a,.paginator .page a:visited,.paginator .curr{padding:.25em;background-color:#fff;margin:0 .25em;color:#ff}.paginator .curr{background-color:#8ebcc7;color:#fff;font-weight:bold}.paginator .next a,.paginator .prev a{color:#7ea9b3}.paginator .page a:hover,.paginator .curr a:hover,.paginator .prev a:hover,.paginator .next a:hover{color:#8c8c8c;background-color:#e1e1e1;text-decoration:none}.paginator .text{color:#777;padding:.3em}.paginator .paginator-container-left{padding:5px 0 10px 0}.tag-size-1{font-size:12px}.tag-size-2{font-size:13px}.tag-size-3{font-size:14px}.tag-size-4{font-size:15px}.tag-size-5{font-size:16px}.tag-size-6{font-size:17px}.tag-size-7{font-size:18px}.tag-size-8{font-size:19px}.tag-size-9{font-size:20px}.tag-size-10{font-size:21px}ul.tags,ul.tags.marked-tags,ul#related-tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}ul.tags li{float:left;display:block;margin:0 8px 0 0;padding:0;height:20px}.wildcard-tags{clear:both}ul.tags.marked-tags li,.wildcard-tags ul.tags li{margin-bottom:5px}#tagSelector div.inputs{clear:both;float:none;margin-bottom:10px}.tags-page ul.tags li,ul#ab-user-tags li{width:160px;margin:5px}ul#related-tags li{margin:0 5px 8px 0;float:left;clear:left}.tag-left{cursor:pointer;display:block;float:left;height:17px;margin:0 5px 0 0;padding:0;-webkit-box-shadow:0 0 5px #d3d6d7;-moz-box-shadow:0 0 5px #d3d6d7;box-shadow:0 0 5px #d3d6d7}.tag-right{background:#f3f6f6;border:#fff 1px solid;border-top:#fff 2px solid;outline:#cfdbdb 1px solid;display:block;float:left;height:17px;line-height:17px;font-weight:normal;font-size:11px;padding:0 8px 0 8px;text-decoration:none;text-align:center;white-space:nowrap;vertical-align:middle;font-family:Arial;color:#717179}.deletable-tag{margin-right:3px;white-space:nowrap;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px}.tags a.tag-right,.tags span.tag-right{color:#585858;text-decoration:none}.tags a:hover{color:#1a1a1a}.users-page h1,.tags-page h1{float:left}.main-page h1{margin-right:5px}.delete-icon{margin-top:-1px;float:left;height:21px;width:18px;display:block;line-height:20px;text-align:center;background:#bbcdcd;cursor:default;color:#fff;border-top:#cfdbdb 1px solid;font-family:Arial;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px;text-shadow:0 1px 0 #7ea0a0;-moz-text-shadow:0 1px 0 #7ea0a0;-webkit-text-shadow:0 1px 0 #7ea0a0}.delete-icon:hover{background:#b32f2f}.tag-number{font-weight:normal;float:left;font-size:16px;color:#5d5d5d}.badges .tag-number{float:none;display:inline;padding-right:15px}.section-title{color:#7ea9b3;font-family:'Yanone Kaffeesatz',sans-serif;font-weight:bold;font-size:24px}#fmask{margin-bottom:30px;width:100%}#askFormBar{display:inline-block;padding:4px 7px 5px 0;margin-top:0}#askFormBar p{margin:0 0 5px 0;font-size:14px;color:#525252;line-height:1.4}#askFormBar .questionTitleInput{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px}.ask-page div#question-list,.edit-question-page div#question-list{float:none;border-bottom:#f0f0ec 1px solid;float:left;margin-bottom:10px}.ask-page div#question-list a,.edit-question-page div#question-list a{line-height:30px}.ask-page div#question-list h2,.edit-question-page div#question-list h2{font-size:13px;padding-bottom:0;color:#1b79bd;border-top:#f0f0ec 1px solid;border-left:#f0f0ec 1px solid;height:30px;line-height:30px;font-weight:normal}.ask-page div#question-list span,.edit-question-page div#question-list span{width:28px;height:26px;line-height:26px;text-align:center;margin-right:10px;float:left;display:block;color:#fff;background:#b8d0d5;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.ask-page label,.edit-question-page label{color:#525252;font-size:13px}.ask-page #id_tags,.edit-question-page #id_tags{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.title-desc{color:#707070;font-size:13px}#fmanswer input.submit,.ask-page input.submit,.edit-question-page input.submit{float:left;font-weight:normal;margin-top:3px;width:160px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin-right:7px}#fmanswer input.submit:hover,.ask-page input.submit:hover,.edit-question-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#editor{font-size:100%;min-height:200px;line-height:18px;margin:0;border-left:#cce6ec 3px solid;border-bottom:#cce6ec 3px solid;border-right:#cce6ec 3px solid;border-top:0;padding:10px;margin-bottom:10px;width:710px}@media screen and (-webkit-min-device-pixel-ratio:0){#editor{width:717px}}#id_title{width:100%}.wmd-preview{margin:3px 0 5px 0;padding:6px;background-color:#f5f5f5;min-height:20px;overflow:auto;font-size:13px;font-family:Arial}.wmd-preview p{margin-bottom:14px;line-height:1.4;font-size:14px}.wmd-preview pre{background-color:#e7f1f8}.wmd-preview blockquote{background-color:#eee}.wmd-preview IMG{max-width:600px}.preview-toggle{width:100%;color:#b6a475;text-align:left}.preview-toggle span:hover{cursor:pointer}.after-editor{margin-top:15px;margin-bottom:15px}.checkbox{margin-left:5px;font-weight:normal;cursor:help}.question-options{margin-top:1px;color:#666;line-height:13px;margin-bottom:5px}.question-options label{vertical-align:text-bottom}.edit-content-html{border-top:1px dotted #d8d2a9;border-bottom:1px dotted #d8d2a9;margin:5px 0 5px 0}.edit-question-page,#fmedit,.wmd-preview{color:#525252}.edit-question-page #id_revision,#fmedit #id_revision,.wmd-preview #id_revision{font-size:14px;margin-top:5px;margin-bottom:5px}.edit-question-page #id_title,#fmedit #id_title,.wmd-preview #id_title{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px;margin-bottom:10px}.edit-question-page #id_summary,#fmedit #id_summary,.wmd-preview #id_summary{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.edit-question-page .title-desc,#fmedit .title-desc,.wmd-preview .title-desc{margin-bottom:10px}.question-page h1{padding-top:0;font-family:'Yanone Kaffeesatz',sans-serif}.question-page h1 a{color:#464646;font-size:30px;font-weight:normal;line-height:1}.question-page p.rss{float:none;clear:both;padding:3px 0 0 23px;font-size:15px;width:110px;background-position:center left;margin-left:0!important}.question-page p.rss a{font-family:'Yanone Kaffeesatz',sans-serif;vertical-align:top}.question-page .question-content{float:right;width:682px;margin-bottom:10px}.question-page #question-table{float:left;border-top:#f0f0f0 1px solid}.question-page #question-table,.question-page .answer-table{margin:6px 0 6px 0;border-spacing:0;width:670px;padding-right:10px}.question-page .answer-table{margin-top:0;border-bottom:1px solid #d4d4d4;float:right}.question-page .answer-table td,.question-page #question-table td{width:20px;vertical-align:top}.question-page .question-body,.question-page .answer-body{overflow:auto;margin-top:10px;font-family:Arial;color:#4b4b4b}.question-page .question-body p,.question-page .answer-body p{margin-bottom:14px;line-height:1.4;font-size:14px;padding:0 5px 5px 0}.question-page .question-body a,.question-page .answer-body a{color:#1b79bd}.question-page .question-body li,.question-page .answer-body li{margin-bottom:7px}.question-page .question-body IMG,.question-page .answer-body IMG{max-width:600px}.question-page .post-update-info-container{float:right;width:175px}.question-page .post-update-info{background:#fff url(../images/background-user-info.png) repeat-x bottom;float:right;font-size:9px;font-family:Arial;width:158px;padding:4px;margin:0 0 5px 5px;line-height:14px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:0 2px 1px #bfbfbf;-moz-box-shadow:0 2px 1px #bfbfbf;box-shadow:0 2px 1px #bfbfbf}.question-page .post-update-info p{line-height:13px;font-size:11px;margin:0 0 2px 1px;padding:0}.question-page .post-update-info a{color:#444}.question-page .post-update-info .gravatar{float:left;margin-right:4px}.question-page .post-update-info p.tip{color:#444;line-height:13px;font-size:10px}.question-page .post-controls{font-size:11px;line-height:12px;min-width:200px;padding-left:5px;text-align:right;clear:left;float:right;margin-top:10px;margin-bottom:8px}.question-page .post-controls a{color:#777;padding:0 7px 3px 18px;cursor:pointer;border:0;font-size:12px;font-family:Arial;text-decoration:none;height:18px;display:block;float:right;line-height:18px;margin-top:-2px;margin-left:4px}.question-page .post-controls a:hover{background-color:#f5f0c9;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.question-page .post-controls .sep{color:#ccc;float:right;height:18px;font-size:18px}.question-page .post-controls .question-delete,.question-page .answer-controls .question-delete{background:url(../images/delete.png) no-repeat center left;padding-left:11px}.question-page .post-controls .question-flag,.question-page .answer-controls .question-flag{background:url(../images/flag.png) no-repeat center left}.question-page .post-controls .question-edit,.question-page .answer-controls .question-edit{background:url(../images/edit2.png) no-repeat center left}.question-page .post-controls .question-retag,.question-page .answer-controls .question-retag{background:url(../images/retag.png) no-repeat center left}.question-page .post-controls .question-close,.question-page .answer-controls .question-close{background:url(../images/close.png) no-repeat center left}.question-page .post-controls .permant-link,.question-page .answer-controls .permant-link{background:url(../images/link.png) no-repeat center left}.question-page .tabBar{width:100%}.question-page #questionCount{float:left;font-family:'Yanone Kaffeesatz',sans-serif;line-height:15px}.question-page .question-img-upvote,.question-page .question-img-downvote,.question-page .answer-img-upvote,.question-page .answer-img-downvote{width:25px;height:20px;cursor:pointer}.question-page .question-img-upvote,.question-page .answer-img-upvote{background:url(../images/vote-arrow-up-new.png) no-repeat}.question-page .question-img-downvote,.question-page .answer-img-downvote{background:url(../images/vote-arrow-down-new.png) no-repeat}.question-page .question-img-upvote:hover,.question-page .question-img-upvote.on,.question-page .answer-img-upvote:hover,.question-page .answer-img-upvote.on{background:url(../images/vote-arrow-up-on-new.png) no-repeat}.question-page .question-img-downvote:hover,.question-page .question-img-downvote.on,.question-page .answer-img-downvote:hover,.question-page .answer-img-downvote.on{background:url(../images/vote-arrow-down-on-new.png) no-repeat}.question-page #fmanswer_button{margin:8px 0}.question-page .question-img-favorite:hover{background:url(../images/vote-favorite-on.png)}.question-page div.comments{padding:0}.question-page #comment-title{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.question-page .comments{font-size:12px;clear:both}.question-page .comments div.controls{clear:both;float:left;width:100%;margin:3px 0 20px 5px}.question-page .comments .controls a{color:#988e4c;padding:0 3px 2px 22px;font-family:Arial;font-size:13px;background:url(../images/comment.png) no-repeat center left}.question-page .comments .controls a:hover{background-color:#f5f0c9;text-decoration:none}.question-page .comments .button{color:#988e4c;font-size:11px;padding:3px;cursor:pointer}.question-page .comments a{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments form.post-comments{margin:3px 26px 0 42px}.question-page .comments form.post-comments textarea{font-size:13px;line-height:1.3}.question-page .comments textarea{height:42px;width:100%;margin:7px 0 5px 1px;font-family:Arial;outline:0;overflow:auto;font-size:12px;line-height:140%;padding-left:2px;padding-top:3px;border:#cce6ec 3px solid}@media screen and (-webkit-min-device-pixel-ratio:0){textarea{padding-left:3px!important}}.question-page .comments input{margin-left:10px;margin-top:1px;vertical-align:top;width:100px}.question-page .comments button{line-height:25px;margin-bottom:5px;width:100px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold}.question-page .comments button:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.question-page .comments .counter{display:inline-block;width:245px;float:right;color:#b6a475!important;vertical-align:top;font-family:Arial;float:right;text-align:right}.question-page .comments .comment{border-bottom:1px solid #edeeeb;clear:both;margin:0;margin-top:8px;padding-bottom:4px;overflow:auto;font-family:Arial;font-size:11px;min-height:25px;background:#fff url(../images/comment-background.png) bottom repeat-x;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.question-page .comments div.comment:hover{background-color:#efefef}.question-page .comments a.author{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments a.author:hover{text-decoration:underline}.question-page .comments span.delete-icon{background:url(../images/close-small.png) no-repeat;border:0;width:14px;height:14px}.question-page .comments span.delete-icon:hover{border:#bc564b 2px solid;border-radius:10px;-ms-border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;margin:-3px 0 0 -2px}.question-page .comments .content{margin-bottom:7px}.question-page .comments .comment-votes{float:left;width:37px;line-height:130%;padding:6px 5px 6px 3px}.question-page .comments .comment-body{line-height:1.3;margin:3px 26px 0 46px;padding:5px 3px;color:#666;font-size:13px}.question-page .comments .comment-body .edit{padding-left:6px}.question-page .comments .comment-body p{font-size:13px;line-height:1.3;margin-bottom:3px;padding:0}.question-page .comments .comment-delete{float:right;width:14px;line-height:130%;padding:8px 6px}.question-page .comments .upvote{margin:0;padding-right:17px;padding-top:2px;text-align:right;height:20px;font-size:13px;font-weight:bold;color:#777}.question-page .comments .upvote.upvoted{color:#d64000}.question-page .comments .upvote.hover{background:url(../images/go-up-grey.png) no-repeat;background-position:right 1px}.question-page .comments .upvote:hover{background:url(../images/go-up-orange.png) no-repeat;background-position:right 1px}.question-page .comments .help-text{float:right;text-align:right;color:gray;margin-bottom:0;margin-top:0;line-height:50%}.question-page #questionTools{font-size:22px;margin-top:11px;text-align:left}.question-page .question-status{margin-top:10px;margin-bottom:15px;padding:20px;background-color:#fef7cc;text-align:center;border:#e1c04a 1px solid}.question-page .question-status h3{font-size:20px;color:#707070;font-weight:normal}.question-page .vote-buttons{float:left;text-align:center;padding-top:2px;margin:10px 10px 0 3px}.question-page .vote-buttons IMG{cursor:pointer}.question-page .vote-number{font-family:'Yanone Kaffeesatz',sans-serif;padding:0 0 5px 0;font-size:25px;font-weight:bold;color:#777}.question-page .vote-buttons .notify-sidebar{text-align:left;width:120px}.question-page .vote-buttons .notify-sidebar label{vertical-align:top}.question-page .tabBar-answer{margin-bottom:15px;padding-left:7px;width:723px;margin-top:10px}.question-page .answer .vote-buttons{float:left}.question-page .accepted-answer{background-color:#f7fecc;border-bottom-color:#9bd59b}.question-page .accepted-answer .vote-buttons{width:27px;margin-right:10px;margin-top:10px}.question-page .answer .post-update-info a{color:#444}.question-page .answered{background:#CCC;color:#999}.question-page .answered-accepted{background:#dcdcdc;color:#763333}.question-page .answered-accepted strong{color:#e1e818}.question-page .answered-by-owner{background:#f1f1ff}.question-page .answered-by-owner .comments .button{background-color:#e6ecff}.question-page .answered-by-owner .comments{background-color:#e6ecff}.question-page .answered-by-owner .vote-buttons{margin-right:10px}.question-page .answer-img-accept:hover{background:url(../images/vote-accepted-on.png)}.question-page .answer-body a{color:#1b79bd}.question-page .answer-body li{margin-bottom:.7em}.question-page #fmanswer{color:#707070;line-height:1.2;margin-top:10px}.question-page #fmanswer h2{font-family:'Yanone Kaffeesatz',sans-serif;color:#7ea9b3;font-size:24px}.question-page #fmanswer label{font-size:13px}.question-page .message{padding:5px;margin:0 0 10px 0}.facebook-share.icon,.twitter-share.icon,.linkedin-share.icon,.identica-share.icon{background:url(../images/socialsprite.png) no-repeat;display:block;text-indent:-100em;height:25px;width:25px;margin-bottom:3px}.facebook-share.icon:hover,.twitter-share.icon:hover,.linkedin-share.icon:hover,.identica-share.icon:hover{opacity:.8;filter:alpha(opacity=80)}.facebook-share.icon{background-position:-26px 0}.identica-share.icon{background-position:-78px 0}.twitter-share.icon{margin-top:10px;background-position:0 0}.linkedin-share.icon{background-position:-52px 0}.openid-signin,.meta,.users-page,.user-profile-edit-page{font-size:13px;line-height:1.3;color:#525252}.openid-signin p,.meta p,.users-page p,.user-profile-edit-page p{font-size:13px;color:#707070;line-height:1.3;font-family:Arial;color:#525252;margin-bottom:12px}.openid-signin h2,.meta h2,.users-page h2,.user-profile-edit-page h2{color:#525252;padding-left:0;font-size:16px}.openid-signin form,.meta form,.users-page form,.user-profile-edit-page form,.user-profile-page form{margin-bottom:15px}.openid-signin input[type="text"],.meta input[type="text"],.users-page input[type="text"],.user-profile-edit-page input[type="text"],.user-profile-page input[type="text"],.openid-signin input[type="password"],.meta input[type="password"],.users-page input[type="password"],.user-profile-edit-page input[type="password"],.user-profile-page input[type="password"],.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{width:405px;height:30px}.openid-signin textarea,.meta textarea,.users-page textarea,.user-profile-edit-page textarea,.user-profile-page textarea{border:#cce6ec 3px solid;padding-left:5px;padding-top:5px;width:395px;font-size:14px}.openid-signin input.submit,.meta input.submit,.users-page input.submit,.user-profile-edit-page input.submit,.user-profile-page input.submit{font-weight:normal;margin:5px 0;width:100px;height:26px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial}.openid-signin input.submit:hover,.meta input.submit:hover,.users-page input.submit:hover,.user-profile-edit-page input.submit:hover,.user-profile-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-signin .cancel,.meta .cancel,.users-page .cancel,.user-profile-edit-page .cancel,.user-profile-page .cancel{background:url(../images/small-button-cancel.png) repeat-x top!important;color:#525252!important}.openid-signin .cancel:hover,.meta .cancel:hover,.users-page .cancel:hover,.user-profile-edit-page .cancel:hover,.user-profile-page .cancel:hover{background:url(../images/small-button-cancel.png) repeat-x bottom!important}#email-input-fs,#local_login_buttons,#password-fs,#openid-fs{margin-top:10px}#email-input-fs #id_email,#local_login_buttons #id_email,#password-fs #id_email,#openid-fs #id_email,#email-input-fs #id_username,#local_login_buttons #id_username,#password-fs #id_username,#openid-fs #id_username,#email-input-fs #id_password,#local_login_buttons #id_password,#password-fs #id_password,#openid-fs #id_password{font-size:12px;line-height:20px;height:20px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:200px}#email-input-fs .submit-b,#local_login_buttons .submit-b,#password-fs .submit-b,#openid-fs .submit-b{width:100px;height:24px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold;padding-right:10px;border:0}#email-input-fs .submit-b:hover,#local_login_buttons .submit-b:hover,#password-fs .submit-b:hover,#openid-fs .submit-b:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-input{background:url(../images/openid.gif) no-repeat;padding-left:15px;cursor:pointer}.openid-login-input{background-position:center left;background:url(../images/openid.gif) no-repeat 0 50%;padding:5px 5px 5px 15px;cursor:pointer;font-family:Trebuchet MS;font-weight:300;font-size:150%;width:500px}.openid-login-submit{height:40px;width:80px;line-height:40px;cursor:pointer;border:1px solid #777;font-weight:bold;font-size:120%}.tabBar-user{width:375px}.user{padding:5px;line-height:140%;width:166px;border:#eee 1px solid;margin-bottom:5px;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.user .user-micro-info{color:#525252}.user ul{margin:0;list-style-type:none}.user .thumb{clear:both;float:left;margin-right:4px;display:inline}.tabBar-tags{width:270px;margin-bottom:15px}a.medal{font-size:17px;line-height:250%;margin-right:5px;color:#333;text-decoration:none;background:url(../images/medala.gif) no-repeat;border-left:1px solid #EEE;border-top:1px solid #EEE;border-bottom:1px solid #CCC;border-right:1px solid #CCC;padding:4px 12px 4px 6px}a:hover.medal{color:#333;text-decoration:none;background:url(../images/medala_on.gif) no-repeat;border-left:1px solid #e7e296;border-top:1px solid #e7e296;border-bottom:1px solid #d1ca3d;border-right:1px solid #d1ca3d}#award-list .user{float:left;margin:5px}.tabBar-profile{width:100%;margin-bottom:15px;float:left}.user-profile-page{font-size:13px;color:#525252}.user-profile-page p{font-size:13px;line-height:1.3;color:#525252}.user-profile-page .avatar img{border:#eee 1px solid;padding:5px}.user-profile-page h2{padding:10px 0 10px 0;font-family:'Yanone Kaffeesatz',sans-serif}.user-details{font-size:13px}.user-details h3{font-size:16px}.user-about{background-color:#eee;height:200px;line-height:20px;overflow:auto;padding:10px;width:90%}.user-about p{font-size:13px}.follow-toggle,.submit{border:0!important;font-weight:bold;line-height:26px;margin-top:-2px;width:100px;height:26px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}.follow-toggle:hover,.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-decoration:none!important}.follow-toggle .follow{font-color:#000;font-style:normal}.follow-toggle .unfollow div.unfollow-red{display:none}.follow-toggle .unfollow:hover div.unfollow-red{display:inline;color:#fff;font-weight:bold;color:#a05736}.follow-toggle .unfollow:hover div.unfollow-green{display:none}.count{font-family:'Yanone Kaffeesatz',sans-serif;font-size:200%;font-weight:700;color:#777}.scoreNumber{font-family:'Yanone Kaffeesatz',sans-serif;font-size:35px;font-weight:800;color:#777;line-height:40px;margin-top:3px}.vote-count{font-family:Arial;font-size:160%;font-weight:700;color:#777}.answer-summary{display:block;clear:both;padding:3px}.answer-votes{background-color:#eee;color:#555;float:left;font-family:Arial;font-size:15px;font-weight:bold;height:17px;padding:2px 4px 5px;text-align:center;text-decoration:none;width:20px;margin-right:10px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.karma-summary{padding:5px;font-size:13px}.karma-summary h3{text-align:center;font-weight:bold;padding:5px}.karma-diagram{width:477px;height:300px;float:left;margin-right:10px}.karma-details{float:right;width:450px;height:250px;overflow-y:auto;word-wrap:break-word}.karma-details p{margin-bottom:10px}.karma-gained{font-weight:bold;background:#eee;width:25px;margin-right:5px;color:green;padding:3px;display:block;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.karma-lost{font-weight:bold;background:#eee;width:25px;color:red;padding:3px;display:block;margin-right:5px;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.submit-row{margin-bottom:10px}.revision{margin:10px 0 10px 0;font-size:13px;color:#525252}.revision p{font-size:13px;line-height:1.3;color:#525252}.revision h3{font-family:'Yanone Kaffeesatz',sans-serif;font-size:21px;padding-left:0}.revision .header{background-color:#f5f5f5;padding:5px;cursor:pointer}.revision .author{background-color:#e9f3f5}.revision .summary{padding:5px 0 10px 0}.revision .summary span{background-color:#fde785;padding:6px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;display:inline;-webkit-box-shadow:1px 1px 4px #cfb852;-moz-box-shadow:1px 1px 4px #cfb852;box-shadow:1px 1px 4px #cfb852}.revision .answerbody{padding:10px 0 5px 10px}.revision .revision-mark{width:150px;text-align:left;display:inline-block;font-size:11px;overflow:hidden}.revision .revision-mark .gravatar{float:left;margin-right:4px;padding-top:5px}.revision .revision-number{font-size:300%;font-weight:bold;font-family:sans-serif}del,del .post-tag{color:#c34719}ins .post-tag,ins p,ins{background-color:#e6f0a2}.vote-notification{z-index:1;cursor:pointer;display:none;position:absolute;font-family:Arial;font-size:14px;font-weight:normal;color:white;background-color:#8e0000;text-align:center;padding-bottom:10px;-webkit-box-shadow:0 2px 4px #370000;-moz-box-shadow:0 2px 4px #370000;box-shadow:0 2px 4px #370000;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.vote-notification h3{background:url(../images/notification.png) repeat-x top;padding:10px 10px 10px 10px;font-size:13px;margin-bottom:5px;border-top:#8e0000 1px solid;color:#fff;font-weight:normal;border-top-right-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px}.vote-notification a{color:#fb7321;text-decoration:underline;font-weight:bold}#ground{width:100%;clear:both;border-top:1px solid #000;padding:6px 0 0 0;background:#16160f;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}#ground p{margin-bottom:0}.footer-links{color:#EEE;text-align:left;width:500px;float:left}.footer-links a{color:#e7e8a8}.powered-link{width:500px;float:left;text-align:left}.powered-link a{color:#8ebcc7}.copyright{color:#616161;width:450px;float:right;text-align:right}.copyright a{color:#8ebcc7}.copyright img.license-logo{margin:6px 0 20px 10px;float:right}.notify-me{float:left}span.text-counter{margin-right:20px}span.form-error{color:#900;font-weight:normal;margin-left:5px}ul.errorlist{margin-bottom:0}p.form-item{margin:0}.deleted{background:#f4e7e7 none repeat scroll 0 0}.form-row{line-height:25px}table.form-as-table{margin-top:5px}table.form-as-table ul{list-style-type:none;display:inline}table.form-as-table li{display:inline}table.form-as-table td{text-align:right}table.form-as-table th{text-align:left;font-weight:normal}table.ab-subscr-form{width:45em}table.ab-tag-filter-form{width:45em}.submit-row{line-height:30px;padding-top:10px;display:block;clear:both}.errors{line-height:20px;color:red}.error{color:darkred;margin:0;font-size:10px}label.retag-error{color:darkred;padding-left:5px;font-size:10px}.fieldset{border:0;margin-top:10px;padding:10px}span.form-error{color:#900;font-size:90%;font-weight:normal;margin-left:5px}.favorites-empty{width:32px;height:45px;float:left}.user-info-table{margin-bottom:10px;border-spacing:0}.user-stats-table .narrow{width:660px}.narrow .summary h3{padding:0;margin:0}.relativetime{font-weight:bold;text-decoration:none}.narrow .tags{float:left}.user-action-1{font-weight:bold;color:#333}.user-action-2{font-weight:bold;color:#CCC}.user-action-3{color:#333}.user-action-4{color:#333}.user-action-5{color:darkred}.user-action-6{color:darkred}.user-action-7{color:#333}.user-action-8{padding:3px;font-weight:bold;background-color:#CCC;color:#763333}.revision-summary{background-color:#fffe9b;padding:2px}.question-title-link a{font-weight:bold;color:#07c}.answer-title-link a{color:#333}.post-type-1 a{font-weight:bold}.post-type-3 a{font-weight:bold}.post-type-5 a{font-weight:bold}.post-type-2 a{color:#333}.post-type-4 a{color:#333}.post-type-6 a{color:#333}.post-type-8 a{color:#333}.hilite{background-color:#ff0}.hilite1{background-color:#ff0}.hilite2{background-color:#f0f}.hilite3{background-color:#0ff}.gold,.badge1{color:#fc0}.silver,.badge2{color:#ccc}.bronze,.badge3{color:#c93}.score{font-weight:800;color:#333}a.comment{background:#EEE;color:#930;padding:5px}a.offensive{color:#999}.message h1{padding-top:0;font-size:15px}.message p{margin-bottom:0}p.space-above{margin-top:10px}.warning{color:red}button::-moz-focus-inner{padding:0;border:0}.submit{cursor:pointer;background-color:#d4d0c8;height:30px;border:1px solid #777;font-weight:bold;font-size:120%}.submit:hover{text-decoration:underline}.submit.small{margin-right:5px;height:20px;font-weight:normal;font-size:12px;padding:1px 5px}.submit.small:hover{text-decoration:none}.question-page a.submit{display:-moz-inline-stack;display:inline-block;line-height:30px;padding:0 5px;*display:inline}.noscript{position:fixed;top:0;left:0;width:100%;z-index:100;padding:5px 0;text-align:center;font-family:sans-serif;font-size:120%;font-weight:Bold;color:#fff;background-color:#ae0000}.big{font-size:14px}.strong{font-weight:bold}.orange{color:#d64000;font-weight:bold}.grey{color:#808080}.about div{padding:10px 5px 10px 5px;border-top:1px dashed #aaa}.highlight{background-color:#fff8c6}.nomargin{margin:0}.margin-bottom{margin-bottom:10px}.margin-top{margin-top:10px}.inline-block{display:inline-block}.action-status{margin:0;border:0;text-align:center;line-height:10px;font-size:12px;padding:0}.action-status span{padding:3px 5px 3px 5px;background-color:#fff380;font-weight:normal;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px}.list-table td{vertical-align:top}table.form-as-table .errorlist{display:block;margin:0;padding:0 0 0 5px;text-align:left;font-size:10px;color:darkred}table.form-as-table input{display:inline;margin-left:4px}table.form-as-table th{vertical-align:bottom;padding-bottom:4px}.form-row-vertical{margin-top:8px;display:block}.form-row-vertical label{margin-bottom:3px;display:block}.text-align-right{text-align:center}ul.form-horizontal-rows{list-style:none;margin:0}ul.form-horizontal-rows li{position:relative;height:40px}ul.form-horizontal-rows label{display:inline-block}ul.form-horizontal-rows ul.errorlist{list-style:none;color:darkred;font-size:10px;line-height:10px;position:absolute;top:2px;left:180px;text-align:left;margin:0}ul.form-horizontal-rows ul.errorlist li{height:10px}ul.form-horizontal-rows label{position:absolute;left:0;bottom:6px;margin:0;line-height:12px;font-size:12px}ul.form-horizontal-rows li input{position:absolute;bottom:0;left:180px;margin:0}.narrow .summary{float:left}.user-profile-tool-links{font-weight:bold;vertical-align:top}ul.post-tags{margin-left:3px}ul.post-tags li{margin-top:4px;margin-bottom:3px}ul.post-retag{margin-bottom:0;margin-left:5px}#question-controls .tags{margin:0 0 3px 0}#tagSelector{padding-bottom:2px;margin-bottom:0}#related-tags{padding-left:3px}#hideIgnoredTagsControl{margin:5px 0 0 0}#hideIgnoredTagsControl label{font-size:12px;color:#666}#hideIgnoredTagsCb{margin:0 2px 0 1px}#recaptcha_widget_div{width:318px;float:left;clear:both}p.signup_p{margin:20px 0 0 0}.simple-subscribe-options ul{list-style:none;list-style-position:outside;margin:0}.wmd-preview a{color:#1b79bd}.wmd-preview li{margin-bottom:7px;font-size:14px}.search-result-summary{font-weight:bold;font-size:18px;line-height:22px;margin:0;padding:2px 0 0 0;float:left}.faq-rep-item{text-align:right;padding-right:5px}.user-info-table .gravatar{margin:0}#responses{clear:both;line-height:18px;margin-bottom:15px}#responses div.face{float:left;text-align:center;width:54px;padding:3px;overflow:hidden}.response-parent{margin-top:18px}.response-parent strong{font-size:20px}.re{min-height:57px;clear:both;margin-top:10px}#responses input{float:left}#re_tools{margin-bottom:10px}#re_sections{margin-bottom:6px}#re_sections .on{font-weight:bold}.avatar-page ul{list-style:none}.avatar-page li{display:inline}.user-profile-page .avatar p{margin-bottom:0}.user-profile-page .tabBar a#stats{margin-left:0}.user-profile-page img.gravatar{margin:2px 0 3px 0}.user-profile-page h3{padding:0;margin-top:-3px}.userList{font-size:13px}img.flag{border:1px solid #eee;vertical-align:text-top}.main-page img.flag{vertical-align:text-bottom}a.edit{padding-left:3px;color:#145bff}.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{clear:both;padding:3px;border:0 solid #888}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}#leading-sidebar{float:left}a.re_expand{color:#616161;text-decoration:none}a.re_expand .re_content{display:none;margin-left:77px} \ No newline at end of file diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index e8e5a5d8..360af4d1 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -154,6 +154,7 @@ h1 { padding: 10px 0 5px 0px; } + /* ----- Extra space above for messages ----- */ body.user-messages { @@ -463,24 +464,15 @@ body.anon { #askButton{ /* check blocks/secondary_header.html and widgets/ask_button.html*/ - background: url(../images/bigbutton.png) repeat-x bottom; line-height:44px; - text-align:center; - width:200px; - height:42px; - font-size:23px; - color:@button-label; - margin-top:7px; + margin-top:6px; float:right; text-transform:uppercase; - .rounded-corners(5px); - .box-shadow(1px, 1px, 2px, #636363) + .button-style(200px, 42px, 23px); } #askButton:hover{ - text-decoration:none; - background: url(../images/bigbutton.png) repeat-x top; - .text-shadow(0px, 1px, 0px, #c6d9dd) + .button-style-hover; } /* ----- Content layout, check two_column_body.html or one_column_body.html ----- */ @@ -590,23 +582,15 @@ body.anon { height:25px; } #interestingTagAdd, #ignoredTagAdd{ - background:url(../images/small-button-blue.png) repeat-x top; border:0; - color:@button-label; font-weight:bold; - font-size:12px; - width:30px; - height:27px; margin-top:-2px; - cursor:pointer; + .button-style(30px,27px,12px); .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080); - - + .text-shadow(0px,1px,0px,#E6F6FA); } #interestingTagAdd:hover, #ignoredTagAdd:hover{ - background:url(../images/small-button-blue.png) repeat-x bottom; + .button-style-hover; } } @@ -617,28 +601,17 @@ body.anon { /* widgets for question template */ a.followed, a.follow{ - background: url(../images/medium-button.png) top repeat-x; - height:34px; line-height:34px; - text-align:center; border:0; - font-family:@main-font; - color:@button-label; font-weight:normal; - font-size:21px; margin-top:3px; - display:block; - width:120px; - text-decoration:none; - .rounded-corners(4px); - .box-shadow(1px, 1px, 2px, #636363); + .button-style(120px,34px,21px); .center; } a.followed:hover, a.follow:hover{ - text-decoration:none; - background: url(../images/medium-button.png) bottom repeat-x; + .button-style-hover; .text-shadow(0px, 1px, 0px, #c6d9dd); } @@ -1352,24 +1325,16 @@ ul#related-tags li { .ask-page input.submit, .edit-question-page input.submit { float: left; - background: url(../images/medium-button.png) top repeat-x; - height:34px; - border:0; - font-family:@main-font; - color:@button-label; font-weight:normal; - font-size:21px; margin-top:3px; - .rounded-corners(4px); - .box-shadow(1px, 1px, 2px, #636363); + .button-style(160px,34px,21px); margin-right:7px; } #fmanswer input.submit:hover, .ask-page input.submit:hover, .edit-question-page input.submit:hover{ - text-decoration:none; - background: url(../images/medium-button.png) bottom repeat-x; + .button-style-hover; .text-shadow(0px, 1px, 0px, #c6d9dd) } #editor { /*adjustment for editor preview*/ @@ -1383,7 +1348,13 @@ ul#related-tags li { border-top:0; padding:10px; margin-bottom:10px; - width:717px; + width:710px; +} + +@media screen and (-webkit-min-device-pixel-ratio:0){ + #editor{ + width:717px; + } } #id_title { @@ -1796,24 +1767,14 @@ ul#related-tags li { width: 100px; } button{ - background:url(../images/small-button-blue.png) repeat-x top; - border:0; - color:@button-label; - font-family:@body-font; - font-size:13px; - width:100px; - font-weight:bold; - height:27px; line-height:25px; margin-bottom:5px; - cursor:pointer; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080); + .button-style(100px,27px,12px); + font-family:@body-font; + font-weight:bold; } button:hover{ - background: url(../images/small-button-blue.png) bottom repeat-x; - .text-shadow(0px, 1px, 0px, #c6d9dd); + .button-style-hover; } .counter { display: inline-block; @@ -2147,23 +2108,13 @@ ul#related-tags li { font-size:14px; } input.submit{ - background:url(../images/small-button-blue.png) repeat-x top; - border:0; - color:@button-label; - font-weight:bold; - font-size:13px; - font-family:@body-font; - height:26px; + font-weight:normal; margin:5px 0px; - width:100px; - cursor:pointer; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080); + .button-style(100px,26px,15px); + font-family:@body-font; } input.submit:hover{ - background:url(../images/small-button-blue.png) repeat-x bottom; - text-decoration:none; + .button-style-hover; } .cancel{ background:url(../images/small-button-cancel.png) repeat-x top !important; @@ -2186,25 +2137,19 @@ ul#related-tags li { width:200px; } .submit-b{ - background:url(../images/small-button-blue.png) repeat-x top; - border:0; - color:@button-label; - font-weight:bold; - font-size:13px; + .button-style(100px,24px,15px); font-family:@body-font; - height:24px; - margin-top:-2px; - padding-left:10px; + font-weight:bold; padding-right:10px; - cursor:pointer; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080) + border:0; } + .submit-b:hover{ - background:url(../images/small-button-blue.png) repeat-x bottom; + .button-style-hover; } } + + .openid-input { background: url(../images/openid.gif) no-repeat; padding-left: 15px; @@ -2349,23 +2294,14 @@ a:hover.medal { .follow-toggle,.submit { border:0 !important; - color:@button-label; font-weight:bold; - font-size:12px; - height:26px; line-height:26px; margin-top:-2px; - font-size:15px; - cursor:pointer; - font-family:@main-font; - background:url(../images/small-button-blue.png) repeat-x top; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080) + .button-style(100px,26px,12px); } .follow-toggle:hover, .submit:hover { - background:url(../images/small-button-blue.png) repeat-x bottom; + .button-style-hover; text-decoration:none !important; } @@ -3351,3 +3287,13 @@ pre.prettyprint { clear:both;padding: 3px; border: 0px solid #888; } #leading-sidebar { float: left; } + +a.re_expand{ + color: #616161; + text-decoration:none; +} + +a.re_expand .re_content{ + display:none; + margin-left:77px; +} -- cgit v1.2.3-1-g7c22 From 9f8cb8c400904366a651dcc3430037b2e0a13db4 Mon Sep 17 00:00:00 2001 From: Byron Corrales Date: Thu, 23 Feb 2012 01:22:01 -0600 Subject: Fixing vote buttons position on IE browsers --- askbot/skins/default/media/style/style.css | 2 +- askbot/skins/default/media/style/style.less | 5 +++++ askbot/skins/default/templates/question/question_card.html | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index ad2ac00d..8d947f42 100644 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -1 +1 @@ -@import url(jquery.autocomplete.css);.button-style-hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}body{background:#FFF;font-size:14px;line-height:150%;margin:0;padding:0;color:#000;font-family:Arial}div{margin:0 auto;padding:0}h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p{margin:0;padding:0;border:0}label{vertical-align:middle}hr{border:0;border-top:1px dashed #ccccce}input,select{vertical-align:middle;font-family:Trebuchet MS,"segoe ui",Helvetica,Tahoma,Verdana,MingLiu,PMingLiu,Arial,sans-serif;margin-left:0}textarea:focus,input:focus{outline:0}iframe{border:0}p{font-size:14px;line-height:140%;margin-bottom:6px}a{color:#1b79bd;text-decoration:none;cursor:pointer}h2{font-size:21px;padding:3px 0 3px 5px}h3{font-size:19px;padding:3px 0 3px 5px}ul{list-style:disc;margin-left:20px;padding-left:0;margin-bottom:1em}ol{list-style:decimal;margin-left:30px;margin-bottom:1em;padding-left:0}td ul{vertical-align:middle}li input{margin:3px 3px 4px 3px}pre{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%;margin-bottom:10px;background-color:#f5f5f5;padding-left:5px;padding-top:5px;padding-bottom:20px!ie7}code{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%}blockquote{margin-bottom:10px;margin-right:15px;padding:10px 0 1px 10px;background-color:#f5f5f5}* html .clearfix,* html .paginator{height:1;overflow:visible}+html .clearfix,+html .paginator{min-height:1%}.clearfix:after,.paginator:after{clear:both;content:".";display:block;height:0;visibility:hidden}.badges a{color:#763333;text-decoration:underline}a:hover{text-decoration:underline}.badge-context-toggle.active{cursor:pointer;text-decoration:underline}h1{font-size:24px;padding:10px 0 5px 0}body.user-messages{margin-top:2.4em}.left{float:left}.right{float:right}.clean{clear:both}.center{margin:0 auto;padding:0}.notify{position:fixed;top:0;left:0;width:100%;z-index:100;padding:0;text-align:center;background-color:#f5dd69;border-top:#fff 1px solid;font-family:'Yanone Kaffeesatz',sans-serif}.notify p.notification{margin-top:6px;margin-bottom:6px;font-size:16px;color:#424242}#closeNotify{position:absolute;right:5px;top:7px;color:#735005;text-decoration:none;line-height:18px;background:-6px -5px url(../images/sprites.png) no-repeat;cursor:pointer;width:20px;height:20px}#closeNotify:hover{background:-26px -5px url(../images/sprites.png) no-repeat}#header{margin-top:0;background:#16160f;font-family:'Yanone Kaffeesatz',sans-serif}.content-wrapper{width:960px;margin:auto;position:relative}#logo img{padding:5px 0 5px 0;height:75px;width:auto;float:left}#userToolsNav{height:20px;padding-bottom:5px}#userToolsNav a{height:35px;text-align:right;margin-left:20px;text-decoration:underline;color:#d0e296;font-size:16px}#userToolsNav a:first-child{margin-left:0}#userToolsNav a#ab-responses{margin-left:3px}#userToolsNav .user-info,#userToolsNav .user-micro-info{color:#b5b593}#userToolsNav a img{vertical-align:middle;margin-bottom:2px}#userToolsNav .user-info a{margin:0;text-decoration:none}#metaNav{float:right}#metaNav a{color:#e2e2ae;padding:0 0 0 35px;height:25px;line-height:30px;margin:5px 0 0 10px;font-size:18px;font-weight:100;text-decoration:none;display:block;float:left}#metaNav a:hover{text-decoration:underline}#metaNav a.on{font-weight:bold;color:#FFF;text-decoration:none}#metaNav a.special{font-size:18px;color:#b02b2c;font-weight:bold;text-decoration:none}#metaNav a.special:hover{text-decoration:underline}#metaNav #navTags{background:-50px -5px url(../images/sprites.png) no-repeat}#metaNav #navUsers{background:-125px -5px url(../images/sprites.png) no-repeat}#metaNav #navBadges{background:-210px -5px url(../images/sprites.png) no-repeat}#header.with-logo #userToolsNav{position:absolute;bottom:0;right:0}#header.without-logo #userToolsNav{float:left;margin-top:7px}#header.without-logo #metaNav{margin-bottom:7px}#secondaryHeader{height:55px;background:#e9e9e1;border-bottom:#d3d3c2 1px solid;border-top:#fcfcfc 1px solid;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif}#secondaryHeader #homeButton{border-right:#afaf9e 1px solid;background:-6px -36px url(../images/sprites.png) no-repeat;height:55px;width:43px;display:block;float:left}#secondaryHeader #homeButton:hover{background:-51px -36px url(../images/sprites.png) no-repeat}#secondaryHeader #scopeWrapper{width:688px;float:left}#secondaryHeader #scopeWrapper a{display:block;float:left}#secondaryHeader #scopeWrapper .scope-selector{font-size:21px;color:#5a5a4b;height:55px;line-height:55px;margin-left:24px}#secondaryHeader #scopeWrapper .on{background:url(../images/scopearrow.png) no-repeat center bottom}#secondaryHeader #scopeWrapper .ask-message{font-size:24px}#searchBar{display:inline-block;background-color:#fff;width:412px;border:1px solid #c9c9b5;float:right;height:42px;margin:6px 0 0 15px}#searchBar .searchInput,#searchBar .searchInputCancelable{font-size:30px;height:40px;font-weight:300;background:#FFF;border:0;color:#484848;padding-left:10px;font-family:Arial;vertical-align:middle}#searchBar .searchInput{width:352px}#searchBar .searchInputCancelable{width:317px}#searchBar .logoutsearch{width:337px}#searchBar .searchBtn{font-size:10px;color:#666;background-color:#eee;height:42px;border:#FFF 1px solid;line-height:22px;text-align:center;float:right;margin:0;width:48px;background:-98px -36px url(../images/sprites.png) no-repeat;cursor:pointer}#searchBar .searchBtn:hover{background:-146px -36px url(../images/sprites.png) no-repeat}#searchBar .cancelSearchBtn{font-size:30px;color:#ce8888;background:#fff;height:42px;border:0;border-left:#deded0 1px solid;text-align:center;width:35px;cursor:pointer}#searchBar .cancelSearchBtn:hover{color:#d84040}body.anon #searchBar{width:500px}body.anon #searchBar .searchInput{width:440px}body.anon #searchBar .searchInputCancelable{width:405px}#askButton{line-height:44px;margin-top:6px;float:right;text-transform:uppercase;width:200px;height:42px;font-size:23px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}#askButton:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#ContentLeft{width:730px;float:left;position:relative;padding-bottom:10px}#ContentRight{width:200px;float:right;padding:0 0 10px 0}#ContentFull{float:left;width:960px}.box{background:#fff;padding:4px 0 10px 0;width:200px}.box p{margin-bottom:4px}.box p.info-box-follow-up-links{text-align:right;margin:0}.box h2{padding-left:0;background:#eceeeb;height:30px;line-height:30px;text-align:right;font-size:18px!important;font-weight:normal;color:#656565;padding-right:10px;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif}.box h3{color:#4a757f;font-size:18px;text-align:left;font-weight:normal;font-family:'Yanone Kaffeesatz',sans-serif;padding-left:0}.box .contributorback{background:#eceeeb url(../images/contributorsback.png) no-repeat center left}.box label{color:#707070;font-size:15px;display:block;float:right;text-align:left;font-family:'Yanone Kaffeesatz',sans-serif;width:80px;margin-right:18px}.box #displayTagFilterControl label{width:160px}.box ul{margin-left:22px}.box li{list-style-type:disc;font-size:13px;line-height:20px;margin-bottom:10px;color:#707070}.box ul.tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}.box #displayTagFilterControl p label{color:#707070;font-size:15px}.box .inputs #interestingTagInput,.box .inputs #ignoredTagInput{width:153px;padding-left:5px;border:#c9c9b5 1px solid;height:25px}.box .inputs #interestingTagAdd,.box .inputs #ignoredTagAdd{border:0;font-weight:bold;margin-top:-2px;width:30px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0 1px 0 #e6f6fa;-moz-text-shadow:0 1px 0 #e6f6fa;-webkit-text-shadow:0 1px 0 #e6f6fa}.box .inputs #interestingTagAdd:hover,.box .inputs #ignoredTagAdd:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box img.gravatar{margin:1px}.box a.followed,.box a.follow{line-height:34px;border:0;font-weight:normal;margin-top:3px;display:block;width:120px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin:0 auto;padding:0}.box a.followed:hover,.box a.follow:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box a.followed div.unfollow{display:none}.box a.followed:hover div{display:none}.box a.followed:hover div.unfollow{display:inline;color:#a05736}.box .favorite-number{padding:5px 0 0 5px;font-size:100%;font-family:Arial;font-weight:bold;color:#777;text-align:center}.box .notify-sidebar #question-subscribe-sidebar{margin:7px 0 0 3px}.statsWidget p{color:#707070;font-size:16px;border-bottom:#ccc 1px solid;font-size:13px}.statsWidget p strong{float:right;padding-right:10px}.questions-related{word-wrap:break-word}.questions-related p{line-height:20px;padding:4px 0 4px 0;font-size:16px;font-weight:normal;border-bottom:#ccc 1px solid}.questions-related a{font-size:13px}#tips li{color:#707070;font-size:13px;list-style-image:url(../images/tips.png)}#tips a{font-size:16px}#markdownHelp li{color:#707070;font-size:13px}#markdownHelp a{font-size:16px}.tabBar{background-color:#eff5f6;height:30px;margin-bottom:3px;margin-top:3px;float:right;font-family:Georgia,serif;font-size:16px;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.tabBar h2{float:left}.tabsA,.tabsC{float:right;position:relative;display:block;height:20px}.tabsA{float:right}.tabsC{float:left}.tabsA a,.tabsC a{border-left:1px solid #d0e1e4;color:#7ea9b3;display:block;float:left;height:20px;line-height:20px;padding:4px 7px 4px 7px;text-decoration:none}.tabsA a.on,.tabsC a.on,.tabsA a:hover,.tabsC a:hover{color:#4a757f}.tabsA .label,.tabsC .label{float:left;color:#646464;margin-top:4px;margin-right:5px}.main-page .tabsA .label{margin-left:8px}.tabsB a{background:#eee;border:1px solid #eee;color:#777;display:block;float:left;height:22px;line-height:28px;margin:5px 0 0 4px;padding:0 11px 0 11px;text-decoration:none}.tabsC .first{border:0}.rss{float:right;font-size:16px;color:#f57900;margin:5px 0 3px 7px;width:52px;padding-left:2px;padding-top:3px;background:#fff url(../images/feed-icon-small.png) no-repeat center right;float:right;font-family:Georgia,serif;font-size:16px}.rss:hover{color:#f4a731!important}#questionCount{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;margin-bottom:8px;padding-top:6px;font-family:'Yanone Kaffeesatz',sans-serif}#listSearchTags{float:left;margin-top:3px;color:#707070;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}ul#searchTags{margin-left:10px;float:right;padding-top:2px}.search-tips{font-size:16px;line-height:17px;color:#707070;margin:5px 0 10px 0;padding:0;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.search-tips a{text-decoration:underline;color:#1b79bd}#question-list{float:left;position:relative;background-color:#FFF;padding:0;width:100%}.short-summary{position:relative;filter:inherit;padding:10px;border-bottom:1px solid #dddbce;margin-bottom:1px;overflow:hidden;width:710px;float:left;background:url(../images/summary-background.png) repeat-x}.short-summary h2{font-size:24px;font-weight:normal;line-height:26px;padding-left:0;margin-bottom:6px;display:block;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary a{color:#464646}.short-summary .userinfo{text-align:right;line-height:16px;font-family:Arial;padding-right:4px}.short-summary .userinfo .relativetime,.short-summary span.anonymous{font-size:11px;clear:both;font-weight:normal;color:#555}.short-summary .userinfo a{font-weight:bold;font-size:11px}.short-summary .counts{float:right;margin:4px 0 0 5px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .item-count{padding:0 5px 0 5px;font-size:25px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .votes div,.short-summary .counts .views div,.short-summary .counts .answers div,.short-summary .counts .favorites div{margin-top:3px;font-size:14px;line-height:14px;color:#646464}.short-summary .tags{margin-top:0}.short-summary .votes,.short-summary .answers,.short-summary .favorites,.short-summary .views{text-align:center;margin:0 3px;padding:8px 2px 0 2px;width:51px;float:right;height:44px;border:#dbdbd4 1px solid}.short-summary .votes{background:url(../images/vote-background.png) repeat-x}.short-summary .answers{background:url(../images/answers-background.png) repeat-x}.short-summary .views{background:url(../images/view-background.png) repeat-x}.short-summary .no-votes .item-count{color:#b1b5b6}.short-summary .some-votes .item-count{color:#4a757f}.short-summary .no-answers .item-count{color:#b1b5b6}.short-summary .some-answers .item-count{color:#eab243}.short-summary .no-views .item-count{color:#b1b5b6}.short-summary .some-views .item-count{color:#d33f00}.short-summary .accepted .item-count{background:url(../images/accept.png) no-repeat top right;display:block;text-align:center;width:40px;color:#eab243}.short-summary .some-favorites .item-count{background:#338333;color:#d0f5a9}.short-summary .no-favorites .item-count{background:#eab243;color:yellow}.evenMore{font-size:13px;color:#707070;padding:15px 0 10px 0;clear:both}.evenMore a{text-decoration:underline;color:#1b79bd}.pager{margin-top:10px;margin-bottom:16px}.pagesize{margin-top:10px;margin-bottom:16px;float:right}.paginator{padding:5px 0 10px 0;font-size:13px;margin-bottom:10px}.paginator .prev a,.paginator .prev a:visited,.paginator .next a,.paginator .next a:visited{background-color:#fff;color:#777;padding:2px 4px 3px 4px}.paginator a{color:#7ea9b3}.paginator .prev{margin-right:.5em}.paginator .next{margin-left:.5em}.paginator .page a,.paginator .page a:visited,.paginator .curr{padding:.25em;background-color:#fff;margin:0 .25em;color:#ff}.paginator .curr{background-color:#8ebcc7;color:#fff;font-weight:bold}.paginator .next a,.paginator .prev a{color:#7ea9b3}.paginator .page a:hover,.paginator .curr a:hover,.paginator .prev a:hover,.paginator .next a:hover{color:#8c8c8c;background-color:#e1e1e1;text-decoration:none}.paginator .text{color:#777;padding:.3em}.paginator .paginator-container-left{padding:5px 0 10px 0}.tag-size-1{font-size:12px}.tag-size-2{font-size:13px}.tag-size-3{font-size:14px}.tag-size-4{font-size:15px}.tag-size-5{font-size:16px}.tag-size-6{font-size:17px}.tag-size-7{font-size:18px}.tag-size-8{font-size:19px}.tag-size-9{font-size:20px}.tag-size-10{font-size:21px}ul.tags,ul.tags.marked-tags,ul#related-tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}ul.tags li{float:left;display:block;margin:0 8px 0 0;padding:0;height:20px}.wildcard-tags{clear:both}ul.tags.marked-tags li,.wildcard-tags ul.tags li{margin-bottom:5px}#tagSelector div.inputs{clear:both;float:none;margin-bottom:10px}.tags-page ul.tags li,ul#ab-user-tags li{width:160px;margin:5px}ul#related-tags li{margin:0 5px 8px 0;float:left;clear:left}.tag-left{cursor:pointer;display:block;float:left;height:17px;margin:0 5px 0 0;padding:0;-webkit-box-shadow:0 0 5px #d3d6d7;-moz-box-shadow:0 0 5px #d3d6d7;box-shadow:0 0 5px #d3d6d7}.tag-right{background:#f3f6f6;border:#fff 1px solid;border-top:#fff 2px solid;outline:#cfdbdb 1px solid;display:block;float:left;height:17px;line-height:17px;font-weight:normal;font-size:11px;padding:0 8px 0 8px;text-decoration:none;text-align:center;white-space:nowrap;vertical-align:middle;font-family:Arial;color:#717179}.deletable-tag{margin-right:3px;white-space:nowrap;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px}.tags a.tag-right,.tags span.tag-right{color:#585858;text-decoration:none}.tags a:hover{color:#1a1a1a}.users-page h1,.tags-page h1{float:left}.main-page h1{margin-right:5px}.delete-icon{margin-top:-1px;float:left;height:21px;width:18px;display:block;line-height:20px;text-align:center;background:#bbcdcd;cursor:default;color:#fff;border-top:#cfdbdb 1px solid;font-family:Arial;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px;text-shadow:0 1px 0 #7ea0a0;-moz-text-shadow:0 1px 0 #7ea0a0;-webkit-text-shadow:0 1px 0 #7ea0a0}.delete-icon:hover{background:#b32f2f}.tag-number{font-weight:normal;float:left;font-size:16px;color:#5d5d5d}.badges .tag-number{float:none;display:inline;padding-right:15px}.section-title{color:#7ea9b3;font-family:'Yanone Kaffeesatz',sans-serif;font-weight:bold;font-size:24px}#fmask{margin-bottom:30px;width:100%}#askFormBar{display:inline-block;padding:4px 7px 5px 0;margin-top:0}#askFormBar p{margin:0 0 5px 0;font-size:14px;color:#525252;line-height:1.4}#askFormBar .questionTitleInput{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px}.ask-page div#question-list,.edit-question-page div#question-list{float:none;border-bottom:#f0f0ec 1px solid;float:left;margin-bottom:10px}.ask-page div#question-list a,.edit-question-page div#question-list a{line-height:30px}.ask-page div#question-list h2,.edit-question-page div#question-list h2{font-size:13px;padding-bottom:0;color:#1b79bd;border-top:#f0f0ec 1px solid;border-left:#f0f0ec 1px solid;height:30px;line-height:30px;font-weight:normal}.ask-page div#question-list span,.edit-question-page div#question-list span{width:28px;height:26px;line-height:26px;text-align:center;margin-right:10px;float:left;display:block;color:#fff;background:#b8d0d5;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.ask-page label,.edit-question-page label{color:#525252;font-size:13px}.ask-page #id_tags,.edit-question-page #id_tags{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.title-desc{color:#707070;font-size:13px}#fmanswer input.submit,.ask-page input.submit,.edit-question-page input.submit{float:left;font-weight:normal;margin-top:3px;width:160px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin-right:7px}#fmanswer input.submit:hover,.ask-page input.submit:hover,.edit-question-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#editor{font-size:100%;min-height:200px;line-height:18px;margin:0;border-left:#cce6ec 3px solid;border-bottom:#cce6ec 3px solid;border-right:#cce6ec 3px solid;border-top:0;padding:10px;margin-bottom:10px;width:710px}@media screen and (-webkit-min-device-pixel-ratio:0){#editor{width:717px}}#id_title{width:100%}.wmd-preview{margin:3px 0 5px 0;padding:6px;background-color:#f5f5f5;min-height:20px;overflow:auto;font-size:13px;font-family:Arial}.wmd-preview p{margin-bottom:14px;line-height:1.4;font-size:14px}.wmd-preview pre{background-color:#e7f1f8}.wmd-preview blockquote{background-color:#eee}.wmd-preview IMG{max-width:600px}.preview-toggle{width:100%;color:#b6a475;text-align:left}.preview-toggle span:hover{cursor:pointer}.after-editor{margin-top:15px;margin-bottom:15px}.checkbox{margin-left:5px;font-weight:normal;cursor:help}.question-options{margin-top:1px;color:#666;line-height:13px;margin-bottom:5px}.question-options label{vertical-align:text-bottom}.edit-content-html{border-top:1px dotted #d8d2a9;border-bottom:1px dotted #d8d2a9;margin:5px 0 5px 0}.edit-question-page,#fmedit,.wmd-preview{color:#525252}.edit-question-page #id_revision,#fmedit #id_revision,.wmd-preview #id_revision{font-size:14px;margin-top:5px;margin-bottom:5px}.edit-question-page #id_title,#fmedit #id_title,.wmd-preview #id_title{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px;margin-bottom:10px}.edit-question-page #id_summary,#fmedit #id_summary,.wmd-preview #id_summary{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.edit-question-page .title-desc,#fmedit .title-desc,.wmd-preview .title-desc{margin-bottom:10px}.question-page h1{padding-top:0;font-family:'Yanone Kaffeesatz',sans-serif}.question-page h1 a{color:#464646;font-size:30px;font-weight:normal;line-height:1}.question-page p.rss{float:none;clear:both;padding:3px 0 0 23px;font-size:15px;width:110px;background-position:center left;margin-left:0!important}.question-page p.rss a{font-family:'Yanone Kaffeesatz',sans-serif;vertical-align:top}.question-page .question-content{float:right;width:682px;margin-bottom:10px}.question-page #question-table{float:left;border-top:#f0f0f0 1px solid}.question-page #question-table,.question-page .answer-table{margin:6px 0 6px 0;border-spacing:0;width:670px;padding-right:10px}.question-page .answer-table{margin-top:0;border-bottom:1px solid #d4d4d4;float:right}.question-page .answer-table td,.question-page #question-table td{width:20px;vertical-align:top}.question-page .question-body,.question-page .answer-body{overflow:auto;margin-top:10px;font-family:Arial;color:#4b4b4b}.question-page .question-body p,.question-page .answer-body p{margin-bottom:14px;line-height:1.4;font-size:14px;padding:0 5px 5px 0}.question-page .question-body a,.question-page .answer-body a{color:#1b79bd}.question-page .question-body li,.question-page .answer-body li{margin-bottom:7px}.question-page .question-body IMG,.question-page .answer-body IMG{max-width:600px}.question-page .post-update-info-container{float:right;width:175px}.question-page .post-update-info{background:#fff url(../images/background-user-info.png) repeat-x bottom;float:right;font-size:9px;font-family:Arial;width:158px;padding:4px;margin:0 0 5px 5px;line-height:14px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:0 2px 1px #bfbfbf;-moz-box-shadow:0 2px 1px #bfbfbf;box-shadow:0 2px 1px #bfbfbf}.question-page .post-update-info p{line-height:13px;font-size:11px;margin:0 0 2px 1px;padding:0}.question-page .post-update-info a{color:#444}.question-page .post-update-info .gravatar{float:left;margin-right:4px}.question-page .post-update-info p.tip{color:#444;line-height:13px;font-size:10px}.question-page .post-controls{font-size:11px;line-height:12px;min-width:200px;padding-left:5px;text-align:right;clear:left;float:right;margin-top:10px;margin-bottom:8px}.question-page .post-controls a{color:#777;padding:0 7px 3px 18px;cursor:pointer;border:0;font-size:12px;font-family:Arial;text-decoration:none;height:18px;display:block;float:right;line-height:18px;margin-top:-2px;margin-left:4px}.question-page .post-controls a:hover{background-color:#f5f0c9;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.question-page .post-controls .sep{color:#ccc;float:right;height:18px;font-size:18px}.question-page .post-controls .question-delete,.question-page .answer-controls .question-delete{background:url(../images/delete.png) no-repeat center left;padding-left:11px}.question-page .post-controls .question-flag,.question-page .answer-controls .question-flag{background:url(../images/flag.png) no-repeat center left}.question-page .post-controls .question-edit,.question-page .answer-controls .question-edit{background:url(../images/edit2.png) no-repeat center left}.question-page .post-controls .question-retag,.question-page .answer-controls .question-retag{background:url(../images/retag.png) no-repeat center left}.question-page .post-controls .question-close,.question-page .answer-controls .question-close{background:url(../images/close.png) no-repeat center left}.question-page .post-controls .permant-link,.question-page .answer-controls .permant-link{background:url(../images/link.png) no-repeat center left}.question-page .tabBar{width:100%}.question-page #questionCount{float:left;font-family:'Yanone Kaffeesatz',sans-serif;line-height:15px}.question-page .question-img-upvote,.question-page .question-img-downvote,.question-page .answer-img-upvote,.question-page .answer-img-downvote{width:25px;height:20px;cursor:pointer}.question-page .question-img-upvote,.question-page .answer-img-upvote{background:url(../images/vote-arrow-up-new.png) no-repeat}.question-page .question-img-downvote,.question-page .answer-img-downvote{background:url(../images/vote-arrow-down-new.png) no-repeat}.question-page .question-img-upvote:hover,.question-page .question-img-upvote.on,.question-page .answer-img-upvote:hover,.question-page .answer-img-upvote.on{background:url(../images/vote-arrow-up-on-new.png) no-repeat}.question-page .question-img-downvote:hover,.question-page .question-img-downvote.on,.question-page .answer-img-downvote:hover,.question-page .answer-img-downvote.on{background:url(../images/vote-arrow-down-on-new.png) no-repeat}.question-page #fmanswer_button{margin:8px 0}.question-page .question-img-favorite:hover{background:url(../images/vote-favorite-on.png)}.question-page div.comments{padding:0}.question-page #comment-title{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.question-page .comments{font-size:12px;clear:both}.question-page .comments div.controls{clear:both;float:left;width:100%;margin:3px 0 20px 5px}.question-page .comments .controls a{color:#988e4c;padding:0 3px 2px 22px;font-family:Arial;font-size:13px;background:url(../images/comment.png) no-repeat center left}.question-page .comments .controls a:hover{background-color:#f5f0c9;text-decoration:none}.question-page .comments .button{color:#988e4c;font-size:11px;padding:3px;cursor:pointer}.question-page .comments a{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments form.post-comments{margin:3px 26px 0 42px}.question-page .comments form.post-comments textarea{font-size:13px;line-height:1.3}.question-page .comments textarea{height:42px;width:100%;margin:7px 0 5px 1px;font-family:Arial;outline:0;overflow:auto;font-size:12px;line-height:140%;padding-left:2px;padding-top:3px;border:#cce6ec 3px solid}@media screen and (-webkit-min-device-pixel-ratio:0){textarea{padding-left:3px!important}}.question-page .comments input{margin-left:10px;margin-top:1px;vertical-align:top;width:100px}.question-page .comments button{line-height:25px;margin-bottom:5px;width:100px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold}.question-page .comments button:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.question-page .comments .counter{display:inline-block;width:245px;float:right;color:#b6a475!important;vertical-align:top;font-family:Arial;float:right;text-align:right}.question-page .comments .comment{border-bottom:1px solid #edeeeb;clear:both;margin:0;margin-top:8px;padding-bottom:4px;overflow:auto;font-family:Arial;font-size:11px;min-height:25px;background:#fff url(../images/comment-background.png) bottom repeat-x;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.question-page .comments div.comment:hover{background-color:#efefef}.question-page .comments a.author{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments a.author:hover{text-decoration:underline}.question-page .comments span.delete-icon{background:url(../images/close-small.png) no-repeat;border:0;width:14px;height:14px}.question-page .comments span.delete-icon:hover{border:#bc564b 2px solid;border-radius:10px;-ms-border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;margin:-3px 0 0 -2px}.question-page .comments .content{margin-bottom:7px}.question-page .comments .comment-votes{float:left;width:37px;line-height:130%;padding:6px 5px 6px 3px}.question-page .comments .comment-body{line-height:1.3;margin:3px 26px 0 46px;padding:5px 3px;color:#666;font-size:13px}.question-page .comments .comment-body .edit{padding-left:6px}.question-page .comments .comment-body p{font-size:13px;line-height:1.3;margin-bottom:3px;padding:0}.question-page .comments .comment-delete{float:right;width:14px;line-height:130%;padding:8px 6px}.question-page .comments .upvote{margin:0;padding-right:17px;padding-top:2px;text-align:right;height:20px;font-size:13px;font-weight:bold;color:#777}.question-page .comments .upvote.upvoted{color:#d64000}.question-page .comments .upvote.hover{background:url(../images/go-up-grey.png) no-repeat;background-position:right 1px}.question-page .comments .upvote:hover{background:url(../images/go-up-orange.png) no-repeat;background-position:right 1px}.question-page .comments .help-text{float:right;text-align:right;color:gray;margin-bottom:0;margin-top:0;line-height:50%}.question-page #questionTools{font-size:22px;margin-top:11px;text-align:left}.question-page .question-status{margin-top:10px;margin-bottom:15px;padding:20px;background-color:#fef7cc;text-align:center;border:#e1c04a 1px solid}.question-page .question-status h3{font-size:20px;color:#707070;font-weight:normal}.question-page .vote-buttons{float:left;text-align:center;padding-top:2px;margin:10px 10px 0 3px}.question-page .vote-buttons IMG{cursor:pointer}.question-page .vote-number{font-family:'Yanone Kaffeesatz',sans-serif;padding:0 0 5px 0;font-size:25px;font-weight:bold;color:#777}.question-page .vote-buttons .notify-sidebar{text-align:left;width:120px}.question-page .vote-buttons .notify-sidebar label{vertical-align:top}.question-page .tabBar-answer{margin-bottom:15px;padding-left:7px;width:723px;margin-top:10px}.question-page .answer .vote-buttons{float:left}.question-page .accepted-answer{background-color:#f7fecc;border-bottom-color:#9bd59b}.question-page .accepted-answer .vote-buttons{width:27px;margin-right:10px;margin-top:10px}.question-page .answer .post-update-info a{color:#444}.question-page .answered{background:#CCC;color:#999}.question-page .answered-accepted{background:#dcdcdc;color:#763333}.question-page .answered-accepted strong{color:#e1e818}.question-page .answered-by-owner{background:#f1f1ff}.question-page .answered-by-owner .comments .button{background-color:#e6ecff}.question-page .answered-by-owner .comments{background-color:#e6ecff}.question-page .answered-by-owner .vote-buttons{margin-right:10px}.question-page .answer-img-accept:hover{background:url(../images/vote-accepted-on.png)}.question-page .answer-body a{color:#1b79bd}.question-page .answer-body li{margin-bottom:.7em}.question-page #fmanswer{color:#707070;line-height:1.2;margin-top:10px}.question-page #fmanswer h2{font-family:'Yanone Kaffeesatz',sans-serif;color:#7ea9b3;font-size:24px}.question-page #fmanswer label{font-size:13px}.question-page .message{padding:5px;margin:0 0 10px 0}.facebook-share.icon,.twitter-share.icon,.linkedin-share.icon,.identica-share.icon{background:url(../images/socialsprite.png) no-repeat;display:block;text-indent:-100em;height:25px;width:25px;margin-bottom:3px}.facebook-share.icon:hover,.twitter-share.icon:hover,.linkedin-share.icon:hover,.identica-share.icon:hover{opacity:.8;filter:alpha(opacity=80)}.facebook-share.icon{background-position:-26px 0}.identica-share.icon{background-position:-78px 0}.twitter-share.icon{margin-top:10px;background-position:0 0}.linkedin-share.icon{background-position:-52px 0}.openid-signin,.meta,.users-page,.user-profile-edit-page{font-size:13px;line-height:1.3;color:#525252}.openid-signin p,.meta p,.users-page p,.user-profile-edit-page p{font-size:13px;color:#707070;line-height:1.3;font-family:Arial;color:#525252;margin-bottom:12px}.openid-signin h2,.meta h2,.users-page h2,.user-profile-edit-page h2{color:#525252;padding-left:0;font-size:16px}.openid-signin form,.meta form,.users-page form,.user-profile-edit-page form,.user-profile-page form{margin-bottom:15px}.openid-signin input[type="text"],.meta input[type="text"],.users-page input[type="text"],.user-profile-edit-page input[type="text"],.user-profile-page input[type="text"],.openid-signin input[type="password"],.meta input[type="password"],.users-page input[type="password"],.user-profile-edit-page input[type="password"],.user-profile-page input[type="password"],.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{width:405px;height:30px}.openid-signin textarea,.meta textarea,.users-page textarea,.user-profile-edit-page textarea,.user-profile-page textarea{border:#cce6ec 3px solid;padding-left:5px;padding-top:5px;width:395px;font-size:14px}.openid-signin input.submit,.meta input.submit,.users-page input.submit,.user-profile-edit-page input.submit,.user-profile-page input.submit{font-weight:normal;margin:5px 0;width:100px;height:26px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial}.openid-signin input.submit:hover,.meta input.submit:hover,.users-page input.submit:hover,.user-profile-edit-page input.submit:hover,.user-profile-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-signin .cancel,.meta .cancel,.users-page .cancel,.user-profile-edit-page .cancel,.user-profile-page .cancel{background:url(../images/small-button-cancel.png) repeat-x top!important;color:#525252!important}.openid-signin .cancel:hover,.meta .cancel:hover,.users-page .cancel:hover,.user-profile-edit-page .cancel:hover,.user-profile-page .cancel:hover{background:url(../images/small-button-cancel.png) repeat-x bottom!important}#email-input-fs,#local_login_buttons,#password-fs,#openid-fs{margin-top:10px}#email-input-fs #id_email,#local_login_buttons #id_email,#password-fs #id_email,#openid-fs #id_email,#email-input-fs #id_username,#local_login_buttons #id_username,#password-fs #id_username,#openid-fs #id_username,#email-input-fs #id_password,#local_login_buttons #id_password,#password-fs #id_password,#openid-fs #id_password{font-size:12px;line-height:20px;height:20px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:200px}#email-input-fs .submit-b,#local_login_buttons .submit-b,#password-fs .submit-b,#openid-fs .submit-b{width:100px;height:24px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold;padding-right:10px;border:0}#email-input-fs .submit-b:hover,#local_login_buttons .submit-b:hover,#password-fs .submit-b:hover,#openid-fs .submit-b:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-input{background:url(../images/openid.gif) no-repeat;padding-left:15px;cursor:pointer}.openid-login-input{background-position:center left;background:url(../images/openid.gif) no-repeat 0 50%;padding:5px 5px 5px 15px;cursor:pointer;font-family:Trebuchet MS;font-weight:300;font-size:150%;width:500px}.openid-login-submit{height:40px;width:80px;line-height:40px;cursor:pointer;border:1px solid #777;font-weight:bold;font-size:120%}.tabBar-user{width:375px}.user{padding:5px;line-height:140%;width:166px;border:#eee 1px solid;margin-bottom:5px;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.user .user-micro-info{color:#525252}.user ul{margin:0;list-style-type:none}.user .thumb{clear:both;float:left;margin-right:4px;display:inline}.tabBar-tags{width:270px;margin-bottom:15px}a.medal{font-size:17px;line-height:250%;margin-right:5px;color:#333;text-decoration:none;background:url(../images/medala.gif) no-repeat;border-left:1px solid #EEE;border-top:1px solid #EEE;border-bottom:1px solid #CCC;border-right:1px solid #CCC;padding:4px 12px 4px 6px}a:hover.medal{color:#333;text-decoration:none;background:url(../images/medala_on.gif) no-repeat;border-left:1px solid #e7e296;border-top:1px solid #e7e296;border-bottom:1px solid #d1ca3d;border-right:1px solid #d1ca3d}#award-list .user{float:left;margin:5px}.tabBar-profile{width:100%;margin-bottom:15px;float:left}.user-profile-page{font-size:13px;color:#525252}.user-profile-page p{font-size:13px;line-height:1.3;color:#525252}.user-profile-page .avatar img{border:#eee 1px solid;padding:5px}.user-profile-page h2{padding:10px 0 10px 0;font-family:'Yanone Kaffeesatz',sans-serif}.user-details{font-size:13px}.user-details h3{font-size:16px}.user-about{background-color:#eee;height:200px;line-height:20px;overflow:auto;padding:10px;width:90%}.user-about p{font-size:13px}.follow-toggle,.submit{border:0!important;font-weight:bold;line-height:26px;margin-top:-2px;width:100px;height:26px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}.follow-toggle:hover,.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-decoration:none!important}.follow-toggle .follow{font-color:#000;font-style:normal}.follow-toggle .unfollow div.unfollow-red{display:none}.follow-toggle .unfollow:hover div.unfollow-red{display:inline;color:#fff;font-weight:bold;color:#a05736}.follow-toggle .unfollow:hover div.unfollow-green{display:none}.count{font-family:'Yanone Kaffeesatz',sans-serif;font-size:200%;font-weight:700;color:#777}.scoreNumber{font-family:'Yanone Kaffeesatz',sans-serif;font-size:35px;font-weight:800;color:#777;line-height:40px;margin-top:3px}.vote-count{font-family:Arial;font-size:160%;font-weight:700;color:#777}.answer-summary{display:block;clear:both;padding:3px}.answer-votes{background-color:#eee;color:#555;float:left;font-family:Arial;font-size:15px;font-weight:bold;height:17px;padding:2px 4px 5px;text-align:center;text-decoration:none;width:20px;margin-right:10px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.karma-summary{padding:5px;font-size:13px}.karma-summary h3{text-align:center;font-weight:bold;padding:5px}.karma-diagram{width:477px;height:300px;float:left;margin-right:10px}.karma-details{float:right;width:450px;height:250px;overflow-y:auto;word-wrap:break-word}.karma-details p{margin-bottom:10px}.karma-gained{font-weight:bold;background:#eee;width:25px;margin-right:5px;color:green;padding:3px;display:block;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.karma-lost{font-weight:bold;background:#eee;width:25px;color:red;padding:3px;display:block;margin-right:5px;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.submit-row{margin-bottom:10px}.revision{margin:10px 0 10px 0;font-size:13px;color:#525252}.revision p{font-size:13px;line-height:1.3;color:#525252}.revision h3{font-family:'Yanone Kaffeesatz',sans-serif;font-size:21px;padding-left:0}.revision .header{background-color:#f5f5f5;padding:5px;cursor:pointer}.revision .author{background-color:#e9f3f5}.revision .summary{padding:5px 0 10px 0}.revision .summary span{background-color:#fde785;padding:6px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;display:inline;-webkit-box-shadow:1px 1px 4px #cfb852;-moz-box-shadow:1px 1px 4px #cfb852;box-shadow:1px 1px 4px #cfb852}.revision .answerbody{padding:10px 0 5px 10px}.revision .revision-mark{width:150px;text-align:left;display:inline-block;font-size:11px;overflow:hidden}.revision .revision-mark .gravatar{float:left;margin-right:4px;padding-top:5px}.revision .revision-number{font-size:300%;font-weight:bold;font-family:sans-serif}del,del .post-tag{color:#c34719}ins .post-tag,ins p,ins{background-color:#e6f0a2}.vote-notification{z-index:1;cursor:pointer;display:none;position:absolute;font-family:Arial;font-size:14px;font-weight:normal;color:white;background-color:#8e0000;text-align:center;padding-bottom:10px;-webkit-box-shadow:0 2px 4px #370000;-moz-box-shadow:0 2px 4px #370000;box-shadow:0 2px 4px #370000;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.vote-notification h3{background:url(../images/notification.png) repeat-x top;padding:10px 10px 10px 10px;font-size:13px;margin-bottom:5px;border-top:#8e0000 1px solid;color:#fff;font-weight:normal;border-top-right-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px}.vote-notification a{color:#fb7321;text-decoration:underline;font-weight:bold}#ground{width:100%;clear:both;border-top:1px solid #000;padding:6px 0 0 0;background:#16160f;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}#ground p{margin-bottom:0}.footer-links{color:#EEE;text-align:left;width:500px;float:left}.footer-links a{color:#e7e8a8}.powered-link{width:500px;float:left;text-align:left}.powered-link a{color:#8ebcc7}.copyright{color:#616161;width:450px;float:right;text-align:right}.copyright a{color:#8ebcc7}.copyright img.license-logo{margin:6px 0 20px 10px;float:right}.notify-me{float:left}span.text-counter{margin-right:20px}span.form-error{color:#900;font-weight:normal;margin-left:5px}ul.errorlist{margin-bottom:0}p.form-item{margin:0}.deleted{background:#f4e7e7 none repeat scroll 0 0}.form-row{line-height:25px}table.form-as-table{margin-top:5px}table.form-as-table ul{list-style-type:none;display:inline}table.form-as-table li{display:inline}table.form-as-table td{text-align:right}table.form-as-table th{text-align:left;font-weight:normal}table.ab-subscr-form{width:45em}table.ab-tag-filter-form{width:45em}.submit-row{line-height:30px;padding-top:10px;display:block;clear:both}.errors{line-height:20px;color:red}.error{color:darkred;margin:0;font-size:10px}label.retag-error{color:darkred;padding-left:5px;font-size:10px}.fieldset{border:0;margin-top:10px;padding:10px}span.form-error{color:#900;font-size:90%;font-weight:normal;margin-left:5px}.favorites-empty{width:32px;height:45px;float:left}.user-info-table{margin-bottom:10px;border-spacing:0}.user-stats-table .narrow{width:660px}.narrow .summary h3{padding:0;margin:0}.relativetime{font-weight:bold;text-decoration:none}.narrow .tags{float:left}.user-action-1{font-weight:bold;color:#333}.user-action-2{font-weight:bold;color:#CCC}.user-action-3{color:#333}.user-action-4{color:#333}.user-action-5{color:darkred}.user-action-6{color:darkred}.user-action-7{color:#333}.user-action-8{padding:3px;font-weight:bold;background-color:#CCC;color:#763333}.revision-summary{background-color:#fffe9b;padding:2px}.question-title-link a{font-weight:bold;color:#07c}.answer-title-link a{color:#333}.post-type-1 a{font-weight:bold}.post-type-3 a{font-weight:bold}.post-type-5 a{font-weight:bold}.post-type-2 a{color:#333}.post-type-4 a{color:#333}.post-type-6 a{color:#333}.post-type-8 a{color:#333}.hilite{background-color:#ff0}.hilite1{background-color:#ff0}.hilite2{background-color:#f0f}.hilite3{background-color:#0ff}.gold,.badge1{color:#fc0}.silver,.badge2{color:#ccc}.bronze,.badge3{color:#c93}.score{font-weight:800;color:#333}a.comment{background:#EEE;color:#930;padding:5px}a.offensive{color:#999}.message h1{padding-top:0;font-size:15px}.message p{margin-bottom:0}p.space-above{margin-top:10px}.warning{color:red}button::-moz-focus-inner{padding:0;border:0}.submit{cursor:pointer;background-color:#d4d0c8;height:30px;border:1px solid #777;font-weight:bold;font-size:120%}.submit:hover{text-decoration:underline}.submit.small{margin-right:5px;height:20px;font-weight:normal;font-size:12px;padding:1px 5px}.submit.small:hover{text-decoration:none}.question-page a.submit{display:-moz-inline-stack;display:inline-block;line-height:30px;padding:0 5px;*display:inline}.noscript{position:fixed;top:0;left:0;width:100%;z-index:100;padding:5px 0;text-align:center;font-family:sans-serif;font-size:120%;font-weight:Bold;color:#fff;background-color:#ae0000}.big{font-size:14px}.strong{font-weight:bold}.orange{color:#d64000;font-weight:bold}.grey{color:#808080}.about div{padding:10px 5px 10px 5px;border-top:1px dashed #aaa}.highlight{background-color:#fff8c6}.nomargin{margin:0}.margin-bottom{margin-bottom:10px}.margin-top{margin-top:10px}.inline-block{display:inline-block}.action-status{margin:0;border:0;text-align:center;line-height:10px;font-size:12px;padding:0}.action-status span{padding:3px 5px 3px 5px;background-color:#fff380;font-weight:normal;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px}.list-table td{vertical-align:top}table.form-as-table .errorlist{display:block;margin:0;padding:0 0 0 5px;text-align:left;font-size:10px;color:darkred}table.form-as-table input{display:inline;margin-left:4px}table.form-as-table th{vertical-align:bottom;padding-bottom:4px}.form-row-vertical{margin-top:8px;display:block}.form-row-vertical label{margin-bottom:3px;display:block}.text-align-right{text-align:center}ul.form-horizontal-rows{list-style:none;margin:0}ul.form-horizontal-rows li{position:relative;height:40px}ul.form-horizontal-rows label{display:inline-block}ul.form-horizontal-rows ul.errorlist{list-style:none;color:darkred;font-size:10px;line-height:10px;position:absolute;top:2px;left:180px;text-align:left;margin:0}ul.form-horizontal-rows ul.errorlist li{height:10px}ul.form-horizontal-rows label{position:absolute;left:0;bottom:6px;margin:0;line-height:12px;font-size:12px}ul.form-horizontal-rows li input{position:absolute;bottom:0;left:180px;margin:0}.narrow .summary{float:left}.user-profile-tool-links{font-weight:bold;vertical-align:top}ul.post-tags{margin-left:3px}ul.post-tags li{margin-top:4px;margin-bottom:3px}ul.post-retag{margin-bottom:0;margin-left:5px}#question-controls .tags{margin:0 0 3px 0}#tagSelector{padding-bottom:2px;margin-bottom:0}#related-tags{padding-left:3px}#hideIgnoredTagsControl{margin:5px 0 0 0}#hideIgnoredTagsControl label{font-size:12px;color:#666}#hideIgnoredTagsCb{margin:0 2px 0 1px}#recaptcha_widget_div{width:318px;float:left;clear:both}p.signup_p{margin:20px 0 0 0}.simple-subscribe-options ul{list-style:none;list-style-position:outside;margin:0}.wmd-preview a{color:#1b79bd}.wmd-preview li{margin-bottom:7px;font-size:14px}.search-result-summary{font-weight:bold;font-size:18px;line-height:22px;margin:0;padding:2px 0 0 0;float:left}.faq-rep-item{text-align:right;padding-right:5px}.user-info-table .gravatar{margin:0}#responses{clear:both;line-height:18px;margin-bottom:15px}#responses div.face{float:left;text-align:center;width:54px;padding:3px;overflow:hidden}.response-parent{margin-top:18px}.response-parent strong{font-size:20px}.re{min-height:57px;clear:both;margin-top:10px}#responses input{float:left}#re_tools{margin-bottom:10px}#re_sections{margin-bottom:6px}#re_sections .on{font-weight:bold}.avatar-page ul{list-style:none}.avatar-page li{display:inline}.user-profile-page .avatar p{margin-bottom:0}.user-profile-page .tabBar a#stats{margin-left:0}.user-profile-page img.gravatar{margin:2px 0 3px 0}.user-profile-page h3{padding:0;margin-top:-3px}.userList{font-size:13px}img.flag{border:1px solid #eee;vertical-align:text-top}.main-page img.flag{vertical-align:text-bottom}a.edit{padding-left:3px;color:#145bff}.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{clear:both;padding:3px;border:0 solid #888}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}#leading-sidebar{float:left}a.re_expand{color:#616161;text-decoration:none}a.re_expand .re_content{display:none;margin-left:77px} \ No newline at end of file +@import url(jquery.autocomplete.css);.button-style-hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}body{background:#FFF;font-size:14px;line-height:150%;margin:0;padding:0;color:#000;font-family:Arial}div{margin:0 auto;padding:0}h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p{margin:0;padding:0;border:0}label{vertical-align:middle}hr{border:0;border-top:1px dashed #ccccce}input,select{vertical-align:middle;font-family:Trebuchet MS,"segoe ui",Helvetica,Tahoma,Verdana,MingLiu,PMingLiu,Arial,sans-serif;margin-left:0}textarea:focus,input:focus{outline:0}iframe{border:0}p{font-size:14px;line-height:140%;margin-bottom:6px}a{color:#1b79bd;text-decoration:none;cursor:pointer}h2{font-size:21px;padding:3px 0 3px 5px}h3{font-size:19px;padding:3px 0 3px 5px}ul{list-style:disc;margin-left:20px;padding-left:0;margin-bottom:1em}ol{list-style:decimal;margin-left:30px;margin-bottom:1em;padding-left:0}td ul{vertical-align:middle}li input{margin:3px 3px 4px 3px}pre{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%;margin-bottom:10px;background-color:#f5f5f5;padding-left:5px;padding-top:5px;padding-bottom:20px!ie7}code{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%}blockquote{margin-bottom:10px;margin-right:15px;padding:10px 0 1px 10px;background-color:#f5f5f5}* html .clearfix,* html .paginator{height:1;overflow:visible}+html .clearfix,+html .paginator{min-height:1%}.clearfix:after,.paginator:after{clear:both;content:".";display:block;height:0;visibility:hidden}.badges a{color:#763333;text-decoration:underline}a:hover{text-decoration:underline}.badge-context-toggle.active{cursor:pointer;text-decoration:underline}h1{font-size:24px;padding:10px 0 5px 0}body.user-messages{margin-top:2.4em}.left{float:left}.right{float:right}.clean{clear:both}.center{margin:0 auto;padding:0}.notify{position:fixed;top:0;left:0;width:100%;z-index:100;padding:0;text-align:center;background-color:#f5dd69;border-top:#fff 1px solid;font-family:'Yanone Kaffeesatz',sans-serif}.notify p.notification{margin-top:6px;margin-bottom:6px;font-size:16px;color:#424242}#closeNotify{position:absolute;right:5px;top:7px;color:#735005;text-decoration:none;line-height:18px;background:-6px -5px url(../images/sprites.png) no-repeat;cursor:pointer;width:20px;height:20px}#closeNotify:hover{background:-26px -5px url(../images/sprites.png) no-repeat}#header{margin-top:0;background:#16160f;font-family:'Yanone Kaffeesatz',sans-serif}.content-wrapper{width:960px;margin:auto;position:relative}#logo img{padding:5px 0 5px 0;height:75px;width:auto;float:left}#userToolsNav{height:20px;padding-bottom:5px}#userToolsNav a{height:35px;text-align:right;margin-left:20px;text-decoration:underline;color:#d0e296;font-size:16px}#userToolsNav a:first-child{margin-left:0}#userToolsNav a#ab-responses{margin-left:3px}#userToolsNav .user-info,#userToolsNav .user-micro-info{color:#b5b593}#userToolsNav a img{vertical-align:middle;margin-bottom:2px}#userToolsNav .user-info a{margin:0;text-decoration:none}#metaNav{float:right}#metaNav a{color:#e2e2ae;padding:0 0 0 35px;height:25px;line-height:30px;margin:5px 0 0 10px;font-size:18px;font-weight:100;text-decoration:none;display:block;float:left}#metaNav a:hover{text-decoration:underline}#metaNav a.on{font-weight:bold;color:#FFF;text-decoration:none}#metaNav a.special{font-size:18px;color:#b02b2c;font-weight:bold;text-decoration:none}#metaNav a.special:hover{text-decoration:underline}#metaNav #navTags{background:-50px -5px url(../images/sprites.png) no-repeat}#metaNav #navUsers{background:-125px -5px url(../images/sprites.png) no-repeat}#metaNav #navBadges{background:-210px -5px url(../images/sprites.png) no-repeat}#header.with-logo #userToolsNav{position:absolute;bottom:0;right:0}#header.without-logo #userToolsNav{float:left;margin-top:7px}#header.without-logo #metaNav{margin-bottom:7px}#secondaryHeader{height:55px;background:#e9e9e1;border-bottom:#d3d3c2 1px solid;border-top:#fcfcfc 1px solid;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif}#secondaryHeader #homeButton{border-right:#afaf9e 1px solid;background:-6px -36px url(../images/sprites.png) no-repeat;height:55px;width:43px;display:block;float:left}#secondaryHeader #homeButton:hover{background:-51px -36px url(../images/sprites.png) no-repeat}#secondaryHeader #scopeWrapper{width:688px;float:left}#secondaryHeader #scopeWrapper a{display:block;float:left}#secondaryHeader #scopeWrapper .scope-selector{font-size:21px;color:#5a5a4b;height:55px;line-height:55px;margin-left:24px}#secondaryHeader #scopeWrapper .on{background:url(../images/scopearrow.png) no-repeat center bottom}#secondaryHeader #scopeWrapper .ask-message{font-size:24px}#searchBar{display:inline-block;background-color:#fff;width:412px;border:1px solid #c9c9b5;float:right;height:42px;margin:6px 0 0 15px}#searchBar .searchInput,#searchBar .searchInputCancelable{font-size:30px;height:40px;font-weight:300;background:#FFF;border:0;color:#484848;padding-left:10px;font-family:Arial;vertical-align:middle}#searchBar .searchInput{width:352px}#searchBar .searchInputCancelable{width:317px}#searchBar .logoutsearch{width:337px}#searchBar .searchBtn{font-size:10px;color:#666;background-color:#eee;height:42px;border:#FFF 1px solid;line-height:22px;text-align:center;float:right;margin:0;width:48px;background:-98px -36px url(../images/sprites.png) no-repeat;cursor:pointer}#searchBar .searchBtn:hover{background:-146px -36px url(../images/sprites.png) no-repeat}#searchBar .cancelSearchBtn{font-size:30px;color:#ce8888;background:#fff;height:42px;border:0;border-left:#deded0 1px solid;text-align:center;width:35px;cursor:pointer}#searchBar .cancelSearchBtn:hover{color:#d84040}body.anon #searchBar{width:500px}body.anon #searchBar .searchInput{width:440px}body.anon #searchBar .searchInputCancelable{width:405px}#askButton{line-height:44px;margin-top:6px;float:right;text-transform:uppercase;width:200px;height:42px;font-size:23px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}#askButton:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#ContentLeft{width:730px;float:left;position:relative;padding-bottom:10px}#ContentRight{width:200px;float:right;padding:0 0 10px 0}#ContentFull{float:left;width:960px}.box{background:#fff;padding:4px 0 10px 0;width:200px}.box p{margin-bottom:4px}.box p.info-box-follow-up-links{text-align:right;margin:0}.box h2{padding-left:0;background:#eceeeb;height:30px;line-height:30px;text-align:right;font-size:18px!important;font-weight:normal;color:#656565;padding-right:10px;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif;width:190px}.box h3{color:#4a757f;font-size:18px;text-align:left;font-weight:normal;font-family:'Yanone Kaffeesatz',sans-serif;padding-left:0}.box .contributorback{background:#eceeeb url(../images/contributorsback.png) no-repeat center left}.box label{color:#707070;font-size:15px;display:block;float:right;text-align:left;font-family:'Yanone Kaffeesatz',sans-serif;width:80px;margin-right:18px}.box #displayTagFilterControl label{width:160px}.box ul{margin-left:22px}.box li{list-style-type:disc;font-size:13px;line-height:20px;margin-bottom:10px;color:#707070}.box ul.tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}.box #displayTagFilterControl p label{color:#707070;font-size:15px}.box .inputs #interestingTagInput,.box .inputs #ignoredTagInput{width:153px;padding-left:5px;border:#c9c9b5 1px solid;height:25px}.box .inputs #interestingTagAdd,.box .inputs #ignoredTagAdd{border:0;font-weight:bold;margin-top:-2px;width:30px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0 1px 0 #e6f6fa;-moz-text-shadow:0 1px 0 #e6f6fa;-webkit-text-shadow:0 1px 0 #e6f6fa}.box .inputs #interestingTagAdd:hover,.box .inputs #ignoredTagAdd:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box img.gravatar{margin:1px}.box a.followed,.box a.follow{line-height:34px;border:0;font-weight:normal;margin-top:3px;display:block;width:120px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin:0 auto;padding:0}.box a.followed:hover,.box a.follow:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box a.followed div.unfollow{display:none}.box a.followed:hover div{display:none}.box a.followed:hover div.unfollow{display:inline;color:#a05736}.box .favorite-number{padding:5px 0 0 5px;font-size:100%;font-family:Arial;font-weight:bold;color:#777;text-align:center}.box .notify-sidebar #question-subscribe-sidebar{margin:7px 0 0 3px}.statsWidget p{color:#707070;font-size:16px;border-bottom:#ccc 1px solid;font-size:13px}.statsWidget p strong{float:right;padding-right:10px}.questions-related{word-wrap:break-word}.questions-related p{line-height:20px;padding:4px 0 4px 0;font-size:16px;font-weight:normal;border-bottom:#ccc 1px solid}.questions-related a{font-size:13px}#tips li{color:#707070;font-size:13px;list-style-image:url(../images/tips.png)}#tips a{font-size:16px}#markdownHelp li{color:#707070;font-size:13px}#markdownHelp a{font-size:16px}.tabBar{background-color:#eff5f6;height:30px;margin-bottom:3px;margin-top:3px;float:right;font-family:Georgia,serif;font-size:16px;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.tabBar h2{float:left}.tabsA,.tabsC{float:right;position:relative;display:block;height:20px}.tabsA{float:right}.tabsC{float:left}.tabsA a,.tabsC a{border-left:1px solid #d0e1e4;color:#7ea9b3;display:block;float:left;height:20px;line-height:20px;padding:4px 7px 4px 7px;text-decoration:none}.tabsA a.on,.tabsC a.on,.tabsA a:hover,.tabsC a:hover{color:#4a757f}.tabsA .label,.tabsC .label{float:left;color:#646464;margin-top:4px;margin-right:5px}.main-page .tabsA .label{margin-left:8px}.tabsB a{background:#eee;border:1px solid #eee;color:#777;display:block;float:left;height:22px;line-height:28px;margin:5px 0 0 4px;padding:0 11px 0 11px;text-decoration:none}.tabsC .first{border:0}.rss{float:right;font-size:16px;color:#f57900;margin:5px 0 3px 7px;width:52px;padding-left:2px;padding-top:3px;background:#fff url(../images/feed-icon-small.png) no-repeat center right;float:right;font-family:Georgia,serif;font-size:16px}.rss:hover{color:#f4a731!important}#questionCount{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;margin-bottom:8px;padding-top:6px;font-family:'Yanone Kaffeesatz',sans-serif}#listSearchTags{float:left;margin-top:3px;color:#707070;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}ul#searchTags{margin-left:10px;float:right;padding-top:2px}.search-tips{font-size:16px;line-height:17px;color:#707070;margin:5px 0 10px 0;padding:0;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.search-tips a{text-decoration:underline;color:#1b79bd}#question-list{float:left;position:relative;background-color:#FFF;padding:0;width:100%}.short-summary{position:relative;filter:inherit;padding:10px;border-bottom:1px solid #dddbce;margin-bottom:1px;overflow:hidden;width:710px;float:left;background:url(../images/summary-background.png) repeat-x}.short-summary h2{font-size:24px;font-weight:normal;line-height:26px;padding-left:0;margin-bottom:6px;display:block;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary a{color:#464646}.short-summary .userinfo{text-align:right;line-height:16px;font-family:Arial;padding-right:4px}.short-summary .userinfo .relativetime,.short-summary span.anonymous{font-size:11px;clear:both;font-weight:normal;color:#555}.short-summary .userinfo a{font-weight:bold;font-size:11px}.short-summary .counts{float:right;margin:4px 0 0 5px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .item-count{padding:0 5px 0 5px;font-size:25px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .votes div,.short-summary .counts .views div,.short-summary .counts .answers div,.short-summary .counts .favorites div{margin-top:3px;font-size:14px;line-height:14px;color:#646464}.short-summary .tags{margin-top:0}.short-summary .votes,.short-summary .answers,.short-summary .favorites,.short-summary .views{text-align:center;margin:0 3px;padding:8px 2px 0 2px;width:51px;float:right;height:44px;border:#dbdbd4 1px solid}.short-summary .votes{background:url(../images/vote-background.png) repeat-x}.short-summary .answers{background:url(../images/answers-background.png) repeat-x}.short-summary .views{background:url(../images/view-background.png) repeat-x}.short-summary .no-votes .item-count{color:#b1b5b6}.short-summary .some-votes .item-count{color:#4a757f}.short-summary .no-answers .item-count{color:#b1b5b6}.short-summary .some-answers .item-count{color:#eab243}.short-summary .no-views .item-count{color:#b1b5b6}.short-summary .some-views .item-count{color:#d33f00}.short-summary .accepted .item-count{background:url(../images/accept.png) no-repeat top right;display:block;text-align:center;width:40px;color:#eab243}.short-summary .some-favorites .item-count{background:#338333;color:#d0f5a9}.short-summary .no-favorites .item-count{background:#eab243;color:yellow}.evenMore{font-size:13px;color:#707070;padding:15px 0 10px 0;clear:both}.evenMore a{text-decoration:underline;color:#1b79bd}.pager{margin-top:10px;margin-bottom:16px}.pagesize{margin-top:10px;margin-bottom:16px;float:right}.paginator{padding:5px 0 10px 0;font-size:13px;margin-bottom:10px}.paginator .prev a,.paginator .prev a:visited,.paginator .next a,.paginator .next a:visited{background-color:#fff;color:#777;padding:2px 4px 3px 4px}.paginator a{color:#7ea9b3}.paginator .prev{margin-right:.5em}.paginator .next{margin-left:.5em}.paginator .page a,.paginator .page a:visited,.paginator .curr{padding:.25em;background-color:#fff;margin:0 .25em;color:#ff}.paginator .curr{background-color:#8ebcc7;color:#fff;font-weight:bold}.paginator .next a,.paginator .prev a{color:#7ea9b3}.paginator .page a:hover,.paginator .curr a:hover,.paginator .prev a:hover,.paginator .next a:hover{color:#8c8c8c;background-color:#e1e1e1;text-decoration:none}.paginator .text{color:#777;padding:.3em}.paginator .paginator-container-left{padding:5px 0 10px 0}.tag-size-1{font-size:12px}.tag-size-2{font-size:13px}.tag-size-3{font-size:14px}.tag-size-4{font-size:15px}.tag-size-5{font-size:16px}.tag-size-6{font-size:17px}.tag-size-7{font-size:18px}.tag-size-8{font-size:19px}.tag-size-9{font-size:20px}.tag-size-10{font-size:21px}ul.tags,ul.tags.marked-tags,ul#related-tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}ul.tags li{float:left;display:block;margin:0 8px 0 0;padding:0;height:20px}.wildcard-tags{clear:both}ul.tags.marked-tags li,.wildcard-tags ul.tags li{margin-bottom:5px}#tagSelector div.inputs{clear:both;float:none;margin-bottom:10px}.tags-page ul.tags li,ul#ab-user-tags li{width:160px;margin:5px}ul#related-tags li{margin:0 5px 8px 0;float:left;clear:left}.tag-left{cursor:pointer;display:block;float:left;height:17px;margin:0 5px 0 0;padding:0;-webkit-box-shadow:0 0 5px #d3d6d7;-moz-box-shadow:0 0 5px #d3d6d7;box-shadow:0 0 5px #d3d6d7}.tag-right{background:#f3f6f6;border:#fff 1px solid;border-top:#fff 2px solid;outline:#cfdbdb 1px solid;display:block;float:left;height:17px;line-height:17px;font-weight:normal;font-size:11px;padding:0 8px 0 8px;text-decoration:none;text-align:center;white-space:nowrap;vertical-align:middle;font-family:Arial;color:#717179}.deletable-tag{margin-right:3px;white-space:nowrap;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px}.tags a.tag-right,.tags span.tag-right{color:#585858;text-decoration:none}.tags a:hover{color:#1a1a1a}.users-page h1,.tags-page h1{float:left}.main-page h1{margin-right:5px}.delete-icon{margin-top:-1px;float:left;height:21px;width:18px;display:block;line-height:20px;text-align:center;background:#bbcdcd;cursor:default;color:#fff;border-top:#cfdbdb 1px solid;font-family:Arial;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px;text-shadow:0 1px 0 #7ea0a0;-moz-text-shadow:0 1px 0 #7ea0a0;-webkit-text-shadow:0 1px 0 #7ea0a0}.delete-icon:hover{background:#b32f2f}.tag-number{font-weight:normal;float:left;font-size:16px;color:#5d5d5d}.badges .tag-number{float:none;display:inline;padding-right:15px}.section-title{color:#7ea9b3;font-family:'Yanone Kaffeesatz',sans-serif;font-weight:bold;font-size:24px}#fmask{margin-bottom:30px;width:100%}#askFormBar{display:inline-block;padding:4px 7px 5px 0;margin-top:0}#askFormBar p{margin:0 0 5px 0;font-size:14px;color:#525252;line-height:1.4}#askFormBar .questionTitleInput{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px}.ask-page div#question-list,.edit-question-page div#question-list{float:none;border-bottom:#f0f0ec 1px solid;float:left;margin-bottom:10px}.ask-page div#question-list a,.edit-question-page div#question-list a{line-height:30px}.ask-page div#question-list h2,.edit-question-page div#question-list h2{font-size:13px;padding-bottom:0;color:#1b79bd;border-top:#f0f0ec 1px solid;border-left:#f0f0ec 1px solid;height:30px;line-height:30px;font-weight:normal}.ask-page div#question-list span,.edit-question-page div#question-list span{width:28px;height:26px;line-height:26px;text-align:center;margin-right:10px;float:left;display:block;color:#fff;background:#b8d0d5;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.ask-page label,.edit-question-page label{color:#525252;font-size:13px}.ask-page #id_tags,.edit-question-page #id_tags{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.title-desc{color:#707070;font-size:13px}#fmanswer input.submit,.ask-page input.submit,.edit-question-page input.submit{float:left;font-weight:normal;margin-top:3px;width:160px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin-right:7px}#fmanswer input.submit:hover,.ask-page input.submit:hover,.edit-question-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#editor{font-size:100%;min-height:200px;line-height:18px;margin:0;border-left:#cce6ec 3px solid;border-bottom:#cce6ec 3px solid;border-right:#cce6ec 3px solid;border-top:0;padding:10px;margin-bottom:10px;width:710px}@media screen and (-webkit-min-device-pixel-ratio:0){#editor{width:717px}}#id_title{width:100%}.wmd-preview{margin:3px 0 5px 0;padding:6px;background-color:#f5f5f5;min-height:20px;overflow:auto;font-size:13px;font-family:Arial}.wmd-preview p{margin-bottom:14px;line-height:1.4;font-size:14px}.wmd-preview pre{background-color:#e7f1f8}.wmd-preview blockquote{background-color:#eee}.wmd-preview IMG{max-width:600px}.preview-toggle{width:100%;color:#b6a475;text-align:left}.preview-toggle span:hover{cursor:pointer}.after-editor{margin-top:15px;margin-bottom:15px}.checkbox{margin-left:5px;font-weight:normal;cursor:help}.question-options{margin-top:1px;color:#666;line-height:13px;margin-bottom:5px}.question-options label{vertical-align:text-bottom}.edit-content-html{border-top:1px dotted #d8d2a9;border-bottom:1px dotted #d8d2a9;margin:5px 0 5px 0}.edit-question-page,#fmedit,.wmd-preview{color:#525252}.edit-question-page #id_revision,#fmedit #id_revision,.wmd-preview #id_revision{font-size:14px;margin-top:5px;margin-bottom:5px}.edit-question-page #id_title,#fmedit #id_title,.wmd-preview #id_title{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px;margin-bottom:10px}.edit-question-page #id_summary,#fmedit #id_summary,.wmd-preview #id_summary{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.edit-question-page .title-desc,#fmedit .title-desc,.wmd-preview .title-desc{margin-bottom:10px}.question-page h1{padding-top:0;font-family:'Yanone Kaffeesatz',sans-serif}.question-page h1 a{color:#464646;font-size:30px;font-weight:normal;line-height:1}.question-page p.rss{float:none;clear:both;padding:3px 0 0 23px;font-size:15px;width:110px;background-position:center left;margin-left:0!important}.question-page p.rss a{font-family:'Yanone Kaffeesatz',sans-serif;vertical-align:top}.question-page .question-content{float:right;width:682px;margin-bottom:10px}.question-page #question-table{float:left;border-top:#f0f0f0 1px solid}.question-page #question-table,.question-page .answer-table{margin:6px 0 6px 0;border-spacing:0;width:670px;padding-right:10px}.question-page .answer-table{margin-top:0;border-bottom:1px solid #d4d4d4;float:right}.question-page .answer-table td,.question-page #question-table td{width:20px;vertical-align:top}.question-page .question-body,.question-page .answer-body{overflow:auto;margin-top:10px;font-family:Arial;color:#4b4b4b}.question-page .question-body p,.question-page .answer-body p{margin-bottom:14px;line-height:1.4;font-size:14px;padding:0 5px 5px 0}.question-page .question-body a,.question-page .answer-body a{color:#1b79bd}.question-page .question-body li,.question-page .answer-body li{margin-bottom:7px}.question-page .question-body IMG,.question-page .answer-body IMG{max-width:600px}.question-page .post-update-info-container{float:right;width:175px}.question-page .post-update-info{background:#fff url(../images/background-user-info.png) repeat-x bottom;float:right;font-size:9px;font-family:Arial;width:158px;padding:4px;margin:0 0 5px 5px;line-height:14px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:0 2px 1px #bfbfbf;-moz-box-shadow:0 2px 1px #bfbfbf;box-shadow:0 2px 1px #bfbfbf}.question-page .post-update-info p{line-height:13px;font-size:11px;margin:0 0 2px 1px;padding:0}.question-page .post-update-info a{color:#444}.question-page .post-update-info .gravatar{float:left;margin-right:4px}.question-page .post-update-info p.tip{color:#444;line-height:13px;font-size:10px}.question-page .post-controls{font-size:11px;line-height:12px;min-width:200px;padding-left:5px;text-align:right;clear:left;float:right;margin-top:10px;margin-bottom:8px}.question-page .post-controls a{color:#777;padding:0 7px 3px 18px;cursor:pointer;border:0;font-size:12px;font-family:Arial;text-decoration:none;height:18px;display:block;float:right;line-height:18px;margin-top:-2px;margin-left:4px}.question-page .post-controls a:hover{background-color:#f5f0c9;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.question-page .post-controls .sep{color:#ccc;float:right;height:18px;font-size:18px}.question-page .post-controls .question-delete,.question-page .answer-controls .question-delete{background:url(../images/delete.png) no-repeat center left;padding-left:11px}.question-page .post-controls .question-flag,.question-page .answer-controls .question-flag{background:url(../images/flag.png) no-repeat center left}.question-page .post-controls .question-edit,.question-page .answer-controls .question-edit{background:url(../images/edit2.png) no-repeat center left}.question-page .post-controls .question-retag,.question-page .answer-controls .question-retag{background:url(../images/retag.png) no-repeat center left}.question-page .post-controls .question-close,.question-page .answer-controls .question-close{background:url(../images/close.png) no-repeat center left}.question-page .post-controls .permant-link,.question-page .answer-controls .permant-link{background:url(../images/link.png) no-repeat center left}.question-page .tabBar{width:100%}.question-page #questionCount{float:left;font-family:'Yanone Kaffeesatz',sans-serif;line-height:15px}.question-page .question-img-upvote,.question-page .question-img-downvote,.question-page .answer-img-upvote,.question-page .answer-img-downvote{width:25px;height:20px;cursor:pointer}.question-page .question-img-upvote,.question-page .answer-img-upvote{background:url(../images/vote-arrow-up-new.png) no-repeat}.question-page .question-img-downvote,.question-page .answer-img-downvote{background:url(../images/vote-arrow-down-new.png) no-repeat}.question-page .question-img-upvote:hover,.question-page .question-img-upvote.on,.question-page .answer-img-upvote:hover,.question-page .answer-img-upvote.on{background:url(../images/vote-arrow-up-on-new.png) no-repeat}.question-page .question-img-downvote:hover,.question-page .question-img-downvote.on,.question-page .answer-img-downvote:hover,.question-page .answer-img-downvote.on{background:url(../images/vote-arrow-down-on-new.png) no-repeat}.question-page #fmanswer_button{margin:8px 0}.question-page .question-img-favorite:hover{background:url(../images/vote-favorite-on.png)}.question-page div.comments{padding:0}.question-page #comment-title{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.question-page .comments{font-size:12px;clear:both}.question-page .comments div.controls{clear:both;float:left;width:100%;margin:3px 0 20px 5px}.question-page .comments .controls a{color:#988e4c;padding:0 3px 2px 22px;font-family:Arial;font-size:13px;background:url(../images/comment.png) no-repeat center left}.question-page .comments .controls a:hover{background-color:#f5f0c9;text-decoration:none}.question-page .comments .button{color:#988e4c;font-size:11px;padding:3px;cursor:pointer}.question-page .comments a{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments form.post-comments{margin:3px 26px 0 42px}.question-page .comments form.post-comments textarea{font-size:13px;line-height:1.3}.question-page .comments textarea{height:42px;width:100%;margin:7px 0 5px 1px;font-family:Arial;outline:0;overflow:auto;font-size:12px;line-height:140%;padding-left:2px;padding-top:3px;border:#cce6ec 3px solid}@media screen and (-webkit-min-device-pixel-ratio:0){textarea{padding-left:3px!important}}.question-page .comments input{margin-left:10px;margin-top:1px;vertical-align:top;width:100px}.question-page .comments button{line-height:25px;margin-bottom:5px;width:100px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold}.question-page .comments button:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.question-page .comments .counter{display:inline-block;width:245px;float:right;color:#b6a475!important;vertical-align:top;font-family:Arial;float:right;text-align:right}.question-page .comments .comment{border-bottom:1px solid #edeeeb;clear:both;margin:0;margin-top:8px;padding-bottom:4px;overflow:auto;font-family:Arial;font-size:11px;min-height:25px;background:#fff url(../images/comment-background.png) bottom repeat-x;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.question-page .comments div.comment:hover{background-color:#efefef}.question-page .comments a.author{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments a.author:hover{text-decoration:underline}.question-page .comments span.delete-icon{background:url(../images/close-small.png) no-repeat;border:0;width:14px;height:14px}.question-page .comments span.delete-icon:hover{border:#bc564b 2px solid;border-radius:10px;-ms-border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;margin:-3px 0 0 -2px}.question-page .comments .content{margin-bottom:7px}.question-page .comments .comment-votes{float:left;width:37px;line-height:130%;padding:6px 5px 6px 3px}.question-page .comments .comment-body{line-height:1.3;margin:3px 26px 0 46px;padding:5px 3px;color:#666;font-size:13px}.question-page .comments .comment-body .edit{padding-left:6px}.question-page .comments .comment-body p{font-size:13px;line-height:1.3;margin-bottom:3px;padding:0}.question-page .comments .comment-delete{float:right;width:14px;line-height:130%;padding:8px 6px}.question-page .comments .upvote{margin:0;padding-right:17px;padding-top:2px;text-align:right;height:20px;font-size:13px;font-weight:bold;color:#777}.question-page .comments .upvote.upvoted{color:#d64000}.question-page .comments .upvote.hover{background:url(../images/go-up-grey.png) no-repeat;background-position:right 1px}.question-page .comments .upvote:hover{background:url(../images/go-up-orange.png) no-repeat;background-position:right 1px}.question-page .comments .help-text{float:right;text-align:right;color:gray;margin-bottom:0;margin-top:0;line-height:50%}.question-page #questionTools{font-size:22px;margin-top:11px;text-align:left}.question-page .question-status{margin-top:10px;margin-bottom:15px;padding:20px;background-color:#fef7cc;text-align:center;border:#e1c04a 1px solid}.question-page .question-status h3{font-size:20px;color:#707070;font-weight:normal}.question-page .vote-buttons{float:left;text-align:center;padding-top:2px;margin:10px 10px 0 3px;*margin:0;*height:210px;*width:30px}.question-page .vote-buttons IMG{cursor:pointer}.question-page .vote-number{font-family:'Yanone Kaffeesatz',sans-serif;padding:0 0 5px 0;font-size:25px;font-weight:bold;color:#777}.question-page .vote-buttons .notify-sidebar{text-align:left;width:120px}.question-page .vote-buttons .notify-sidebar label{vertical-align:top}.question-page .tabBar-answer{margin-bottom:15px;padding-left:7px;width:723px;margin-top:10px}.question-page .answer .vote-buttons{float:left}.question-page .accepted-answer{background-color:#f7fecc;border-bottom-color:#9bd59b}.question-page .accepted-answer .vote-buttons{width:27px;margin-right:10px;margin-top:10px}.question-page .answer .post-update-info a{color:#444}.question-page .answered{background:#CCC;color:#999}.question-page .answered-accepted{background:#dcdcdc;color:#763333}.question-page .answered-accepted strong{color:#e1e818}.question-page .answered-by-owner{background:#f1f1ff}.question-page .answered-by-owner .comments .button{background-color:#e6ecff}.question-page .answered-by-owner .comments{background-color:#e6ecff}.question-page .answered-by-owner .vote-buttons{margin-right:10px}.question-page .answer-img-accept:hover{background:url(../images/vote-accepted-on.png)}.question-page .answer-body a{color:#1b79bd}.question-page .answer-body li{margin-bottom:.7em}.question-page #fmanswer{color:#707070;line-height:1.2;margin-top:10px}.question-page #fmanswer h2{font-family:'Yanone Kaffeesatz',sans-serif;color:#7ea9b3;font-size:24px}.question-page #fmanswer label{font-size:13px}.question-page .message{padding:5px;margin:0 0 10px 0}.facebook-share.icon,.twitter-share.icon,.linkedin-share.icon,.identica-share.icon{background:url(../images/socialsprite.png) no-repeat;display:block;text-indent:-100em;height:25px;width:25px;margin-bottom:3px}.facebook-share.icon:hover,.twitter-share.icon:hover,.linkedin-share.icon:hover,.identica-share.icon:hover{opacity:.8;filter:alpha(opacity=80)}.facebook-share.icon{background-position:-26px 0}.identica-share.icon{background-position:-78px 0}.twitter-share.icon{margin-top:10px;background-position:0 0}.linkedin-share.icon{background-position:-52px 0}.openid-signin,.meta,.users-page,.user-profile-edit-page{font-size:13px;line-height:1.3;color:#525252}.openid-signin p,.meta p,.users-page p,.user-profile-edit-page p{font-size:13px;color:#707070;line-height:1.3;font-family:Arial;color:#525252;margin-bottom:12px}.openid-signin h2,.meta h2,.users-page h2,.user-profile-edit-page h2{color:#525252;padding-left:0;font-size:16px}.openid-signin form,.meta form,.users-page form,.user-profile-edit-page form,.user-profile-page form{margin-bottom:15px}.openid-signin input[type="text"],.meta input[type="text"],.users-page input[type="text"],.user-profile-edit-page input[type="text"],.user-profile-page input[type="text"],.openid-signin input[type="password"],.meta input[type="password"],.users-page input[type="password"],.user-profile-edit-page input[type="password"],.user-profile-page input[type="password"],.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{width:405px;height:30px}.openid-signin textarea,.meta textarea,.users-page textarea,.user-profile-edit-page textarea,.user-profile-page textarea{border:#cce6ec 3px solid;padding-left:5px;padding-top:5px;width:395px;font-size:14px}.openid-signin input.submit,.meta input.submit,.users-page input.submit,.user-profile-edit-page input.submit,.user-profile-page input.submit{font-weight:normal;margin:5px 0;width:100px;height:26px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial}.openid-signin input.submit:hover,.meta input.submit:hover,.users-page input.submit:hover,.user-profile-edit-page input.submit:hover,.user-profile-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-signin .cancel,.meta .cancel,.users-page .cancel,.user-profile-edit-page .cancel,.user-profile-page .cancel{background:url(../images/small-button-cancel.png) repeat-x top!important;color:#525252!important}.openid-signin .cancel:hover,.meta .cancel:hover,.users-page .cancel:hover,.user-profile-edit-page .cancel:hover,.user-profile-page .cancel:hover{background:url(../images/small-button-cancel.png) repeat-x bottom!important}#email-input-fs,#local_login_buttons,#password-fs,#openid-fs{margin-top:10px}#email-input-fs #id_email,#local_login_buttons #id_email,#password-fs #id_email,#openid-fs #id_email,#email-input-fs #id_username,#local_login_buttons #id_username,#password-fs #id_username,#openid-fs #id_username,#email-input-fs #id_password,#local_login_buttons #id_password,#password-fs #id_password,#openid-fs #id_password{font-size:12px;line-height:20px;height:20px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:200px}#email-input-fs .submit-b,#local_login_buttons .submit-b,#password-fs .submit-b,#openid-fs .submit-b{width:100px;height:24px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold;padding-right:10px;border:0}#email-input-fs .submit-b:hover,#local_login_buttons .submit-b:hover,#password-fs .submit-b:hover,#openid-fs .submit-b:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-input{background:url(../images/openid.gif) no-repeat;padding-left:15px;cursor:pointer}.openid-login-input{background-position:center left;background:url(../images/openid.gif) no-repeat 0 50%;padding:5px 5px 5px 15px;cursor:pointer;font-family:Trebuchet MS;font-weight:300;font-size:150%;width:500px}.openid-login-submit{height:40px;width:80px;line-height:40px;cursor:pointer;border:1px solid #777;font-weight:bold;font-size:120%}.tabBar-user{width:375px}.user{padding:5px;line-height:140%;width:166px;border:#eee 1px solid;margin-bottom:5px;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.user .user-micro-info{color:#525252}.user ul{margin:0;list-style-type:none}.user .thumb{clear:both;float:left;margin-right:4px;display:inline}.tabBar-tags{width:270px;margin-bottom:15px}a.medal{font-size:17px;line-height:250%;margin-right:5px;color:#333;text-decoration:none;background:url(../images/medala.gif) no-repeat;border-left:1px solid #EEE;border-top:1px solid #EEE;border-bottom:1px solid #CCC;border-right:1px solid #CCC;padding:4px 12px 4px 6px}a:hover.medal{color:#333;text-decoration:none;background:url(../images/medala_on.gif) no-repeat;border-left:1px solid #e7e296;border-top:1px solid #e7e296;border-bottom:1px solid #d1ca3d;border-right:1px solid #d1ca3d}#award-list .user{float:left;margin:5px}.tabBar-profile{width:100%;margin-bottom:15px;float:left}.user-profile-page{font-size:13px;color:#525252}.user-profile-page p{font-size:13px;line-height:1.3;color:#525252}.user-profile-page .avatar img{border:#eee 1px solid;padding:5px}.user-profile-page h2{padding:10px 0 10px 0;font-family:'Yanone Kaffeesatz',sans-serif}.user-details{font-size:13px}.user-details h3{font-size:16px}.user-about{background-color:#eee;height:200px;line-height:20px;overflow:auto;padding:10px;width:90%}.user-about p{font-size:13px}.follow-toggle,.submit{border:0!important;font-weight:bold;line-height:26px;margin-top:-2px;width:100px;height:26px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}.follow-toggle:hover,.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-decoration:none!important}.follow-toggle .follow{font-color:#000;font-style:normal}.follow-toggle .unfollow div.unfollow-red{display:none}.follow-toggle .unfollow:hover div.unfollow-red{display:inline;color:#fff;font-weight:bold;color:#a05736}.follow-toggle .unfollow:hover div.unfollow-green{display:none}.count{font-family:'Yanone Kaffeesatz',sans-serif;font-size:200%;font-weight:700;color:#777}.scoreNumber{font-family:'Yanone Kaffeesatz',sans-serif;font-size:35px;font-weight:800;color:#777;line-height:40px;margin-top:3px}.vote-count{font-family:Arial;font-size:160%;font-weight:700;color:#777}.answer-summary{display:block;clear:both;padding:3px}.answer-votes{background-color:#eee;color:#555;float:left;font-family:Arial;font-size:15px;font-weight:bold;height:17px;padding:2px 4px 5px;text-align:center;text-decoration:none;width:20px;margin-right:10px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.karma-summary{padding:5px;font-size:13px}.karma-summary h3{text-align:center;font-weight:bold;padding:5px}.karma-diagram{width:477px;height:300px;float:left;margin-right:10px}.karma-details{float:right;width:450px;height:250px;overflow-y:auto;word-wrap:break-word}.karma-details p{margin-bottom:10px}.karma-gained{font-weight:bold;background:#eee;width:25px;margin-right:5px;color:green;padding:3px;display:block;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.karma-lost{font-weight:bold;background:#eee;width:25px;color:red;padding:3px;display:block;margin-right:5px;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.submit-row{margin-bottom:10px}.revision{margin:10px 0 10px 0;font-size:13px;color:#525252}.revision p{font-size:13px;line-height:1.3;color:#525252}.revision h3{font-family:'Yanone Kaffeesatz',sans-serif;font-size:21px;padding-left:0}.revision .header{background-color:#f5f5f5;padding:5px;cursor:pointer}.revision .author{background-color:#e9f3f5}.revision .summary{padding:5px 0 10px 0}.revision .summary span{background-color:#fde785;padding:6px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;display:inline;-webkit-box-shadow:1px 1px 4px #cfb852;-moz-box-shadow:1px 1px 4px #cfb852;box-shadow:1px 1px 4px #cfb852}.revision .answerbody{padding:10px 0 5px 10px}.revision .revision-mark{width:150px;text-align:left;display:inline-block;font-size:11px;overflow:hidden}.revision .revision-mark .gravatar{float:left;margin-right:4px;padding-top:5px}.revision .revision-number{font-size:300%;font-weight:bold;font-family:sans-serif}del,del .post-tag{color:#c34719}ins .post-tag,ins p,ins{background-color:#e6f0a2}.vote-notification{z-index:1;cursor:pointer;display:none;position:absolute;font-family:Arial;font-size:14px;font-weight:normal;color:white;background-color:#8e0000;text-align:center;padding-bottom:10px;-webkit-box-shadow:0 2px 4px #370000;-moz-box-shadow:0 2px 4px #370000;box-shadow:0 2px 4px #370000;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.vote-notification h3{background:url(../images/notification.png) repeat-x top;padding:10px 10px 10px 10px;font-size:13px;margin-bottom:5px;border-top:#8e0000 1px solid;color:#fff;font-weight:normal;border-top-right-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px}.vote-notification a{color:#fb7321;text-decoration:underline;font-weight:bold}#ground{width:100%;clear:both;border-top:1px solid #000;padding:6px 0 0 0;background:#16160f;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}#ground p{margin-bottom:0}.footer-links{color:#EEE;text-align:left;width:500px;float:left}.footer-links a{color:#e7e8a8}.powered-link{width:500px;float:left;text-align:left}.powered-link a{color:#8ebcc7}.copyright{color:#616161;width:450px;float:right;text-align:right}.copyright a{color:#8ebcc7}.copyright img.license-logo{margin:6px 0 20px 10px;float:right}.notify-me{float:left}span.text-counter{margin-right:20px}span.form-error{color:#900;font-weight:normal;margin-left:5px}ul.errorlist{margin-bottom:0}p.form-item{margin:0}.deleted{background:#f4e7e7 none repeat scroll 0 0}.form-row{line-height:25px}table.form-as-table{margin-top:5px}table.form-as-table ul{list-style-type:none;display:inline}table.form-as-table li{display:inline}table.form-as-table td{text-align:right}table.form-as-table th{text-align:left;font-weight:normal}table.ab-subscr-form{width:45em}table.ab-tag-filter-form{width:45em}.submit-row{line-height:30px;padding-top:10px;display:block;clear:both}.errors{line-height:20px;color:red}.error{color:darkred;margin:0;font-size:10px}label.retag-error{color:darkred;padding-left:5px;font-size:10px}.fieldset{border:0;margin-top:10px;padding:10px}span.form-error{color:#900;font-size:90%;font-weight:normal;margin-left:5px}.favorites-empty{width:32px;height:45px;float:left}.user-info-table{margin-bottom:10px;border-spacing:0}.user-stats-table .narrow{width:660px}.narrow .summary h3{padding:0;margin:0}.relativetime{font-weight:bold;text-decoration:none}.narrow .tags{float:left}.user-action-1{font-weight:bold;color:#333}.user-action-2{font-weight:bold;color:#CCC}.user-action-3{color:#333}.user-action-4{color:#333}.user-action-5{color:darkred}.user-action-6{color:darkred}.user-action-7{color:#333}.user-action-8{padding:3px;font-weight:bold;background-color:#CCC;color:#763333}.revision-summary{background-color:#fffe9b;padding:2px}.question-title-link a{font-weight:bold;color:#07c}.answer-title-link a{color:#333}.post-type-1 a{font-weight:bold}.post-type-3 a{font-weight:bold}.post-type-5 a{font-weight:bold}.post-type-2 a{color:#333}.post-type-4 a{color:#333}.post-type-6 a{color:#333}.post-type-8 a{color:#333}.hilite{background-color:#ff0}.hilite1{background-color:#ff0}.hilite2{background-color:#f0f}.hilite3{background-color:#0ff}.gold,.badge1{color:#fc0}.silver,.badge2{color:#ccc}.bronze,.badge3{color:#c93}.score{font-weight:800;color:#333}a.comment{background:#EEE;color:#930;padding:5px}a.offensive{color:#999}.message h1{padding-top:0;font-size:15px}.message p{margin-bottom:0}p.space-above{margin-top:10px}.warning{color:red}button::-moz-focus-inner{padding:0;border:0}.submit{cursor:pointer;background-color:#d4d0c8;height:30px;border:1px solid #777;font-weight:bold;font-size:120%}.submit:hover{text-decoration:underline}.submit.small{margin-right:5px;height:20px;font-weight:normal;font-size:12px;padding:1px 5px}.submit.small:hover{text-decoration:none}.question-page a.submit{display:-moz-inline-stack;display:inline-block;line-height:30px;padding:0 5px;*display:inline}.noscript{position:fixed;top:0;left:0;width:100%;z-index:100;padding:5px 0;text-align:center;font-family:sans-serif;font-size:120%;font-weight:Bold;color:#fff;background-color:#ae0000}.big{font-size:14px}.strong{font-weight:bold}.orange{color:#d64000;font-weight:bold}.grey{color:#808080}.about div{padding:10px 5px 10px 5px;border-top:1px dashed #aaa}.highlight{background-color:#fff8c6}.nomargin{margin:0}.margin-bottom{margin-bottom:10px}.margin-top{margin-top:10px}.inline-block{display:inline-block}.action-status{margin:0;border:0;text-align:center;line-height:10px;font-size:12px;padding:0}.action-status span{padding:3px 5px 3px 5px;background-color:#fff380;font-weight:normal;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px}.list-table td{vertical-align:top}table.form-as-table .errorlist{display:block;margin:0;padding:0 0 0 5px;text-align:left;font-size:10px;color:darkred}table.form-as-table input{display:inline;margin-left:4px}table.form-as-table th{vertical-align:bottom;padding-bottom:4px}.form-row-vertical{margin-top:8px;display:block}.form-row-vertical label{margin-bottom:3px;display:block}.text-align-right{text-align:center}ul.form-horizontal-rows{list-style:none;margin:0}ul.form-horizontal-rows li{position:relative;height:40px}ul.form-horizontal-rows label{display:inline-block}ul.form-horizontal-rows ul.errorlist{list-style:none;color:darkred;font-size:10px;line-height:10px;position:absolute;top:2px;left:180px;text-align:left;margin:0}ul.form-horizontal-rows ul.errorlist li{height:10px}ul.form-horizontal-rows label{position:absolute;left:0;bottom:6px;margin:0;line-height:12px;font-size:12px}ul.form-horizontal-rows li input{position:absolute;bottom:0;left:180px;margin:0}.narrow .summary{float:left}.user-profile-tool-links{font-weight:bold;vertical-align:top}ul.post-tags{margin-left:3px}ul.post-tags li{margin-top:4px;margin-bottom:3px}ul.post-retag{margin-bottom:0;margin-left:5px}#question-controls .tags{margin:0 0 3px 0}#tagSelector{padding-bottom:2px;margin-bottom:0}#related-tags{padding-left:3px}#hideIgnoredTagsControl{margin:5px 0 0 0}#hideIgnoredTagsControl label{font-size:12px;color:#666}#hideIgnoredTagsCb{margin:0 2px 0 1px}#recaptcha_widget_div{width:318px;float:left;clear:both}p.signup_p{margin:20px 0 0 0}.simple-subscribe-options ul{list-style:none;list-style-position:outside;margin:0}.wmd-preview a{color:#1b79bd}.wmd-preview li{margin-bottom:7px;font-size:14px}.search-result-summary{font-weight:bold;font-size:18px;line-height:22px;margin:0;padding:2px 0 0 0;float:left}.faq-rep-item{text-align:right;padding-right:5px}.user-info-table .gravatar{margin:0}#responses{clear:both;line-height:18px;margin-bottom:15px}#responses div.face{float:left;text-align:center;width:54px;padding:3px;overflow:hidden}.response-parent{margin-top:18px}.response-parent strong{font-size:20px}.re{min-height:57px;clear:both;margin-top:10px}#responses input{float:left}#re_tools{margin-bottom:10px}#re_sections{margin-bottom:6px}#re_sections .on{font-weight:bold}.avatar-page ul{list-style:none}.avatar-page li{display:inline}.user-profile-page .avatar p{margin-bottom:0}.user-profile-page .tabBar a#stats{margin-left:0}.user-profile-page img.gravatar{margin:2px 0 3px 0}.user-profile-page h3{padding:0;margin-top:-3px}.userList{font-size:13px}img.flag{border:1px solid #eee;vertical-align:text-top}.main-page img.flag{vertical-align:text-bottom}a.edit{padding-left:3px;color:#145bff}.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{clear:both;padding:3px;border:0 solid #888}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}#leading-sidebar{float:left}a.re_expand{color:#616161;text-decoration:none}a.re_expand .re_content{display:none;margin-left:77px} \ No newline at end of file diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index 360af4d1..3f6fa2fa 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -523,6 +523,7 @@ body.anon { padding-right:10px; margin-bottom:10px; font-family:@main-font; + width:190px; } h3{ color:#4a757f; @@ -1919,6 +1920,10 @@ ul#related-tags li { text-align: center; padding-top: 2px; margin:10px 10px 0px 3px; + /* smalls IE fixes */ + *margin:0; + *height:210px; + *width:30px; } .vote-buttons IMG { diff --git a/askbot/skins/default/templates/question/question_card.html b/askbot/skins/default/templates/question/question_card.html index 7077a8d1..8d308eaa 100644 --- a/askbot/skins/default/templates/question/question_card.html +++ b/askbot/skins/default/templates/question/question_card.html @@ -32,4 +32,4 @@ -
+ -- cgit v1.2.3-1-g7c22 From 2a0cc019ed0b5b5d433be3ed92711d8fcc17db14 Mon Sep 17 00:00:00 2001 From: Byron Corrales Date: Thu, 1 Mar 2012 19:11:28 -0600 Subject: a little style fix of overlap when tags have big names --- askbot/skins/default/media/style/style.css | 2 +- askbot/skins/default/media/style/style.less | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index 8d947f42..74cff6b7 100644 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -1 +1 @@ -@import url(jquery.autocomplete.css);.button-style-hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}body{background:#FFF;font-size:14px;line-height:150%;margin:0;padding:0;color:#000;font-family:Arial}div{margin:0 auto;padding:0}h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p{margin:0;padding:0;border:0}label{vertical-align:middle}hr{border:0;border-top:1px dashed #ccccce}input,select{vertical-align:middle;font-family:Trebuchet MS,"segoe ui",Helvetica,Tahoma,Verdana,MingLiu,PMingLiu,Arial,sans-serif;margin-left:0}textarea:focus,input:focus{outline:0}iframe{border:0}p{font-size:14px;line-height:140%;margin-bottom:6px}a{color:#1b79bd;text-decoration:none;cursor:pointer}h2{font-size:21px;padding:3px 0 3px 5px}h3{font-size:19px;padding:3px 0 3px 5px}ul{list-style:disc;margin-left:20px;padding-left:0;margin-bottom:1em}ol{list-style:decimal;margin-left:30px;margin-bottom:1em;padding-left:0}td ul{vertical-align:middle}li input{margin:3px 3px 4px 3px}pre{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%;margin-bottom:10px;background-color:#f5f5f5;padding-left:5px;padding-top:5px;padding-bottom:20px!ie7}code{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%}blockquote{margin-bottom:10px;margin-right:15px;padding:10px 0 1px 10px;background-color:#f5f5f5}* html .clearfix,* html .paginator{height:1;overflow:visible}+html .clearfix,+html .paginator{min-height:1%}.clearfix:after,.paginator:after{clear:both;content:".";display:block;height:0;visibility:hidden}.badges a{color:#763333;text-decoration:underline}a:hover{text-decoration:underline}.badge-context-toggle.active{cursor:pointer;text-decoration:underline}h1{font-size:24px;padding:10px 0 5px 0}body.user-messages{margin-top:2.4em}.left{float:left}.right{float:right}.clean{clear:both}.center{margin:0 auto;padding:0}.notify{position:fixed;top:0;left:0;width:100%;z-index:100;padding:0;text-align:center;background-color:#f5dd69;border-top:#fff 1px solid;font-family:'Yanone Kaffeesatz',sans-serif}.notify p.notification{margin-top:6px;margin-bottom:6px;font-size:16px;color:#424242}#closeNotify{position:absolute;right:5px;top:7px;color:#735005;text-decoration:none;line-height:18px;background:-6px -5px url(../images/sprites.png) no-repeat;cursor:pointer;width:20px;height:20px}#closeNotify:hover{background:-26px -5px url(../images/sprites.png) no-repeat}#header{margin-top:0;background:#16160f;font-family:'Yanone Kaffeesatz',sans-serif}.content-wrapper{width:960px;margin:auto;position:relative}#logo img{padding:5px 0 5px 0;height:75px;width:auto;float:left}#userToolsNav{height:20px;padding-bottom:5px}#userToolsNav a{height:35px;text-align:right;margin-left:20px;text-decoration:underline;color:#d0e296;font-size:16px}#userToolsNav a:first-child{margin-left:0}#userToolsNav a#ab-responses{margin-left:3px}#userToolsNav .user-info,#userToolsNav .user-micro-info{color:#b5b593}#userToolsNav a img{vertical-align:middle;margin-bottom:2px}#userToolsNav .user-info a{margin:0;text-decoration:none}#metaNav{float:right}#metaNav a{color:#e2e2ae;padding:0 0 0 35px;height:25px;line-height:30px;margin:5px 0 0 10px;font-size:18px;font-weight:100;text-decoration:none;display:block;float:left}#metaNav a:hover{text-decoration:underline}#metaNav a.on{font-weight:bold;color:#FFF;text-decoration:none}#metaNav a.special{font-size:18px;color:#b02b2c;font-weight:bold;text-decoration:none}#metaNav a.special:hover{text-decoration:underline}#metaNav #navTags{background:-50px -5px url(../images/sprites.png) no-repeat}#metaNav #navUsers{background:-125px -5px url(../images/sprites.png) no-repeat}#metaNav #navBadges{background:-210px -5px url(../images/sprites.png) no-repeat}#header.with-logo #userToolsNav{position:absolute;bottom:0;right:0}#header.without-logo #userToolsNav{float:left;margin-top:7px}#header.without-logo #metaNav{margin-bottom:7px}#secondaryHeader{height:55px;background:#e9e9e1;border-bottom:#d3d3c2 1px solid;border-top:#fcfcfc 1px solid;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif}#secondaryHeader #homeButton{border-right:#afaf9e 1px solid;background:-6px -36px url(../images/sprites.png) no-repeat;height:55px;width:43px;display:block;float:left}#secondaryHeader #homeButton:hover{background:-51px -36px url(../images/sprites.png) no-repeat}#secondaryHeader #scopeWrapper{width:688px;float:left}#secondaryHeader #scopeWrapper a{display:block;float:left}#secondaryHeader #scopeWrapper .scope-selector{font-size:21px;color:#5a5a4b;height:55px;line-height:55px;margin-left:24px}#secondaryHeader #scopeWrapper .on{background:url(../images/scopearrow.png) no-repeat center bottom}#secondaryHeader #scopeWrapper .ask-message{font-size:24px}#searchBar{display:inline-block;background-color:#fff;width:412px;border:1px solid #c9c9b5;float:right;height:42px;margin:6px 0 0 15px}#searchBar .searchInput,#searchBar .searchInputCancelable{font-size:30px;height:40px;font-weight:300;background:#FFF;border:0;color:#484848;padding-left:10px;font-family:Arial;vertical-align:middle}#searchBar .searchInput{width:352px}#searchBar .searchInputCancelable{width:317px}#searchBar .logoutsearch{width:337px}#searchBar .searchBtn{font-size:10px;color:#666;background-color:#eee;height:42px;border:#FFF 1px solid;line-height:22px;text-align:center;float:right;margin:0;width:48px;background:-98px -36px url(../images/sprites.png) no-repeat;cursor:pointer}#searchBar .searchBtn:hover{background:-146px -36px url(../images/sprites.png) no-repeat}#searchBar .cancelSearchBtn{font-size:30px;color:#ce8888;background:#fff;height:42px;border:0;border-left:#deded0 1px solid;text-align:center;width:35px;cursor:pointer}#searchBar .cancelSearchBtn:hover{color:#d84040}body.anon #searchBar{width:500px}body.anon #searchBar .searchInput{width:440px}body.anon #searchBar .searchInputCancelable{width:405px}#askButton{line-height:44px;margin-top:6px;float:right;text-transform:uppercase;width:200px;height:42px;font-size:23px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}#askButton:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#ContentLeft{width:730px;float:left;position:relative;padding-bottom:10px}#ContentRight{width:200px;float:right;padding:0 0 10px 0}#ContentFull{float:left;width:960px}.box{background:#fff;padding:4px 0 10px 0;width:200px}.box p{margin-bottom:4px}.box p.info-box-follow-up-links{text-align:right;margin:0}.box h2{padding-left:0;background:#eceeeb;height:30px;line-height:30px;text-align:right;font-size:18px!important;font-weight:normal;color:#656565;padding-right:10px;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif;width:190px}.box h3{color:#4a757f;font-size:18px;text-align:left;font-weight:normal;font-family:'Yanone Kaffeesatz',sans-serif;padding-left:0}.box .contributorback{background:#eceeeb url(../images/contributorsback.png) no-repeat center left}.box label{color:#707070;font-size:15px;display:block;float:right;text-align:left;font-family:'Yanone Kaffeesatz',sans-serif;width:80px;margin-right:18px}.box #displayTagFilterControl label{width:160px}.box ul{margin-left:22px}.box li{list-style-type:disc;font-size:13px;line-height:20px;margin-bottom:10px;color:#707070}.box ul.tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}.box #displayTagFilterControl p label{color:#707070;font-size:15px}.box .inputs #interestingTagInput,.box .inputs #ignoredTagInput{width:153px;padding-left:5px;border:#c9c9b5 1px solid;height:25px}.box .inputs #interestingTagAdd,.box .inputs #ignoredTagAdd{border:0;font-weight:bold;margin-top:-2px;width:30px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0 1px 0 #e6f6fa;-moz-text-shadow:0 1px 0 #e6f6fa;-webkit-text-shadow:0 1px 0 #e6f6fa}.box .inputs #interestingTagAdd:hover,.box .inputs #ignoredTagAdd:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box img.gravatar{margin:1px}.box a.followed,.box a.follow{line-height:34px;border:0;font-weight:normal;margin-top:3px;display:block;width:120px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin:0 auto;padding:0}.box a.followed:hover,.box a.follow:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box a.followed div.unfollow{display:none}.box a.followed:hover div{display:none}.box a.followed:hover div.unfollow{display:inline;color:#a05736}.box .favorite-number{padding:5px 0 0 5px;font-size:100%;font-family:Arial;font-weight:bold;color:#777;text-align:center}.box .notify-sidebar #question-subscribe-sidebar{margin:7px 0 0 3px}.statsWidget p{color:#707070;font-size:16px;border-bottom:#ccc 1px solid;font-size:13px}.statsWidget p strong{float:right;padding-right:10px}.questions-related{word-wrap:break-word}.questions-related p{line-height:20px;padding:4px 0 4px 0;font-size:16px;font-weight:normal;border-bottom:#ccc 1px solid}.questions-related a{font-size:13px}#tips li{color:#707070;font-size:13px;list-style-image:url(../images/tips.png)}#tips a{font-size:16px}#markdownHelp li{color:#707070;font-size:13px}#markdownHelp a{font-size:16px}.tabBar{background-color:#eff5f6;height:30px;margin-bottom:3px;margin-top:3px;float:right;font-family:Georgia,serif;font-size:16px;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.tabBar h2{float:left}.tabsA,.tabsC{float:right;position:relative;display:block;height:20px}.tabsA{float:right}.tabsC{float:left}.tabsA a,.tabsC a{border-left:1px solid #d0e1e4;color:#7ea9b3;display:block;float:left;height:20px;line-height:20px;padding:4px 7px 4px 7px;text-decoration:none}.tabsA a.on,.tabsC a.on,.tabsA a:hover,.tabsC a:hover{color:#4a757f}.tabsA .label,.tabsC .label{float:left;color:#646464;margin-top:4px;margin-right:5px}.main-page .tabsA .label{margin-left:8px}.tabsB a{background:#eee;border:1px solid #eee;color:#777;display:block;float:left;height:22px;line-height:28px;margin:5px 0 0 4px;padding:0 11px 0 11px;text-decoration:none}.tabsC .first{border:0}.rss{float:right;font-size:16px;color:#f57900;margin:5px 0 3px 7px;width:52px;padding-left:2px;padding-top:3px;background:#fff url(../images/feed-icon-small.png) no-repeat center right;float:right;font-family:Georgia,serif;font-size:16px}.rss:hover{color:#f4a731!important}#questionCount{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;margin-bottom:8px;padding-top:6px;font-family:'Yanone Kaffeesatz',sans-serif}#listSearchTags{float:left;margin-top:3px;color:#707070;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}ul#searchTags{margin-left:10px;float:right;padding-top:2px}.search-tips{font-size:16px;line-height:17px;color:#707070;margin:5px 0 10px 0;padding:0;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.search-tips a{text-decoration:underline;color:#1b79bd}#question-list{float:left;position:relative;background-color:#FFF;padding:0;width:100%}.short-summary{position:relative;filter:inherit;padding:10px;border-bottom:1px solid #dddbce;margin-bottom:1px;overflow:hidden;width:710px;float:left;background:url(../images/summary-background.png) repeat-x}.short-summary h2{font-size:24px;font-weight:normal;line-height:26px;padding-left:0;margin-bottom:6px;display:block;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary a{color:#464646}.short-summary .userinfo{text-align:right;line-height:16px;font-family:Arial;padding-right:4px}.short-summary .userinfo .relativetime,.short-summary span.anonymous{font-size:11px;clear:both;font-weight:normal;color:#555}.short-summary .userinfo a{font-weight:bold;font-size:11px}.short-summary .counts{float:right;margin:4px 0 0 5px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .item-count{padding:0 5px 0 5px;font-size:25px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .votes div,.short-summary .counts .views div,.short-summary .counts .answers div,.short-summary .counts .favorites div{margin-top:3px;font-size:14px;line-height:14px;color:#646464}.short-summary .tags{margin-top:0}.short-summary .votes,.short-summary .answers,.short-summary .favorites,.short-summary .views{text-align:center;margin:0 3px;padding:8px 2px 0 2px;width:51px;float:right;height:44px;border:#dbdbd4 1px solid}.short-summary .votes{background:url(../images/vote-background.png) repeat-x}.short-summary .answers{background:url(../images/answers-background.png) repeat-x}.short-summary .views{background:url(../images/view-background.png) repeat-x}.short-summary .no-votes .item-count{color:#b1b5b6}.short-summary .some-votes .item-count{color:#4a757f}.short-summary .no-answers .item-count{color:#b1b5b6}.short-summary .some-answers .item-count{color:#eab243}.short-summary .no-views .item-count{color:#b1b5b6}.short-summary .some-views .item-count{color:#d33f00}.short-summary .accepted .item-count{background:url(../images/accept.png) no-repeat top right;display:block;text-align:center;width:40px;color:#eab243}.short-summary .some-favorites .item-count{background:#338333;color:#d0f5a9}.short-summary .no-favorites .item-count{background:#eab243;color:yellow}.evenMore{font-size:13px;color:#707070;padding:15px 0 10px 0;clear:both}.evenMore a{text-decoration:underline;color:#1b79bd}.pager{margin-top:10px;margin-bottom:16px}.pagesize{margin-top:10px;margin-bottom:16px;float:right}.paginator{padding:5px 0 10px 0;font-size:13px;margin-bottom:10px}.paginator .prev a,.paginator .prev a:visited,.paginator .next a,.paginator .next a:visited{background-color:#fff;color:#777;padding:2px 4px 3px 4px}.paginator a{color:#7ea9b3}.paginator .prev{margin-right:.5em}.paginator .next{margin-left:.5em}.paginator .page a,.paginator .page a:visited,.paginator .curr{padding:.25em;background-color:#fff;margin:0 .25em;color:#ff}.paginator .curr{background-color:#8ebcc7;color:#fff;font-weight:bold}.paginator .next a,.paginator .prev a{color:#7ea9b3}.paginator .page a:hover,.paginator .curr a:hover,.paginator .prev a:hover,.paginator .next a:hover{color:#8c8c8c;background-color:#e1e1e1;text-decoration:none}.paginator .text{color:#777;padding:.3em}.paginator .paginator-container-left{padding:5px 0 10px 0}.tag-size-1{font-size:12px}.tag-size-2{font-size:13px}.tag-size-3{font-size:14px}.tag-size-4{font-size:15px}.tag-size-5{font-size:16px}.tag-size-6{font-size:17px}.tag-size-7{font-size:18px}.tag-size-8{font-size:19px}.tag-size-9{font-size:20px}.tag-size-10{font-size:21px}ul.tags,ul.tags.marked-tags,ul#related-tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}ul.tags li{float:left;display:block;margin:0 8px 0 0;padding:0;height:20px}.wildcard-tags{clear:both}ul.tags.marked-tags li,.wildcard-tags ul.tags li{margin-bottom:5px}#tagSelector div.inputs{clear:both;float:none;margin-bottom:10px}.tags-page ul.tags li,ul#ab-user-tags li{width:160px;margin:5px}ul#related-tags li{margin:0 5px 8px 0;float:left;clear:left}.tag-left{cursor:pointer;display:block;float:left;height:17px;margin:0 5px 0 0;padding:0;-webkit-box-shadow:0 0 5px #d3d6d7;-moz-box-shadow:0 0 5px #d3d6d7;box-shadow:0 0 5px #d3d6d7}.tag-right{background:#f3f6f6;border:#fff 1px solid;border-top:#fff 2px solid;outline:#cfdbdb 1px solid;display:block;float:left;height:17px;line-height:17px;font-weight:normal;font-size:11px;padding:0 8px 0 8px;text-decoration:none;text-align:center;white-space:nowrap;vertical-align:middle;font-family:Arial;color:#717179}.deletable-tag{margin-right:3px;white-space:nowrap;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px}.tags a.tag-right,.tags span.tag-right{color:#585858;text-decoration:none}.tags a:hover{color:#1a1a1a}.users-page h1,.tags-page h1{float:left}.main-page h1{margin-right:5px}.delete-icon{margin-top:-1px;float:left;height:21px;width:18px;display:block;line-height:20px;text-align:center;background:#bbcdcd;cursor:default;color:#fff;border-top:#cfdbdb 1px solid;font-family:Arial;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px;text-shadow:0 1px 0 #7ea0a0;-moz-text-shadow:0 1px 0 #7ea0a0;-webkit-text-shadow:0 1px 0 #7ea0a0}.delete-icon:hover{background:#b32f2f}.tag-number{font-weight:normal;float:left;font-size:16px;color:#5d5d5d}.badges .tag-number{float:none;display:inline;padding-right:15px}.section-title{color:#7ea9b3;font-family:'Yanone Kaffeesatz',sans-serif;font-weight:bold;font-size:24px}#fmask{margin-bottom:30px;width:100%}#askFormBar{display:inline-block;padding:4px 7px 5px 0;margin-top:0}#askFormBar p{margin:0 0 5px 0;font-size:14px;color:#525252;line-height:1.4}#askFormBar .questionTitleInput{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px}.ask-page div#question-list,.edit-question-page div#question-list{float:none;border-bottom:#f0f0ec 1px solid;float:left;margin-bottom:10px}.ask-page div#question-list a,.edit-question-page div#question-list a{line-height:30px}.ask-page div#question-list h2,.edit-question-page div#question-list h2{font-size:13px;padding-bottom:0;color:#1b79bd;border-top:#f0f0ec 1px solid;border-left:#f0f0ec 1px solid;height:30px;line-height:30px;font-weight:normal}.ask-page div#question-list span,.edit-question-page div#question-list span{width:28px;height:26px;line-height:26px;text-align:center;margin-right:10px;float:left;display:block;color:#fff;background:#b8d0d5;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.ask-page label,.edit-question-page label{color:#525252;font-size:13px}.ask-page #id_tags,.edit-question-page #id_tags{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.title-desc{color:#707070;font-size:13px}#fmanswer input.submit,.ask-page input.submit,.edit-question-page input.submit{float:left;font-weight:normal;margin-top:3px;width:160px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin-right:7px}#fmanswer input.submit:hover,.ask-page input.submit:hover,.edit-question-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#editor{font-size:100%;min-height:200px;line-height:18px;margin:0;border-left:#cce6ec 3px solid;border-bottom:#cce6ec 3px solid;border-right:#cce6ec 3px solid;border-top:0;padding:10px;margin-bottom:10px;width:710px}@media screen and (-webkit-min-device-pixel-ratio:0){#editor{width:717px}}#id_title{width:100%}.wmd-preview{margin:3px 0 5px 0;padding:6px;background-color:#f5f5f5;min-height:20px;overflow:auto;font-size:13px;font-family:Arial}.wmd-preview p{margin-bottom:14px;line-height:1.4;font-size:14px}.wmd-preview pre{background-color:#e7f1f8}.wmd-preview blockquote{background-color:#eee}.wmd-preview IMG{max-width:600px}.preview-toggle{width:100%;color:#b6a475;text-align:left}.preview-toggle span:hover{cursor:pointer}.after-editor{margin-top:15px;margin-bottom:15px}.checkbox{margin-left:5px;font-weight:normal;cursor:help}.question-options{margin-top:1px;color:#666;line-height:13px;margin-bottom:5px}.question-options label{vertical-align:text-bottom}.edit-content-html{border-top:1px dotted #d8d2a9;border-bottom:1px dotted #d8d2a9;margin:5px 0 5px 0}.edit-question-page,#fmedit,.wmd-preview{color:#525252}.edit-question-page #id_revision,#fmedit #id_revision,.wmd-preview #id_revision{font-size:14px;margin-top:5px;margin-bottom:5px}.edit-question-page #id_title,#fmedit #id_title,.wmd-preview #id_title{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px;margin-bottom:10px}.edit-question-page #id_summary,#fmedit #id_summary,.wmd-preview #id_summary{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.edit-question-page .title-desc,#fmedit .title-desc,.wmd-preview .title-desc{margin-bottom:10px}.question-page h1{padding-top:0;font-family:'Yanone Kaffeesatz',sans-serif}.question-page h1 a{color:#464646;font-size:30px;font-weight:normal;line-height:1}.question-page p.rss{float:none;clear:both;padding:3px 0 0 23px;font-size:15px;width:110px;background-position:center left;margin-left:0!important}.question-page p.rss a{font-family:'Yanone Kaffeesatz',sans-serif;vertical-align:top}.question-page .question-content{float:right;width:682px;margin-bottom:10px}.question-page #question-table{float:left;border-top:#f0f0f0 1px solid}.question-page #question-table,.question-page .answer-table{margin:6px 0 6px 0;border-spacing:0;width:670px;padding-right:10px}.question-page .answer-table{margin-top:0;border-bottom:1px solid #d4d4d4;float:right}.question-page .answer-table td,.question-page #question-table td{width:20px;vertical-align:top}.question-page .question-body,.question-page .answer-body{overflow:auto;margin-top:10px;font-family:Arial;color:#4b4b4b}.question-page .question-body p,.question-page .answer-body p{margin-bottom:14px;line-height:1.4;font-size:14px;padding:0 5px 5px 0}.question-page .question-body a,.question-page .answer-body a{color:#1b79bd}.question-page .question-body li,.question-page .answer-body li{margin-bottom:7px}.question-page .question-body IMG,.question-page .answer-body IMG{max-width:600px}.question-page .post-update-info-container{float:right;width:175px}.question-page .post-update-info{background:#fff url(../images/background-user-info.png) repeat-x bottom;float:right;font-size:9px;font-family:Arial;width:158px;padding:4px;margin:0 0 5px 5px;line-height:14px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:0 2px 1px #bfbfbf;-moz-box-shadow:0 2px 1px #bfbfbf;box-shadow:0 2px 1px #bfbfbf}.question-page .post-update-info p{line-height:13px;font-size:11px;margin:0 0 2px 1px;padding:0}.question-page .post-update-info a{color:#444}.question-page .post-update-info .gravatar{float:left;margin-right:4px}.question-page .post-update-info p.tip{color:#444;line-height:13px;font-size:10px}.question-page .post-controls{font-size:11px;line-height:12px;min-width:200px;padding-left:5px;text-align:right;clear:left;float:right;margin-top:10px;margin-bottom:8px}.question-page .post-controls a{color:#777;padding:0 7px 3px 18px;cursor:pointer;border:0;font-size:12px;font-family:Arial;text-decoration:none;height:18px;display:block;float:right;line-height:18px;margin-top:-2px;margin-left:4px}.question-page .post-controls a:hover{background-color:#f5f0c9;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.question-page .post-controls .sep{color:#ccc;float:right;height:18px;font-size:18px}.question-page .post-controls .question-delete,.question-page .answer-controls .question-delete{background:url(../images/delete.png) no-repeat center left;padding-left:11px}.question-page .post-controls .question-flag,.question-page .answer-controls .question-flag{background:url(../images/flag.png) no-repeat center left}.question-page .post-controls .question-edit,.question-page .answer-controls .question-edit{background:url(../images/edit2.png) no-repeat center left}.question-page .post-controls .question-retag,.question-page .answer-controls .question-retag{background:url(../images/retag.png) no-repeat center left}.question-page .post-controls .question-close,.question-page .answer-controls .question-close{background:url(../images/close.png) no-repeat center left}.question-page .post-controls .permant-link,.question-page .answer-controls .permant-link{background:url(../images/link.png) no-repeat center left}.question-page .tabBar{width:100%}.question-page #questionCount{float:left;font-family:'Yanone Kaffeesatz',sans-serif;line-height:15px}.question-page .question-img-upvote,.question-page .question-img-downvote,.question-page .answer-img-upvote,.question-page .answer-img-downvote{width:25px;height:20px;cursor:pointer}.question-page .question-img-upvote,.question-page .answer-img-upvote{background:url(../images/vote-arrow-up-new.png) no-repeat}.question-page .question-img-downvote,.question-page .answer-img-downvote{background:url(../images/vote-arrow-down-new.png) no-repeat}.question-page .question-img-upvote:hover,.question-page .question-img-upvote.on,.question-page .answer-img-upvote:hover,.question-page .answer-img-upvote.on{background:url(../images/vote-arrow-up-on-new.png) no-repeat}.question-page .question-img-downvote:hover,.question-page .question-img-downvote.on,.question-page .answer-img-downvote:hover,.question-page .answer-img-downvote.on{background:url(../images/vote-arrow-down-on-new.png) no-repeat}.question-page #fmanswer_button{margin:8px 0}.question-page .question-img-favorite:hover{background:url(../images/vote-favorite-on.png)}.question-page div.comments{padding:0}.question-page #comment-title{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.question-page .comments{font-size:12px;clear:both}.question-page .comments div.controls{clear:both;float:left;width:100%;margin:3px 0 20px 5px}.question-page .comments .controls a{color:#988e4c;padding:0 3px 2px 22px;font-family:Arial;font-size:13px;background:url(../images/comment.png) no-repeat center left}.question-page .comments .controls a:hover{background-color:#f5f0c9;text-decoration:none}.question-page .comments .button{color:#988e4c;font-size:11px;padding:3px;cursor:pointer}.question-page .comments a{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments form.post-comments{margin:3px 26px 0 42px}.question-page .comments form.post-comments textarea{font-size:13px;line-height:1.3}.question-page .comments textarea{height:42px;width:100%;margin:7px 0 5px 1px;font-family:Arial;outline:0;overflow:auto;font-size:12px;line-height:140%;padding-left:2px;padding-top:3px;border:#cce6ec 3px solid}@media screen and (-webkit-min-device-pixel-ratio:0){textarea{padding-left:3px!important}}.question-page .comments input{margin-left:10px;margin-top:1px;vertical-align:top;width:100px}.question-page .comments button{line-height:25px;margin-bottom:5px;width:100px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold}.question-page .comments button:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.question-page .comments .counter{display:inline-block;width:245px;float:right;color:#b6a475!important;vertical-align:top;font-family:Arial;float:right;text-align:right}.question-page .comments .comment{border-bottom:1px solid #edeeeb;clear:both;margin:0;margin-top:8px;padding-bottom:4px;overflow:auto;font-family:Arial;font-size:11px;min-height:25px;background:#fff url(../images/comment-background.png) bottom repeat-x;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.question-page .comments div.comment:hover{background-color:#efefef}.question-page .comments a.author{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments a.author:hover{text-decoration:underline}.question-page .comments span.delete-icon{background:url(../images/close-small.png) no-repeat;border:0;width:14px;height:14px}.question-page .comments span.delete-icon:hover{border:#bc564b 2px solid;border-radius:10px;-ms-border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;margin:-3px 0 0 -2px}.question-page .comments .content{margin-bottom:7px}.question-page .comments .comment-votes{float:left;width:37px;line-height:130%;padding:6px 5px 6px 3px}.question-page .comments .comment-body{line-height:1.3;margin:3px 26px 0 46px;padding:5px 3px;color:#666;font-size:13px}.question-page .comments .comment-body .edit{padding-left:6px}.question-page .comments .comment-body p{font-size:13px;line-height:1.3;margin-bottom:3px;padding:0}.question-page .comments .comment-delete{float:right;width:14px;line-height:130%;padding:8px 6px}.question-page .comments .upvote{margin:0;padding-right:17px;padding-top:2px;text-align:right;height:20px;font-size:13px;font-weight:bold;color:#777}.question-page .comments .upvote.upvoted{color:#d64000}.question-page .comments .upvote.hover{background:url(../images/go-up-grey.png) no-repeat;background-position:right 1px}.question-page .comments .upvote:hover{background:url(../images/go-up-orange.png) no-repeat;background-position:right 1px}.question-page .comments .help-text{float:right;text-align:right;color:gray;margin-bottom:0;margin-top:0;line-height:50%}.question-page #questionTools{font-size:22px;margin-top:11px;text-align:left}.question-page .question-status{margin-top:10px;margin-bottom:15px;padding:20px;background-color:#fef7cc;text-align:center;border:#e1c04a 1px solid}.question-page .question-status h3{font-size:20px;color:#707070;font-weight:normal}.question-page .vote-buttons{float:left;text-align:center;padding-top:2px;margin:10px 10px 0 3px;*margin:0;*height:210px;*width:30px}.question-page .vote-buttons IMG{cursor:pointer}.question-page .vote-number{font-family:'Yanone Kaffeesatz',sans-serif;padding:0 0 5px 0;font-size:25px;font-weight:bold;color:#777}.question-page .vote-buttons .notify-sidebar{text-align:left;width:120px}.question-page .vote-buttons .notify-sidebar label{vertical-align:top}.question-page .tabBar-answer{margin-bottom:15px;padding-left:7px;width:723px;margin-top:10px}.question-page .answer .vote-buttons{float:left}.question-page .accepted-answer{background-color:#f7fecc;border-bottom-color:#9bd59b}.question-page .accepted-answer .vote-buttons{width:27px;margin-right:10px;margin-top:10px}.question-page .answer .post-update-info a{color:#444}.question-page .answered{background:#CCC;color:#999}.question-page .answered-accepted{background:#dcdcdc;color:#763333}.question-page .answered-accepted strong{color:#e1e818}.question-page .answered-by-owner{background:#f1f1ff}.question-page .answered-by-owner .comments .button{background-color:#e6ecff}.question-page .answered-by-owner .comments{background-color:#e6ecff}.question-page .answered-by-owner .vote-buttons{margin-right:10px}.question-page .answer-img-accept:hover{background:url(../images/vote-accepted-on.png)}.question-page .answer-body a{color:#1b79bd}.question-page .answer-body li{margin-bottom:.7em}.question-page #fmanswer{color:#707070;line-height:1.2;margin-top:10px}.question-page #fmanswer h2{font-family:'Yanone Kaffeesatz',sans-serif;color:#7ea9b3;font-size:24px}.question-page #fmanswer label{font-size:13px}.question-page .message{padding:5px;margin:0 0 10px 0}.facebook-share.icon,.twitter-share.icon,.linkedin-share.icon,.identica-share.icon{background:url(../images/socialsprite.png) no-repeat;display:block;text-indent:-100em;height:25px;width:25px;margin-bottom:3px}.facebook-share.icon:hover,.twitter-share.icon:hover,.linkedin-share.icon:hover,.identica-share.icon:hover{opacity:.8;filter:alpha(opacity=80)}.facebook-share.icon{background-position:-26px 0}.identica-share.icon{background-position:-78px 0}.twitter-share.icon{margin-top:10px;background-position:0 0}.linkedin-share.icon{background-position:-52px 0}.openid-signin,.meta,.users-page,.user-profile-edit-page{font-size:13px;line-height:1.3;color:#525252}.openid-signin p,.meta p,.users-page p,.user-profile-edit-page p{font-size:13px;color:#707070;line-height:1.3;font-family:Arial;color:#525252;margin-bottom:12px}.openid-signin h2,.meta h2,.users-page h2,.user-profile-edit-page h2{color:#525252;padding-left:0;font-size:16px}.openid-signin form,.meta form,.users-page form,.user-profile-edit-page form,.user-profile-page form{margin-bottom:15px}.openid-signin input[type="text"],.meta input[type="text"],.users-page input[type="text"],.user-profile-edit-page input[type="text"],.user-profile-page input[type="text"],.openid-signin input[type="password"],.meta input[type="password"],.users-page input[type="password"],.user-profile-edit-page input[type="password"],.user-profile-page input[type="password"],.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{width:405px;height:30px}.openid-signin textarea,.meta textarea,.users-page textarea,.user-profile-edit-page textarea,.user-profile-page textarea{border:#cce6ec 3px solid;padding-left:5px;padding-top:5px;width:395px;font-size:14px}.openid-signin input.submit,.meta input.submit,.users-page input.submit,.user-profile-edit-page input.submit,.user-profile-page input.submit{font-weight:normal;margin:5px 0;width:100px;height:26px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial}.openid-signin input.submit:hover,.meta input.submit:hover,.users-page input.submit:hover,.user-profile-edit-page input.submit:hover,.user-profile-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-signin .cancel,.meta .cancel,.users-page .cancel,.user-profile-edit-page .cancel,.user-profile-page .cancel{background:url(../images/small-button-cancel.png) repeat-x top!important;color:#525252!important}.openid-signin .cancel:hover,.meta .cancel:hover,.users-page .cancel:hover,.user-profile-edit-page .cancel:hover,.user-profile-page .cancel:hover{background:url(../images/small-button-cancel.png) repeat-x bottom!important}#email-input-fs,#local_login_buttons,#password-fs,#openid-fs{margin-top:10px}#email-input-fs #id_email,#local_login_buttons #id_email,#password-fs #id_email,#openid-fs #id_email,#email-input-fs #id_username,#local_login_buttons #id_username,#password-fs #id_username,#openid-fs #id_username,#email-input-fs #id_password,#local_login_buttons #id_password,#password-fs #id_password,#openid-fs #id_password{font-size:12px;line-height:20px;height:20px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:200px}#email-input-fs .submit-b,#local_login_buttons .submit-b,#password-fs .submit-b,#openid-fs .submit-b{width:100px;height:24px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold;padding-right:10px;border:0}#email-input-fs .submit-b:hover,#local_login_buttons .submit-b:hover,#password-fs .submit-b:hover,#openid-fs .submit-b:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-input{background:url(../images/openid.gif) no-repeat;padding-left:15px;cursor:pointer}.openid-login-input{background-position:center left;background:url(../images/openid.gif) no-repeat 0 50%;padding:5px 5px 5px 15px;cursor:pointer;font-family:Trebuchet MS;font-weight:300;font-size:150%;width:500px}.openid-login-submit{height:40px;width:80px;line-height:40px;cursor:pointer;border:1px solid #777;font-weight:bold;font-size:120%}.tabBar-user{width:375px}.user{padding:5px;line-height:140%;width:166px;border:#eee 1px solid;margin-bottom:5px;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.user .user-micro-info{color:#525252}.user ul{margin:0;list-style-type:none}.user .thumb{clear:both;float:left;margin-right:4px;display:inline}.tabBar-tags{width:270px;margin-bottom:15px}a.medal{font-size:17px;line-height:250%;margin-right:5px;color:#333;text-decoration:none;background:url(../images/medala.gif) no-repeat;border-left:1px solid #EEE;border-top:1px solid #EEE;border-bottom:1px solid #CCC;border-right:1px solid #CCC;padding:4px 12px 4px 6px}a:hover.medal{color:#333;text-decoration:none;background:url(../images/medala_on.gif) no-repeat;border-left:1px solid #e7e296;border-top:1px solid #e7e296;border-bottom:1px solid #d1ca3d;border-right:1px solid #d1ca3d}#award-list .user{float:left;margin:5px}.tabBar-profile{width:100%;margin-bottom:15px;float:left}.user-profile-page{font-size:13px;color:#525252}.user-profile-page p{font-size:13px;line-height:1.3;color:#525252}.user-profile-page .avatar img{border:#eee 1px solid;padding:5px}.user-profile-page h2{padding:10px 0 10px 0;font-family:'Yanone Kaffeesatz',sans-serif}.user-details{font-size:13px}.user-details h3{font-size:16px}.user-about{background-color:#eee;height:200px;line-height:20px;overflow:auto;padding:10px;width:90%}.user-about p{font-size:13px}.follow-toggle,.submit{border:0!important;font-weight:bold;line-height:26px;margin-top:-2px;width:100px;height:26px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}.follow-toggle:hover,.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-decoration:none!important}.follow-toggle .follow{font-color:#000;font-style:normal}.follow-toggle .unfollow div.unfollow-red{display:none}.follow-toggle .unfollow:hover div.unfollow-red{display:inline;color:#fff;font-weight:bold;color:#a05736}.follow-toggle .unfollow:hover div.unfollow-green{display:none}.count{font-family:'Yanone Kaffeesatz',sans-serif;font-size:200%;font-weight:700;color:#777}.scoreNumber{font-family:'Yanone Kaffeesatz',sans-serif;font-size:35px;font-weight:800;color:#777;line-height:40px;margin-top:3px}.vote-count{font-family:Arial;font-size:160%;font-weight:700;color:#777}.answer-summary{display:block;clear:both;padding:3px}.answer-votes{background-color:#eee;color:#555;float:left;font-family:Arial;font-size:15px;font-weight:bold;height:17px;padding:2px 4px 5px;text-align:center;text-decoration:none;width:20px;margin-right:10px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.karma-summary{padding:5px;font-size:13px}.karma-summary h3{text-align:center;font-weight:bold;padding:5px}.karma-diagram{width:477px;height:300px;float:left;margin-right:10px}.karma-details{float:right;width:450px;height:250px;overflow-y:auto;word-wrap:break-word}.karma-details p{margin-bottom:10px}.karma-gained{font-weight:bold;background:#eee;width:25px;margin-right:5px;color:green;padding:3px;display:block;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.karma-lost{font-weight:bold;background:#eee;width:25px;color:red;padding:3px;display:block;margin-right:5px;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.submit-row{margin-bottom:10px}.revision{margin:10px 0 10px 0;font-size:13px;color:#525252}.revision p{font-size:13px;line-height:1.3;color:#525252}.revision h3{font-family:'Yanone Kaffeesatz',sans-serif;font-size:21px;padding-left:0}.revision .header{background-color:#f5f5f5;padding:5px;cursor:pointer}.revision .author{background-color:#e9f3f5}.revision .summary{padding:5px 0 10px 0}.revision .summary span{background-color:#fde785;padding:6px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;display:inline;-webkit-box-shadow:1px 1px 4px #cfb852;-moz-box-shadow:1px 1px 4px #cfb852;box-shadow:1px 1px 4px #cfb852}.revision .answerbody{padding:10px 0 5px 10px}.revision .revision-mark{width:150px;text-align:left;display:inline-block;font-size:11px;overflow:hidden}.revision .revision-mark .gravatar{float:left;margin-right:4px;padding-top:5px}.revision .revision-number{font-size:300%;font-weight:bold;font-family:sans-serif}del,del .post-tag{color:#c34719}ins .post-tag,ins p,ins{background-color:#e6f0a2}.vote-notification{z-index:1;cursor:pointer;display:none;position:absolute;font-family:Arial;font-size:14px;font-weight:normal;color:white;background-color:#8e0000;text-align:center;padding-bottom:10px;-webkit-box-shadow:0 2px 4px #370000;-moz-box-shadow:0 2px 4px #370000;box-shadow:0 2px 4px #370000;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.vote-notification h3{background:url(../images/notification.png) repeat-x top;padding:10px 10px 10px 10px;font-size:13px;margin-bottom:5px;border-top:#8e0000 1px solid;color:#fff;font-weight:normal;border-top-right-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px}.vote-notification a{color:#fb7321;text-decoration:underline;font-weight:bold}#ground{width:100%;clear:both;border-top:1px solid #000;padding:6px 0 0 0;background:#16160f;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}#ground p{margin-bottom:0}.footer-links{color:#EEE;text-align:left;width:500px;float:left}.footer-links a{color:#e7e8a8}.powered-link{width:500px;float:left;text-align:left}.powered-link a{color:#8ebcc7}.copyright{color:#616161;width:450px;float:right;text-align:right}.copyright a{color:#8ebcc7}.copyright img.license-logo{margin:6px 0 20px 10px;float:right}.notify-me{float:left}span.text-counter{margin-right:20px}span.form-error{color:#900;font-weight:normal;margin-left:5px}ul.errorlist{margin-bottom:0}p.form-item{margin:0}.deleted{background:#f4e7e7 none repeat scroll 0 0}.form-row{line-height:25px}table.form-as-table{margin-top:5px}table.form-as-table ul{list-style-type:none;display:inline}table.form-as-table li{display:inline}table.form-as-table td{text-align:right}table.form-as-table th{text-align:left;font-weight:normal}table.ab-subscr-form{width:45em}table.ab-tag-filter-form{width:45em}.submit-row{line-height:30px;padding-top:10px;display:block;clear:both}.errors{line-height:20px;color:red}.error{color:darkred;margin:0;font-size:10px}label.retag-error{color:darkred;padding-left:5px;font-size:10px}.fieldset{border:0;margin-top:10px;padding:10px}span.form-error{color:#900;font-size:90%;font-weight:normal;margin-left:5px}.favorites-empty{width:32px;height:45px;float:left}.user-info-table{margin-bottom:10px;border-spacing:0}.user-stats-table .narrow{width:660px}.narrow .summary h3{padding:0;margin:0}.relativetime{font-weight:bold;text-decoration:none}.narrow .tags{float:left}.user-action-1{font-weight:bold;color:#333}.user-action-2{font-weight:bold;color:#CCC}.user-action-3{color:#333}.user-action-4{color:#333}.user-action-5{color:darkred}.user-action-6{color:darkred}.user-action-7{color:#333}.user-action-8{padding:3px;font-weight:bold;background-color:#CCC;color:#763333}.revision-summary{background-color:#fffe9b;padding:2px}.question-title-link a{font-weight:bold;color:#07c}.answer-title-link a{color:#333}.post-type-1 a{font-weight:bold}.post-type-3 a{font-weight:bold}.post-type-5 a{font-weight:bold}.post-type-2 a{color:#333}.post-type-4 a{color:#333}.post-type-6 a{color:#333}.post-type-8 a{color:#333}.hilite{background-color:#ff0}.hilite1{background-color:#ff0}.hilite2{background-color:#f0f}.hilite3{background-color:#0ff}.gold,.badge1{color:#fc0}.silver,.badge2{color:#ccc}.bronze,.badge3{color:#c93}.score{font-weight:800;color:#333}a.comment{background:#EEE;color:#930;padding:5px}a.offensive{color:#999}.message h1{padding-top:0;font-size:15px}.message p{margin-bottom:0}p.space-above{margin-top:10px}.warning{color:red}button::-moz-focus-inner{padding:0;border:0}.submit{cursor:pointer;background-color:#d4d0c8;height:30px;border:1px solid #777;font-weight:bold;font-size:120%}.submit:hover{text-decoration:underline}.submit.small{margin-right:5px;height:20px;font-weight:normal;font-size:12px;padding:1px 5px}.submit.small:hover{text-decoration:none}.question-page a.submit{display:-moz-inline-stack;display:inline-block;line-height:30px;padding:0 5px;*display:inline}.noscript{position:fixed;top:0;left:0;width:100%;z-index:100;padding:5px 0;text-align:center;font-family:sans-serif;font-size:120%;font-weight:Bold;color:#fff;background-color:#ae0000}.big{font-size:14px}.strong{font-weight:bold}.orange{color:#d64000;font-weight:bold}.grey{color:#808080}.about div{padding:10px 5px 10px 5px;border-top:1px dashed #aaa}.highlight{background-color:#fff8c6}.nomargin{margin:0}.margin-bottom{margin-bottom:10px}.margin-top{margin-top:10px}.inline-block{display:inline-block}.action-status{margin:0;border:0;text-align:center;line-height:10px;font-size:12px;padding:0}.action-status span{padding:3px 5px 3px 5px;background-color:#fff380;font-weight:normal;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px}.list-table td{vertical-align:top}table.form-as-table .errorlist{display:block;margin:0;padding:0 0 0 5px;text-align:left;font-size:10px;color:darkred}table.form-as-table input{display:inline;margin-left:4px}table.form-as-table th{vertical-align:bottom;padding-bottom:4px}.form-row-vertical{margin-top:8px;display:block}.form-row-vertical label{margin-bottom:3px;display:block}.text-align-right{text-align:center}ul.form-horizontal-rows{list-style:none;margin:0}ul.form-horizontal-rows li{position:relative;height:40px}ul.form-horizontal-rows label{display:inline-block}ul.form-horizontal-rows ul.errorlist{list-style:none;color:darkred;font-size:10px;line-height:10px;position:absolute;top:2px;left:180px;text-align:left;margin:0}ul.form-horizontal-rows ul.errorlist li{height:10px}ul.form-horizontal-rows label{position:absolute;left:0;bottom:6px;margin:0;line-height:12px;font-size:12px}ul.form-horizontal-rows li input{position:absolute;bottom:0;left:180px;margin:0}.narrow .summary{float:left}.user-profile-tool-links{font-weight:bold;vertical-align:top}ul.post-tags{margin-left:3px}ul.post-tags li{margin-top:4px;margin-bottom:3px}ul.post-retag{margin-bottom:0;margin-left:5px}#question-controls .tags{margin:0 0 3px 0}#tagSelector{padding-bottom:2px;margin-bottom:0}#related-tags{padding-left:3px}#hideIgnoredTagsControl{margin:5px 0 0 0}#hideIgnoredTagsControl label{font-size:12px;color:#666}#hideIgnoredTagsCb{margin:0 2px 0 1px}#recaptcha_widget_div{width:318px;float:left;clear:both}p.signup_p{margin:20px 0 0 0}.simple-subscribe-options ul{list-style:none;list-style-position:outside;margin:0}.wmd-preview a{color:#1b79bd}.wmd-preview li{margin-bottom:7px;font-size:14px}.search-result-summary{font-weight:bold;font-size:18px;line-height:22px;margin:0;padding:2px 0 0 0;float:left}.faq-rep-item{text-align:right;padding-right:5px}.user-info-table .gravatar{margin:0}#responses{clear:both;line-height:18px;margin-bottom:15px}#responses div.face{float:left;text-align:center;width:54px;padding:3px;overflow:hidden}.response-parent{margin-top:18px}.response-parent strong{font-size:20px}.re{min-height:57px;clear:both;margin-top:10px}#responses input{float:left}#re_tools{margin-bottom:10px}#re_sections{margin-bottom:6px}#re_sections .on{font-weight:bold}.avatar-page ul{list-style:none}.avatar-page li{display:inline}.user-profile-page .avatar p{margin-bottom:0}.user-profile-page .tabBar a#stats{margin-left:0}.user-profile-page img.gravatar{margin:2px 0 3px 0}.user-profile-page h3{padding:0;margin-top:-3px}.userList{font-size:13px}img.flag{border:1px solid #eee;vertical-align:text-top}.main-page img.flag{vertical-align:text-bottom}a.edit{padding-left:3px;color:#145bff}.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{clear:both;padding:3px;border:0 solid #888}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}#leading-sidebar{float:left}a.re_expand{color:#616161;text-decoration:none}a.re_expand .re_content{display:none;margin-left:77px} \ No newline at end of file +@import url(jquery.autocomplete.css);.button-style-hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}body{background:#FFF;font-size:14px;line-height:150%;margin:0;padding:0;color:#000;font-family:Arial}div{margin:0 auto;padding:0}h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p{margin:0;padding:0;border:0}label{vertical-align:middle}hr{border:0;border-top:1px dashed #ccccce}input,select{vertical-align:middle;font-family:Trebuchet MS,"segoe ui",Helvetica,Tahoma,Verdana,MingLiu,PMingLiu,Arial,sans-serif;margin-left:0}textarea:focus,input:focus{outline:0}iframe{border:0}p{font-size:14px;line-height:140%;margin-bottom:6px}a{color:#1b79bd;text-decoration:none;cursor:pointer}h2{font-size:21px;padding:3px 0 3px 5px}h3{font-size:19px;padding:3px 0 3px 5px}ul{list-style:disc;margin-left:20px;padding-left:0;margin-bottom:1em}ol{list-style:decimal;margin-left:30px;margin-bottom:1em;padding-left:0}td ul{vertical-align:middle}li input{margin:3px 3px 4px 3px}pre{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%;margin-bottom:10px;background-color:#f5f5f5;padding-left:5px;padding-top:5px;padding-bottom:20px!ie7}code{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%}blockquote{margin-bottom:10px;margin-right:15px;padding:10px 0 1px 10px;background-color:#f5f5f5}* html .clearfix,* html .paginator{height:1;overflow:visible}+html .clearfix,+html .paginator{min-height:1%}.clearfix:after,.paginator:after{clear:both;content:".";display:block;height:0;visibility:hidden}.badges a{color:#763333;text-decoration:underline}a:hover{text-decoration:underline}.badge-context-toggle.active{cursor:pointer;text-decoration:underline}h1{font-size:24px;padding:10px 0 5px 0}body.user-messages{margin-top:2.4em}.left{float:left}.right{float:right}.clean{clear:both}.center{margin:0 auto;padding:0}.notify{position:fixed;top:0;left:0;width:100%;z-index:100;padding:0;text-align:center;background-color:#f5dd69;border-top:#fff 1px solid;font-family:'Yanone Kaffeesatz',sans-serif}.notify p.notification{margin-top:6px;margin-bottom:6px;font-size:16px;color:#424242}#closeNotify{position:absolute;right:5px;top:7px;color:#735005;text-decoration:none;line-height:18px;background:-6px -5px url(../images/sprites.png) no-repeat;cursor:pointer;width:20px;height:20px}#closeNotify:hover{background:-26px -5px url(../images/sprites.png) no-repeat}#header{margin-top:0;background:#16160f;font-family:'Yanone Kaffeesatz',sans-serif}.content-wrapper{width:960px;margin:auto;position:relative}#logo img{padding:5px 0 5px 0;height:75px;width:auto;float:left}#userToolsNav{height:20px;padding-bottom:5px}#userToolsNav a{height:35px;text-align:right;margin-left:20px;text-decoration:underline;color:#d0e296;font-size:16px}#userToolsNav a:first-child{margin-left:0}#userToolsNav a#ab-responses{margin-left:3px}#userToolsNav .user-info,#userToolsNav .user-micro-info{color:#b5b593}#userToolsNav a img{vertical-align:middle;margin-bottom:2px}#userToolsNav .user-info a{margin:0;text-decoration:none}#metaNav{float:right}#metaNav a{color:#e2e2ae;padding:0 0 0 35px;height:25px;line-height:30px;margin:5px 0 0 10px;font-size:18px;font-weight:100;text-decoration:none;display:block;float:left}#metaNav a:hover{text-decoration:underline}#metaNav a.on{font-weight:bold;color:#FFF;text-decoration:none}#metaNav a.special{font-size:18px;color:#b02b2c;font-weight:bold;text-decoration:none}#metaNav a.special:hover{text-decoration:underline}#metaNav #navTags{background:-50px -5px url(../images/sprites.png) no-repeat}#metaNav #navUsers{background:-125px -5px url(../images/sprites.png) no-repeat}#metaNav #navBadges{background:-210px -5px url(../images/sprites.png) no-repeat}#header.with-logo #userToolsNav{position:absolute;bottom:0;right:0}#header.without-logo #userToolsNav{float:left;margin-top:7px}#header.without-logo #metaNav{margin-bottom:7px}#secondaryHeader{height:55px;background:#e9e9e1;border-bottom:#d3d3c2 1px solid;border-top:#fcfcfc 1px solid;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif}#secondaryHeader #homeButton{border-right:#afaf9e 1px solid;background:-6px -36px url(../images/sprites.png) no-repeat;height:55px;width:43px;display:block;float:left}#secondaryHeader #homeButton:hover{background:-51px -36px url(../images/sprites.png) no-repeat}#secondaryHeader #scopeWrapper{width:688px;float:left}#secondaryHeader #scopeWrapper a{display:block;float:left}#secondaryHeader #scopeWrapper .scope-selector{font-size:21px;color:#5a5a4b;height:55px;line-height:55px;margin-left:24px}#secondaryHeader #scopeWrapper .on{background:url(../images/scopearrow.png) no-repeat center bottom}#secondaryHeader #scopeWrapper .ask-message{font-size:24px}#searchBar{display:inline-block;background-color:#fff;width:412px;border:1px solid #c9c9b5;float:right;height:42px;margin:6px 0 0 15px}#searchBar .searchInput,#searchBar .searchInputCancelable{font-size:30px;height:40px;font-weight:300;background:#FFF;border:0;color:#484848;padding-left:10px;font-family:Arial;vertical-align:middle}#searchBar .searchInput{width:352px}#searchBar .searchInputCancelable{width:317px}#searchBar .logoutsearch{width:337px}#searchBar .searchBtn{font-size:10px;color:#666;background-color:#eee;height:42px;border:#FFF 1px solid;line-height:22px;text-align:center;float:right;margin:0;width:48px;background:-98px -36px url(../images/sprites.png) no-repeat;cursor:pointer}#searchBar .searchBtn:hover{background:-146px -36px url(../images/sprites.png) no-repeat}#searchBar .cancelSearchBtn{font-size:30px;color:#ce8888;background:#fff;height:42px;border:0;border-left:#deded0 1px solid;text-align:center;width:35px;cursor:pointer}#searchBar .cancelSearchBtn:hover{color:#d84040}body.anon #searchBar{width:500px}body.anon #searchBar .searchInput{width:440px}body.anon #searchBar .searchInputCancelable{width:405px}#askButton{line-height:44px;margin-top:6px;float:right;text-transform:uppercase;width:200px;height:42px;font-size:23px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}#askButton:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#ContentLeft{width:730px;float:left;position:relative;padding-bottom:10px}#ContentRight{width:200px;float:right;padding:0 0 10px 0}#ContentFull{float:left;width:960px}.box{background:#fff;padding:4px 0 10px 0;width:200px}.box p{margin-bottom:4px}.box p.info-box-follow-up-links{text-align:right;margin:0}.box h2{padding-left:0;background:#eceeeb;height:30px;line-height:30px;text-align:right;font-size:18px!important;font-weight:normal;color:#656565;padding-right:10px;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif;width:190px}.box h3{color:#4a757f;font-size:18px;text-align:left;font-weight:normal;font-family:'Yanone Kaffeesatz',sans-serif;padding-left:0}.box .contributorback{background:#eceeeb url(../images/contributorsback.png) no-repeat center left}.box label{color:#707070;font-size:15px;display:block;float:right;text-align:left;font-family:'Yanone Kaffeesatz',sans-serif;width:80px;margin-right:18px}.box #displayTagFilterControl label{width:160px}.box ul{margin-left:22px}.box li{list-style-type:disc;font-size:13px;line-height:20px;margin-bottom:10px;color:#707070}.box ul.tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}.box #displayTagFilterControl p label{color:#707070;font-size:15px}.box .inputs #interestingTagInput,.box .inputs #ignoredTagInput{width:153px;padding-left:5px;border:#c9c9b5 1px solid;height:25px}.box .inputs #interestingTagAdd,.box .inputs #ignoredTagAdd{border:0;font-weight:bold;margin-top:-2px;width:30px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0 1px 0 #e6f6fa;-moz-text-shadow:0 1px 0 #e6f6fa;-webkit-text-shadow:0 1px 0 #e6f6fa}.box .inputs #interestingTagAdd:hover,.box .inputs #ignoredTagAdd:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box img.gravatar{margin:1px}.box a.followed,.box a.follow{line-height:34px;border:0;font-weight:normal;margin-top:3px;display:block;width:120px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin:0 auto;padding:0}.box a.followed:hover,.box a.follow:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box a.followed div.unfollow{display:none}.box a.followed:hover div{display:none}.box a.followed:hover div.unfollow{display:inline;color:#a05736}.box .favorite-number{padding:5px 0 0 5px;font-size:100%;font-family:Arial;font-weight:bold;color:#777;text-align:center}.box .notify-sidebar #question-subscribe-sidebar{margin:7px 0 0 3px}.statsWidget p{color:#707070;font-size:16px;border-bottom:#ccc 1px solid;font-size:13px}.statsWidget p strong{float:right;padding-right:10px}.questions-related{word-wrap:break-word}.questions-related p{line-height:20px;padding:4px 0 4px 0;font-size:16px;font-weight:normal;border-bottom:#ccc 1px solid}.questions-related a{font-size:13px}#tips li{color:#707070;font-size:13px;list-style-image:url(../images/tips.png)}#tips a{font-size:16px}#markdownHelp li{color:#707070;font-size:13px}#markdownHelp a{font-size:16px}.tabBar{background-color:#eff5f6;height:30px;margin-bottom:3px;margin-top:3px;float:right;font-family:Georgia,serif;font-size:16px;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.tabBar h2{float:left}.tabsA,.tabsC{float:right;position:relative;display:block;height:20px}.tabsA{float:right}.tabsC{float:left}.tabsA a,.tabsC a{border-left:1px solid #d0e1e4;color:#7ea9b3;display:block;float:left;height:20px;line-height:20px;padding:4px 7px 4px 7px;text-decoration:none}.tabsA a.on,.tabsC a.on,.tabsA a:hover,.tabsC a:hover{color:#4a757f}.tabsA .label,.tabsC .label{float:left;color:#646464;margin-top:4px;margin-right:5px}.main-page .tabsA .label{margin-left:8px}.tabsB a{background:#eee;border:1px solid #eee;color:#777;display:block;float:left;height:22px;line-height:28px;margin:5px 0 0 4px;padding:0 11px 0 11px;text-decoration:none}.tabsC .first{border:0}.rss{float:right;font-size:16px;color:#f57900;margin:5px 0 3px 7px;width:52px;padding-left:2px;padding-top:3px;background:#fff url(../images/feed-icon-small.png) no-repeat center right;float:right;font-family:Georgia,serif;font-size:16px}.rss:hover{color:#f4a731!important}#questionCount{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;margin-bottom:8px;padding-top:6px;font-family:'Yanone Kaffeesatz',sans-serif}#listSearchTags{float:left;margin-top:3px;color:#707070;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}ul#searchTags{margin-left:10px;float:right;padding-top:2px}.search-tips{font-size:16px;line-height:17px;color:#707070;margin:5px 0 10px 0;padding:0;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.search-tips a{text-decoration:underline;color:#1b79bd}#question-list{float:left;position:relative;background-color:#FFF;padding:0;width:100%}.short-summary{position:relative;filter:inherit;padding:10px;border-bottom:1px solid #dddbce;margin-bottom:1px;overflow:hidden;width:710px;float:left;background:url(../images/summary-background.png) repeat-x}.short-summary h2{font-size:24px;font-weight:normal;line-height:26px;padding-left:0;margin-bottom:6px;display:block;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary a{color:#464646}.short-summary .userinfo{text-align:right;line-height:16px;font-family:Arial;padding-right:4px}.short-summary .userinfo .relativetime,.short-summary span.anonymous{font-size:11px;clear:both;font-weight:normal;color:#555}.short-summary .userinfo a{font-weight:bold;font-size:11px}.short-summary .counts{float:right;margin:4px 0 0 5px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .item-count{padding:0 5px 0 5px;font-size:25px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .votes div,.short-summary .counts .views div,.short-summary .counts .answers div,.short-summary .counts .favorites div{margin-top:3px;font-size:14px;line-height:14px;color:#646464}.short-summary .tags{margin-top:0}.short-summary .votes,.short-summary .answers,.short-summary .favorites,.short-summary .views{text-align:center;margin:0 3px;padding:8px 2px 0 2px;width:51px;float:right;height:44px;border:#dbdbd4 1px solid}.short-summary .votes{background:url(../images/vote-background.png) repeat-x}.short-summary .answers{background:url(../images/answers-background.png) repeat-x}.short-summary .views{background:url(../images/view-background.png) repeat-x}.short-summary .no-votes .item-count{color:#b1b5b6}.short-summary .some-votes .item-count{color:#4a757f}.short-summary .no-answers .item-count{color:#b1b5b6}.short-summary .some-answers .item-count{color:#eab243}.short-summary .no-views .item-count{color:#b1b5b6}.short-summary .some-views .item-count{color:#d33f00}.short-summary .accepted .item-count{background:url(../images/accept.png) no-repeat top right;display:block;text-align:center;width:40px;color:#eab243}.short-summary .some-favorites .item-count{background:#338333;color:#d0f5a9}.short-summary .no-favorites .item-count{background:#eab243;color:yellow}.evenMore{font-size:13px;color:#707070;padding:15px 0 10px 0;clear:both}.evenMore a{text-decoration:underline;color:#1b79bd}.pager{margin-top:10px;margin-bottom:16px}.pagesize{margin-top:10px;margin-bottom:16px;float:right}.paginator{padding:5px 0 10px 0;font-size:13px;margin-bottom:10px}.paginator .prev a,.paginator .prev a:visited,.paginator .next a,.paginator .next a:visited{background-color:#fff;color:#777;padding:2px 4px 3px 4px}.paginator a{color:#7ea9b3}.paginator .prev{margin-right:.5em}.paginator .next{margin-left:.5em}.paginator .page a,.paginator .page a:visited,.paginator .curr{padding:.25em;background-color:#fff;margin:0 .25em;color:#ff}.paginator .curr{background-color:#8ebcc7;color:#fff;font-weight:bold}.paginator .next a,.paginator .prev a{color:#7ea9b3}.paginator .page a:hover,.paginator .curr a:hover,.paginator .prev a:hover,.paginator .next a:hover{color:#8c8c8c;background-color:#e1e1e1;text-decoration:none}.paginator .text{color:#777;padding:.3em}.paginator .paginator-container-left{padding:5px 0 10px 0}.tag-size-1{font-size:12px}.tag-size-2{font-size:13px}.tag-size-3{font-size:14px}.tag-size-4{font-size:15px}.tag-size-5{font-size:16px}.tag-size-6{font-size:17px}.tag-size-7{font-size:18px}.tag-size-8{font-size:19px}.tag-size-9{font-size:20px}.tag-size-10{font-size:21px}ul.tags,ul.tags.marked-tags,ul#related-tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}ul.tags li{float:left;display:block;margin:0 8px 8px 0;padding:0;height:20px}.wildcard-tags{clear:both}ul.tags.marked-tags li,.wildcard-tags ul.tags li{margin-bottom:5px}#tagSelector div.inputs{clear:both;float:none;margin-bottom:10px}.tags-page ul.tags li,ul#ab-user-tags li{width:160px;margin:5px}ul#related-tags li{margin:0 5px 8px 0;float:left;clear:left}.tag-left{cursor:pointer;display:block;float:left;height:17px;margin:0 5px 0 0;padding:0;-webkit-box-shadow:0 0 5px #d3d6d7;-moz-box-shadow:0 0 5px #d3d6d7;box-shadow:0 0 5px #d3d6d7}.tag-right{background:#f3f6f6;border:#fff 1px solid;border-top:#fff 2px solid;outline:#cfdbdb 1px solid;display:block;float:left;height:17px;line-height:17px;font-weight:normal;font-size:11px;padding:0 8px 0 8px;text-decoration:none;text-align:center;white-space:nowrap;vertical-align:middle;font-family:Arial;color:#717179}.deletable-tag{margin-right:3px;white-space:nowrap;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px}.tags a.tag-right,.tags span.tag-right{color:#585858;text-decoration:none}.tags a:hover{color:#1a1a1a}.users-page h1,.tags-page h1{float:left}.main-page h1{margin-right:5px}.delete-icon{margin-top:-1px;float:left;height:21px;width:18px;display:block;line-height:20px;text-align:center;background:#bbcdcd;cursor:default;color:#fff;border-top:#cfdbdb 1px solid;font-family:Arial;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px;text-shadow:0 1px 0 #7ea0a0;-moz-text-shadow:0 1px 0 #7ea0a0;-webkit-text-shadow:0 1px 0 #7ea0a0}.delete-icon:hover{background:#b32f2f}.tag-number{font-weight:normal;float:left;font-size:16px;color:#5d5d5d}.badges .tag-number{float:none;display:inline;padding-right:15px}.section-title{color:#7ea9b3;font-family:'Yanone Kaffeesatz',sans-serif;font-weight:bold;font-size:24px}#fmask{margin-bottom:30px;width:100%}#askFormBar{display:inline-block;padding:4px 7px 5px 0;margin-top:0}#askFormBar p{margin:0 0 5px 0;font-size:14px;color:#525252;line-height:1.4}#askFormBar .questionTitleInput{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px}.ask-page div#question-list,.edit-question-page div#question-list{float:none;border-bottom:#f0f0ec 1px solid;float:left;margin-bottom:10px}.ask-page div#question-list a,.edit-question-page div#question-list a{line-height:30px}.ask-page div#question-list h2,.edit-question-page div#question-list h2{font-size:13px;padding-bottom:0;color:#1b79bd;border-top:#f0f0ec 1px solid;border-left:#f0f0ec 1px solid;height:30px;line-height:30px;font-weight:normal}.ask-page div#question-list span,.edit-question-page div#question-list span{width:28px;height:26px;line-height:26px;text-align:center;margin-right:10px;float:left;display:block;color:#fff;background:#b8d0d5;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.ask-page label,.edit-question-page label{color:#525252;font-size:13px}.ask-page #id_tags,.edit-question-page #id_tags{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.title-desc{color:#707070;font-size:13px}#fmanswer input.submit,.ask-page input.submit,.edit-question-page input.submit{float:left;font-weight:normal;margin-top:3px;width:160px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin-right:7px}#fmanswer input.submit:hover,.ask-page input.submit:hover,.edit-question-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#editor{font-size:100%;min-height:200px;line-height:18px;margin:0;border-left:#cce6ec 3px solid;border-bottom:#cce6ec 3px solid;border-right:#cce6ec 3px solid;border-top:0;padding:10px;margin-bottom:10px;width:710px}@media screen and (-webkit-min-device-pixel-ratio:0){#editor{width:717px}}#id_title{width:100%}.wmd-preview{margin:3px 0 5px 0;padding:6px;background-color:#f5f5f5;min-height:20px;overflow:auto;font-size:13px;font-family:Arial}.wmd-preview p{margin-bottom:14px;line-height:1.4;font-size:14px}.wmd-preview pre{background-color:#e7f1f8}.wmd-preview blockquote{background-color:#eee}.wmd-preview IMG{max-width:600px}.preview-toggle{width:100%;color:#b6a475;text-align:left}.preview-toggle span:hover{cursor:pointer}.after-editor{margin-top:15px;margin-bottom:15px}.checkbox{margin-left:5px;font-weight:normal;cursor:help}.question-options{margin-top:1px;color:#666;line-height:13px;margin-bottom:5px}.question-options label{vertical-align:text-bottom}.edit-content-html{border-top:1px dotted #d8d2a9;border-bottom:1px dotted #d8d2a9;margin:5px 0 5px 0}.edit-question-page,#fmedit,.wmd-preview{color:#525252}.edit-question-page #id_revision,#fmedit #id_revision,.wmd-preview #id_revision{font-size:14px;margin-top:5px;margin-bottom:5px}.edit-question-page #id_title,#fmedit #id_title,.wmd-preview #id_title{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px;margin-bottom:10px}.edit-question-page #id_summary,#fmedit #id_summary,.wmd-preview #id_summary{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.edit-question-page .title-desc,#fmedit .title-desc,.wmd-preview .title-desc{margin-bottom:10px}.question-page h1{padding-top:0;font-family:'Yanone Kaffeesatz',sans-serif}.question-page h1 a{color:#464646;font-size:30px;font-weight:normal;line-height:1}.question-page p.rss{float:none;clear:both;padding:3px 0 0 23px;font-size:15px;width:110px;background-position:center left;margin-left:0!important}.question-page p.rss a{font-family:'Yanone Kaffeesatz',sans-serif;vertical-align:top}.question-page .question-content{float:right;width:682px;margin-bottom:10px}.question-page #question-table{float:left;border-top:#f0f0f0 1px solid}.question-page #question-table,.question-page .answer-table{margin:6px 0 6px 0;border-spacing:0;width:670px;padding-right:10px}.question-page .answer-table{margin-top:0;border-bottom:1px solid #d4d4d4;float:right}.question-page .answer-table td,.question-page #question-table td{width:20px;vertical-align:top}.question-page .question-body,.question-page .answer-body{overflow:auto;margin-top:10px;font-family:Arial;color:#4b4b4b}.question-page .question-body p,.question-page .answer-body p{margin-bottom:14px;line-height:1.4;font-size:14px;padding:0 5px 5px 0}.question-page .question-body a,.question-page .answer-body a{color:#1b79bd}.question-page .question-body li,.question-page .answer-body li{margin-bottom:7px}.question-page .question-body IMG,.question-page .answer-body IMG{max-width:600px}.question-page .post-update-info-container{float:right;width:175px}.question-page .post-update-info{background:#fff url(../images/background-user-info.png) repeat-x bottom;float:right;font-size:9px;font-family:Arial;width:158px;padding:4px;margin:0 0 5px 5px;line-height:14px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:0 2px 1px #bfbfbf;-moz-box-shadow:0 2px 1px #bfbfbf;box-shadow:0 2px 1px #bfbfbf}.question-page .post-update-info p{line-height:13px;font-size:11px;margin:0 0 2px 1px;padding:0}.question-page .post-update-info a{color:#444}.question-page .post-update-info .gravatar{float:left;margin-right:4px}.question-page .post-update-info p.tip{color:#444;line-height:13px;font-size:10px}.question-page .post-controls{font-size:11px;line-height:12px;min-width:200px;padding-left:5px;text-align:right;clear:left;float:right;margin-top:10px;margin-bottom:8px}.question-page .post-controls a{color:#777;padding:0 7px 3px 18px;cursor:pointer;border:0;font-size:12px;font-family:Arial;text-decoration:none;height:18px;display:block;float:right;line-height:18px;margin-top:-2px;margin-left:4px}.question-page .post-controls a:hover{background-color:#f5f0c9;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.question-page .post-controls .sep{color:#ccc;float:right;height:18px;font-size:18px}.question-page .post-controls .question-delete,.question-page .answer-controls .question-delete{background:url(../images/delete.png) no-repeat center left;padding-left:11px}.question-page .post-controls .question-flag,.question-page .answer-controls .question-flag{background:url(../images/flag.png) no-repeat center left}.question-page .post-controls .question-edit,.question-page .answer-controls .question-edit{background:url(../images/edit2.png) no-repeat center left}.question-page .post-controls .question-retag,.question-page .answer-controls .question-retag{background:url(../images/retag.png) no-repeat center left}.question-page .post-controls .question-close,.question-page .answer-controls .question-close{background:url(../images/close.png) no-repeat center left}.question-page .post-controls .permant-link,.question-page .answer-controls .permant-link{background:url(../images/link.png) no-repeat center left}.question-page .tabBar{width:100%}.question-page #questionCount{float:left;font-family:'Yanone Kaffeesatz',sans-serif;line-height:15px}.question-page .question-img-upvote,.question-page .question-img-downvote,.question-page .answer-img-upvote,.question-page .answer-img-downvote{width:25px;height:20px;cursor:pointer}.question-page .question-img-upvote,.question-page .answer-img-upvote{background:url(../images/vote-arrow-up-new.png) no-repeat}.question-page .question-img-downvote,.question-page .answer-img-downvote{background:url(../images/vote-arrow-down-new.png) no-repeat}.question-page .question-img-upvote:hover,.question-page .question-img-upvote.on,.question-page .answer-img-upvote:hover,.question-page .answer-img-upvote.on{background:url(../images/vote-arrow-up-on-new.png) no-repeat}.question-page .question-img-downvote:hover,.question-page .question-img-downvote.on,.question-page .answer-img-downvote:hover,.question-page .answer-img-downvote.on{background:url(../images/vote-arrow-down-on-new.png) no-repeat}.question-page #fmanswer_button{margin:8px 0}.question-page .question-img-favorite:hover{background:url(../images/vote-favorite-on.png)}.question-page div.comments{padding:0}.question-page #comment-title{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.question-page .comments{font-size:12px;clear:both}.question-page .comments div.controls{clear:both;float:left;width:100%;margin:3px 0 20px 5px}.question-page .comments .controls a{color:#988e4c;padding:0 3px 2px 22px;font-family:Arial;font-size:13px;background:url(../images/comment.png) no-repeat center left}.question-page .comments .controls a:hover{background-color:#f5f0c9;text-decoration:none}.question-page .comments .button{color:#988e4c;font-size:11px;padding:3px;cursor:pointer}.question-page .comments a{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments form.post-comments{margin:3px 26px 0 42px}.question-page .comments form.post-comments textarea{font-size:13px;line-height:1.3}.question-page .comments textarea{height:42px;width:100%;margin:7px 0 5px 1px;font-family:Arial;outline:0;overflow:auto;font-size:12px;line-height:140%;padding-left:2px;padding-top:3px;border:#cce6ec 3px solid}@media screen and (-webkit-min-device-pixel-ratio:0){textarea{padding-left:3px!important}}.question-page .comments input{margin-left:10px;margin-top:1px;vertical-align:top;width:100px}.question-page .comments button{line-height:25px;margin-bottom:5px;width:100px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold}.question-page .comments button:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.question-page .comments .counter{display:inline-block;width:245px;float:right;color:#b6a475!important;vertical-align:top;font-family:Arial;float:right;text-align:right}.question-page .comments .comment{border-bottom:1px solid #edeeeb;clear:both;margin:0;margin-top:8px;padding-bottom:4px;overflow:auto;font-family:Arial;font-size:11px;min-height:25px;background:#fff url(../images/comment-background.png) bottom repeat-x;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.question-page .comments div.comment:hover{background-color:#efefef}.question-page .comments a.author{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments a.author:hover{text-decoration:underline}.question-page .comments span.delete-icon{background:url(../images/close-small.png) no-repeat;border:0;width:14px;height:14px}.question-page .comments span.delete-icon:hover{border:#bc564b 2px solid;border-radius:10px;-ms-border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;margin:-3px 0 0 -2px}.question-page .comments .content{margin-bottom:7px}.question-page .comments .comment-votes{float:left;width:37px;line-height:130%;padding:6px 5px 6px 3px}.question-page .comments .comment-body{line-height:1.3;margin:3px 26px 0 46px;padding:5px 3px;color:#666;font-size:13px}.question-page .comments .comment-body .edit{padding-left:6px}.question-page .comments .comment-body p{font-size:13px;line-height:1.3;margin-bottom:3px;padding:0}.question-page .comments .comment-delete{float:right;width:14px;line-height:130%;padding:8px 6px}.question-page .comments .upvote{margin:0;padding-right:17px;padding-top:2px;text-align:right;height:20px;font-size:13px;font-weight:bold;color:#777}.question-page .comments .upvote.upvoted{color:#d64000}.question-page .comments .upvote.hover{background:url(../images/go-up-grey.png) no-repeat;background-position:right 1px}.question-page .comments .upvote:hover{background:url(../images/go-up-orange.png) no-repeat;background-position:right 1px}.question-page .comments .help-text{float:right;text-align:right;color:gray;margin-bottom:0;margin-top:0;line-height:50%}.question-page #questionTools{font-size:22px;margin-top:11px;text-align:left}.question-page .question-status{margin-top:10px;margin-bottom:15px;padding:20px;background-color:#fef7cc;text-align:center;border:#e1c04a 1px solid}.question-page .question-status h3{font-size:20px;color:#707070;font-weight:normal}.question-page .vote-buttons{float:left;text-align:center;padding-top:2px;margin:10px 10px 0 3px;*margin:0;*height:210px;*width:30px}.question-page .vote-buttons IMG{cursor:pointer}.question-page .vote-number{font-family:'Yanone Kaffeesatz',sans-serif;padding:0 0 5px 0;font-size:25px;font-weight:bold;color:#777}.question-page .vote-buttons .notify-sidebar{text-align:left;width:120px}.question-page .vote-buttons .notify-sidebar label{vertical-align:top}.question-page .tabBar-answer{margin-bottom:15px;padding-left:7px;width:723px;margin-top:10px}.question-page .answer .vote-buttons{float:left}.question-page .accepted-answer{background-color:#f7fecc;border-bottom-color:#9bd59b}.question-page .accepted-answer .vote-buttons{width:27px;margin-right:10px;margin-top:10px}.question-page .answer .post-update-info a{color:#444}.question-page .answered{background:#CCC;color:#999}.question-page .answered-accepted{background:#dcdcdc;color:#763333}.question-page .answered-accepted strong{color:#e1e818}.question-page .answered-by-owner{background:#f1f1ff}.question-page .answered-by-owner .comments .button{background-color:#e6ecff}.question-page .answered-by-owner .comments{background-color:#e6ecff}.question-page .answered-by-owner .vote-buttons{margin-right:10px}.question-page .answer-img-accept:hover{background:url(../images/vote-accepted-on.png)}.question-page .answer-body a{color:#1b79bd}.question-page .answer-body li{margin-bottom:.7em}.question-page #fmanswer{color:#707070;line-height:1.2;margin-top:10px}.question-page #fmanswer h2{font-family:'Yanone Kaffeesatz',sans-serif;color:#7ea9b3;font-size:24px}.question-page #fmanswer label{font-size:13px}.question-page .message{padding:5px;margin:0 0 10px 0}.facebook-share.icon,.twitter-share.icon,.linkedin-share.icon,.identica-share.icon{background:url(../images/socialsprite.png) no-repeat;display:block;text-indent:-100em;height:25px;width:25px;margin-bottom:3px}.facebook-share.icon:hover,.twitter-share.icon:hover,.linkedin-share.icon:hover,.identica-share.icon:hover{opacity:.8;filter:alpha(opacity=80)}.facebook-share.icon{background-position:-26px 0}.identica-share.icon{background-position:-78px 0}.twitter-share.icon{margin-top:10px;background-position:0 0}.linkedin-share.icon{background-position:-52px 0}.openid-signin,.meta,.users-page,.user-profile-edit-page{font-size:13px;line-height:1.3;color:#525252}.openid-signin p,.meta p,.users-page p,.user-profile-edit-page p{font-size:13px;color:#707070;line-height:1.3;font-family:Arial;color:#525252;margin-bottom:12px}.openid-signin h2,.meta h2,.users-page h2,.user-profile-edit-page h2{color:#525252;padding-left:0;font-size:16px}.openid-signin form,.meta form,.users-page form,.user-profile-edit-page form,.user-profile-page form{margin-bottom:15px}.openid-signin input[type="text"],.meta input[type="text"],.users-page input[type="text"],.user-profile-edit-page input[type="text"],.user-profile-page input[type="text"],.openid-signin input[type="password"],.meta input[type="password"],.users-page input[type="password"],.user-profile-edit-page input[type="password"],.user-profile-page input[type="password"],.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{width:405px;height:30px}.openid-signin textarea,.meta textarea,.users-page textarea,.user-profile-edit-page textarea,.user-profile-page textarea{border:#cce6ec 3px solid;padding-left:5px;padding-top:5px;width:395px;font-size:14px}.openid-signin input.submit,.meta input.submit,.users-page input.submit,.user-profile-edit-page input.submit,.user-profile-page input.submit{font-weight:normal;margin:5px 0;width:100px;height:26px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial}.openid-signin input.submit:hover,.meta input.submit:hover,.users-page input.submit:hover,.user-profile-edit-page input.submit:hover,.user-profile-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-signin .cancel,.meta .cancel,.users-page .cancel,.user-profile-edit-page .cancel,.user-profile-page .cancel{background:url(../images/small-button-cancel.png) repeat-x top!important;color:#525252!important}.openid-signin .cancel:hover,.meta .cancel:hover,.users-page .cancel:hover,.user-profile-edit-page .cancel:hover,.user-profile-page .cancel:hover{background:url(../images/small-button-cancel.png) repeat-x bottom!important}#email-input-fs,#local_login_buttons,#password-fs,#openid-fs{margin-top:10px}#email-input-fs #id_email,#local_login_buttons #id_email,#password-fs #id_email,#openid-fs #id_email,#email-input-fs #id_username,#local_login_buttons #id_username,#password-fs #id_username,#openid-fs #id_username,#email-input-fs #id_password,#local_login_buttons #id_password,#password-fs #id_password,#openid-fs #id_password{font-size:12px;line-height:20px;height:20px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:200px}#email-input-fs .submit-b,#local_login_buttons .submit-b,#password-fs .submit-b,#openid-fs .submit-b{width:100px;height:24px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold;padding-right:10px;border:0}#email-input-fs .submit-b:hover,#local_login_buttons .submit-b:hover,#password-fs .submit-b:hover,#openid-fs .submit-b:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-input{background:url(../images/openid.gif) no-repeat;padding-left:15px;cursor:pointer}.openid-login-input{background-position:center left;background:url(../images/openid.gif) no-repeat 0 50%;padding:5px 5px 5px 15px;cursor:pointer;font-family:Trebuchet MS;font-weight:300;font-size:150%;width:500px}.openid-login-submit{height:40px;width:80px;line-height:40px;cursor:pointer;border:1px solid #777;font-weight:bold;font-size:120%}.tabBar-user{width:375px}.user{padding:5px;line-height:140%;width:166px;border:#eee 1px solid;margin-bottom:5px;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.user .user-micro-info{color:#525252}.user ul{margin:0;list-style-type:none}.user .thumb{clear:both;float:left;margin-right:4px;display:inline}.tabBar-tags{width:270px;margin-bottom:15px}a.medal{font-size:17px;line-height:250%;margin-right:5px;color:#333;text-decoration:none;background:url(../images/medala.gif) no-repeat;border-left:1px solid #EEE;border-top:1px solid #EEE;border-bottom:1px solid #CCC;border-right:1px solid #CCC;padding:4px 12px 4px 6px}a:hover.medal{color:#333;text-decoration:none;background:url(../images/medala_on.gif) no-repeat;border-left:1px solid #e7e296;border-top:1px solid #e7e296;border-bottom:1px solid #d1ca3d;border-right:1px solid #d1ca3d}#award-list .user{float:left;margin:5px}.tabBar-profile{width:100%;margin-bottom:15px;float:left}.user-profile-page{font-size:13px;color:#525252}.user-profile-page p{font-size:13px;line-height:1.3;color:#525252}.user-profile-page .avatar img{border:#eee 1px solid;padding:5px}.user-profile-page h2{padding:10px 0 10px 0;font-family:'Yanone Kaffeesatz',sans-serif}.user-details{font-size:13px}.user-details h3{font-size:16px}.user-about{background-color:#eee;height:200px;line-height:20px;overflow:auto;padding:10px;width:90%}.user-about p{font-size:13px}.follow-toggle,.submit{border:0!important;font-weight:bold;line-height:26px;margin-top:-2px;width:100px;height:26px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}.follow-toggle:hover,.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-decoration:none!important}.follow-toggle .follow{font-color:#000;font-style:normal}.follow-toggle .unfollow div.unfollow-red{display:none}.follow-toggle .unfollow:hover div.unfollow-red{display:inline;color:#fff;font-weight:bold;color:#a05736}.follow-toggle .unfollow:hover div.unfollow-green{display:none}.count{font-family:'Yanone Kaffeesatz',sans-serif;font-size:200%;font-weight:700;color:#777}.scoreNumber{font-family:'Yanone Kaffeesatz',sans-serif;font-size:35px;font-weight:800;color:#777;line-height:40px;margin-top:3px}.vote-count{font-family:Arial;font-size:160%;font-weight:700;color:#777}.answer-summary{display:block;clear:both;padding:3px}.answer-votes{background-color:#eee;color:#555;float:left;font-family:Arial;font-size:15px;font-weight:bold;height:17px;padding:2px 4px 5px;text-align:center;text-decoration:none;width:20px;margin-right:10px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.karma-summary{padding:5px;font-size:13px}.karma-summary h3{text-align:center;font-weight:bold;padding:5px}.karma-diagram{width:477px;height:300px;float:left;margin-right:10px}.karma-details{float:right;width:450px;height:250px;overflow-y:auto;word-wrap:break-word}.karma-details p{margin-bottom:10px}.karma-gained{font-weight:bold;background:#eee;width:25px;margin-right:5px;color:green;padding:3px;display:block;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.karma-lost{font-weight:bold;background:#eee;width:25px;color:red;padding:3px;display:block;margin-right:5px;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.submit-row{margin-bottom:10px}.revision{margin:10px 0 10px 0;font-size:13px;color:#525252}.revision p{font-size:13px;line-height:1.3;color:#525252}.revision h3{font-family:'Yanone Kaffeesatz',sans-serif;font-size:21px;padding-left:0}.revision .header{background-color:#f5f5f5;padding:5px;cursor:pointer}.revision .author{background-color:#e9f3f5}.revision .summary{padding:5px 0 10px 0}.revision .summary span{background-color:#fde785;padding:6px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;display:inline;-webkit-box-shadow:1px 1px 4px #cfb852;-moz-box-shadow:1px 1px 4px #cfb852;box-shadow:1px 1px 4px #cfb852}.revision .answerbody{padding:10px 0 5px 10px}.revision .revision-mark{width:150px;text-align:left;display:inline-block;font-size:11px;overflow:hidden}.revision .revision-mark .gravatar{float:left;margin-right:4px;padding-top:5px}.revision .revision-number{font-size:300%;font-weight:bold;font-family:sans-serif}del,del .post-tag{color:#c34719}ins .post-tag,ins p,ins{background-color:#e6f0a2}.vote-notification{z-index:1;cursor:pointer;display:none;position:absolute;font-family:Arial;font-size:14px;font-weight:normal;color:white;background-color:#8e0000;text-align:center;padding-bottom:10px;-webkit-box-shadow:0 2px 4px #370000;-moz-box-shadow:0 2px 4px #370000;box-shadow:0 2px 4px #370000;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.vote-notification h3{background:url(../images/notification.png) repeat-x top;padding:10px 10px 10px 10px;font-size:13px;margin-bottom:5px;border-top:#8e0000 1px solid;color:#fff;font-weight:normal;border-top-right-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px}.vote-notification a{color:#fb7321;text-decoration:underline;font-weight:bold}#ground{width:100%;clear:both;border-top:1px solid #000;padding:6px 0 0 0;background:#16160f;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}#ground p{margin-bottom:0}.footer-links{color:#EEE;text-align:left;width:500px;float:left}.footer-links a{color:#e7e8a8}.powered-link{width:500px;float:left;text-align:left}.powered-link a{color:#8ebcc7}.copyright{color:#616161;width:450px;float:right;text-align:right}.copyright a{color:#8ebcc7}.copyright img.license-logo{margin:6px 0 20px 10px;float:right}.notify-me{float:left}span.text-counter{margin-right:20px}span.form-error{color:#900;font-weight:normal;margin-left:5px}ul.errorlist{margin-bottom:0}p.form-item{margin:0}.deleted{background:#f4e7e7 none repeat scroll 0 0}.form-row{line-height:25px}table.form-as-table{margin-top:5px}table.form-as-table ul{list-style-type:none;display:inline}table.form-as-table li{display:inline}table.form-as-table td{text-align:right}table.form-as-table th{text-align:left;font-weight:normal}table.ab-subscr-form{width:45em}table.ab-tag-filter-form{width:45em}.submit-row{line-height:30px;padding-top:10px;display:block;clear:both}.errors{line-height:20px;color:red}.error{color:darkred;margin:0;font-size:10px}label.retag-error{color:darkred;padding-left:5px;font-size:10px}.fieldset{border:0;margin-top:10px;padding:10px}span.form-error{color:#900;font-size:90%;font-weight:normal;margin-left:5px}.favorites-empty{width:32px;height:45px;float:left}.user-info-table{margin-bottom:10px;border-spacing:0}.user-stats-table .narrow{width:660px}.narrow .summary h3{padding:0;margin:0}.relativetime{font-weight:bold;text-decoration:none}.narrow .tags{float:left}.user-action-1{font-weight:bold;color:#333}.user-action-2{font-weight:bold;color:#CCC}.user-action-3{color:#333}.user-action-4{color:#333}.user-action-5{color:darkred}.user-action-6{color:darkred}.user-action-7{color:#333}.user-action-8{padding:3px;font-weight:bold;background-color:#CCC;color:#763333}.revision-summary{background-color:#fffe9b;padding:2px}.question-title-link a{font-weight:bold;color:#07c}.answer-title-link a{color:#333}.post-type-1 a{font-weight:bold}.post-type-3 a{font-weight:bold}.post-type-5 a{font-weight:bold}.post-type-2 a{color:#333}.post-type-4 a{color:#333}.post-type-6 a{color:#333}.post-type-8 a{color:#333}.hilite{background-color:#ff0}.hilite1{background-color:#ff0}.hilite2{background-color:#f0f}.hilite3{background-color:#0ff}.gold,.badge1{color:#fc0}.silver,.badge2{color:#ccc}.bronze,.badge3{color:#c93}.score{font-weight:800;color:#333}a.comment{background:#EEE;color:#930;padding:5px}a.offensive{color:#999}.message h1{padding-top:0;font-size:15px}.message p{margin-bottom:0}p.space-above{margin-top:10px}.warning{color:red}button::-moz-focus-inner{padding:0;border:0}.submit{cursor:pointer;background-color:#d4d0c8;height:30px;border:1px solid #777;font-weight:bold;font-size:120%}.submit:hover{text-decoration:underline}.submit.small{margin-right:5px;height:20px;font-weight:normal;font-size:12px;padding:1px 5px}.submit.small:hover{text-decoration:none}.question-page a.submit{display:-moz-inline-stack;display:inline-block;line-height:30px;padding:0 5px;*display:inline}.noscript{position:fixed;top:0;left:0;width:100%;z-index:100;padding:5px 0;text-align:center;font-family:sans-serif;font-size:120%;font-weight:Bold;color:#fff;background-color:#ae0000}.big{font-size:14px}.strong{font-weight:bold}.orange{color:#d64000;font-weight:bold}.grey{color:#808080}.about div{padding:10px 5px 10px 5px;border-top:1px dashed #aaa}.highlight{background-color:#fff8c6}.nomargin{margin:0}.margin-bottom{margin-bottom:10px}.margin-top{margin-top:10px}.inline-block{display:inline-block}.action-status{margin:0;border:0;text-align:center;line-height:10px;font-size:12px;padding:0}.action-status span{padding:3px 5px 3px 5px;background-color:#fff380;font-weight:normal;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px}.list-table td{vertical-align:top}table.form-as-table .errorlist{display:block;margin:0;padding:0 0 0 5px;text-align:left;font-size:10px;color:darkred}table.form-as-table input{display:inline;margin-left:4px}table.form-as-table th{vertical-align:bottom;padding-bottom:4px}.form-row-vertical{margin-top:8px;display:block}.form-row-vertical label{margin-bottom:3px;display:block}.text-align-right{text-align:center}ul.form-horizontal-rows{list-style:none;margin:0}ul.form-horizontal-rows li{position:relative;height:40px}ul.form-horizontal-rows label{display:inline-block}ul.form-horizontal-rows ul.errorlist{list-style:none;color:darkred;font-size:10px;line-height:10px;position:absolute;top:2px;left:180px;text-align:left;margin:0}ul.form-horizontal-rows ul.errorlist li{height:10px}ul.form-horizontal-rows label{position:absolute;left:0;bottom:6px;margin:0;line-height:12px;font-size:12px}ul.form-horizontal-rows li input{position:absolute;bottom:0;left:180px;margin:0}.narrow .summary{float:left}.user-profile-tool-links{font-weight:bold;vertical-align:top}ul.post-tags{margin-left:3px}ul.post-tags li{margin-top:4px;margin-bottom:3px}ul.post-retag{margin-bottom:0;margin-left:5px}#question-controls .tags{margin:0 0 3px 0}#tagSelector{padding-bottom:2px;margin-bottom:0}#related-tags{padding-left:3px}#hideIgnoredTagsControl{margin:5px 0 0 0}#hideIgnoredTagsControl label{font-size:12px;color:#666}#hideIgnoredTagsCb{margin:0 2px 0 1px}#recaptcha_widget_div{width:318px;float:left;clear:both}p.signup_p{margin:20px 0 0 0}.simple-subscribe-options ul{list-style:none;list-style-position:outside;margin:0}.wmd-preview a{color:#1b79bd}.wmd-preview li{margin-bottom:7px;font-size:14px}.search-result-summary{font-weight:bold;font-size:18px;line-height:22px;margin:0;padding:2px 0 0 0;float:left}.faq-rep-item{text-align:right;padding-right:5px}.user-info-table .gravatar{margin:0}#responses{clear:both;line-height:18px;margin-bottom:15px}#responses div.face{float:left;text-align:center;width:54px;padding:3px;overflow:hidden}.response-parent{margin-top:18px}.response-parent strong{font-size:20px}.re{min-height:57px;clear:both;margin-top:10px}#responses input{float:left}#re_tools{margin-bottom:10px}#re_sections{margin-bottom:6px}#re_sections .on{font-weight:bold}.avatar-page ul{list-style:none}.avatar-page li{display:inline}.user-profile-page .avatar p{margin-bottom:0}.user-profile-page .tabBar a#stats{margin-left:0}.user-profile-page img.gravatar{margin:2px 0 3px 0}.user-profile-page h3{padding:0;margin-top:-3px}.userList{font-size:13px}img.flag{border:1px solid #eee;vertical-align:text-top}.main-page img.flag{vertical-align:text-bottom}a.edit{padding-left:3px;color:#145bff}.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{clear:both;padding:3px;border:0 solid #888}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}#leading-sidebar{float:left}a.re_expand{color:#616161;text-decoration:none}a.re_expand .re_content{display:none;margin-left:77px} \ No newline at end of file diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index 3f6fa2fa..2eb278f0 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -1107,7 +1107,7 @@ ul#related-tags { ul.tags li { float:left; display: block; - margin: 0 8px 0 0; + margin: 0 8px 8px 0; padding: 0; height:20px; } -- cgit v1.2.3-1-g7c22 From 43835e50fa627c1ed485b96ce0404d18b3ffb1db Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Tue, 3 Apr 2012 11:55:08 -0600 Subject: added language selection into livesettings, needs more testing --- askbot/conf/skin_general_settings.py | 36 +++++++++++++++++++++++++++-- askbot/middleware/locale.py | 26 +++++++++++++++++++++ askbot/setup_templates/settings.py | 1 + askbot/setup_templates/settings.py.mustache | 1 + askbot/skins/utils.py | 14 +++++------ 5 files changed, 69 insertions(+), 9 deletions(-) create mode 100644 askbot/middleware/locale.py diff --git a/askbot/conf/skin_general_settings.py b/askbot/conf/skin_general_settings.py index ccecdaba..2d476b62 100644 --- a/askbot/conf/skin_general_settings.py +++ b/askbot/conf/skin_general_settings.py @@ -30,6 +30,38 @@ settings.register( ) ) +LANGUAGE_CHOICES = ( + ('en', _("English")), + ('es', _("Spanish")), + ('ru', _("Russian")), + ('ca', _("Catalan")), + ('de', _("German")), + ('pt', _("Portuguese")), + ('pt_BR', _("Brazilian Portuguese")), + ('fi', _("Finnish")), + ('fr', _("French")), + ('hi', _("Hindi")), + ('hu', _("Hungarian")), + ('it', _("Italian")), + ('ja', _("Japanese")), + ('ko', _("Korean")), + ('sr', _("Serbian")), + ('tr', _("Turkish")), + ('vi', _("Vietnamese")), + ('zh_CN', _("Chinese")), + ('zh_TW', _("Chinese (Taiwan)")), + ) + +settings.register( + values.StringValue( + GENERAL_SKIN_SETTINGS, + 'ASKBOT_LANGUAGE', + default = 'en', + choices = LANGUAGE_CHOICES, + description = _('Select Language'), + ) +) + settings.register( values.BooleanValue( GENERAL_SKIN_SETTINGS, @@ -198,7 +230,7 @@ settings.register( description = _('Apply custom style sheet (CSS)'), help_text = _( 'Check if you want to change appearance ' - 'of your form by adding custom style sheet rules ' + 'of your form by adding custom style sheet rules ' '(please see the next item)' ), default = False @@ -214,7 +246,7 @@ settings.register( 'To use this function, check ' '"Apply custom style sheet" option above. ' 'The CSS rules added in this window will be applied ' - 'after the default style sheet rules. ' + 'after the default style sheet rules. ' 'The custom style sheet will be served dynamically at ' 'url "<forum url>/custom.css", where ' 'the "<forum url> part depends (default is ' diff --git a/askbot/middleware/locale.py b/askbot/middleware/locale.py new file mode 100644 index 00000000..c92e977a --- /dev/null +++ b/askbot/middleware/locale.py @@ -0,0 +1,26 @@ +"Taken from django.middleware.locale: this is the locale selecting middleware that will look at accept headers" + +from django.utils.cache import patch_vary_headers +from django.utils import translation +from askbot.conf import settings + +class LocaleMiddleware(object): + """ + This is a very simple middleware that parses a request + and decides what translation object to install in the current + thread context. This allows pages to be dynamically + translated to the language the user desires (if the language + is available, of course). + """ + + def process_request(self, request): + language = settings.ASKBOT_LANGUAGE + translation.activate(language) + request.LANGUAGE_CODE = translation.get_language() + + def process_response(self, request, response): + patch_vary_headers(response, ('Accept-Language',)) + if 'Content-Language' not in response: + response['Content-Language'] = translation.get_language() + translation.deactivate() + return response diff --git a/askbot/setup_templates/settings.py b/askbot/setup_templates/settings.py index b1d7dd06..0aabcbe0 100644 --- a/askbot/setup_templates/settings.py +++ b/askbot/setup_templates/settings.py @@ -98,6 +98,7 @@ TEMPLATE_LOADERS = ( MIDDLEWARE_CLASSES = ( #'django.middleware.gzip.GZipMiddleware', + 'askbot.middleware.locale.LocaleMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', #'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', diff --git a/askbot/setup_templates/settings.py.mustache b/askbot/setup_templates/settings.py.mustache index 855e6294..99023524 100644 --- a/askbot/setup_templates/settings.py.mustache +++ b/askbot/setup_templates/settings.py.mustache @@ -97,6 +97,7 @@ TEMPLATE_LOADERS = ( MIDDLEWARE_CLASSES = ( #'django.middleware.gzip.GZipMiddleware', + 'askbot.middleware.locale.LocaleMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', #'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', diff --git a/askbot/skins/utils.py b/askbot/skins/utils.py index a07b1fa9..dee14e56 100644 --- a/askbot/skins/utils.py +++ b/askbot/skins/utils.py @@ -3,7 +3,7 @@ the lookup resolution process for templates and media works as follows: * look up item in selected skin * if not found look in 'default' -* raise an exception +* raise an exception """ import os import logging @@ -56,7 +56,7 @@ def get_available_skins(selected=None): #re-insert default as a last item skins['default'] = default_dir - skins['common'] = common_dir + skins['common'] = common_dir return skins @@ -71,7 +71,7 @@ def get_path_to_skin(skin): return skin_dirs.get(skin, None) def get_skin_choices(): - """returns a tuple for use as a set of + """returns a tuple for use as a set of choices in the form""" skin_names = list(reversed(get_available_skins().keys())) return zip(skin_names, skin_names) @@ -86,7 +86,7 @@ def resolve_skin_for_media(media=None, preferred_skin = None): def get_media_url(url, ignore_missing = False): """returns url prefixed with the skin name - of the first skin that contains the file + of the first skin that contains the file directories are searched in this order: askbot_settings.ASKBOT_DEFAULT_SKIN, then 'default', then 'commmon' if file is not found - returns None @@ -156,7 +156,7 @@ def get_media_url(url, ignore_missing = False): url = django_settings.STATIC_URL + use_skin + '/media/' + url url = os.path.normpath(url).replace('\\', '/') - + if resource_revision: url += '?v=%d' % resource_revision @@ -174,7 +174,7 @@ def update_media_revision(skin = None): if skin in get_skin_choices(): skin_path = get_path_to_skin(skin) else: - raise MediaNotFound('Skin %s not found' % skin) + raise MediaNotFound('Skin %s not found' % skin) else: skin = 'default' skin_path = get_path_to_skin(askbot_settings.ASKBOT_DEFAULT_SKIN) @@ -193,6 +193,6 @@ def update_media_revision(skin = None): if current_hash != askbot_settings.MEDIA_RESOURCE_REVISION_HASH: askbot_settings.update('MEDIA_RESOURCE_REVISION', resource_revision + 1) - askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash) + askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash) logging.debug('MEDIA_RESOURCE_REVISION changed') askbot_settings.MEDIA_RESOURCE_REVISION -- cgit v1.2.3-1-g7c22 From 110f2b7228c002e0c77c7dc126547cd3f153b612 Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Tue, 3 Apr 2012 13:22:59 -0600 Subject: added missing langs --- askbot/conf/skin_general_settings.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/askbot/conf/skin_general_settings.py b/askbot/conf/skin_general_settings.py index 2d476b62..6abee90a 100644 --- a/askbot/conf/skin_general_settings.py +++ b/askbot/conf/skin_general_settings.py @@ -33,11 +33,9 @@ settings.register( LANGUAGE_CHOICES = ( ('en', _("English")), ('es', _("Spanish")), - ('ru', _("Russian")), ('ca', _("Catalan")), ('de', _("German")), - ('pt', _("Portuguese")), - ('pt_BR', _("Brazilian Portuguese")), + ('el', _("Greek")), ('fi', _("Finnish")), ('fr', _("French")), ('hi', _("Hindi")), @@ -45,6 +43,10 @@ LANGUAGE_CHOICES = ( ('it', _("Italian")), ('ja', _("Japanese")), ('ko', _("Korean")), + ('pt', _("Portuguese")), + ('pt_BR', _("Brazilian Portuguese")), + ('ro', _("Romanian")), + ('ru', _("Russian")), ('sr', _("Serbian")), ('tr', _("Turkish")), ('vi', _("Vietnamese")), -- cgit v1.2.3-1-g7c22 From c968e3144f353610a4fd24c183718de4169d4e80 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Thu, 5 Apr 2012 15:19:18 +0200 Subject: Fix paths in cronjob template file --- askbot/cron/askbot_cron_job | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/askbot/cron/askbot_cron_job b/askbot/cron/askbot_cron_job index 38bf0337..2886808b 100644 --- a/askbot/cron/askbot_cron_job +++ b/askbot/cron/askbot_cron_job @@ -9,7 +9,7 @@ PROJECT_PARENT_DIR=/path/to/dir_containing_askbot_site PROJECT_DIR_NAME=askbot_site export PYTHONPATH=$PROJECT_PARENT_DIR:$PYTHONPATH -PROJECT_ROOT=$PYTHONPATH/$PROJECT_NAME +PROJECT_ROOT=$PROJECT_PARENT_DIR/$PROJECT_DIR_NAME #these are actual commands that are to be run python $PROJECT_ROOT/manage.py send_email_alerts -- cgit v1.2.3-1-g7c22 From a7a8df8ad46d727cd16506f244bee4ba5d35d3dc Mon Sep 17 00:00:00 2001 From: Byron Corrales Date: Sun, 8 Apr 2012 21:11:15 -0600 Subject: adding selector close, missing after merge --- askbot/skins/default/media/style/style.css | 2 +- askbot/skins/default/media/style/style.less | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index 74cff6b7..068c1162 100644 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -1 +1 @@ -@import url(jquery.autocomplete.css);.button-style-hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}body{background:#FFF;font-size:14px;line-height:150%;margin:0;padding:0;color:#000;font-family:Arial}div{margin:0 auto;padding:0}h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p{margin:0;padding:0;border:0}label{vertical-align:middle}hr{border:0;border-top:1px dashed #ccccce}input,select{vertical-align:middle;font-family:Trebuchet MS,"segoe ui",Helvetica,Tahoma,Verdana,MingLiu,PMingLiu,Arial,sans-serif;margin-left:0}textarea:focus,input:focus{outline:0}iframe{border:0}p{font-size:14px;line-height:140%;margin-bottom:6px}a{color:#1b79bd;text-decoration:none;cursor:pointer}h2{font-size:21px;padding:3px 0 3px 5px}h3{font-size:19px;padding:3px 0 3px 5px}ul{list-style:disc;margin-left:20px;padding-left:0;margin-bottom:1em}ol{list-style:decimal;margin-left:30px;margin-bottom:1em;padding-left:0}td ul{vertical-align:middle}li input{margin:3px 3px 4px 3px}pre{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%;margin-bottom:10px;background-color:#f5f5f5;padding-left:5px;padding-top:5px;padding-bottom:20px!ie7}code{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%}blockquote{margin-bottom:10px;margin-right:15px;padding:10px 0 1px 10px;background-color:#f5f5f5}* html .clearfix,* html .paginator{height:1;overflow:visible}+html .clearfix,+html .paginator{min-height:1%}.clearfix:after,.paginator:after{clear:both;content:".";display:block;height:0;visibility:hidden}.badges a{color:#763333;text-decoration:underline}a:hover{text-decoration:underline}.badge-context-toggle.active{cursor:pointer;text-decoration:underline}h1{font-size:24px;padding:10px 0 5px 0}body.user-messages{margin-top:2.4em}.left{float:left}.right{float:right}.clean{clear:both}.center{margin:0 auto;padding:0}.notify{position:fixed;top:0;left:0;width:100%;z-index:100;padding:0;text-align:center;background-color:#f5dd69;border-top:#fff 1px solid;font-family:'Yanone Kaffeesatz',sans-serif}.notify p.notification{margin-top:6px;margin-bottom:6px;font-size:16px;color:#424242}#closeNotify{position:absolute;right:5px;top:7px;color:#735005;text-decoration:none;line-height:18px;background:-6px -5px url(../images/sprites.png) no-repeat;cursor:pointer;width:20px;height:20px}#closeNotify:hover{background:-26px -5px url(../images/sprites.png) no-repeat}#header{margin-top:0;background:#16160f;font-family:'Yanone Kaffeesatz',sans-serif}.content-wrapper{width:960px;margin:auto;position:relative}#logo img{padding:5px 0 5px 0;height:75px;width:auto;float:left}#userToolsNav{height:20px;padding-bottom:5px}#userToolsNav a{height:35px;text-align:right;margin-left:20px;text-decoration:underline;color:#d0e296;font-size:16px}#userToolsNav a:first-child{margin-left:0}#userToolsNav a#ab-responses{margin-left:3px}#userToolsNav .user-info,#userToolsNav .user-micro-info{color:#b5b593}#userToolsNav a img{vertical-align:middle;margin-bottom:2px}#userToolsNav .user-info a{margin:0;text-decoration:none}#metaNav{float:right}#metaNav a{color:#e2e2ae;padding:0 0 0 35px;height:25px;line-height:30px;margin:5px 0 0 10px;font-size:18px;font-weight:100;text-decoration:none;display:block;float:left}#metaNav a:hover{text-decoration:underline}#metaNav a.on{font-weight:bold;color:#FFF;text-decoration:none}#metaNav a.special{font-size:18px;color:#b02b2c;font-weight:bold;text-decoration:none}#metaNav a.special:hover{text-decoration:underline}#metaNav #navTags{background:-50px -5px url(../images/sprites.png) no-repeat}#metaNav #navUsers{background:-125px -5px url(../images/sprites.png) no-repeat}#metaNav #navBadges{background:-210px -5px url(../images/sprites.png) no-repeat}#header.with-logo #userToolsNav{position:absolute;bottom:0;right:0}#header.without-logo #userToolsNav{float:left;margin-top:7px}#header.without-logo #metaNav{margin-bottom:7px}#secondaryHeader{height:55px;background:#e9e9e1;border-bottom:#d3d3c2 1px solid;border-top:#fcfcfc 1px solid;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif}#secondaryHeader #homeButton{border-right:#afaf9e 1px solid;background:-6px -36px url(../images/sprites.png) no-repeat;height:55px;width:43px;display:block;float:left}#secondaryHeader #homeButton:hover{background:-51px -36px url(../images/sprites.png) no-repeat}#secondaryHeader #scopeWrapper{width:688px;float:left}#secondaryHeader #scopeWrapper a{display:block;float:left}#secondaryHeader #scopeWrapper .scope-selector{font-size:21px;color:#5a5a4b;height:55px;line-height:55px;margin-left:24px}#secondaryHeader #scopeWrapper .on{background:url(../images/scopearrow.png) no-repeat center bottom}#secondaryHeader #scopeWrapper .ask-message{font-size:24px}#searchBar{display:inline-block;background-color:#fff;width:412px;border:1px solid #c9c9b5;float:right;height:42px;margin:6px 0 0 15px}#searchBar .searchInput,#searchBar .searchInputCancelable{font-size:30px;height:40px;font-weight:300;background:#FFF;border:0;color:#484848;padding-left:10px;font-family:Arial;vertical-align:middle}#searchBar .searchInput{width:352px}#searchBar .searchInputCancelable{width:317px}#searchBar .logoutsearch{width:337px}#searchBar .searchBtn{font-size:10px;color:#666;background-color:#eee;height:42px;border:#FFF 1px solid;line-height:22px;text-align:center;float:right;margin:0;width:48px;background:-98px -36px url(../images/sprites.png) no-repeat;cursor:pointer}#searchBar .searchBtn:hover{background:-146px -36px url(../images/sprites.png) no-repeat}#searchBar .cancelSearchBtn{font-size:30px;color:#ce8888;background:#fff;height:42px;border:0;border-left:#deded0 1px solid;text-align:center;width:35px;cursor:pointer}#searchBar .cancelSearchBtn:hover{color:#d84040}body.anon #searchBar{width:500px}body.anon #searchBar .searchInput{width:440px}body.anon #searchBar .searchInputCancelable{width:405px}#askButton{line-height:44px;margin-top:6px;float:right;text-transform:uppercase;width:200px;height:42px;font-size:23px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}#askButton:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#ContentLeft{width:730px;float:left;position:relative;padding-bottom:10px}#ContentRight{width:200px;float:right;padding:0 0 10px 0}#ContentFull{float:left;width:960px}.box{background:#fff;padding:4px 0 10px 0;width:200px}.box p{margin-bottom:4px}.box p.info-box-follow-up-links{text-align:right;margin:0}.box h2{padding-left:0;background:#eceeeb;height:30px;line-height:30px;text-align:right;font-size:18px!important;font-weight:normal;color:#656565;padding-right:10px;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif;width:190px}.box h3{color:#4a757f;font-size:18px;text-align:left;font-weight:normal;font-family:'Yanone Kaffeesatz',sans-serif;padding-left:0}.box .contributorback{background:#eceeeb url(../images/contributorsback.png) no-repeat center left}.box label{color:#707070;font-size:15px;display:block;float:right;text-align:left;font-family:'Yanone Kaffeesatz',sans-serif;width:80px;margin-right:18px}.box #displayTagFilterControl label{width:160px}.box ul{margin-left:22px}.box li{list-style-type:disc;font-size:13px;line-height:20px;margin-bottom:10px;color:#707070}.box ul.tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}.box #displayTagFilterControl p label{color:#707070;font-size:15px}.box .inputs #interestingTagInput,.box .inputs #ignoredTagInput{width:153px;padding-left:5px;border:#c9c9b5 1px solid;height:25px}.box .inputs #interestingTagAdd,.box .inputs #ignoredTagAdd{border:0;font-weight:bold;margin-top:-2px;width:30px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0 1px 0 #e6f6fa;-moz-text-shadow:0 1px 0 #e6f6fa;-webkit-text-shadow:0 1px 0 #e6f6fa}.box .inputs #interestingTagAdd:hover,.box .inputs #ignoredTagAdd:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box img.gravatar{margin:1px}.box a.followed,.box a.follow{line-height:34px;border:0;font-weight:normal;margin-top:3px;display:block;width:120px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin:0 auto;padding:0}.box a.followed:hover,.box a.follow:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box a.followed div.unfollow{display:none}.box a.followed:hover div{display:none}.box a.followed:hover div.unfollow{display:inline;color:#a05736}.box .favorite-number{padding:5px 0 0 5px;font-size:100%;font-family:Arial;font-weight:bold;color:#777;text-align:center}.box .notify-sidebar #question-subscribe-sidebar{margin:7px 0 0 3px}.statsWidget p{color:#707070;font-size:16px;border-bottom:#ccc 1px solid;font-size:13px}.statsWidget p strong{float:right;padding-right:10px}.questions-related{word-wrap:break-word}.questions-related p{line-height:20px;padding:4px 0 4px 0;font-size:16px;font-weight:normal;border-bottom:#ccc 1px solid}.questions-related a{font-size:13px}#tips li{color:#707070;font-size:13px;list-style-image:url(../images/tips.png)}#tips a{font-size:16px}#markdownHelp li{color:#707070;font-size:13px}#markdownHelp a{font-size:16px}.tabBar{background-color:#eff5f6;height:30px;margin-bottom:3px;margin-top:3px;float:right;font-family:Georgia,serif;font-size:16px;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.tabBar h2{float:left}.tabsA,.tabsC{float:right;position:relative;display:block;height:20px}.tabsA{float:right}.tabsC{float:left}.tabsA a,.tabsC a{border-left:1px solid #d0e1e4;color:#7ea9b3;display:block;float:left;height:20px;line-height:20px;padding:4px 7px 4px 7px;text-decoration:none}.tabsA a.on,.tabsC a.on,.tabsA a:hover,.tabsC a:hover{color:#4a757f}.tabsA .label,.tabsC .label{float:left;color:#646464;margin-top:4px;margin-right:5px}.main-page .tabsA .label{margin-left:8px}.tabsB a{background:#eee;border:1px solid #eee;color:#777;display:block;float:left;height:22px;line-height:28px;margin:5px 0 0 4px;padding:0 11px 0 11px;text-decoration:none}.tabsC .first{border:0}.rss{float:right;font-size:16px;color:#f57900;margin:5px 0 3px 7px;width:52px;padding-left:2px;padding-top:3px;background:#fff url(../images/feed-icon-small.png) no-repeat center right;float:right;font-family:Georgia,serif;font-size:16px}.rss:hover{color:#f4a731!important}#questionCount{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;margin-bottom:8px;padding-top:6px;font-family:'Yanone Kaffeesatz',sans-serif}#listSearchTags{float:left;margin-top:3px;color:#707070;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}ul#searchTags{margin-left:10px;float:right;padding-top:2px}.search-tips{font-size:16px;line-height:17px;color:#707070;margin:5px 0 10px 0;padding:0;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.search-tips a{text-decoration:underline;color:#1b79bd}#question-list{float:left;position:relative;background-color:#FFF;padding:0;width:100%}.short-summary{position:relative;filter:inherit;padding:10px;border-bottom:1px solid #dddbce;margin-bottom:1px;overflow:hidden;width:710px;float:left;background:url(../images/summary-background.png) repeat-x}.short-summary h2{font-size:24px;font-weight:normal;line-height:26px;padding-left:0;margin-bottom:6px;display:block;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary a{color:#464646}.short-summary .userinfo{text-align:right;line-height:16px;font-family:Arial;padding-right:4px}.short-summary .userinfo .relativetime,.short-summary span.anonymous{font-size:11px;clear:both;font-weight:normal;color:#555}.short-summary .userinfo a{font-weight:bold;font-size:11px}.short-summary .counts{float:right;margin:4px 0 0 5px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .item-count{padding:0 5px 0 5px;font-size:25px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .votes div,.short-summary .counts .views div,.short-summary .counts .answers div,.short-summary .counts .favorites div{margin-top:3px;font-size:14px;line-height:14px;color:#646464}.short-summary .tags{margin-top:0}.short-summary .votes,.short-summary .answers,.short-summary .favorites,.short-summary .views{text-align:center;margin:0 3px;padding:8px 2px 0 2px;width:51px;float:right;height:44px;border:#dbdbd4 1px solid}.short-summary .votes{background:url(../images/vote-background.png) repeat-x}.short-summary .answers{background:url(../images/answers-background.png) repeat-x}.short-summary .views{background:url(../images/view-background.png) repeat-x}.short-summary .no-votes .item-count{color:#b1b5b6}.short-summary .some-votes .item-count{color:#4a757f}.short-summary .no-answers .item-count{color:#b1b5b6}.short-summary .some-answers .item-count{color:#eab243}.short-summary .no-views .item-count{color:#b1b5b6}.short-summary .some-views .item-count{color:#d33f00}.short-summary .accepted .item-count{background:url(../images/accept.png) no-repeat top right;display:block;text-align:center;width:40px;color:#eab243}.short-summary .some-favorites .item-count{background:#338333;color:#d0f5a9}.short-summary .no-favorites .item-count{background:#eab243;color:yellow}.evenMore{font-size:13px;color:#707070;padding:15px 0 10px 0;clear:both}.evenMore a{text-decoration:underline;color:#1b79bd}.pager{margin-top:10px;margin-bottom:16px}.pagesize{margin-top:10px;margin-bottom:16px;float:right}.paginator{padding:5px 0 10px 0;font-size:13px;margin-bottom:10px}.paginator .prev a,.paginator .prev a:visited,.paginator .next a,.paginator .next a:visited{background-color:#fff;color:#777;padding:2px 4px 3px 4px}.paginator a{color:#7ea9b3}.paginator .prev{margin-right:.5em}.paginator .next{margin-left:.5em}.paginator .page a,.paginator .page a:visited,.paginator .curr{padding:.25em;background-color:#fff;margin:0 .25em;color:#ff}.paginator .curr{background-color:#8ebcc7;color:#fff;font-weight:bold}.paginator .next a,.paginator .prev a{color:#7ea9b3}.paginator .page a:hover,.paginator .curr a:hover,.paginator .prev a:hover,.paginator .next a:hover{color:#8c8c8c;background-color:#e1e1e1;text-decoration:none}.paginator .text{color:#777;padding:.3em}.paginator .paginator-container-left{padding:5px 0 10px 0}.tag-size-1{font-size:12px}.tag-size-2{font-size:13px}.tag-size-3{font-size:14px}.tag-size-4{font-size:15px}.tag-size-5{font-size:16px}.tag-size-6{font-size:17px}.tag-size-7{font-size:18px}.tag-size-8{font-size:19px}.tag-size-9{font-size:20px}.tag-size-10{font-size:21px}ul.tags,ul.tags.marked-tags,ul#related-tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}ul.tags li{float:left;display:block;margin:0 8px 8px 0;padding:0;height:20px}.wildcard-tags{clear:both}ul.tags.marked-tags li,.wildcard-tags ul.tags li{margin-bottom:5px}#tagSelector div.inputs{clear:both;float:none;margin-bottom:10px}.tags-page ul.tags li,ul#ab-user-tags li{width:160px;margin:5px}ul#related-tags li{margin:0 5px 8px 0;float:left;clear:left}.tag-left{cursor:pointer;display:block;float:left;height:17px;margin:0 5px 0 0;padding:0;-webkit-box-shadow:0 0 5px #d3d6d7;-moz-box-shadow:0 0 5px #d3d6d7;box-shadow:0 0 5px #d3d6d7}.tag-right{background:#f3f6f6;border:#fff 1px solid;border-top:#fff 2px solid;outline:#cfdbdb 1px solid;display:block;float:left;height:17px;line-height:17px;font-weight:normal;font-size:11px;padding:0 8px 0 8px;text-decoration:none;text-align:center;white-space:nowrap;vertical-align:middle;font-family:Arial;color:#717179}.deletable-tag{margin-right:3px;white-space:nowrap;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px}.tags a.tag-right,.tags span.tag-right{color:#585858;text-decoration:none}.tags a:hover{color:#1a1a1a}.users-page h1,.tags-page h1{float:left}.main-page h1{margin-right:5px}.delete-icon{margin-top:-1px;float:left;height:21px;width:18px;display:block;line-height:20px;text-align:center;background:#bbcdcd;cursor:default;color:#fff;border-top:#cfdbdb 1px solid;font-family:Arial;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px;text-shadow:0 1px 0 #7ea0a0;-moz-text-shadow:0 1px 0 #7ea0a0;-webkit-text-shadow:0 1px 0 #7ea0a0}.delete-icon:hover{background:#b32f2f}.tag-number{font-weight:normal;float:left;font-size:16px;color:#5d5d5d}.badges .tag-number{float:none;display:inline;padding-right:15px}.section-title{color:#7ea9b3;font-family:'Yanone Kaffeesatz',sans-serif;font-weight:bold;font-size:24px}#fmask{margin-bottom:30px;width:100%}#askFormBar{display:inline-block;padding:4px 7px 5px 0;margin-top:0}#askFormBar p{margin:0 0 5px 0;font-size:14px;color:#525252;line-height:1.4}#askFormBar .questionTitleInput{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px}.ask-page div#question-list,.edit-question-page div#question-list{float:none;border-bottom:#f0f0ec 1px solid;float:left;margin-bottom:10px}.ask-page div#question-list a,.edit-question-page div#question-list a{line-height:30px}.ask-page div#question-list h2,.edit-question-page div#question-list h2{font-size:13px;padding-bottom:0;color:#1b79bd;border-top:#f0f0ec 1px solid;border-left:#f0f0ec 1px solid;height:30px;line-height:30px;font-weight:normal}.ask-page div#question-list span,.edit-question-page div#question-list span{width:28px;height:26px;line-height:26px;text-align:center;margin-right:10px;float:left;display:block;color:#fff;background:#b8d0d5;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.ask-page label,.edit-question-page label{color:#525252;font-size:13px}.ask-page #id_tags,.edit-question-page #id_tags{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.title-desc{color:#707070;font-size:13px}#fmanswer input.submit,.ask-page input.submit,.edit-question-page input.submit{float:left;font-weight:normal;margin-top:3px;width:160px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin-right:7px}#fmanswer input.submit:hover,.ask-page input.submit:hover,.edit-question-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#editor{font-size:100%;min-height:200px;line-height:18px;margin:0;border-left:#cce6ec 3px solid;border-bottom:#cce6ec 3px solid;border-right:#cce6ec 3px solid;border-top:0;padding:10px;margin-bottom:10px;width:710px}@media screen and (-webkit-min-device-pixel-ratio:0){#editor{width:717px}}#id_title{width:100%}.wmd-preview{margin:3px 0 5px 0;padding:6px;background-color:#f5f5f5;min-height:20px;overflow:auto;font-size:13px;font-family:Arial}.wmd-preview p{margin-bottom:14px;line-height:1.4;font-size:14px}.wmd-preview pre{background-color:#e7f1f8}.wmd-preview blockquote{background-color:#eee}.wmd-preview IMG{max-width:600px}.preview-toggle{width:100%;color:#b6a475;text-align:left}.preview-toggle span:hover{cursor:pointer}.after-editor{margin-top:15px;margin-bottom:15px}.checkbox{margin-left:5px;font-weight:normal;cursor:help}.question-options{margin-top:1px;color:#666;line-height:13px;margin-bottom:5px}.question-options label{vertical-align:text-bottom}.edit-content-html{border-top:1px dotted #d8d2a9;border-bottom:1px dotted #d8d2a9;margin:5px 0 5px 0}.edit-question-page,#fmedit,.wmd-preview{color:#525252}.edit-question-page #id_revision,#fmedit #id_revision,.wmd-preview #id_revision{font-size:14px;margin-top:5px;margin-bottom:5px}.edit-question-page #id_title,#fmedit #id_title,.wmd-preview #id_title{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px;margin-bottom:10px}.edit-question-page #id_summary,#fmedit #id_summary,.wmd-preview #id_summary{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.edit-question-page .title-desc,#fmedit .title-desc,.wmd-preview .title-desc{margin-bottom:10px}.question-page h1{padding-top:0;font-family:'Yanone Kaffeesatz',sans-serif}.question-page h1 a{color:#464646;font-size:30px;font-weight:normal;line-height:1}.question-page p.rss{float:none;clear:both;padding:3px 0 0 23px;font-size:15px;width:110px;background-position:center left;margin-left:0!important}.question-page p.rss a{font-family:'Yanone Kaffeesatz',sans-serif;vertical-align:top}.question-page .question-content{float:right;width:682px;margin-bottom:10px}.question-page #question-table{float:left;border-top:#f0f0f0 1px solid}.question-page #question-table,.question-page .answer-table{margin:6px 0 6px 0;border-spacing:0;width:670px;padding-right:10px}.question-page .answer-table{margin-top:0;border-bottom:1px solid #d4d4d4;float:right}.question-page .answer-table td,.question-page #question-table td{width:20px;vertical-align:top}.question-page .question-body,.question-page .answer-body{overflow:auto;margin-top:10px;font-family:Arial;color:#4b4b4b}.question-page .question-body p,.question-page .answer-body p{margin-bottom:14px;line-height:1.4;font-size:14px;padding:0 5px 5px 0}.question-page .question-body a,.question-page .answer-body a{color:#1b79bd}.question-page .question-body li,.question-page .answer-body li{margin-bottom:7px}.question-page .question-body IMG,.question-page .answer-body IMG{max-width:600px}.question-page .post-update-info-container{float:right;width:175px}.question-page .post-update-info{background:#fff url(../images/background-user-info.png) repeat-x bottom;float:right;font-size:9px;font-family:Arial;width:158px;padding:4px;margin:0 0 5px 5px;line-height:14px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:0 2px 1px #bfbfbf;-moz-box-shadow:0 2px 1px #bfbfbf;box-shadow:0 2px 1px #bfbfbf}.question-page .post-update-info p{line-height:13px;font-size:11px;margin:0 0 2px 1px;padding:0}.question-page .post-update-info a{color:#444}.question-page .post-update-info .gravatar{float:left;margin-right:4px}.question-page .post-update-info p.tip{color:#444;line-height:13px;font-size:10px}.question-page .post-controls{font-size:11px;line-height:12px;min-width:200px;padding-left:5px;text-align:right;clear:left;float:right;margin-top:10px;margin-bottom:8px}.question-page .post-controls a{color:#777;padding:0 7px 3px 18px;cursor:pointer;border:0;font-size:12px;font-family:Arial;text-decoration:none;height:18px;display:block;float:right;line-height:18px;margin-top:-2px;margin-left:4px}.question-page .post-controls a:hover{background-color:#f5f0c9;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.question-page .post-controls .sep{color:#ccc;float:right;height:18px;font-size:18px}.question-page .post-controls .question-delete,.question-page .answer-controls .question-delete{background:url(../images/delete.png) no-repeat center left;padding-left:11px}.question-page .post-controls .question-flag,.question-page .answer-controls .question-flag{background:url(../images/flag.png) no-repeat center left}.question-page .post-controls .question-edit,.question-page .answer-controls .question-edit{background:url(../images/edit2.png) no-repeat center left}.question-page .post-controls .question-retag,.question-page .answer-controls .question-retag{background:url(../images/retag.png) no-repeat center left}.question-page .post-controls .question-close,.question-page .answer-controls .question-close{background:url(../images/close.png) no-repeat center left}.question-page .post-controls .permant-link,.question-page .answer-controls .permant-link{background:url(../images/link.png) no-repeat center left}.question-page .tabBar{width:100%}.question-page #questionCount{float:left;font-family:'Yanone Kaffeesatz',sans-serif;line-height:15px}.question-page .question-img-upvote,.question-page .question-img-downvote,.question-page .answer-img-upvote,.question-page .answer-img-downvote{width:25px;height:20px;cursor:pointer}.question-page .question-img-upvote,.question-page .answer-img-upvote{background:url(../images/vote-arrow-up-new.png) no-repeat}.question-page .question-img-downvote,.question-page .answer-img-downvote{background:url(../images/vote-arrow-down-new.png) no-repeat}.question-page .question-img-upvote:hover,.question-page .question-img-upvote.on,.question-page .answer-img-upvote:hover,.question-page .answer-img-upvote.on{background:url(../images/vote-arrow-up-on-new.png) no-repeat}.question-page .question-img-downvote:hover,.question-page .question-img-downvote.on,.question-page .answer-img-downvote:hover,.question-page .answer-img-downvote.on{background:url(../images/vote-arrow-down-on-new.png) no-repeat}.question-page #fmanswer_button{margin:8px 0}.question-page .question-img-favorite:hover{background:url(../images/vote-favorite-on.png)}.question-page div.comments{padding:0}.question-page #comment-title{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.question-page .comments{font-size:12px;clear:both}.question-page .comments div.controls{clear:both;float:left;width:100%;margin:3px 0 20px 5px}.question-page .comments .controls a{color:#988e4c;padding:0 3px 2px 22px;font-family:Arial;font-size:13px;background:url(../images/comment.png) no-repeat center left}.question-page .comments .controls a:hover{background-color:#f5f0c9;text-decoration:none}.question-page .comments .button{color:#988e4c;font-size:11px;padding:3px;cursor:pointer}.question-page .comments a{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments form.post-comments{margin:3px 26px 0 42px}.question-page .comments form.post-comments textarea{font-size:13px;line-height:1.3}.question-page .comments textarea{height:42px;width:100%;margin:7px 0 5px 1px;font-family:Arial;outline:0;overflow:auto;font-size:12px;line-height:140%;padding-left:2px;padding-top:3px;border:#cce6ec 3px solid}@media screen and (-webkit-min-device-pixel-ratio:0){textarea{padding-left:3px!important}}.question-page .comments input{margin-left:10px;margin-top:1px;vertical-align:top;width:100px}.question-page .comments button{line-height:25px;margin-bottom:5px;width:100px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold}.question-page .comments button:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.question-page .comments .counter{display:inline-block;width:245px;float:right;color:#b6a475!important;vertical-align:top;font-family:Arial;float:right;text-align:right}.question-page .comments .comment{border-bottom:1px solid #edeeeb;clear:both;margin:0;margin-top:8px;padding-bottom:4px;overflow:auto;font-family:Arial;font-size:11px;min-height:25px;background:#fff url(../images/comment-background.png) bottom repeat-x;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.question-page .comments div.comment:hover{background-color:#efefef}.question-page .comments a.author{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments a.author:hover{text-decoration:underline}.question-page .comments span.delete-icon{background:url(../images/close-small.png) no-repeat;border:0;width:14px;height:14px}.question-page .comments span.delete-icon:hover{border:#bc564b 2px solid;border-radius:10px;-ms-border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;margin:-3px 0 0 -2px}.question-page .comments .content{margin-bottom:7px}.question-page .comments .comment-votes{float:left;width:37px;line-height:130%;padding:6px 5px 6px 3px}.question-page .comments .comment-body{line-height:1.3;margin:3px 26px 0 46px;padding:5px 3px;color:#666;font-size:13px}.question-page .comments .comment-body .edit{padding-left:6px}.question-page .comments .comment-body p{font-size:13px;line-height:1.3;margin-bottom:3px;padding:0}.question-page .comments .comment-delete{float:right;width:14px;line-height:130%;padding:8px 6px}.question-page .comments .upvote{margin:0;padding-right:17px;padding-top:2px;text-align:right;height:20px;font-size:13px;font-weight:bold;color:#777}.question-page .comments .upvote.upvoted{color:#d64000}.question-page .comments .upvote.hover{background:url(../images/go-up-grey.png) no-repeat;background-position:right 1px}.question-page .comments .upvote:hover{background:url(../images/go-up-orange.png) no-repeat;background-position:right 1px}.question-page .comments .help-text{float:right;text-align:right;color:gray;margin-bottom:0;margin-top:0;line-height:50%}.question-page #questionTools{font-size:22px;margin-top:11px;text-align:left}.question-page .question-status{margin-top:10px;margin-bottom:15px;padding:20px;background-color:#fef7cc;text-align:center;border:#e1c04a 1px solid}.question-page .question-status h3{font-size:20px;color:#707070;font-weight:normal}.question-page .vote-buttons{float:left;text-align:center;padding-top:2px;margin:10px 10px 0 3px;*margin:0;*height:210px;*width:30px}.question-page .vote-buttons IMG{cursor:pointer}.question-page .vote-number{font-family:'Yanone Kaffeesatz',sans-serif;padding:0 0 5px 0;font-size:25px;font-weight:bold;color:#777}.question-page .vote-buttons .notify-sidebar{text-align:left;width:120px}.question-page .vote-buttons .notify-sidebar label{vertical-align:top}.question-page .tabBar-answer{margin-bottom:15px;padding-left:7px;width:723px;margin-top:10px}.question-page .answer .vote-buttons{float:left}.question-page .accepted-answer{background-color:#f7fecc;border-bottom-color:#9bd59b}.question-page .accepted-answer .vote-buttons{width:27px;margin-right:10px;margin-top:10px}.question-page .answer .post-update-info a{color:#444}.question-page .answered{background:#CCC;color:#999}.question-page .answered-accepted{background:#dcdcdc;color:#763333}.question-page .answered-accepted strong{color:#e1e818}.question-page .answered-by-owner{background:#f1f1ff}.question-page .answered-by-owner .comments .button{background-color:#e6ecff}.question-page .answered-by-owner .comments{background-color:#e6ecff}.question-page .answered-by-owner .vote-buttons{margin-right:10px}.question-page .answer-img-accept:hover{background:url(../images/vote-accepted-on.png)}.question-page .answer-body a{color:#1b79bd}.question-page .answer-body li{margin-bottom:.7em}.question-page #fmanswer{color:#707070;line-height:1.2;margin-top:10px}.question-page #fmanswer h2{font-family:'Yanone Kaffeesatz',sans-serif;color:#7ea9b3;font-size:24px}.question-page #fmanswer label{font-size:13px}.question-page .message{padding:5px;margin:0 0 10px 0}.facebook-share.icon,.twitter-share.icon,.linkedin-share.icon,.identica-share.icon{background:url(../images/socialsprite.png) no-repeat;display:block;text-indent:-100em;height:25px;width:25px;margin-bottom:3px}.facebook-share.icon:hover,.twitter-share.icon:hover,.linkedin-share.icon:hover,.identica-share.icon:hover{opacity:.8;filter:alpha(opacity=80)}.facebook-share.icon{background-position:-26px 0}.identica-share.icon{background-position:-78px 0}.twitter-share.icon{margin-top:10px;background-position:0 0}.linkedin-share.icon{background-position:-52px 0}.openid-signin,.meta,.users-page,.user-profile-edit-page{font-size:13px;line-height:1.3;color:#525252}.openid-signin p,.meta p,.users-page p,.user-profile-edit-page p{font-size:13px;color:#707070;line-height:1.3;font-family:Arial;color:#525252;margin-bottom:12px}.openid-signin h2,.meta h2,.users-page h2,.user-profile-edit-page h2{color:#525252;padding-left:0;font-size:16px}.openid-signin form,.meta form,.users-page form,.user-profile-edit-page form,.user-profile-page form{margin-bottom:15px}.openid-signin input[type="text"],.meta input[type="text"],.users-page input[type="text"],.user-profile-edit-page input[type="text"],.user-profile-page input[type="text"],.openid-signin input[type="password"],.meta input[type="password"],.users-page input[type="password"],.user-profile-edit-page input[type="password"],.user-profile-page input[type="password"],.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{width:405px;height:30px}.openid-signin textarea,.meta textarea,.users-page textarea,.user-profile-edit-page textarea,.user-profile-page textarea{border:#cce6ec 3px solid;padding-left:5px;padding-top:5px;width:395px;font-size:14px}.openid-signin input.submit,.meta input.submit,.users-page input.submit,.user-profile-edit-page input.submit,.user-profile-page input.submit{font-weight:normal;margin:5px 0;width:100px;height:26px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial}.openid-signin input.submit:hover,.meta input.submit:hover,.users-page input.submit:hover,.user-profile-edit-page input.submit:hover,.user-profile-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-signin .cancel,.meta .cancel,.users-page .cancel,.user-profile-edit-page .cancel,.user-profile-page .cancel{background:url(../images/small-button-cancel.png) repeat-x top!important;color:#525252!important}.openid-signin .cancel:hover,.meta .cancel:hover,.users-page .cancel:hover,.user-profile-edit-page .cancel:hover,.user-profile-page .cancel:hover{background:url(../images/small-button-cancel.png) repeat-x bottom!important}#email-input-fs,#local_login_buttons,#password-fs,#openid-fs{margin-top:10px}#email-input-fs #id_email,#local_login_buttons #id_email,#password-fs #id_email,#openid-fs #id_email,#email-input-fs #id_username,#local_login_buttons #id_username,#password-fs #id_username,#openid-fs #id_username,#email-input-fs #id_password,#local_login_buttons #id_password,#password-fs #id_password,#openid-fs #id_password{font-size:12px;line-height:20px;height:20px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:200px}#email-input-fs .submit-b,#local_login_buttons .submit-b,#password-fs .submit-b,#openid-fs .submit-b{width:100px;height:24px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold;padding-right:10px;border:0}#email-input-fs .submit-b:hover,#local_login_buttons .submit-b:hover,#password-fs .submit-b:hover,#openid-fs .submit-b:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-input{background:url(../images/openid.gif) no-repeat;padding-left:15px;cursor:pointer}.openid-login-input{background-position:center left;background:url(../images/openid.gif) no-repeat 0 50%;padding:5px 5px 5px 15px;cursor:pointer;font-family:Trebuchet MS;font-weight:300;font-size:150%;width:500px}.openid-login-submit{height:40px;width:80px;line-height:40px;cursor:pointer;border:1px solid #777;font-weight:bold;font-size:120%}.tabBar-user{width:375px}.user{padding:5px;line-height:140%;width:166px;border:#eee 1px solid;margin-bottom:5px;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.user .user-micro-info{color:#525252}.user ul{margin:0;list-style-type:none}.user .thumb{clear:both;float:left;margin-right:4px;display:inline}.tabBar-tags{width:270px;margin-bottom:15px}a.medal{font-size:17px;line-height:250%;margin-right:5px;color:#333;text-decoration:none;background:url(../images/medala.gif) no-repeat;border-left:1px solid #EEE;border-top:1px solid #EEE;border-bottom:1px solid #CCC;border-right:1px solid #CCC;padding:4px 12px 4px 6px}a:hover.medal{color:#333;text-decoration:none;background:url(../images/medala_on.gif) no-repeat;border-left:1px solid #e7e296;border-top:1px solid #e7e296;border-bottom:1px solid #d1ca3d;border-right:1px solid #d1ca3d}#award-list .user{float:left;margin:5px}.tabBar-profile{width:100%;margin-bottom:15px;float:left}.user-profile-page{font-size:13px;color:#525252}.user-profile-page p{font-size:13px;line-height:1.3;color:#525252}.user-profile-page .avatar img{border:#eee 1px solid;padding:5px}.user-profile-page h2{padding:10px 0 10px 0;font-family:'Yanone Kaffeesatz',sans-serif}.user-details{font-size:13px}.user-details h3{font-size:16px}.user-about{background-color:#eee;height:200px;line-height:20px;overflow:auto;padding:10px;width:90%}.user-about p{font-size:13px}.follow-toggle,.submit{border:0!important;font-weight:bold;line-height:26px;margin-top:-2px;width:100px;height:26px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}.follow-toggle:hover,.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-decoration:none!important}.follow-toggle .follow{font-color:#000;font-style:normal}.follow-toggle .unfollow div.unfollow-red{display:none}.follow-toggle .unfollow:hover div.unfollow-red{display:inline;color:#fff;font-weight:bold;color:#a05736}.follow-toggle .unfollow:hover div.unfollow-green{display:none}.count{font-family:'Yanone Kaffeesatz',sans-serif;font-size:200%;font-weight:700;color:#777}.scoreNumber{font-family:'Yanone Kaffeesatz',sans-serif;font-size:35px;font-weight:800;color:#777;line-height:40px;margin-top:3px}.vote-count{font-family:Arial;font-size:160%;font-weight:700;color:#777}.answer-summary{display:block;clear:both;padding:3px}.answer-votes{background-color:#eee;color:#555;float:left;font-family:Arial;font-size:15px;font-weight:bold;height:17px;padding:2px 4px 5px;text-align:center;text-decoration:none;width:20px;margin-right:10px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.karma-summary{padding:5px;font-size:13px}.karma-summary h3{text-align:center;font-weight:bold;padding:5px}.karma-diagram{width:477px;height:300px;float:left;margin-right:10px}.karma-details{float:right;width:450px;height:250px;overflow-y:auto;word-wrap:break-word}.karma-details p{margin-bottom:10px}.karma-gained{font-weight:bold;background:#eee;width:25px;margin-right:5px;color:green;padding:3px;display:block;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.karma-lost{font-weight:bold;background:#eee;width:25px;color:red;padding:3px;display:block;margin-right:5px;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.submit-row{margin-bottom:10px}.revision{margin:10px 0 10px 0;font-size:13px;color:#525252}.revision p{font-size:13px;line-height:1.3;color:#525252}.revision h3{font-family:'Yanone Kaffeesatz',sans-serif;font-size:21px;padding-left:0}.revision .header{background-color:#f5f5f5;padding:5px;cursor:pointer}.revision .author{background-color:#e9f3f5}.revision .summary{padding:5px 0 10px 0}.revision .summary span{background-color:#fde785;padding:6px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;display:inline;-webkit-box-shadow:1px 1px 4px #cfb852;-moz-box-shadow:1px 1px 4px #cfb852;box-shadow:1px 1px 4px #cfb852}.revision .answerbody{padding:10px 0 5px 10px}.revision .revision-mark{width:150px;text-align:left;display:inline-block;font-size:11px;overflow:hidden}.revision .revision-mark .gravatar{float:left;margin-right:4px;padding-top:5px}.revision .revision-number{font-size:300%;font-weight:bold;font-family:sans-serif}del,del .post-tag{color:#c34719}ins .post-tag,ins p,ins{background-color:#e6f0a2}.vote-notification{z-index:1;cursor:pointer;display:none;position:absolute;font-family:Arial;font-size:14px;font-weight:normal;color:white;background-color:#8e0000;text-align:center;padding-bottom:10px;-webkit-box-shadow:0 2px 4px #370000;-moz-box-shadow:0 2px 4px #370000;box-shadow:0 2px 4px #370000;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.vote-notification h3{background:url(../images/notification.png) repeat-x top;padding:10px 10px 10px 10px;font-size:13px;margin-bottom:5px;border-top:#8e0000 1px solid;color:#fff;font-weight:normal;border-top-right-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px}.vote-notification a{color:#fb7321;text-decoration:underline;font-weight:bold}#ground{width:100%;clear:both;border-top:1px solid #000;padding:6px 0 0 0;background:#16160f;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}#ground p{margin-bottom:0}.footer-links{color:#EEE;text-align:left;width:500px;float:left}.footer-links a{color:#e7e8a8}.powered-link{width:500px;float:left;text-align:left}.powered-link a{color:#8ebcc7}.copyright{color:#616161;width:450px;float:right;text-align:right}.copyright a{color:#8ebcc7}.copyright img.license-logo{margin:6px 0 20px 10px;float:right}.notify-me{float:left}span.text-counter{margin-right:20px}span.form-error{color:#900;font-weight:normal;margin-left:5px}ul.errorlist{margin-bottom:0}p.form-item{margin:0}.deleted{background:#f4e7e7 none repeat scroll 0 0}.form-row{line-height:25px}table.form-as-table{margin-top:5px}table.form-as-table ul{list-style-type:none;display:inline}table.form-as-table li{display:inline}table.form-as-table td{text-align:right}table.form-as-table th{text-align:left;font-weight:normal}table.ab-subscr-form{width:45em}table.ab-tag-filter-form{width:45em}.submit-row{line-height:30px;padding-top:10px;display:block;clear:both}.errors{line-height:20px;color:red}.error{color:darkred;margin:0;font-size:10px}label.retag-error{color:darkred;padding-left:5px;font-size:10px}.fieldset{border:0;margin-top:10px;padding:10px}span.form-error{color:#900;font-size:90%;font-weight:normal;margin-left:5px}.favorites-empty{width:32px;height:45px;float:left}.user-info-table{margin-bottom:10px;border-spacing:0}.user-stats-table .narrow{width:660px}.narrow .summary h3{padding:0;margin:0}.relativetime{font-weight:bold;text-decoration:none}.narrow .tags{float:left}.user-action-1{font-weight:bold;color:#333}.user-action-2{font-weight:bold;color:#CCC}.user-action-3{color:#333}.user-action-4{color:#333}.user-action-5{color:darkred}.user-action-6{color:darkred}.user-action-7{color:#333}.user-action-8{padding:3px;font-weight:bold;background-color:#CCC;color:#763333}.revision-summary{background-color:#fffe9b;padding:2px}.question-title-link a{font-weight:bold;color:#07c}.answer-title-link a{color:#333}.post-type-1 a{font-weight:bold}.post-type-3 a{font-weight:bold}.post-type-5 a{font-weight:bold}.post-type-2 a{color:#333}.post-type-4 a{color:#333}.post-type-6 a{color:#333}.post-type-8 a{color:#333}.hilite{background-color:#ff0}.hilite1{background-color:#ff0}.hilite2{background-color:#f0f}.hilite3{background-color:#0ff}.gold,.badge1{color:#fc0}.silver,.badge2{color:#ccc}.bronze,.badge3{color:#c93}.score{font-weight:800;color:#333}a.comment{background:#EEE;color:#930;padding:5px}a.offensive{color:#999}.message h1{padding-top:0;font-size:15px}.message p{margin-bottom:0}p.space-above{margin-top:10px}.warning{color:red}button::-moz-focus-inner{padding:0;border:0}.submit{cursor:pointer;background-color:#d4d0c8;height:30px;border:1px solid #777;font-weight:bold;font-size:120%}.submit:hover{text-decoration:underline}.submit.small{margin-right:5px;height:20px;font-weight:normal;font-size:12px;padding:1px 5px}.submit.small:hover{text-decoration:none}.question-page a.submit{display:-moz-inline-stack;display:inline-block;line-height:30px;padding:0 5px;*display:inline}.noscript{position:fixed;top:0;left:0;width:100%;z-index:100;padding:5px 0;text-align:center;font-family:sans-serif;font-size:120%;font-weight:Bold;color:#fff;background-color:#ae0000}.big{font-size:14px}.strong{font-weight:bold}.orange{color:#d64000;font-weight:bold}.grey{color:#808080}.about div{padding:10px 5px 10px 5px;border-top:1px dashed #aaa}.highlight{background-color:#fff8c6}.nomargin{margin:0}.margin-bottom{margin-bottom:10px}.margin-top{margin-top:10px}.inline-block{display:inline-block}.action-status{margin:0;border:0;text-align:center;line-height:10px;font-size:12px;padding:0}.action-status span{padding:3px 5px 3px 5px;background-color:#fff380;font-weight:normal;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px}.list-table td{vertical-align:top}table.form-as-table .errorlist{display:block;margin:0;padding:0 0 0 5px;text-align:left;font-size:10px;color:darkred}table.form-as-table input{display:inline;margin-left:4px}table.form-as-table th{vertical-align:bottom;padding-bottom:4px}.form-row-vertical{margin-top:8px;display:block}.form-row-vertical label{margin-bottom:3px;display:block}.text-align-right{text-align:center}ul.form-horizontal-rows{list-style:none;margin:0}ul.form-horizontal-rows li{position:relative;height:40px}ul.form-horizontal-rows label{display:inline-block}ul.form-horizontal-rows ul.errorlist{list-style:none;color:darkred;font-size:10px;line-height:10px;position:absolute;top:2px;left:180px;text-align:left;margin:0}ul.form-horizontal-rows ul.errorlist li{height:10px}ul.form-horizontal-rows label{position:absolute;left:0;bottom:6px;margin:0;line-height:12px;font-size:12px}ul.form-horizontal-rows li input{position:absolute;bottom:0;left:180px;margin:0}.narrow .summary{float:left}.user-profile-tool-links{font-weight:bold;vertical-align:top}ul.post-tags{margin-left:3px}ul.post-tags li{margin-top:4px;margin-bottom:3px}ul.post-retag{margin-bottom:0;margin-left:5px}#question-controls .tags{margin:0 0 3px 0}#tagSelector{padding-bottom:2px;margin-bottom:0}#related-tags{padding-left:3px}#hideIgnoredTagsControl{margin:5px 0 0 0}#hideIgnoredTagsControl label{font-size:12px;color:#666}#hideIgnoredTagsCb{margin:0 2px 0 1px}#recaptcha_widget_div{width:318px;float:left;clear:both}p.signup_p{margin:20px 0 0 0}.simple-subscribe-options ul{list-style:none;list-style-position:outside;margin:0}.wmd-preview a{color:#1b79bd}.wmd-preview li{margin-bottom:7px;font-size:14px}.search-result-summary{font-weight:bold;font-size:18px;line-height:22px;margin:0;padding:2px 0 0 0;float:left}.faq-rep-item{text-align:right;padding-right:5px}.user-info-table .gravatar{margin:0}#responses{clear:both;line-height:18px;margin-bottom:15px}#responses div.face{float:left;text-align:center;width:54px;padding:3px;overflow:hidden}.response-parent{margin-top:18px}.response-parent strong{font-size:20px}.re{min-height:57px;clear:both;margin-top:10px}#responses input{float:left}#re_tools{margin-bottom:10px}#re_sections{margin-bottom:6px}#re_sections .on{font-weight:bold}.avatar-page ul{list-style:none}.avatar-page li{display:inline}.user-profile-page .avatar p{margin-bottom:0}.user-profile-page .tabBar a#stats{margin-left:0}.user-profile-page img.gravatar{margin:2px 0 3px 0}.user-profile-page h3{padding:0;margin-top:-3px}.userList{font-size:13px}img.flag{border:1px solid #eee;vertical-align:text-top}.main-page img.flag{vertical-align:text-bottom}a.edit{padding-left:3px;color:#145bff}.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{clear:both;padding:3px;border:0 solid #888}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}#leading-sidebar{float:left}a.re_expand{color:#616161;text-decoration:none}a.re_expand .re_content{display:none;margin-left:77px} \ No newline at end of file +@import url(jquery.autocomplete.css);.button-style-hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}body{background:#FFF;font-size:14px;line-height:150%;margin:0;padding:0;color:#000;font-family:Arial}div{margin:0 auto;padding:0}h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p{margin:0;padding:0;border:0}label{vertical-align:middle}hr{border:0;border-top:1px dashed #ccccce}input,select{vertical-align:middle;font-family:Trebuchet MS,"segoe ui",Helvetica,Tahoma,Verdana,MingLiu,PMingLiu,Arial,sans-serif;margin-left:0}textarea:focus,input:focus{outline:0}iframe{border:0}p{font-size:14px;line-height:140%;margin-bottom:6px}a{color:#1b79bd;text-decoration:none;cursor:pointer}h2{font-size:21px;padding:3px 0 3px 5px}h3{font-size:19px;padding:3px 0 3px 5px}ul{list-style:disc;margin-left:20px;padding-left:0;margin-bottom:1em}ol{list-style:decimal;margin-left:30px;margin-bottom:1em;padding-left:0}td ul{vertical-align:middle}li input{margin:3px 3px 4px 3px}pre{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%;margin-bottom:10px;background-color:#f5f5f5;padding-left:5px;padding-top:5px;padding-bottom:20px!ie7}code{font-family:Consolas,Monaco,Liberation Mono,Lucida Console,Monospace;font-size:100%}blockquote{margin-bottom:10px;margin-right:15px;padding:10px 0 1px 10px;background-color:#f5f5f5}* html .clearfix,* html .paginator{height:1;overflow:visible}+html .clearfix,+html .paginator{min-height:1%}.clearfix:after,.paginator:after{clear:both;content:".";display:block;height:0;visibility:hidden}.badges a{color:#763333;text-decoration:underline}a:hover{text-decoration:underline}.badge-context-toggle.active{cursor:pointer;text-decoration:underline}h1{font-size:24px;padding:10px 0 5px 0}body.user-messages{margin-top:2.4em}.left{float:left}.right{float:right}.clean{clear:both}.center{margin:0 auto;padding:0}.notify{position:fixed;top:0;left:0;width:100%;z-index:100;padding:0;text-align:center;background-color:#f5dd69;border-top:#fff 1px solid;font-family:'Yanone Kaffeesatz',sans-serif}.notify p.notification{margin-top:6px;margin-bottom:6px;font-size:16px;color:#424242}#closeNotify{position:absolute;right:5px;top:7px;color:#735005;text-decoration:none;line-height:18px;background:-6px -5px url(../images/sprites.png) no-repeat;cursor:pointer;width:20px;height:20px}#closeNotify:hover{background:-26px -5px url(../images/sprites.png) no-repeat}#header{margin-top:0;background:#16160f;font-family:'Yanone Kaffeesatz',sans-serif}.content-wrapper{width:960px;margin:auto;position:relative}#logo img{padding:5px 0 5px 0;height:75px;width:auto;float:left}#userToolsNav{height:20px;padding-bottom:5px}#userToolsNav a{height:35px;text-align:right;margin-left:20px;text-decoration:underline;color:#d0e296;font-size:16px}#userToolsNav a:first-child{margin-left:0}#userToolsNav a#ab-responses{margin-left:3px}#userToolsNav .user-info,#userToolsNav .user-micro-info{color:#b5b593}#userToolsNav a img{vertical-align:middle;margin-bottom:2px}#userToolsNav .user-info a{margin:0;text-decoration:none}#metaNav{float:right}#metaNav a{color:#e2e2ae;padding:0 0 0 35px;height:25px;line-height:30px;margin:5px 0 0 10px;font-size:18px;font-weight:100;text-decoration:none;display:block;float:left}#metaNav a:hover{text-decoration:underline}#metaNav a.on{font-weight:bold;color:#FFF;text-decoration:none}#metaNav a.special{font-size:18px;color:#b02b2c;font-weight:bold;text-decoration:none}#metaNav a.special:hover{text-decoration:underline}#metaNav #navTags{background:-50px -5px url(../images/sprites.png) no-repeat}#metaNav #navUsers{background:-125px -5px url(../images/sprites.png) no-repeat}#metaNav #navBadges{background:-210px -5px url(../images/sprites.png) no-repeat}#header.with-logo #userToolsNav{position:absolute;bottom:0;right:0}#header.without-logo #userToolsNav{float:left;margin-top:7px}#header.without-logo #metaNav{margin-bottom:7px}#secondaryHeader{height:55px;background:#e9e9e1;border-bottom:#d3d3c2 1px solid;border-top:#fcfcfc 1px solid;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif}#secondaryHeader #homeButton{border-right:#afaf9e 1px solid;background:-6px -36px url(../images/sprites.png) no-repeat;height:55px;width:43px;display:block;float:left}#secondaryHeader #homeButton:hover{background:-51px -36px url(../images/sprites.png) no-repeat}#secondaryHeader #scopeWrapper{width:688px;float:left}#secondaryHeader #scopeWrapper a{display:block;float:left}#secondaryHeader #scopeWrapper .scope-selector{font-size:21px;color:#5a5a4b;height:55px;line-height:55px;margin-left:24px}#secondaryHeader #scopeWrapper .on{background:url(../images/scopearrow.png) no-repeat center bottom}#secondaryHeader #scopeWrapper .ask-message{font-size:24px}#searchBar{display:inline-block;background-color:#fff;width:412px;border:1px solid #c9c9b5;float:right;height:42px;margin:6px 0 0 15px}#searchBar .searchInput,#searchBar .searchInputCancelable{font-size:30px;height:40px;font-weight:300;background:#FFF;border:0;color:#484848;padding-left:10px;font-family:Arial;vertical-align:middle}#searchBar .searchInput{width:352px}#searchBar .searchInputCancelable{width:317px}#searchBar .logoutsearch{width:337px}#searchBar .searchBtn{font-size:10px;color:#666;background-color:#eee;height:42px;border:#FFF 1px solid;line-height:22px;text-align:center;float:right;margin:0;width:48px;background:-98px -36px url(../images/sprites.png) no-repeat;cursor:pointer}#searchBar .searchBtn:hover{background:-146px -36px url(../images/sprites.png) no-repeat}#searchBar .cancelSearchBtn{font-size:30px;color:#ce8888;background:#fff;height:42px;border:0;border-left:#deded0 1px solid;text-align:center;width:35px;cursor:pointer}#searchBar .cancelSearchBtn:hover{color:#d84040}body.anon #searchBar{width:500px}body.anon #searchBar .searchInput{width:440px}body.anon #searchBar .searchInputCancelable{width:405px}#askButton{line-height:44px;margin-top:6px;float:right;text-transform:uppercase;width:200px;height:42px;font-size:23px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}#askButton:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#ContentLeft{width:730px;float:left;position:relative;padding-bottom:10px}#ContentRight{width:200px;float:right;padding:0 0 10px 0}#ContentFull{float:left;width:960px}.box{background:#fff;padding:4px 0 10px 0;width:200px}.box p{margin-bottom:4px}.box p.info-box-follow-up-links{text-align:right;margin:0}.box h2{padding-left:0;background:#eceeeb;height:30px;line-height:30px;text-align:right;font-size:18px!important;font-weight:normal;color:#656565;padding-right:10px;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif;width:190px}.box h3{color:#4a757f;font-size:18px;text-align:left;font-weight:normal;font-family:'Yanone Kaffeesatz',sans-serif;padding-left:0}.box .contributorback{background:#eceeeb url(../images/contributorsback.png) no-repeat center left}.box label{color:#707070;font-size:15px;display:block;float:right;text-align:left;font-family:'Yanone Kaffeesatz',sans-serif;width:80px;margin-right:18px}.box #displayTagFilterControl label{width:160px}.box ul{margin-left:22px}.box li{list-style-type:disc;font-size:13px;line-height:20px;margin-bottom:10px;color:#707070}.box ul.tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}.box #displayTagFilterControl p label{color:#707070;font-size:15px}.box .inputs #interestingTagInput,.box .inputs #ignoredTagInput{width:153px;padding-left:5px;border:#c9c9b5 1px solid;height:25px}.box .inputs #interestingTagAdd,.box .inputs #ignoredTagAdd{border:0;font-weight:bold;margin-top:-2px;width:30px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0 1px 0 #e6f6fa;-moz-text-shadow:0 1px 0 #e6f6fa;-webkit-text-shadow:0 1px 0 #e6f6fa}.box .inputs #interestingTagAdd:hover,.box .inputs #ignoredTagAdd:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box img.gravatar{margin:1px}.box a.followed,.box a.follow{line-height:34px;border:0;font-weight:normal;margin-top:3px;display:block;width:120px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin:0 auto;padding:0}.box a.followed:hover,.box a.follow:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.box a.followed div.unfollow{display:none}.box a.followed:hover div{display:none}.box a.followed:hover div.unfollow{display:inline;color:#a05736}.box .favorite-number{padding:5px 0 0 5px;font-size:100%;font-family:Arial;font-weight:bold;color:#777;text-align:center}.box .notify-sidebar #question-subscribe-sidebar{margin:7px 0 0 3px}.statsWidget p{color:#707070;font-size:16px;border-bottom:#ccc 1px solid;font-size:13px}.statsWidget p strong{float:right;padding-right:10px}.questions-related{word-wrap:break-word}.questions-related p{line-height:20px;padding:4px 0 4px 0;font-size:16px;font-weight:normal;border-bottom:#ccc 1px solid}.questions-related a{font-size:13px}#tips li{color:#707070;font-size:13px;list-style-image:url(../images/tips.png)}#tips a{font-size:16px}#markdownHelp li{color:#707070;font-size:13px}#markdownHelp a{font-size:16px}.tabBar{background-color:#eff5f6;height:30px;margin-bottom:3px;margin-top:3px;float:right;font-family:Georgia,serif;font-size:16px;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.tabBar h2{float:left}.tabsA,.tabsC{float:right;position:relative;display:block;height:20px}.tabsA{float:right}.tabsC{float:left}.tabsA a,.tabsC a{border-left:1px solid #d0e1e4;color:#7ea9b3;display:block;float:left;height:20px;line-height:20px;padding:4px 7px 4px 7px;text-decoration:none}.tabsA a.on,.tabsC a.on,.tabsA a:hover,.tabsC a:hover{color:#4a757f}.tabsA .label,.tabsC .label{float:left;color:#646464;margin-top:4px;margin-right:5px}.main-page .tabsA .label{margin-left:8px}.tabsB a{background:#eee;border:1px solid #eee;color:#777;display:block;float:left;height:22px;line-height:28px;margin:5px 0 0 4px;padding:0 11px 0 11px;text-decoration:none}.tabsC .first{border:0}.rss{float:right;font-size:16px;color:#f57900;margin:5px 0 3px 7px;width:52px;padding-left:2px;padding-top:3px;background:#fff url(../images/feed-icon-small.png) no-repeat center right;float:right;font-family:Georgia,serif;font-size:16px}.rss:hover{color:#f4a731!important}#questionCount{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;margin-bottom:8px;padding-top:6px;font-family:'Yanone Kaffeesatz',sans-serif}#listSearchTags{float:left;margin-top:3px;color:#707070;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}ul#searchTags{margin-left:10px;float:right;padding-top:2px}.search-tips{font-size:16px;line-height:17px;color:#707070;margin:5px 0 10px 0;padding:0;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.search-tips a{text-decoration:underline;color:#1b79bd}#question-list{float:left;position:relative;background-color:#FFF;padding:0;width:100%}.short-summary{position:relative;filter:inherit;padding:10px;border-bottom:1px solid #dddbce;margin-bottom:1px;overflow:hidden;width:710px;float:left;background:url(../images/summary-background.png) repeat-x}.short-summary h2{font-size:24px;font-weight:normal;line-height:26px;padding-left:0;margin-bottom:6px;display:block;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary a{color:#464646}.short-summary .userinfo{text-align:right;line-height:16px;font-family:Arial;padding-right:4px}.short-summary .userinfo .relativetime,.short-summary span.anonymous{font-size:11px;clear:both;font-weight:normal;color:#555}.short-summary .userinfo a{font-weight:bold;font-size:11px}.short-summary .counts{float:right;margin:4px 0 0 5px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .item-count{padding:0 5px 0 5px;font-size:25px;font-family:'Yanone Kaffeesatz',sans-serif}.short-summary .counts .votes div,.short-summary .counts .views div,.short-summary .counts .answers div,.short-summary .counts .favorites div{margin-top:3px;font-size:14px;line-height:14px;color:#646464}.short-summary .tags{margin-top:0}.short-summary .votes,.short-summary .answers,.short-summary .favorites,.short-summary .views{text-align:center;margin:0 3px;padding:8px 2px 0 2px;width:51px;float:right;height:44px;border:#dbdbd4 1px solid}.short-summary .votes{background:url(../images/vote-background.png) repeat-x}.short-summary .answers{background:url(../images/answers-background.png) repeat-x}.short-summary .views{background:url(../images/view-background.png) repeat-x}.short-summary .no-votes .item-count{color:#b1b5b6}.short-summary .some-votes .item-count{color:#4a757f}.short-summary .no-answers .item-count{color:#b1b5b6}.short-summary .some-answers .item-count{color:#eab243}.short-summary .no-views .item-count{color:#b1b5b6}.short-summary .some-views .item-count{color:#d33f00}.short-summary .accepted .item-count{background:url(../images/accept.png) no-repeat top right;display:block;text-align:center;width:40px;color:#eab243}.short-summary .some-favorites .item-count{background:#338333;color:#d0f5a9}.short-summary .no-favorites .item-count{background:#eab243;color:yellow}.evenMore{font-size:13px;color:#707070;padding:15px 0 10px 0;clear:both}.evenMore a{text-decoration:underline;color:#1b79bd}.pager{margin-top:10px;margin-bottom:16px}.pagesize{margin-top:10px;margin-bottom:16px;float:right}.paginator{padding:5px 0 10px 0;font-size:13px;margin-bottom:10px}.paginator .prev a,.paginator .prev a:visited,.paginator .next a,.paginator .next a:visited{background-color:#fff;color:#777;padding:2px 4px 3px 4px}.paginator a{color:#7ea9b3}.paginator .prev{margin-right:.5em}.paginator .next{margin-left:.5em}.paginator .page a,.paginator .page a:visited,.paginator .curr{padding:.25em;background-color:#fff;margin:0 .25em;color:#ff}.paginator .curr{background-color:#8ebcc7;color:#fff;font-weight:bold}.paginator .next a,.paginator .prev a{color:#7ea9b3}.paginator .page a:hover,.paginator .curr a:hover,.paginator .prev a:hover,.paginator .next a:hover{color:#8c8c8c;background-color:#e1e1e1;text-decoration:none}.paginator .text{color:#777;padding:.3em}.paginator .paginator-container-left{padding:5px 0 10px 0}.tag-size-1{font-size:12px}.tag-size-2{font-size:13px}.tag-size-3{font-size:14px}.tag-size-4{font-size:15px}.tag-size-5{font-size:16px}.tag-size-6{font-size:17px}.tag-size-7{font-size:18px}.tag-size-8{font-size:19px}.tag-size-9{font-size:20px}.tag-size-10{font-size:21px}ul.tags,ul.tags.marked-tags,ul#related-tags{list-style:none;margin:0;padding:0;line-height:170%;display:block}ul.tags li{float:left;display:block;margin:0 8px 8px 0;padding:0;height:20px}.wildcard-tags{clear:both}ul.tags.marked-tags li,.wildcard-tags ul.tags li{margin-bottom:5px}#tagSelector div.inputs{clear:both;float:none;margin-bottom:10px}.tags-page ul.tags li,ul#ab-user-tags li{width:160px;margin:5px}ul#related-tags li{margin:0 5px 8px 0;float:left;clear:left}.tag-left{cursor:pointer;display:block;float:left;height:17px;margin:0 5px 0 0;padding:0;-webkit-box-shadow:0 0 5px #d3d6d7;-moz-box-shadow:0 0 5px #d3d6d7;box-shadow:0 0 5px #d3d6d7}.tag-right{background:#f3f6f6;border:#fff 1px solid;border-top:#fff 2px solid;outline:#cfdbdb 1px solid;display:block;float:left;height:17px;line-height:17px;font-weight:normal;font-size:11px;padding:0 8px 0 8px;text-decoration:none;text-align:center;white-space:nowrap;vertical-align:middle;font-family:Arial;color:#717179}.deletable-tag{margin-right:3px;white-space:nowrap;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px}.tags a.tag-right,.tags span.tag-right{color:#585858;text-decoration:none}.tags a:hover{color:#1a1a1a}.users-page h1,.tags-page h1{float:left}.main-page h1{margin-right:5px}.delete-icon{margin-top:-1px;float:left;height:21px;width:18px;display:block;line-height:20px;text-align:center;background:#bbcdcd;cursor:default;color:#fff;border-top:#cfdbdb 1px solid;font-family:Arial;border-top-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-webkit-border-top-right-radius:4px;text-shadow:0 1px 0 #7ea0a0;-moz-text-shadow:0 1px 0 #7ea0a0;-webkit-text-shadow:0 1px 0 #7ea0a0}.delete-icon:hover{background:#b32f2f}.tag-number{font-weight:normal;float:left;font-size:16px;color:#5d5d5d}.badges .tag-number{float:none;display:inline;padding-right:15px}.section-title{color:#7ea9b3;font-family:'Yanone Kaffeesatz',sans-serif;font-weight:bold;font-size:24px}#fmask{margin-bottom:30px;width:100%}#askFormBar{display:inline-block;padding:4px 7px 5px 0;margin-top:0}#askFormBar p{margin:0 0 5px 0;font-size:14px;color:#525252;line-height:1.4}#askFormBar .questionTitleInput{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px}.ask-page div#question-list,.edit-question-page div#question-list{float:none;border-bottom:#f0f0ec 1px solid;float:left;margin-bottom:10px}.ask-page div#question-list a,.edit-question-page div#question-list a{line-height:30px}.ask-page div#question-list h2,.edit-question-page div#question-list h2{font-size:13px;padding-bottom:0;color:#1b79bd;border-top:#f0f0ec 1px solid;border-left:#f0f0ec 1px solid;height:30px;line-height:30px;font-weight:normal}.ask-page div#question-list span,.edit-question-page div#question-list span{width:28px;height:26px;line-height:26px;text-align:center;margin-right:10px;float:left;display:block;color:#fff;background:#b8d0d5;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.ask-page label,.edit-question-page label{color:#525252;font-size:13px}.ask-page #id_tags,.edit-question-page #id_tags{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.title-desc{color:#707070;font-size:13px}#fmanswer input.submit,.ask-page input.submit,.edit-question-page input.submit{float:left;font-weight:normal;margin-top:3px;width:160px;height:34px;font-size:21px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin-right:7px}#fmanswer input.submit:hover,.ask-page input.submit:hover,.edit-question-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}#editor{font-size:100%;min-height:200px;line-height:18px;margin:0;border-left:#cce6ec 3px solid;border-bottom:#cce6ec 3px solid;border-right:#cce6ec 3px solid;border-top:0;padding:10px;margin-bottom:10px;width:710px}@media screen and (-webkit-min-device-pixel-ratio:0){#editor{width:717px}}#id_title{width:100%}.wmd-preview{margin:3px 0 5px 0;padding:6px;background-color:#f5f5f5;min-height:20px;overflow:auto;font-size:13px;font-family:Arial}.wmd-preview p{margin-bottom:14px;line-height:1.4;font-size:14px}.wmd-preview pre{background-color:#e7f1f8}.wmd-preview blockquote{background-color:#eee}.wmd-preview IMG{max-width:600px}.preview-toggle{width:100%;color:#b6a475;text-align:left}.preview-toggle span:hover{cursor:pointer}.after-editor{margin-top:15px;margin-bottom:15px}.checkbox{margin-left:5px;font-weight:normal;cursor:help}.question-options{margin-top:1px;color:#666;line-height:13px;margin-bottom:5px}.question-options label{vertical-align:text-bottom}.edit-content-html{border-top:1px dotted #d8d2a9;border-bottom:1px dotted #d8d2a9;margin:5px 0 5px 0}.edit-question-page,#fmedit,.wmd-preview{color:#525252}.edit-question-page #id_revision,#fmedit #id_revision,.wmd-preview #id_revision{font-size:14px;margin-top:5px;margin-bottom:5px}.edit-question-page #id_title,#fmedit #id_title,.wmd-preview #id_title{font-size:24px;line-height:24px;height:36px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:725px;margin-bottom:10px}.edit-question-page #id_summary,#fmedit #id_summary,.wmd-preview #id_summary{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.edit-question-page .title-desc,#fmedit .title-desc,.wmd-preview .title-desc{margin-bottom:10px}.question-page h1{padding-top:0;font-family:'Yanone Kaffeesatz',sans-serif}.question-page h1 a{color:#464646;font-size:30px;font-weight:normal;line-height:1}.question-page p.rss{float:none;clear:both;padding:3px 0 0 23px;font-size:15px;width:110px;background-position:center left;margin-left:0!important}.question-page p.rss a{font-family:'Yanone Kaffeesatz',sans-serif;vertical-align:top}.question-page .question-content{float:right;width:682px;margin-bottom:10px}.question-page #question-table{float:left;border-top:#f0f0f0 1px solid}.question-page #question-table,.question-page .answer-table{margin:6px 0 6px 0;border-spacing:0;width:670px;padding-right:10px}.question-page .answer-table{margin-top:0;border-bottom:1px solid #d4d4d4;float:right}.question-page .answer-table td,.question-page #question-table td{width:20px;vertical-align:top}.question-page .question-body,.question-page .answer-body{overflow:auto;margin-top:10px;font-family:Arial;color:#4b4b4b}.question-page .question-body p,.question-page .answer-body p{margin-bottom:14px;line-height:1.4;font-size:14px;padding:0 5px 5px 0}.question-page .question-body a,.question-page .answer-body a{color:#1b79bd}.question-page .question-body li,.question-page .answer-body li{margin-bottom:7px}.question-page .question-body IMG,.question-page .answer-body IMG{max-width:600px}.question-page .post-update-info-container{float:right;width:175px}.question-page .post-update-info{background:#fff url(../images/background-user-info.png) repeat-x bottom;float:right;font-size:9px;font-family:Arial;width:158px;padding:4px;margin:0 0 5px 5px;line-height:14px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:0 2px 1px #bfbfbf;-moz-box-shadow:0 2px 1px #bfbfbf;box-shadow:0 2px 1px #bfbfbf}.question-page .post-update-info p{line-height:13px;font-size:11px;margin:0 0 2px 1px;padding:0}.question-page .post-update-info a{color:#444}.question-page .post-update-info .gravatar{float:left;margin-right:4px}.question-page .post-update-info p.tip{color:#444;line-height:13px;font-size:10px}.question-page .post-controls{font-size:11px;line-height:12px;min-width:200px;padding-left:5px;text-align:right;clear:left;float:right;margin-top:10px;margin-bottom:8px}.question-page .post-controls a{color:#777;padding:0 7px 3px 18px;cursor:pointer;border:0;font-size:12px;font-family:Arial;text-decoration:none;height:18px;display:block;float:right;line-height:18px;margin-top:-2px;margin-left:4px}.question-page .post-controls a:hover{background-color:#f5f0c9;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.question-page .post-controls .sep{color:#ccc;float:right;height:18px;font-size:18px}.question-page .post-controls .question-delete,.question-page .answer-controls .question-delete{background:url(../images/delete.png) no-repeat center left;padding-left:11px}.question-page .post-controls .question-flag,.question-page .answer-controls .question-flag{background:url(../images/flag.png) no-repeat center left}.question-page .post-controls .question-edit,.question-page .answer-controls .question-edit{background:url(../images/edit2.png) no-repeat center left}.question-page .post-controls .question-retag,.question-page .answer-controls .question-retag{background:url(../images/retag.png) no-repeat center left}.question-page .post-controls .question-close,.question-page .answer-controls .question-close{background:url(../images/close.png) no-repeat center left}.question-page .post-controls .permant-link,.question-page .answer-controls .permant-link{background:url(../images/link.png) no-repeat center left}.question-page .tabBar{width:100%}.question-page #questionCount{float:left;font-family:'Yanone Kaffeesatz',sans-serif;line-height:15px}.question-page .question-img-upvote,.question-page .question-img-downvote,.question-page .answer-img-upvote,.question-page .answer-img-downvote{width:25px;height:20px;cursor:pointer}.question-page .question-img-upvote,.question-page .answer-img-upvote{background:url(../images/vote-arrow-up-new.png) no-repeat}.question-page .question-img-downvote,.question-page .answer-img-downvote{background:url(../images/vote-arrow-down-new.png) no-repeat}.question-page .question-img-upvote:hover,.question-page .question-img-upvote.on,.question-page .answer-img-upvote:hover,.question-page .answer-img-upvote.on{background:url(../images/vote-arrow-up-on-new.png) no-repeat}.question-page .question-img-downvote:hover,.question-page .question-img-downvote.on,.question-page .answer-img-downvote:hover,.question-page .answer-img-downvote.on{background:url(../images/vote-arrow-down-on-new.png) no-repeat}.question-page #fmanswer_button{margin:8px 0}.question-page .question-img-favorite:hover{background:url(../images/vote-favorite-on.png)}.question-page div.comments{padding:0}.question-page #comment-title{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;font-family:'Yanone Kaffeesatz',sans-serif}.question-page .comments{font-size:12px;clear:both}.question-page .comments div.controls{clear:both;float:left;width:100%;margin:3px 0 20px 5px}.question-page .comments .controls a{color:#988e4c;padding:0 3px 2px 22px;font-family:Arial;font-size:13px;background:url(../images/comment.png) no-repeat center left}.question-page .comments .controls a:hover{background-color:#f5f0c9;text-decoration:none}.question-page .comments .button{color:#988e4c;font-size:11px;padding:3px;cursor:pointer}.question-page .comments a{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments form.post-comments{margin:3px 26px 0 42px}.question-page .comments form.post-comments textarea{font-size:13px;line-height:1.3}.question-page .comments textarea{height:42px;width:100%;margin:7px 0 5px 1px;font-family:Arial;outline:0;overflow:auto;font-size:12px;line-height:140%;padding-left:2px;padding-top:3px;border:#cce6ec 3px solid}@media screen and (-webkit-min-device-pixel-ratio:0){textarea{padding-left:3px!important}}.question-page .comments input{margin-left:10px;margin-top:1px;vertical-align:top;width:100px}.question-page .comments button{line-height:25px;margin-bottom:5px;width:100px;height:27px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold}.question-page .comments button:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.question-page .comments .counter{display:inline-block;width:245px;float:right;color:#b6a475!important;vertical-align:top;font-family:Arial;float:right;text-align:right}.question-page .comments .comment{border-bottom:1px solid #edeeeb;clear:both;margin:0;margin-top:8px;padding-bottom:4px;overflow:auto;font-family:Arial;font-size:11px;min-height:25px;background:#fff url(../images/comment-background.png) bottom repeat-x;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px}.question-page .comments div.comment:hover{background-color:#efefef}.question-page .comments a.author{background-color:inherit;color:#1b79bd;padding:0}.question-page .comments a.author:hover{text-decoration:underline}.question-page .comments span.delete-icon{background:url(../images/close-small.png) no-repeat;border:0;width:14px;height:14px}.question-page .comments span.delete-icon:hover{border:#bc564b 2px solid;border-radius:10px;-ms-border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;margin:-3px 0 0 -2px}.question-page .comments .content{margin-bottom:7px}.question-page .comments .comment-votes{float:left;width:37px;line-height:130%;padding:6px 5px 6px 3px}.question-page .comments .comment-body{line-height:1.3;margin:3px 26px 0 46px;padding:5px 3px;color:#666;font-size:13px}.question-page .comments .comment-body .edit{padding-left:6px}.question-page .comments .comment-body p{font-size:13px;line-height:1.3;margin-bottom:3px;padding:0}.question-page .comments .comment-delete{float:right;width:14px;line-height:130%;padding:8px 6px}.question-page .comments .upvote{margin:0;padding-right:17px;padding-top:2px;text-align:right;height:20px;font-size:13px;font-weight:bold;color:#777}.question-page .comments .upvote.upvoted{color:#d64000}.question-page .comments .upvote.hover{background:url(../images/go-up-grey.png) no-repeat;background-position:right 1px}.question-page .comments .upvote:hover{background:url(../images/go-up-orange.png) no-repeat;background-position:right 1px}.question-page .comments .help-text{float:right;text-align:right;color:gray;margin-bottom:0;margin-top:0;line-height:50%}.question-page #questionTools{font-size:22px;margin-top:11px;text-align:left}.question-page .question-status{margin-top:10px;margin-bottom:15px;padding:20px;background-color:#fef7cc;text-align:center;border:#e1c04a 1px solid}.question-page .question-status h3{font-size:20px;color:#707070;font-weight:normal}.question-page .vote-buttons{float:left;text-align:center;padding-top:2px;margin:10px 10px 0 3px;*margin:0;*height:210px;*width:30px}.question-page .vote-buttons IMG{cursor:pointer}.question-page .vote-number{font-family:'Yanone Kaffeesatz',sans-serif;padding:0 0 5px 0;font-size:25px;font-weight:bold;color:#777}.question-page .vote-buttons .notify-sidebar{text-align:left;width:120px}.question-page .vote-buttons .notify-sidebar label{vertical-align:top}.question-page .tabBar-answer{margin-bottom:15px;padding-left:7px;width:723px;margin-top:10px}.question-page .answer .vote-buttons{float:left}.question-page .accepted-answer{background-color:#f7fecc;border-bottom-color:#9bd59b}.question-page .accepted-answer .vote-buttons{width:27px;margin-right:10px;margin-top:10px}.question-page .answer .post-update-info a{color:#444}.question-page .answered{background:#CCC;color:#999}.question-page .answered-accepted{background:#dcdcdc;color:#763333}.question-page .answered-accepted strong{color:#e1e818}.question-page .answered-by-owner{background:#f1f1ff}.question-page .answered-by-owner .comments .button{background-color:#e6ecff}.question-page .answered-by-owner .comments{background-color:#e6ecff}.question-page .answered-by-owner .vote-buttons{margin-right:10px}.question-page .answer-img-accept{background:url(../images/vote-accepted.png);width:23px;height:23px}.question-page .accepted-answer .answer-img-accept,.question-page .answer-img-accept:hover{background:url(../images/vote-accepted-on.png)}.question-page .answer-body a{color:#1b79bd}.question-page .answer-body li{margin-bottom:.7em}.question-page #fmanswer{color:#707070;line-height:1.2;margin-top:10px}.question-page #fmanswer h2{font-family:'Yanone Kaffeesatz',sans-serif;color:#7ea9b3;font-size:24px}.question-page #fmanswer label{font-size:13px}.question-page .message{padding:5px;margin:0 0 10px 0}.facebook-share.icon,.twitter-share.icon,.linkedin-share.icon,.identica-share.icon{background:url(../images/socialsprite.png) no-repeat;display:block;text-indent:-100em;height:25px;width:25px;margin-bottom:3px}.facebook-share.icon:hover,.twitter-share.icon:hover,.linkedin-share.icon:hover,.identica-share.icon:hover{opacity:.8;filter:alpha(opacity=80)}.facebook-share.icon{background-position:-26px 0}.identica-share.icon{background-position:-78px 0}.twitter-share.icon{margin-top:10px;background-position:0 0}.linkedin-share.icon{background-position:-52px 0}.openid-signin,.meta,.users-page,.user-profile-edit-page{font-size:13px;line-height:1.3;color:#525252}.openid-signin p,.meta p,.users-page p,.user-profile-edit-page p{font-size:13px;color:#707070;line-height:1.3;font-family:Arial;color:#525252;margin-bottom:12px}.openid-signin h2,.meta h2,.users-page h2,.user-profile-edit-page h2{color:#525252;padding-left:0;font-size:16px}.openid-signin form,.meta form,.users-page form,.user-profile-edit-page form,.user-profile-page form{margin-bottom:15px}.openid-signin input[type="text"],.meta input[type="text"],.users-page input[type="text"],.user-profile-edit-page input[type="text"],.user-profile-page input[type="text"],.openid-signin input[type="password"],.meta input[type="password"],.users-page input[type="password"],.user-profile-edit-page input[type="password"],.user-profile-page input[type="password"],.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px}.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{width:405px;height:30px}.openid-signin textarea,.meta textarea,.users-page textarea,.user-profile-edit-page textarea,.user-profile-page textarea{border:#cce6ec 3px solid;padding-left:5px;padding-top:5px;width:395px;font-size:14px}.openid-signin input.submit,.meta input.submit,.users-page input.submit,.user-profile-edit-page input.submit,.user-profile-page input.submit{font-weight:normal;margin:5px 0;width:100px;height:26px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial}.openid-signin input.submit:hover,.meta input.submit:hover,.users-page input.submit:hover,.user-profile-edit-page input.submit:hover,.user-profile-page input.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-signin .cancel,.meta .cancel,.users-page .cancel,.user-profile-edit-page .cancel,.user-profile-page .cancel{background:url(../images/small-button-cancel.png) repeat-x top!important;color:#525252!important}.openid-signin .cancel:hover,.meta .cancel:hover,.users-page .cancel:hover,.user-profile-edit-page .cancel:hover,.user-profile-page .cancel:hover{background:url(../images/small-button-cancel.png) repeat-x bottom!important}#email-input-fs,#local_login_buttons,#password-fs,#openid-fs{margin-top:10px}#email-input-fs #id_email,#local_login_buttons #id_email,#password-fs #id_email,#openid-fs #id_email,#email-input-fs #id_username,#local_login_buttons #id_username,#password-fs #id_username,#openid-fs #id_username,#email-input-fs #id_password,#local_login_buttons #id_password,#password-fs #id_password,#openid-fs #id_password{font-size:12px;line-height:20px;height:20px;margin:0;padding:0 0 0 5px;border:#cce6ec 3px solid;width:200px}#email-input-fs .submit-b,#local_login_buttons .submit-b,#password-fs .submit-b,#openid-fs .submit-b{width:100px;height:24px;font-size:15px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;font-family:Arial;font-weight:bold;padding-right:10px;border:0}#email-input-fs .submit-b:hover,#local_login_buttons .submit-b:hover,#password-fs .submit-b:hover,#openid-fs .submit-b:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd}.openid-input{background:url(../images/openid.gif) no-repeat;padding-left:15px;cursor:pointer}.openid-login-input{background-position:center left;background:url(../images/openid.gif) no-repeat 0 50%;padding:5px 5px 5px 15px;cursor:pointer;font-family:Trebuchet MS;font-weight:300;font-size:150%;width:500px}.openid-login-submit{height:40px;width:80px;line-height:40px;cursor:pointer;border:1px solid #777;font-weight:bold;font-size:120%}.tabBar-user{width:375px}.user{padding:5px;line-height:140%;width:166px;border:#eee 1px solid;margin-bottom:5px;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.user .user-micro-info{color:#525252}.user ul{margin:0;list-style-type:none}.user .thumb{clear:both;float:left;margin-right:4px;display:inline}.tabBar-tags{width:270px;margin-bottom:15px}a.medal{font-size:17px;line-height:250%;margin-right:5px;color:#333;text-decoration:none;background:url(../images/medala.gif) no-repeat;border-left:1px solid #EEE;border-top:1px solid #EEE;border-bottom:1px solid #CCC;border-right:1px solid #CCC;padding:4px 12px 4px 6px}a:hover.medal{color:#333;text-decoration:none;background:url(../images/medala_on.gif) no-repeat;border-left:1px solid #e7e296;border-top:1px solid #e7e296;border-bottom:1px solid #d1ca3d;border-right:1px solid #d1ca3d}#award-list .user{float:left;margin:5px}.tabBar-profile{width:100%;margin-bottom:15px;float:left}.user-profile-page{font-size:13px;color:#525252}.user-profile-page p{font-size:13px;line-height:1.3;color:#525252}.user-profile-page .avatar img{border:#eee 1px solid;padding:5px}.user-profile-page h2{padding:10px 0 10px 0;font-family:'Yanone Kaffeesatz',sans-serif}.user-details{font-size:13px}.user-details h3{font-size:16px}.user-about{background-color:#eee;height:200px;line-height:20px;overflow:auto;padding:10px;width:90%}.user-about p{font-size:13px}.follow-toggle,.submit{border:0!important;font-weight:bold;line-height:26px;margin-top:-2px;width:100px;height:26px;font-size:12px;text-align:center;text-decoration:none;cursor:pointer;color:#4a757f;font-family:'Yanone Kaffeesatz',sans-serif;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;border-top:#eaf2f3 1px solid;background-color:#d1e2e5;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#d1e2e5),color-stop(25%,#d1e2e5),to(#a9c2c7));background-image:-webkit-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-moz-linear-gradient(top,#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-ms-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:-o-linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);background-image:linear-gradient(#d1e2e5,#d1e2e5 25%,#a9c2c7);border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363}.follow-toggle:hover,.submit:hover{background-color:#cde5e9;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#cde5e9),color-stop(25%,#cde5e9),to(#94b3ba));background-image:-webkit-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-moz-linear-gradient(top,#cde5e9,#cde5e9 25%,#94b3ba);background-image:-ms-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:-o-linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);background-image:linear-gradient(#cde5e9,#cde5e9 25%,#94b3ba);text-decoration:none;text-shadow:0 1px 0 #c6d9dd;-moz-text-shadow:0 1px 0 #c6d9dd;-webkit-text-shadow:0 1px 0 #c6d9dd;text-decoration:none!important}.follow-toggle .follow{font-color:#000;font-style:normal}.follow-toggle .unfollow div.unfollow-red{display:none}.follow-toggle .unfollow:hover div.unfollow-red{display:inline;color:#fff;font-weight:bold;color:#a05736}.follow-toggle .unfollow:hover div.unfollow-green{display:none}.count{font-family:'Yanone Kaffeesatz',sans-serif;font-size:200%;font-weight:700;color:#777}.scoreNumber{font-family:'Yanone Kaffeesatz',sans-serif;font-size:35px;font-weight:800;color:#777;line-height:40px;margin-top:3px}.vote-count{font-family:Arial;font-size:160%;font-weight:700;color:#777}.answer-summary{display:block;clear:both;padding:3px}.answer-votes{background-color:#eee;color:#555;float:left;font-family:Arial;font-size:15px;font-weight:bold;height:17px;padding:2px 4px 5px;text-align:center;text-decoration:none;width:20px;margin-right:10px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.karma-summary{padding:5px;font-size:13px}.karma-summary h3{text-align:center;font-weight:bold;padding:5px}.karma-diagram{width:477px;height:300px;float:left;margin-right:10px}.karma-details{float:right;width:450px;height:250px;overflow-y:auto;word-wrap:break-word}.karma-details p{margin-bottom:10px}.karma-gained{font-weight:bold;background:#eee;width:25px;margin-right:5px;color:green;padding:3px;display:block;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.karma-lost{font-weight:bold;background:#eee;width:25px;color:red;padding:3px;display:block;margin-right:5px;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px}.submit-row{margin-bottom:10px}.revision{margin:10px 0 10px 0;font-size:13px;color:#525252}.revision p{font-size:13px;line-height:1.3;color:#525252}.revision h3{font-family:'Yanone Kaffeesatz',sans-serif;font-size:21px;padding-left:0}.revision .header{background-color:#f5f5f5;padding:5px;cursor:pointer}.revision .author{background-color:#e9f3f5}.revision .summary{padding:5px 0 10px 0}.revision .summary span{background-color:#fde785;padding:6px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;display:inline;-webkit-box-shadow:1px 1px 4px #cfb852;-moz-box-shadow:1px 1px 4px #cfb852;box-shadow:1px 1px 4px #cfb852}.revision .answerbody{padding:10px 0 5px 10px}.revision .revision-mark{width:150px;text-align:left;display:inline-block;font-size:11px;overflow:hidden}.revision .revision-mark .gravatar{float:left;margin-right:4px;padding-top:5px}.revision .revision-number{font-size:300%;font-weight:bold;font-family:sans-serif}del,del .post-tag{color:#c34719}ins .post-tag,ins p,ins{background-color:#e6f0a2}.vote-notification{z-index:1;cursor:pointer;display:none;position:absolute;font-family:Arial;font-size:14px;font-weight:normal;color:white;background-color:#8e0000;text-align:center;padding-bottom:10px;-webkit-box-shadow:0 2px 4px #370000;-moz-box-shadow:0 2px 4px #370000;box-shadow:0 2px 4px #370000;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.vote-notification h3{background:url(../images/notification.png) repeat-x top;padding:10px 10px 10px 10px;font-size:13px;margin-bottom:5px;border-top:#8e0000 1px solid;color:#fff;font-weight:normal;border-top-right-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px}.vote-notification a{color:#fb7321;text-decoration:underline;font-weight:bold}#ground{width:100%;clear:both;border-top:1px solid #000;padding:6px 0 0 0;background:#16160f;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif}#ground p{margin-bottom:0}.footer-links{color:#EEE;text-align:left;width:500px;float:left}.footer-links a{color:#e7e8a8}.powered-link{width:500px;float:left;text-align:left}.powered-link a{color:#8ebcc7}.copyright{color:#616161;width:450px;float:right;text-align:right}.copyright a{color:#8ebcc7}.copyright img.license-logo{margin:6px 0 20px 10px;float:right}.notify-me{float:left}span.text-counter{margin-right:20px}span.form-error{color:#900;font-weight:normal;margin-left:5px}ul.errorlist{margin-bottom:0}p.form-item{margin:0}.deleted{background:#f4e7e7 none repeat scroll 0 0}.form-row{line-height:25px}table.form-as-table{margin-top:5px}table.form-as-table ul{list-style-type:none;display:inline}table.form-as-table li{display:inline}table.form-as-table td{text-align:right}table.form-as-table th{text-align:left;font-weight:normal}table.ab-subscr-form{width:45em}table.ab-tag-filter-form{width:45em}.submit-row{line-height:30px;padding-top:10px;display:block;clear:both}.errors{line-height:20px;color:red}.error{color:darkred;margin:0;font-size:10px}label.retag-error{color:darkred;padding-left:5px;font-size:10px}.fieldset{border:0;margin-top:10px;padding:10px}span.form-error{color:#900;font-size:90%;font-weight:normal;margin-left:5px}.favorites-empty{width:32px;height:45px;float:left}.user-info-table{margin-bottom:10px;border-spacing:0}.user-stats-table .narrow{width:660px}.narrow .summary h3{padding:0;margin:0}.relativetime{font-weight:bold;text-decoration:none}.narrow .tags{float:left}.user-action-1{font-weight:bold;color:#333}.user-action-2{font-weight:bold;color:#CCC}.user-action-3{color:#333}.user-action-4{color:#333}.user-action-5{color:darkred}.user-action-6{color:darkred}.user-action-7{color:#333}.user-action-8{padding:3px;font-weight:bold;background-color:#CCC;color:#763333}.revision-summary{background-color:#fffe9b;padding:2px}.question-title-link a{font-weight:bold;color:#07c}.answer-title-link a{color:#333}.post-type-1 a{font-weight:bold}.post-type-3 a{font-weight:bold}.post-type-5 a{font-weight:bold}.post-type-2 a{color:#333}.post-type-4 a{color:#333}.post-type-6 a{color:#333}.post-type-8 a{color:#333}.hilite{background-color:#ff0}.hilite1{background-color:#ff0}.hilite2{background-color:#f0f}.hilite3{background-color:#0ff}.gold,.badge1{color:#fc0}.silver,.badge2{color:#ccc}.bronze,.badge3{color:#c93}.score{font-weight:800;color:#333}a.comment{background:#EEE;color:#930;padding:5px}a.offensive{color:#999}.message h1{padding-top:0;font-size:15px}.message p{margin-bottom:0}p.space-above{margin-top:10px}.warning{color:red}button::-moz-focus-inner{padding:0;border:0}.submit{cursor:pointer;background-color:#d4d0c8;height:30px;border:1px solid #777;font-weight:bold;font-size:120%}.submit:hover{text-decoration:underline}.submit.small{margin-right:5px;height:20px;font-weight:normal;font-size:12px;padding:1px 5px}.submit.small:hover{text-decoration:none}.question-page a.submit{display:-moz-inline-stack;display:inline-block;line-height:30px;padding:0 5px;*display:inline}.noscript{position:fixed;top:0;left:0;width:100%;z-index:100;padding:5px 0;text-align:center;font-family:sans-serif;font-size:120%;font-weight:Bold;color:#fff;background-color:#ae0000}.big{font-size:14px}.strong{font-weight:bold}.orange{color:#d64000;font-weight:bold}.grey{color:#808080}.about div{padding:10px 5px 10px 5px;border-top:1px dashed #aaa}.highlight{background-color:#fff8c6}.nomargin{margin:0}.margin-bottom{margin-bottom:10px}.margin-top{margin-top:10px}.inline-block{display:inline-block}.action-status{margin:0;border:0;text-align:center;line-height:10px;font-size:12px;padding:0}.action-status span{padding:3px 5px 3px 5px;background-color:#fff380;font-weight:normal;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px}.list-table td{vertical-align:top}table.form-as-table .errorlist{display:block;margin:0;padding:0 0 0 5px;text-align:left;font-size:10px;color:darkred}table.form-as-table input{display:inline;margin-left:4px}table.form-as-table th{vertical-align:bottom;padding-bottom:4px}.form-row-vertical{margin-top:8px;display:block}.form-row-vertical label{margin-bottom:3px;display:block}.text-align-right{text-align:center}ul.form-horizontal-rows{list-style:none;margin:0}ul.form-horizontal-rows li{position:relative;height:40px}ul.form-horizontal-rows label{display:inline-block}ul.form-horizontal-rows ul.errorlist{list-style:none;color:darkred;font-size:10px;line-height:10px;position:absolute;top:2px;left:180px;text-align:left;margin:0}ul.form-horizontal-rows ul.errorlist li{height:10px}ul.form-horizontal-rows label{position:absolute;left:0;bottom:6px;margin:0;line-height:12px;font-size:12px}ul.form-horizontal-rows li input{position:absolute;bottom:0;left:180px;margin:0}.narrow .summary{float:left}.user-profile-tool-links{font-weight:bold;vertical-align:top}ul.post-tags{margin-left:3px}ul.post-tags li{margin-top:4px;margin-bottom:3px}ul.post-retag{margin-bottom:0;margin-left:5px}#question-controls .tags{margin:0 0 3px 0}#tagSelector{padding-bottom:2px;margin-bottom:0}#related-tags{padding-left:3px}#hideIgnoredTagsControl{margin:5px 0 0 0}#hideIgnoredTagsControl label{font-size:12px;color:#666}#hideIgnoredTagsCb{margin:0 2px 0 1px}#recaptcha_widget_div{width:318px;float:left;clear:both}p.signup_p{margin:20px 0 0 0}.simple-subscribe-options ul{list-style:none;list-style-position:outside;margin:0}.wmd-preview a{color:#1b79bd}.wmd-preview li{margin-bottom:7px;font-size:14px}.search-result-summary{font-weight:bold;font-size:18px;line-height:22px;margin:0;padding:2px 0 0 0;float:left}.faq-rep-item{text-align:right;padding-right:5px}.user-info-table .gravatar{margin:0}#responses{clear:both;line-height:18px;margin-bottom:15px}#responses div.face{float:left;text-align:center;width:54px;padding:3px;overflow:hidden}.response-parent{margin-top:18px}.response-parent strong{font-size:20px}.re{min-height:57px;clear:both;margin-top:10px}#responses input{float:left}#re_tools{margin-bottom:10px}#re_sections{margin-bottom:6px}#re_sections .on{font-weight:bold}.avatar-page ul{list-style:none}.avatar-page li{display:inline}.user-profile-page .avatar p{margin-bottom:0}.user-profile-page .tabBar a#stats{margin-left:0}.user-profile-page img.gravatar{margin:2px 0 3px 0}.user-profile-page h3{padding:0;margin-top:-3px}.userList{font-size:13px}img.flag{border:1px solid #eee;vertical-align:text-top}.main-page img.flag{vertical-align:text-bottom}a.edit{padding-left:3px;color:#145bff}.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{clear:both;padding:3px;border:0 solid #888}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}#leading-sidebar{float:left}body.lang-es #searchBar{width:398px}body.lang-es #searchBar .searchInput{width:337px}body.lang-es #searchBar .searchInputCancelable{width:302px}body.anon.lang-es #searchBar{width:485px}body.anon.lang-es #searchBar .searchInput{width:425px}body.anon.lang-es #searchBar .searchInputCancelable{width:390px}a.re_expand{color:#616161;text-decoration:none}a.re_expand .re_content{display:none;margin-left:77px} \ No newline at end of file diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index 888e15b2..0d1e8112 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -3323,7 +3323,7 @@ body.anon.lang-es { width: 390px; } } - +} a.re_expand{ color: #616161; text-decoration:none; -- cgit v1.2.3-1-g7c22 From 15cb75c3bddec29649f2a5de77ffcf786117ed57 Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Mon, 9 Apr 2012 14:31:05 -0600 Subject: added South mysql test to startup procedures --- askbot/startup_procedures.py | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/askbot/startup_procedures.py b/askbot/startup_procedures.py index b4b36e35..86a33a6e 100644 --- a/askbot/startup_procedures.py +++ b/askbot/startup_procedures.py @@ -11,7 +11,8 @@ import sys import os import re import askbot -from django.db import transaction +import south +from django.db import transaction, connection from django.conf import settings as django_settings from django.core.exceptions import ImproperlyConfigured from askbot.utils.loading import load_module @@ -166,7 +167,7 @@ def try_import(module_name, pypi_package_name): try: load_module(module_name) except ImportError, error: - message = 'Error: ' + unicode(error) + message = 'Error: ' + unicode(error) message += '\n\nPlease run: >pip install %s' % pypi_package_name message += '\n\nTo install all the dependencies at once, type:' message += '\npip install -r askbot_requirements.txt\n' @@ -305,10 +306,10 @@ class SettingsTester(object): ) if len(self.messages) != 0: raise AskbotConfigError( - '\n\nTime to do some maintenance of your settings.py:\n\n* ' + + '\n\nTime to do some maintenance of your settings.py:\n\n* ' + '\n\n* '.join(self.messages) ) - + def test_staticfiles(): """tests configuration of the staticfiles app""" errors = list() @@ -349,7 +350,7 @@ def test_staticfiles(): if static_url is None or str(static_url).strip() == '': errors.append( 'Add STATIC_URL setting to your settings.py file. ' - 'The setting must be a url at which static files ' + 'The setting must be a url at which static files ' 'are accessible.' ) url = urlparse(static_url).path @@ -406,7 +407,7 @@ def test_staticfiles(): ' python manage.py collectstatic\n' ) - + print_errors(errors) if django_settings.STATICFILES_STORAGE == \ 'django.contrib.staticfiles.storage.StaticFilesStorage': @@ -466,7 +467,26 @@ def test_settings_for_test_runner(): 'from MIDDLEWARE_CLASSES' ) print_errors(errors) - + +def test_mysql_south_bug(): + conflicting_mysql = [] + conn = connection.connection + if hasattr(conn, '_server_version') or\ + 'mysql' in connection.settings_dict['ENGINE']: + #checks for conflicting mysql version according to http://south.aeracode.org/ticket/747 + mysql_version = getattr(conn, '_server_version', (5,0)) + south_version = south.__version__ + if mysql_version >= (5,0) and south_version <= '0.7.4': + #just warns because some versions works and it's not possible + #to detect the full version number from thee connection object + message = 'Warning: There is a bug in south with mysql database engine,' + message += '\nmigrations might not work, to fix it please install south from their mercurial repository' + message += '\nmore information here: http://askbot.org/en/question/6902/error-while-setting-up-askbot?answer=6964#answer-container-6964' + askbot_warning(message) + else: + #not mysql + pass + def run_startup_tests(): """function that runs @@ -483,6 +503,7 @@ def run_startup_tests(): test_celery() #test_csrf_cookie_domain() test_staticfiles() + test_mysql_south_bug() settings_tester = SettingsTester({ 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY': { 'value': True, -- cgit v1.2.3-1-g7c22 From 3e8d25c9404e8970df411f671f03bb886dcc00bb Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Thu, 19 Apr 2012 10:39:56 -0600 Subject: added fallback for update_media_revision --- askbot/skins/utils.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/askbot/skins/utils.py b/askbot/skins/utils.py index dee14e56..4f8e1992 100644 --- a/askbot/skins/utils.py +++ b/askbot/skins/utils.py @@ -192,7 +192,25 @@ def update_media_revision(skin = None): current_hash = hasher.get_hash_of_dirs(media_dirs) if current_hash != askbot_settings.MEDIA_RESOURCE_REVISION_HASH: - askbot_settings.update('MEDIA_RESOURCE_REVISION', resource_revision + 1) - askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash) + try: + askbot_settings.update('MEDIA_RESOURCE_REVISION', resource_revision + 1) + logging.debug('media revision worked for MEDIA_RESOURCE_REVISION') + except Exception, e: + logging.critical(e.message) + safe_settings_update('MEDIA_RESOURCE_REVISION', resource_revision + 1) + + try: + askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash) + logging.debug('media revision worked for MEDIA_RESOURCE_REVISION_HASH') + except Exception, e: + logging.critical(e.message) + safe_settings_update('MEDIA_RESOURCE_REVISION_HASH', current_hash) logging.debug('MEDIA_RESOURCE_REVISION changed') - askbot_settings.MEDIA_RESOURCE_REVISION + + +def safe_settings_update(key, value): + '''Fallback when IntegrityError bug raises''' + from askbot.deps.livesettings.models import Setting + setting = Setting.objects.get(key=key) + setting.value = value + setting.save() -- cgit v1.2.3-1-g7c22 From a0514ece9975b79b99c9e3ab8ca37b098763f123 Mon Sep 17 00:00:00 2001 From: Jim Tittsler Date: Mon, 23 Apr 2012 20:24:58 +1200 Subject: badges template text cleanup --- askbot/skins/default/templates/badges.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/askbot/skins/default/templates/badges.html b/askbot/skins/default/templates/badges.html index 62627b05..078f96c1 100644 --- a/askbot/skins/default/templates/badges.html +++ b/askbot/skins/default/templates/badges.html @@ -38,7 +38,7 @@ badges? Please, give us your
feedback  {% trans %}gold{% endtrans %}

- {% trans %}Gold badge is the highest award in this community. To obtain it have to show + {% trans %}Gold badge is the highest award in this community. To obtain it you have to show profound knowledge and ability in addition to your active participation.{% endtrans %}

@@ -48,7 +48,7 @@ profound knowledge and ability in addition to your active participation.{% endtr class="medal"> {% trans %}silver{% endtrans %}

- {% trans %}msgid "silver badge: occasionally awarded for the very high quality contributions{% endtrans %} + {% trans %}silver badge: occasionally awarded for the very high quality contributions{% endtrans %}

-- cgit v1.2.3-1-g7c22 From 8777bb3355d7d4cbdbadff00413d045c1de85fbc Mon Sep 17 00:00:00 2001 From: Jim Tittsler Date: Fri, 27 Apr 2012 17:36:59 +1200 Subject: remove duplicate label for subscribe (once you log in) checkbox --- askbot/skins/default/templates/question/subscribe_by_email_prompt.html | 1 - 1 file changed, 1 deletion(-) diff --git a/askbot/skins/default/templates/question/subscribe_by_email_prompt.html b/askbot/skins/default/templates/question/subscribe_by_email_prompt.html index a9158143..6a77601c 100644 --- a/askbot/skins/default/templates/question/subscribe_by_email_prompt.html +++ b/askbot/skins/default/templates/question/subscribe_by_email_prompt.html @@ -8,7 +8,6 @@ {% else %}

{{ answer.email_notify }} -

{% endif %} -- cgit v1.2.3-1-g7c22 From 9beae392a36e9e9acd8e0b3cefb13680a57c727f Mon Sep 17 00:00:00 2001 From: Jim Tittsler Date: Fri, 27 Apr 2012 23:33:33 +1200 Subject: correct path to manage.py --- askbot/cron/askbot_cron_job | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/askbot/cron/askbot_cron_job b/askbot/cron/askbot_cron_job index 38bf0337..04ba2303 100644 --- a/askbot/cron/askbot_cron_job +++ b/askbot/cron/askbot_cron_job @@ -9,7 +9,7 @@ PROJECT_PARENT_DIR=/path/to/dir_containing_askbot_site PROJECT_DIR_NAME=askbot_site export PYTHONPATH=$PROJECT_PARENT_DIR:$PYTHONPATH -PROJECT_ROOT=$PYTHONPATH/$PROJECT_NAME +PROJECT_ROOT=$PROJECT_DIR_NAME/$PROJECT_NAME #these are actual commands that are to be run python $PROJECT_ROOT/manage.py send_email_alerts -- cgit v1.2.3-1-g7c22 From 07735f865ae6be6c525f4dcaf2e52d8280f21ce0 Mon Sep 17 00:00:00 2001 From: Jim Tittsler Date: Sat, 28 Apr 2012 00:08:59 +1200 Subject: fix HREF= for "adjust" frequency of the email updates --- askbot/management/commands/send_email_alerts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/askbot/management/commands/send_email_alerts.py b/askbot/management/commands/send_email_alerts.py index 8cb71859..8002ecbf 100644 --- a/askbot/management/commands/send_email_alerts.py +++ b/askbot/management/commands/send_email_alerts.py @@ -472,7 +472,7 @@ class Command(NoArgsCommand): text += _( '

Please remember that you can always adjust frequency of the email updates or ' + 'href="%(email_settings_link)s">adjust frequency of the email updates or ' 'turn them off entirely.
If you believe that this message was sent in an ' 'error, please email about it the forum administrator at %(admin_email)s.

Sincerely,

Your friendly %(sitename)s server.

' -- cgit v1.2.3-1-g7c22 From 555118bf6059c0187a2329ec827ab0425830ebf9 Mon Sep 17 00:00:00 2001 From: Jim Tittsler Date: Tue, 1 May 2012 14:34:26 +1200 Subject: typo/spelling; plural --- askbot/conf/site_modes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/askbot/conf/site_modes.py b/askbot/conf/site_modes.py index a88103b4..efbbcca0 100644 --- a/askbot/conf/site_modes.py +++ b/askbot/conf/site_modes.py @@ -76,9 +76,9 @@ settings.register( "Bootstrap mode lowers reputation and certain badge " "thresholds, to values, more suitable " "for the smaller communities, " - "WARNING: your current value for " + "WARNING: your current values for " "Minimum reputation, " - "Bagde Settings and " + "Badge Settings and " "Vote Rules will " "be changed after you modify this setting." ), -- cgit v1.2.3-1-g7c22 From 91e2e7f7b871f0860e06379f76bf7e09ae0acad5 Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Wed, 2 May 2012 13:29:19 -0600 Subject: error in merge --- askbot/startup_procedures.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/askbot/startup_procedures.py b/askbot/startup_procedures.py index 618f1ed7..a5b0c940 100644 --- a/askbot/startup_procedures.py +++ b/askbot/startup_procedures.py @@ -496,11 +496,7 @@ def run_startup_tests(): test_celery() #test_csrf_cookie_domain() test_staticfiles() -<<<<<<< HEAD - test_mysql_south_bug() -======= test_avatar() ->>>>>>> 64ab1ac2d8cfe57e524aca3341abc852b861e512 settings_tester = SettingsTester({ 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY': { 'value': True, -- cgit v1.2.3-1-g7c22 From 05d4e5d810642102e27d199f3ce8c145654ac8dd Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Thu, 19 Jan 2012 12:02:37 -0300 Subject: fixed feed issues with cache. --- askbot/feed.py | 25 +++++++++++----------- .../skins/default/templates/main_page/tab_bar.html | 4 ++-- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/askbot/feed.py b/askbot/feed.py index c1933afe..6df9b8aa 100644 --- a/askbot/feed.py +++ b/askbot/feed.py @@ -26,7 +26,7 @@ class RssIndividualQuestionFeed(Feed): """rss feed class for particular questions """ title = askbot_settings.APP_TITLE + _(' - ')+ _('Individual question feed') - link = askbot_settings.APP_URL + #link = askbot_settings.APP_URL description = askbot_settings.APP_DESCRIPTION copyright = askbot_settings.APP_COPYRIGHT @@ -34,11 +34,11 @@ class RssIndividualQuestionFeed(Feed): if len(bits) != 1: raise ObjectDoesNotExist return Post.objects.get_questions().get(id__exact = bits[0]) - + def item_link(self, item): """get full url to the item """ - return self.link + item.get_absolute_url() + return askbot_settings.APP_URL + item.get_absolute_url() def item_pubdate(self, item): """get date of creation for the item @@ -56,7 +56,6 @@ class RssIndividualQuestionFeed(Feed): chain_elements.append( Post.objects.get_comments().filter(parent=item) ) - answers = Post.objects.get_answers().filter(thread = item.thread) for answer in answers: chain_elements.append([answer,]) @@ -65,7 +64,7 @@ class RssIndividualQuestionFeed(Feed): ) return itertools.chain(*chain_elements) - + def item_title(self, item): """returns the title for the item """ @@ -77,7 +76,7 @@ class RssIndividualQuestionFeed(Feed): elif item.post_type == "comment": title = "Comment by %s for %s" % (item.author, self.title) return title - + def item_description(self, item): """returns the description for the item """ @@ -88,7 +87,7 @@ class RssLastestQuestionsFeed(Feed): """rss feed class for the latest questions """ title = askbot_settings.APP_TITLE + _(' - ')+ _('latest questions') - link = askbot_settings.APP_URL + #link = askbot_settings.APP_URL description = askbot_settings.APP_DESCRIPTION #ttl = 10 copyright = askbot_settings.APP_COPYRIGHT @@ -96,7 +95,7 @@ class RssLastestQuestionsFeed(Feed): def item_link(self, item): """get full url to the item """ - return self.link + item.get_absolute_url() + return askbot_settings.APP_URL + item.get_absolute_url() def item_author_name(self, item): """get name of author @@ -117,8 +116,8 @@ class RssLastestQuestionsFeed(Feed): """returns url without the slug because the slug can change """ - return self.link + item.get_absolute_url(no_slug = True) - + return askbot_settings.APP_URL + item.get_absolute_url(no_slug = True) + def item_description(self, item): """returns the desciption for the item """ @@ -142,12 +141,12 @@ class RssLastestQuestionsFeed(Feed): if tags: #if there are tags in GET, filter the #questions additionally - for tag in tags: + for tag in tags: qs = qs.filter(thread__tags__name = tag) - + return qs.order_by('-thread__last_activity_at')[:30] - + def main(): """main function for use as a script diff --git a/askbot/skins/default/templates/main_page/tab_bar.html b/askbot/skins/default/templates/main_page/tab_bar.html index 8b666155..17ab810e 100644 --- a/askbot/skins/default/templates/main_page/tab_bar.html +++ b/askbot/skins/default/templates/main_page/tab_bar.html @@ -3,9 +3,9 @@ {% cache 0 "scope_sort_tabs" search_tags request.user author_name scope sort query context.page language_code %} {% trans %}RSS{% endtrans %} -- cgit v1.2.3-1-g7c22 From 741edb87ef484865f55f90ab794867c5e56b209f Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Thu, 19 Jan 2012 14:25:24 -0300 Subject: updated feed class again --- askbot/feed.py | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/askbot/feed.py b/askbot/feed.py index 6df9b8aa..490f494b 100644 --- a/askbot/feed.py +++ b/askbot/feed.py @@ -25,10 +25,16 @@ from askbot.conf import settings as askbot_settings class RssIndividualQuestionFeed(Feed): """rss feed class for particular questions """ - title = askbot_settings.APP_TITLE + _(' - ')+ _('Individual question feed') - #link = askbot_settings.APP_URL - description = askbot_settings.APP_DESCRIPTION - copyright = askbot_settings.APP_COPYRIGHT + + def title(self): + return askbot_settings.APP_TITLE + _(' - ') + \ + _('Individual question feed') + + def feed_copyright(self): + return askbot_settings.APP_COPYRIGHT + + def description(self): + return askbot_settings.APP_DESCRIPTION def get_object(self, bits): if len(bits) != 1: @@ -40,6 +46,9 @@ class RssIndividualQuestionFeed(Feed): """ return askbot_settings.APP_URL + item.get_absolute_url() + def link(self): + return askbot_settings.APP_URL + def item_pubdate(self, item): """get date of creation for the item """ @@ -86,17 +95,25 @@ class RssIndividualQuestionFeed(Feed): class RssLastestQuestionsFeed(Feed): """rss feed class for the latest questions """ - title = askbot_settings.APP_TITLE + _(' - ')+ _('latest questions') - #link = askbot_settings.APP_URL - description = askbot_settings.APP_DESCRIPTION - #ttl = 10 - copyright = askbot_settings.APP_COPYRIGHT + + def title(self): + return askbot_settings.APP_TITLE + _(' - ') + \ + _('Individual question feed') + + def feed_copyright(self): + return askbot_settings.APP_COPYRIGHT + + def description(self): + return askbot_settings.APP_DESCRIPTION def item_link(self, item): """get full url to the item """ return askbot_settings.APP_URL + item.get_absolute_url() + def link(self): + return askbot_settings.APP_URL + def item_author_name(self, item): """get name of author """ @@ -119,7 +136,7 @@ class RssLastestQuestionsFeed(Feed): return askbot_settings.APP_URL + item.get_absolute_url(no_slug = True) def item_description(self, item): - """returns the desciption for the item + """returns the description for the item """ return item.text -- cgit v1.2.3-1-g7c22 From e328b92500fccc63d13808598f6705c9cd323fa3 Mon Sep 17 00:00:00 2001 From: Byron Corrales Date: Tue, 21 Feb 2012 15:32:52 -0600 Subject: Ignoring .DS_Store files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 07a3f84f..08e42e57 100755 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,4 @@ run recaptcha /.ve /db.sq3 +*.DS_Store -- cgit v1.2.3-1-g7c22 From 6ea226abfa9d05cd53c63846ee230da6a0a6a2b9 Mon Sep 17 00:00:00 2001 From: Byron Corrales Date: Wed, 22 Feb 2012 00:57:40 -0600 Subject: Making the style of the buttons a css style standart easy to customize with less --- askbot/skins/default/media/style/lib_style.css | 22 ++ askbot/skins/default/media/style/lib_style.less | 37 +++ askbot/skins/default/media/style/style.css | 388 ++++++++++++++++++------ askbot/skins/default/media/style/style.less | 144 +++------ 4 files changed, 401 insertions(+), 190 deletions(-) create mode 100644 askbot/skins/default/media/style/lib_style.css diff --git a/askbot/skins/default/media/style/lib_style.css b/askbot/skins/default/media/style/lib_style.css new file mode 100644 index 00000000..a92af477 --- /dev/null +++ b/askbot/skins/default/media/style/lib_style.css @@ -0,0 +1,22 @@ +/* General Predifined classes, read more in lesscss.org */ +/* Variables for Colors*/ +/* Variables for fonts*/ +/* "Trebuchet MS", sans-serif;*/ +/* Buttons */ +.button-style-hover { + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + text-decoration: none; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; +} +/* General styles for gradients */ +/* Receive exactly positions for background Sprite */ +/* CSS3 Elements */ diff --git a/askbot/skins/default/media/style/lib_style.less b/askbot/skins/default/media/style/lib_style.less index 941c83ff..bedd8c60 100644 --- a/askbot/skins/default/media/style/lib_style.less +++ b/askbot/skins/default/media/style/lib_style.less @@ -17,6 +17,43 @@ @main-font:'Yanone Kaffeesatz', sans-serif; @secondary-font:Arial; +/* Buttons */ + +.button-style(@w:100px ,@h:20px, @f:14px){ + width:@w; + height:@h; + font-size:@f; + text-align:center; + text-decoration:none; + cursor:pointer; + color:@button-label; + font-family:@main-font; + .text-shadow(0px,1px,0px,#c6d9dd); + border-top:#eaf2f3 1px solid; + .linear-gradient(#d1e2e5,#a9c2c7); + .rounded-corners(4px); + .box-shadow(1px, 1px, 2px, #636363) +} + +.button-style-hover{ + .linear-gradient(#cde5e9,#94b3ba); + text-decoration:none; + .text-shadow(0px, 1px, 0px, #c6d9dd); +} + +/* General styles for gradients */ + +.linear-gradient(@start:#eee,@end:#fff,@stop:25%){ + background-color: @start; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@start), color-stop(@stop, @start), to(@end)); + background-image: -webkit-linear-gradient(@start, @start @stop, @end); + background-image: -moz-linear-gradient(top, @start, @start @stop, @end); + background-image: -ms-linear-gradient(@start, @start @stop, @end); + background-image: -o-linear-gradient(@start, @start @stop, @end); + background-image: linear-gradient(@start, @start @stop, @end); +} + /* Receive exactly positions for background Sprite */ .sprites(@hor,@vert,@back:url(../images/sprites.png)){ diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index 5752b502..c572b4f7 100644 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -3,6 +3,22 @@ /* Variables for Colors*/ /* Variables for fonts*/ /* "Trebuchet MS", sans-serif;*/ +/* Buttons */ +.button-style-hover { + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + text-decoration: none; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; +} +/* General styles for gradients */ /* Receive exactly positions for background Sprite */ /* CSS3 Elements */ /* Library of predifined less functions styles */ @@ -427,28 +443,49 @@ body.anon #searchBar .searchInputCancelable { #askButton { /* check blocks/secondary_header.html and widgets/ask_button.html*/ - background: url(../images/bigbutton.png) repeat-x bottom; line-height: 44px; - text-align: center; + margin-top: 6px; + float: right; + text-transform: uppercase; width: 200px; height: 42px; font-size: 23px; + text-align: center; + text-decoration: none; + cursor: pointer; color: #4a757f; - margin-top: 7px; - float: right; - text-transform: uppercase; - border-radius: 5px; - -ms-border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - -khtml-border-radius: 5px; + font-family: 'Yanone Kaffeesatz', sans-serif; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; + border-top: #eaf2f3 1px solid; + background-color: #d1e2e5; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7)); + background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + border-radius: 4px; + -ms-border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + -khtml-border-radius: 4px; -webkit-box-shadow: 1px 1px 2px #636363; -moz-box-shadow: 1px 1px 2px #636363; box-shadow: 1px 1px 2px #636363; } #askButton:hover { + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); text-decoration: none; - background: url(../images/bigbutton.png) repeat-x top; text-shadow: 0px 1px 0px #c6d9dd; -moz-text-shadow: 0px 1px 0px #c6d9dd; -webkit-text-shadow: 0px 1px 0px #c6d9dd; @@ -555,15 +592,37 @@ body.anon #searchBar .searchInputCancelable { } .box .inputs #interestingTagAdd, .box .inputs #ignoredTagAdd { - background: url(../images/small-button-blue.png) repeat-x top; border: 0; - color: #4a757f; font-weight: bold; - font-size: 12px; + margin-top: -2px; width: 30px; height: 27px; - margin-top: -2px; + font-size: 12px; + text-align: center; + text-decoration: none; cursor: pointer; + color: #4a757f; + font-family: 'Yanone Kaffeesatz', sans-serif; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; + border-top: #eaf2f3 1px solid; + background-color: #d1e2e5; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7)); + background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + border-radius: 4px; + -ms-border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-box-shadow: 1px 1px 2px #636363; + -moz-box-shadow: 1px 1px 2px #636363; + box-shadow: 1px 1px 2px #636363; border-radius: 4px; -ms-border-radius: 4px; -moz-border-radius: 4px; @@ -572,32 +631,52 @@ body.anon #searchBar .searchInputCancelable { text-shadow: 0px 1px 0px #e6f6fa; -moz-text-shadow: 0px 1px 0px #e6f6fa; -webkit-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-box-shadow: 1px 1px 2px #808080; - -moz-box-shadow: 1px 1px 2px #808080; - box-shadow: 1px 1px 2px #808080; } .box .inputs #interestingTagAdd:hover, .box .inputs #ignoredTagAdd:hover { - background: url(../images/small-button-blue.png) repeat-x bottom; + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + text-decoration: none; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; } .box img.gravatar { margin: 1px; } .box a.followed, .box a.follow { - background: url(../images/medium-button.png) top repeat-x; - height: 34px; line-height: 34px; - text-align: center; border: 0; - font-family: 'Yanone Kaffeesatz', sans-serif; - color: #4a757f; font-weight: normal; - font-size: 21px; margin-top: 3px; display: block; width: 120px; + height: 34px; + font-size: 21px; + text-align: center; text-decoration: none; + cursor: pointer; + color: #4a757f; + font-family: 'Yanone Kaffeesatz', sans-serif; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; + border-top: #eaf2f3 1px solid; + background-color: #d1e2e5; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7)); + background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); border-radius: 4px; -ms-border-radius: 4px; -moz-border-radius: 4px; @@ -611,8 +690,18 @@ body.anon #searchBar .searchInputCancelable { } .box a.followed:hover, .box a.follow:hover { + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); text-decoration: none; - background: url(../images/medium-button.png) bottom repeat-x; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; text-shadow: 0px 1px 0px #c6d9dd; -moz-text-shadow: 0px 1px 0px #c6d9dd; -webkit-text-shadow: 0px 1px 0px #c6d9dd; @@ -1261,14 +1350,28 @@ ul#related-tags li { .ask-page input.submit, .edit-question-page input.submit { float: left; - background: url(../images/medium-button.png) top repeat-x; - height: 34px; - border: 0; - font-family: 'Yanone Kaffeesatz', sans-serif; - color: #4a757f; font-weight: normal; - font-size: 21px; margin-top: 3px; + width: 160px; + height: 34px; + font-size: 21px; + text-align: center; + text-decoration: none; + cursor: pointer; + color: #4a757f; + font-family: 'Yanone Kaffeesatz', sans-serif; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; + border-top: #eaf2f3 1px solid; + background-color: #d1e2e5; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7)); + background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); border-radius: 4px; -ms-border-radius: 4px; -moz-border-radius: 4px; @@ -1282,8 +1385,18 @@ ul#related-tags li { #fmanswer input.submit:hover, .ask-page input.submit:hover, .edit-question-page input.submit:hover { + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); text-decoration: none; - background: url(../images/medium-button.png) bottom repeat-x; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; text-shadow: 0px 1px 0px #c6d9dd; -moz-text-shadow: 0px 1px 0px #c6d9dd; -webkit-text-shadow: 0px 1px 0px #c6d9dd; @@ -1301,7 +1414,12 @@ ul#related-tags li { border-top: 0; padding: 10px; margin-bottom: 10px; - width: 717px; + width: 710px; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + #editor { + width: 717px; + } } #id_title { width: 100%; @@ -1700,31 +1818,49 @@ ul#related-tags li { width: 100px; } .question-page .comments button { - background: url(../images/small-button-blue.png) repeat-x top; - border: 0; - color: #4a757f; - font-family: Arial; - font-size: 13px; - width: 100px; - font-weight: bold; - height: 27px; line-height: 25px; margin-bottom: 5px; + width: 100px; + height: 27px; + font-size: 12px; + text-align: center; + text-decoration: none; cursor: pointer; + color: #4a757f; + font-family: 'Yanone Kaffeesatz', sans-serif; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; + border-top: #eaf2f3 1px solid; + background-color: #d1e2e5; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7)); + background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); border-radius: 4px; -ms-border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; -khtml-border-radius: 4px; - text-shadow: 0px 1px 0px #e6f6fa; - -moz-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-box-shadow: 1px 1px 2px #808080; - -moz-box-shadow: 1px 1px 2px #808080; - box-shadow: 1px 1px 2px #808080; + -webkit-box-shadow: 1px 1px 2px #636363; + -moz-box-shadow: 1px 1px 2px #636363; + box-shadow: 1px 1px 2px #636363; + font-family: Arial; + font-weight: bold; } .question-page .comments button:hover { - background: url(../images/small-button-blue.png) bottom repeat-x; + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + text-decoration: none; text-shadow: 0px 1px 0px #c6d9dd; -moz-text-shadow: 0px 1px 0px #c6d9dd; -webkit-text-shadow: 0px 1px 0px #c6d9dd; @@ -2070,35 +2206,55 @@ ul#related-tags li { .users-page input.submit, .user-profile-edit-page input.submit, .user-profile-page input.submit { - background: url(../images/small-button-blue.png) repeat-x top; - border: 0; - color: #4a757f; - font-weight: bold; - font-size: 13px; - font-family: Arial; - height: 26px; + font-weight: normal; margin: 5px 0px; width: 100px; + height: 26px; + font-size: 15px; + text-align: center; + text-decoration: none; cursor: pointer; + color: #4a757f; + font-family: 'Yanone Kaffeesatz', sans-serif; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; + border-top: #eaf2f3 1px solid; + background-color: #d1e2e5; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7)); + background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); border-radius: 4px; -ms-border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; -khtml-border-radius: 4px; - text-shadow: 0px 1px 0px #e6f6fa; - -moz-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-box-shadow: 1px 1px 2px #808080; - -moz-box-shadow: 1px 1px 2px #808080; - box-shadow: 1px 1px 2px #808080; + -webkit-box-shadow: 1px 1px 2px #636363; + -moz-box-shadow: 1px 1px 2px #636363; + box-shadow: 1px 1px 2px #636363; + font-family: Arial; } .openid-signin input.submit:hover, .meta input.submit:hover, .users-page input.submit:hover, .user-profile-edit-page input.submit:hover, .user-profile-page input.submit:hover { - background: url(../images/small-button-blue.png) repeat-x bottom; + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); text-decoration: none; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; } .openid-signin .cancel, .meta .cancel, @@ -2145,34 +2301,55 @@ ul#related-tags li { #local_login_buttons .submit-b, #password-fs .submit-b, #openid-fs .submit-b { - background: url(../images/small-button-blue.png) repeat-x top; - border: 0; - color: #4a757f; - font-weight: bold; - font-size: 13px; - font-family: Arial; + width: 100px; height: 24px; - margin-top: -2px; - padding-left: 10px; - padding-right: 10px; + font-size: 15px; + text-align: center; + text-decoration: none; cursor: pointer; + color: #4a757f; + font-family: 'Yanone Kaffeesatz', sans-serif; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; + border-top: #eaf2f3 1px solid; + background-color: #d1e2e5; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7)); + background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); border-radius: 4px; -ms-border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; -khtml-border-radius: 4px; - text-shadow: 0px 1px 0px #e6f6fa; - -moz-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-box-shadow: 1px 1px 2px #808080; - -moz-box-shadow: 1px 1px 2px #808080; - box-shadow: 1px 1px 2px #808080; + -webkit-box-shadow: 1px 1px 2px #636363; + -moz-box-shadow: 1px 1px 2px #636363; + box-shadow: 1px 1px 2px #636363; + font-family: Arial; + font-weight: bold; + padding-right: 10px; + border: 0; } #email-input-fs .submit-b:hover, #local_login_buttons .submit-b:hover, #password-fs .submit-b:hover, #openid-fs .submit-b:hover { - background: url(../images/small-button-blue.png) repeat-x bottom; + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + text-decoration: none; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; } .openid-input { background: url(../images/openid.gif) no-repeat; @@ -2302,31 +2479,52 @@ a:hover.medal { .follow-toggle, .submit { border: 0 !important; - color: #4a757f; font-weight: bold; - font-size: 12px; - height: 26px; line-height: 26px; margin-top: -2px; - font-size: 15px; + width: 100px; + height: 26px; + font-size: 12px; + text-align: center; + text-decoration: none; cursor: pointer; + color: #4a757f; font-family: 'Yanone Kaffeesatz', sans-serif; - background: url(../images/small-button-blue.png) repeat-x top; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; + border-top: #eaf2f3 1px solid; + background-color: #d1e2e5; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7)); + background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); + background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7); border-radius: 4px; -ms-border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; -khtml-border-radius: 4px; - text-shadow: 0px 1px 0px #e6f6fa; - -moz-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-box-shadow: 1px 1px 2px #808080; - -moz-box-shadow: 1px 1px 2px #808080; - box-shadow: 1px 1px 2px #808080; + -webkit-box-shadow: 1px 1px 2px #636363; + -moz-box-shadow: 1px 1px 2px #636363; + box-shadow: 1px 1px 2px #636363; } .follow-toggle:hover, .submit:hover { - background: url(../images/small-button-blue.png) repeat-x bottom; + background-color: #cde5e9; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba)); + background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba); + background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); + text-decoration: none; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; text-decoration: none !important; } .follow-toggle .follow { @@ -3246,3 +3444,11 @@ body.anon.lang-es #searchBar .searchInput { body.anon.lang-es #searchBar .searchInputCancelable { width: 390px; } +a.re_expand { + color: #616161; + text-decoration: none; +} +a.re_expand .re_content { + display: none; + margin-left: 77px; +} diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index e63ff373..57d88c41 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -154,6 +154,7 @@ h1 { padding: 10px 0 5px 0px; } + /* ----- Extra space above for messages ----- */ body.user-messages { @@ -463,24 +464,15 @@ body.anon { #askButton{ /* check blocks/secondary_header.html and widgets/ask_button.html*/ - background: url(../images/bigbutton.png) repeat-x bottom; line-height:44px; - text-align:center; - width:200px; - height:42px; - font-size:23px; - color:@button-label; - margin-top:7px; + margin-top:6px; float:right; text-transform:uppercase; - .rounded-corners(5px); - .box-shadow(1px, 1px, 2px, #636363) + .button-style(200px, 42px, 23px); } #askButton:hover{ - text-decoration:none; - background: url(../images/bigbutton.png) repeat-x top; - .text-shadow(0px, 1px, 0px, #c6d9dd) + .button-style-hover; } /* ----- Content layout, check two_column_body.html or one_column_body.html ----- */ @@ -590,23 +582,15 @@ body.anon { height:25px; } #interestingTagAdd, #ignoredTagAdd{ - background:url(../images/small-button-blue.png) repeat-x top; border:0; - color:@button-label; font-weight:bold; - font-size:12px; - width:30px; - height:27px; margin-top:-2px; - cursor:pointer; + .button-style(30px,27px,12px); .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080); - - + .text-shadow(0px,1px,0px,#E6F6FA); } #interestingTagAdd:hover, #ignoredTagAdd:hover{ - background:url(../images/small-button-blue.png) repeat-x bottom; + .button-style-hover; } } @@ -617,28 +601,17 @@ body.anon { /* widgets for question template */ a.followed, a.follow{ - background: url(../images/medium-button.png) top repeat-x; - height:34px; line-height:34px; - text-align:center; border:0; - font-family:@main-font; - color:@button-label; font-weight:normal; - font-size:21px; margin-top:3px; - display:block; - width:120px; - text-decoration:none; - .rounded-corners(4px); - .box-shadow(1px, 1px, 2px, #636363); + .button-style(120px,34px,21px); .center; } a.followed:hover, a.follow:hover{ - text-decoration:none; - background: url(../images/medium-button.png) bottom repeat-x; + .button-style-hover; .text-shadow(0px, 1px, 0px, #c6d9dd); } @@ -1352,24 +1325,16 @@ ul#related-tags li { .ask-page input.submit, .edit-question-page input.submit { float: left; - background: url(../images/medium-button.png) top repeat-x; - height:34px; - border:0; - font-family:@main-font; - color:@button-label; font-weight:normal; - font-size:21px; margin-top:3px; - .rounded-corners(4px); - .box-shadow(1px, 1px, 2px, #636363); + .button-style(160px,34px,21px); margin-right:7px; } #fmanswer input.submit:hover, .ask-page input.submit:hover, .edit-question-page input.submit:hover{ - text-decoration:none; - background: url(../images/medium-button.png) bottom repeat-x; + .button-style-hover; .text-shadow(0px, 1px, 0px, #c6d9dd) } #editor { /*adjustment for editor preview*/ @@ -1383,7 +1348,13 @@ ul#related-tags li { border-top:0; padding:10px; margin-bottom:10px; - width:717px; + width:710px; +} + +@media screen and (-webkit-min-device-pixel-ratio:0){ + #editor{ + width:717px; + } } #id_title { @@ -1796,24 +1767,14 @@ ul#related-tags li { width: 100px; } button{ - background:url(../images/small-button-blue.png) repeat-x top; - border:0; - color:@button-label; - font-family:@body-font; - font-size:13px; - width:100px; - font-weight:bold; - height:27px; line-height:25px; margin-bottom:5px; - cursor:pointer; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080); + .button-style(100px,27px,12px); + font-family:@body-font; + font-weight:bold; } button:hover{ - background: url(../images/small-button-blue.png) bottom repeat-x; - .text-shadow(0px, 1px, 0px, #c6d9dd); + .button-style-hover; } .counter { display: inline-block; @@ -2155,23 +2116,13 @@ ul#related-tags li { font-size:14px; } input.submit{ - background:url(../images/small-button-blue.png) repeat-x top; - border:0; - color:@button-label; - font-weight:bold; - font-size:13px; - font-family:@body-font; - height:26px; + font-weight:normal; margin:5px 0px; - width:100px; - cursor:pointer; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080); + .button-style(100px,26px,15px); + font-family:@body-font; } input.submit:hover{ - background:url(../images/small-button-blue.png) repeat-x bottom; - text-decoration:none; + .button-style-hover; } .cancel{ background:url(../images/small-button-cancel.png) repeat-x top !important; @@ -2194,25 +2145,19 @@ ul#related-tags li { width:200px; } .submit-b{ - background:url(../images/small-button-blue.png) repeat-x top; - border:0; - color:@button-label; - font-weight:bold; - font-size:13px; + .button-style(100px,24px,15px); font-family:@body-font; - height:24px; - margin-top:-2px; - padding-left:10px; + font-weight:bold; padding-right:10px; - cursor:pointer; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080) + border:0; } + .submit-b:hover{ - background:url(../images/small-button-blue.png) repeat-x bottom; + .button-style-hover; } } + + .openid-input { background: url(../images/openid.gif) no-repeat; padding-left: 15px; @@ -2357,23 +2302,14 @@ a:hover.medal { .follow-toggle,.submit { border:0 !important; - color:@button-label; font-weight:bold; - font-size:12px; - height:26px; line-height:26px; margin-top:-2px; - font-size:15px; - cursor:pointer; - font-family:@main-font; - background:url(../images/small-button-blue.png) repeat-x top; - .rounded-corners(4px); - .text-shadow(0px,1px,0px,#E6F6FA); - .box-shadow(1px, 1px, 2px, #808080) + .button-style(100px,26px,12px); } .follow-toggle:hover, .submit:hover { - background:url(../images/small-button-blue.png) repeat-x bottom; + .button-style-hover; text-decoration:none !important; } @@ -3383,3 +3319,13 @@ body.anon.lang-es { } } } + +a.re_expand{ + color: #616161; + text-decoration:none; +} + +a.re_expand .re_content{ + display:none; + margin-left:77px; +} -- cgit v1.2.3-1-g7c22 From 629c67dd986c9d2af4ec966916d922a779824d51 Mon Sep 17 00:00:00 2001 From: Byron Corrales Date: Thu, 23 Feb 2012 01:22:01 -0600 Subject: Fixing vote buttons position on IE browsers --- askbot/skins/default/media/style/style.css | 6 ++++++ askbot/skins/default/media/style/style.less | 5 +++++ askbot/skins/default/templates/question/question_card.html | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index c572b4f7..b3229e4e 100644 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -535,6 +535,7 @@ body.anon #searchBar .searchInputCancelable { padding-right: 10px; margin-bottom: 10px; font-family: 'Yanone Kaffeesatz', sans-serif; + width: 190px; } .box h3 { color: #4a757f; @@ -2001,6 +2002,11 @@ ul#related-tags li { text-align: center; padding-top: 2px; margin: 10px 10px 0px 3px; + /* smalls IE fixes */ + + *margin: 0; + *height: 210px; + *width: 30px; } .question-page .vote-buttons IMG { cursor: pointer; diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index 57d88c41..5d10b193 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -523,6 +523,7 @@ body.anon { padding-right:10px; margin-bottom:10px; font-family:@main-font; + width:190px; } h3{ color:#4a757f; @@ -1919,6 +1920,10 @@ ul#related-tags li { text-align: center; padding-top: 2px; margin:10px 10px 0px 3px; + /* smalls IE fixes */ + *margin:0; + *height:210px; + *width:30px; } .vote-buttons IMG { diff --git a/askbot/skins/default/templates/question/question_card.html b/askbot/skins/default/templates/question/question_card.html index 08f7ccee..dd52ea0f 100644 --- a/askbot/skins/default/templates/question/question_card.html +++ b/askbot/skins/default/templates/question/question_card.html @@ -29,4 +29,4 @@ -
+ -- cgit v1.2.3-1-g7c22 From 1a9533b7e8a63af5985447a2930e5b7bbb4a6397 Mon Sep 17 00:00:00 2001 From: Byron Corrales Date: Thu, 1 Mar 2012 19:11:28 -0600 Subject: a little style fix of overlap when tags have big names --- askbot/skins/default/media/style/style.css | 2 +- askbot/skins/default/media/style/style.less | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index b3229e4e..b218e5eb 100644 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -1139,7 +1139,7 @@ ul#related-tags { ul.tags li { float: left; display: block; - margin: 0 8px 0 0; + margin: 0 8px 8px 0; padding: 0; height: 20px; } diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index 5d10b193..b990a893 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -1107,7 +1107,7 @@ ul#related-tags { ul.tags li { float:left; display: block; - margin: 0 8px 0 0; + margin: 0 8px 8px 0; padding: 0; height:20px; } -- cgit v1.2.3-1-g7c22 From 44cebf852fb2fc3f5f844be5c7a9822416bb10ba Mon Sep 17 00:00:00 2001 From: Byron Corrales Date: Sun, 8 Apr 2012 21:11:15 -0600 Subject: adding selector close, missing after merge --- askbot/skins/default/media/style/style.less | 1 - 1 file changed, 1 deletion(-) diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index b990a893..0d1e8112 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -3324,7 +3324,6 @@ body.anon.lang-es { } } } - a.re_expand{ color: #616161; text-decoration:none; -- cgit v1.2.3-1-g7c22 From af4003cc92047339a2b400e7de8b504f3877c6f4 Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Thu, 19 Jan 2012 12:02:37 -0300 Subject: fixed feed issues with cache. --- askbot/feed.py | 26 +++++++++++----------- .../skins/default/templates/main_page/tab_bar.html | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/askbot/feed.py b/askbot/feed.py index c1933afe..8bc9d1a4 100644 --- a/askbot/feed.py +++ b/askbot/feed.py @@ -26,7 +26,7 @@ class RssIndividualQuestionFeed(Feed): """rss feed class for particular questions """ title = askbot_settings.APP_TITLE + _(' - ')+ _('Individual question feed') - link = askbot_settings.APP_URL + #link = askbot_settings.APP_URL description = askbot_settings.APP_DESCRIPTION copyright = askbot_settings.APP_COPYRIGHT @@ -34,11 +34,11 @@ class RssIndividualQuestionFeed(Feed): if len(bits) != 1: raise ObjectDoesNotExist return Post.objects.get_questions().get(id__exact = bits[0]) - + def item_link(self, item): """get full url to the item """ - return self.link + item.get_absolute_url() + return askbot_settings.APP_URL + item.get_absolute_url() def item_pubdate(self, item): """get date of creation for the item @@ -56,7 +56,7 @@ class RssIndividualQuestionFeed(Feed): chain_elements.append( Post.objects.get_comments().filter(parent=item) ) - + answers = Post.objects.get_answers().filter(thread = item.thread) for answer in answers: chain_elements.append([answer,]) @@ -65,7 +65,7 @@ class RssIndividualQuestionFeed(Feed): ) return itertools.chain(*chain_elements) - + def item_title(self, item): """returns the title for the item """ @@ -77,7 +77,7 @@ class RssIndividualQuestionFeed(Feed): elif item.post_type == "comment": title = "Comment by %s for %s" % (item.author, self.title) return title - + def item_description(self, item): """returns the description for the item """ @@ -88,7 +88,7 @@ class RssLastestQuestionsFeed(Feed): """rss feed class for the latest questions """ title = askbot_settings.APP_TITLE + _(' - ')+ _('latest questions') - link = askbot_settings.APP_URL + #link = askbot_settings.APP_URL description = askbot_settings.APP_DESCRIPTION #ttl = 10 copyright = askbot_settings.APP_COPYRIGHT @@ -96,7 +96,7 @@ class RssLastestQuestionsFeed(Feed): def item_link(self, item): """get full url to the item """ - return self.link + item.get_absolute_url() + return askbot_settings.APP_URL + item.get_absolute_url() def item_author_name(self, item): """get name of author @@ -117,8 +117,8 @@ class RssLastestQuestionsFeed(Feed): """returns url without the slug because the slug can change """ - return self.link + item.get_absolute_url(no_slug = True) - + return askbot_settings.APP_URL + item.get_absolute_url(no_slug = True) + def item_description(self, item): """returns the desciption for the item """ @@ -142,12 +142,12 @@ class RssLastestQuestionsFeed(Feed): if tags: #if there are tags in GET, filter the #questions additionally - for tag in tags: + for tag in tags: qs = qs.filter(thread__tags__name = tag) - + return qs.order_by('-thread__last_activity_at')[:30] - + def main(): """main function for use as a script diff --git a/askbot/skins/default/templates/main_page/tab_bar.html b/askbot/skins/default/templates/main_page/tab_bar.html index 8b666155..17ab810e 100644 --- a/askbot/skins/default/templates/main_page/tab_bar.html +++ b/askbot/skins/default/templates/main_page/tab_bar.html @@ -3,9 +3,9 @@ {% cache 0 "scope_sort_tabs" search_tags request.user author_name scope sort query context.page language_code %}
{% trans %}RSS{% endtrans %} -- cgit v1.2.3-1-g7c22 From 7efa08b0d1d50aa48ccaa82314ba2231b56821dc Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Thu, 19 Jan 2012 14:25:24 -0300 Subject: updated feed class again --- askbot/feed.py | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/askbot/feed.py b/askbot/feed.py index 8bc9d1a4..776aad5e 100644 --- a/askbot/feed.py +++ b/askbot/feed.py @@ -25,10 +25,16 @@ from askbot.conf import settings as askbot_settings class RssIndividualQuestionFeed(Feed): """rss feed class for particular questions """ - title = askbot_settings.APP_TITLE + _(' - ')+ _('Individual question feed') - #link = askbot_settings.APP_URL - description = askbot_settings.APP_DESCRIPTION - copyright = askbot_settings.APP_COPYRIGHT + + def title(self): + return askbot_settings.APP_TITLE + _(' - ') + \ + _('Individual question feed') + + def feed_copyright(self): + return askbot_settings.APP_COPYRIGHT + + def description(self): + return askbot_settings.APP_DESCRIPTION def get_object(self, bits): if len(bits) != 1: @@ -40,6 +46,9 @@ class RssIndividualQuestionFeed(Feed): """ return askbot_settings.APP_URL + item.get_absolute_url() + def link(self): + return askbot_settings.APP_URL + def item_pubdate(self, item): """get date of creation for the item """ @@ -87,17 +96,25 @@ class RssIndividualQuestionFeed(Feed): class RssLastestQuestionsFeed(Feed): """rss feed class for the latest questions """ - title = askbot_settings.APP_TITLE + _(' - ')+ _('latest questions') - #link = askbot_settings.APP_URL - description = askbot_settings.APP_DESCRIPTION - #ttl = 10 - copyright = askbot_settings.APP_COPYRIGHT + + def title(self): + return askbot_settings.APP_TITLE + _(' - ') + \ + _('Individual question feed') + + def feed_copyright(self): + return askbot_settings.APP_COPYRIGHT + + def description(self): + return askbot_settings.APP_DESCRIPTION def item_link(self, item): """get full url to the item """ return askbot_settings.APP_URL + item.get_absolute_url() + def link(self): + return askbot_settings.APP_URL + def item_author_name(self, item): """get name of author """ @@ -120,7 +137,7 @@ class RssLastestQuestionsFeed(Feed): return askbot_settings.APP_URL + item.get_absolute_url(no_slug = True) def item_description(self, item): - """returns the desciption for the item + """returns the description for the item """ return item.text -- cgit v1.2.3-1-g7c22 From 60b891ecb03184ac9d26039ba57466ad712d52b9 Mon Sep 17 00:00:00 2001 From: Adolfo Fitoria Date: Thu, 19 Apr 2012 10:39:56 -0600 Subject: added fallback for update_media_revision --- askbot/skins/utils.py | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/askbot/skins/utils.py b/askbot/skins/utils.py index a07b1fa9..20c29669 100644 --- a/askbot/skins/utils.py +++ b/askbot/skins/utils.py @@ -3,7 +3,7 @@ the lookup resolution process for templates and media works as follows: * look up item in selected skin * if not found look in 'default' -* raise an exception +* raise an exception """ import os import logging @@ -56,7 +56,7 @@ def get_available_skins(selected=None): #re-insert default as a last item skins['default'] = default_dir - skins['common'] = common_dir + skins['common'] = common_dir return skins @@ -71,7 +71,7 @@ def get_path_to_skin(skin): return skin_dirs.get(skin, None) def get_skin_choices(): - """returns a tuple for use as a set of + """returns a tuple for use as a set of choices in the form""" skin_names = list(reversed(get_available_skins().keys())) return zip(skin_names, skin_names) @@ -86,7 +86,7 @@ def resolve_skin_for_media(media=None, preferred_skin = None): def get_media_url(url, ignore_missing = False): """returns url prefixed with the skin name - of the first skin that contains the file + of the first skin that contains the file directories are searched in this order: askbot_settings.ASKBOT_DEFAULT_SKIN, then 'default', then 'commmon' if file is not found - returns None @@ -156,7 +156,7 @@ def get_media_url(url, ignore_missing = False): url = django_settings.STATIC_URL + use_skin + '/media/' + url url = os.path.normpath(url).replace('\\', '/') - + if resource_revision: url += '?v=%d' % resource_revision @@ -174,7 +174,7 @@ def update_media_revision(skin = None): if skin in get_skin_choices(): skin_path = get_path_to_skin(skin) else: - raise MediaNotFound('Skin %s not found' % skin) + raise MediaNotFound('Skin %s not found' % skin) else: skin = 'default' skin_path = get_path_to_skin(askbot_settings.ASKBOT_DEFAULT_SKIN) @@ -193,6 +193,26 @@ def update_media_revision(skin = None): if current_hash != askbot_settings.MEDIA_RESOURCE_REVISION_HASH: askbot_settings.update('MEDIA_RESOURCE_REVISION', resource_revision + 1) - askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash) + askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash) + try: + askbot_settings.update('MEDIA_RESOURCE_REVISION', resource_revision + 1) + logging.debug('media revision worked for MEDIA_RESOURCE_REVISION') + except Exception, e: + logging.critical(e.message) + safe_settings_update('MEDIA_RESOURCE_REVISION', resource_revision + 1) + + try: + askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash) + logging.debug('media revision worked for MEDIA_RESOURCE_REVISION_HASH') + except Exception, e: + logging.critical(e.message) + safe_settings_update('MEDIA_RESOURCE_REVISION_HASH', current_hash) logging.debug('MEDIA_RESOURCE_REVISION changed') - askbot_settings.MEDIA_RESOURCE_REVISION + + +def safe_settings_update(key, value): + '''Fallback when IntegrityError bug raises''' + from askbot.deps.livesettings.models import Setting + setting = Setting.objects.get(key=key) + setting.value = value + setting.save() -- cgit v1.2.3-1-g7c22 -- cgit v1.2.3-1-g7c22 From 21f93886df3a622623d19c1cbf4fd88ae8dc8fb8 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Wed, 9 May 2012 22:08:21 -0400 Subject: fixed a bug in an assertion statement and recompiled the css file --- askbot/askbot | 0 .../default/media/style/node_modules/.bin/lessc | 1 + .../media/style/node_modules/less/.npmignore | 2 + .../media/style/node_modules/less/CHANGELOG | 26 + .../default/media/style/node_modules/less/LICENSE | 179 +++ .../default/media/style/node_modules/less/Makefile | 75 ++ .../media/style/node_modules/less/README.md | 20 + .../node_modules/less/benchmark/less-benchmark.js | 47 + .../media/style/node_modules/less/bin/lessc | 139 +++ .../media/style/node_modules/less/index.html | 10 + .../style/node_modules/less/lib/less/browser.js | 380 ++++++ .../style/node_modules/less/lib/less/colors.js | 151 +++ .../style/node_modules/less/lib/less/cssmin.js | 355 ++++++ .../style/node_modules/less/lib/less/functions.js | 228 ++++ .../style/node_modules/less/lib/less/index.js | 148 +++ .../style/node_modules/less/lib/less/parser.js | 1305 ++++++++++++++++++++ .../style/node_modules/less/lib/less/rhino.js | 62 + .../media/style/node_modules/less/lib/less/tree.js | 17 + .../style/node_modules/less/lib/less/tree/alpha.js | 17 + .../node_modules/less/lib/less/tree/anonymous.js | 13 + .../node_modules/less/lib/less/tree/assignment.js | 17 + .../style/node_modules/less/lib/less/tree/call.js | 48 + .../style/node_modules/less/lib/less/tree/color.js | 101 ++ .../node_modules/less/lib/less/tree/comment.js | 14 + .../node_modules/less/lib/less/tree/condition.js | 42 + .../node_modules/less/lib/less/tree/dimension.js | 49 + .../node_modules/less/lib/less/tree/directive.js | 35 + .../node_modules/less/lib/less/tree/element.js | 47 + .../node_modules/less/lib/less/tree/expression.js | 23 + .../node_modules/less/lib/less/tree/import.js | 79 ++ .../node_modules/less/lib/less/tree/javascript.js | 51 + .../node_modules/less/lib/less/tree/keyword.js | 19 + .../style/node_modules/less/lib/less/tree/media.js | 114 ++ .../style/node_modules/less/lib/less/tree/mixin.js | 135 ++ .../node_modules/less/lib/less/tree/operation.js | 32 + .../style/node_modules/less/lib/less/tree/paren.js | 16 + .../node_modules/less/lib/less/tree/quoted.js | 29 + .../style/node_modules/less/lib/less/tree/rule.js | 42 + .../node_modules/less/lib/less/tree/ruleset.js | 216 ++++ .../node_modules/less/lib/less/tree/selector.js | 42 + .../style/node_modules/less/lib/less/tree/url.js | 25 + .../style/node_modules/less/lib/less/tree/value.js | 24 + .../node_modules/less/lib/less/tree/variable.js | 26 + .../media/style/node_modules/less/package.json | 36 + .../style/node_modules/less/test/css/colors.css | 58 + .../style/node_modules/less/test/css/comments.css | 56 + .../style/node_modules/less/test/css/css-3.css | 58 + .../node_modules/less/test/css/css-escapes.css | 20 + .../media/style/node_modules/less/test/css/css.css | 89 ++ .../style/node_modules/less/test/css/functions.css | 43 + .../node_modules/less/test/css/ie-filters.css | 5 + .../style/node_modules/less/test/css/import.css | 23 + .../node_modules/less/test/css/javascript.css | 22 + .../style/node_modules/less/test/css/lazy-eval.css | 3 + .../style/node_modules/less/test/css/media.css | 79 ++ .../node_modules/less/test/css/mixins-args.css | 76 ++ .../node_modules/less/test/css/mixins-closure.css | 9 + .../node_modules/less/test/css/mixins-guards.css | 58 + .../less/test/css/mixins-important.css | 17 + .../node_modules/less/test/css/mixins-nested.css | 14 + .../node_modules/less/test/css/mixins-pattern.css | 47 + .../style/node_modules/less/test/css/mixins.css | 71 ++ .../node_modules/less/test/css/operations.css | 49 + .../style/node_modules/less/test/css/parens.css | 20 + .../style/node_modules/less/test/css/rulesets.css | 33 + .../style/node_modules/less/test/css/scope.css | 15 + .../style/node_modules/less/test/css/selectors.css | 69 ++ .../style/node_modules/less/test/css/strings.css | 40 + .../style/node_modules/less/test/css/variables.css | 27 + .../node_modules/less/test/css/whitespace.css | 38 + .../style/node_modules/less/test/less-test.js | 73 ++ .../less/test/less/import/import-test-d.css | 1 + askbot/skins/default/media/style/style.css | 284 +++-- askbot/views/commands.py | 2 +- 74 files changed, 5765 insertions(+), 71 deletions(-) create mode 100644 askbot/askbot create mode 120000 askbot/skins/default/media/style/node_modules/.bin/lessc create mode 100644 askbot/skins/default/media/style/node_modules/less/.npmignore create mode 100644 askbot/skins/default/media/style/node_modules/less/CHANGELOG create mode 100644 askbot/skins/default/media/style/node_modules/less/LICENSE create mode 100644 askbot/skins/default/media/style/node_modules/less/Makefile create mode 100644 askbot/skins/default/media/style/node_modules/less/README.md create mode 100644 askbot/skins/default/media/style/node_modules/less/benchmark/less-benchmark.js create mode 100755 askbot/skins/default/media/style/node_modules/less/bin/lessc create mode 100644 askbot/skins/default/media/style/node_modules/less/index.html create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/browser.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/colors.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/cssmin.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/functions.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/index.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/parser.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/rhino.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/alpha.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/anonymous.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/assignment.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/call.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/color.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/comment.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/condition.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/dimension.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/directive.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/element.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/expression.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/import.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/javascript.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/keyword.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/media.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/mixin.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/operation.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/paren.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/quoted.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/rule.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/ruleset.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/selector.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/url.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/value.js create mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/variable.js create mode 100644 askbot/skins/default/media/style/node_modules/less/package.json create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/colors.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/comments.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/css-3.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/css-escapes.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/css.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/functions.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/ie-filters.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/import.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/javascript.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/lazy-eval.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/media.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-args.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-closure.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-guards.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-important.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-nested.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-pattern.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/operations.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/parens.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/rulesets.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/scope.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/selectors.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/strings.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/variables.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/whitespace.css create mode 100644 askbot/skins/default/media/style/node_modules/less/test/less-test.js create mode 100644 askbot/skins/default/media/style/node_modules/less/test/less/import/import-test-d.css diff --git a/askbot/askbot b/askbot/askbot new file mode 100644 index 00000000..e69de29b diff --git a/askbot/skins/default/media/style/node_modules/.bin/lessc b/askbot/skins/default/media/style/node_modules/.bin/lessc new file mode 120000 index 00000000..87a5294c --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/.bin/lessc @@ -0,0 +1 @@ +../less/bin/lessc \ No newline at end of file diff --git a/askbot/skins/default/media/style/node_modules/less/.npmignore b/askbot/skins/default/media/style/node_modules/less/.npmignore new file mode 100644 index 00000000..320faecc --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/.npmignore @@ -0,0 +1,2 @@ + +*.less diff --git a/askbot/skins/default/media/style/node_modules/less/CHANGELOG b/askbot/skins/default/media/style/node_modules/less/CHANGELOG new file mode 100644 index 00000000..9269555d --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/CHANGELOG @@ -0,0 +1,26 @@ +1.2.1 + +fix imports on browser +improve error reporting on browser +fix Runtime error reports from imported files +fix 'File not found' import error reporting + +1.2.0 + +- mixin guards +- new function `percentage` +- new `color` function to parse hex color strings +- new type-checking stylesheet functions +- fix Rhino support +- fix bug in string arguments to mixin call +- fix error reporting when index is 0 +- fix browser support in webkit and IE +- fix string interpolation bug when var is empty +- support '!important' after mixin calls +- support vanilla @keyframes directive +- support variables in certain css selectors, like 'nth-child' +- support @media and @import features properly +- improve @import support with media features +- improve error reports from imported files +- improve function call error reporting +- improve error-reporting diff --git a/askbot/skins/default/media/style/node_modules/less/LICENSE b/askbot/skins/default/media/style/node_modules/less/LICENSE new file mode 100644 index 00000000..40f3b781 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/LICENSE @@ -0,0 +1,179 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +Copyright (c) 2009-2010 Alexis Sellier diff --git a/askbot/skins/default/media/style/node_modules/less/Makefile b/askbot/skins/default/media/style/node_modules/less/Makefile new file mode 100644 index 00000000..32d7cc04 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/Makefile @@ -0,0 +1,75 @@ +# +# Run all tests +# +test: + node test/less-test.js + +# +# Run benchmark +# +benchmark: + node benchmark/less-benchmark.js + +# +# Build less.js +# +SRC = lib/less +HEADER = build/header.js +VERSION = `cat package.json | grep version \ + | grep -o '[0-9]\.[0-9]\.[0-9]\+'` +DIST = dist/less-${VERSION}.js +RHINO = dist/less-rhino-${VERSION}.js +DIST_MIN = dist/less-${VERSION}.min.js + +less: + @@mkdir -p dist + @@touch ${DIST} + @@cat ${HEADER} | sed s/@VERSION/${VERSION}/ > ${DIST} + @@echo "(function (window, undefined) {" >> ${DIST} + @@cat build/require.js\ + build/amd.js\ + build/ecma-5.js\ + ${SRC}/parser.js\ + ${SRC}/functions.js\ + ${SRC}/colors.js\ + ${SRC}/tree/*.js\ + ${SRC}/tree.js\ + ${SRC}/browser.js >> ${DIST} + @@echo "})(window);" >> ${DIST} + @@echo ${DIST} built. + +rhino: + @@mkdir -p dist + @@touch ${RHINO} + @@cat build/require-rhino.js\ + build/ecma-5.js\ + ${SRC}/parser.js\ + ${SRC}/functions.js\ + ${SRC}/tree/*.js\ + ${SRC}/tree.js\ + ${SRC}/rhino.js > ${RHINO} + @@echo ${RHINO} built. + +min: less + @@echo minifying... + @@uglifyjs ${DIST} > ${DIST_MIN} + @@echo ${DIST_MIN} built. + +server: less + cp dist/less-${VERSION}.js test/html/ + cd test/html && python -m SimpleHTTPServer + +clean: + git rm dist/* + +dist: clean min + git add dist/* + git commit -a -m "(dist) build ${VERSION}" + git archive master --prefix=less/ -o less-${VERSION}.tar.gz + npm publish less-${VERSION}.tar.gz + +stable: + npm tag less ${VERSION} stable + + +.PHONY: test benchmark diff --git a/askbot/skins/default/media/style/node_modules/less/README.md b/askbot/skins/default/media/style/node_modules/less/README.md new file mode 100644 index 00000000..726d6910 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/README.md @@ -0,0 +1,20 @@ +less.js +======= + +The **dynamic** stylesheet language. + + + +about +----- + +This is the JavaScript, and now official, stable version of LESS. + +For more information, visit . + +license +------- + +See `LICENSE` file. + +> Copyright (c) 2009-2011 Alexis Sellier diff --git a/askbot/skins/default/media/style/node_modules/less/benchmark/less-benchmark.js b/askbot/skins/default/media/style/node_modules/less/benchmark/less-benchmark.js new file mode 100644 index 00000000..68fe1ad4 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/benchmark/less-benchmark.js @@ -0,0 +1,47 @@ +var path = require('path'), + fs = require('fs'), + sys = require('util'); + +var less = require('../lib/less'); +var file = path.join(__dirname, 'benchmark.less'); + +if (process.argv[2]) { file = path.join(process.cwd(), process.argv[2]) } + +fs.readFile(file, 'utf8', function (e, data) { + var tree, css, start, end, total; + + sys.puts("Benchmarking...\n", path.basename(file) + " (" + + parseInt(data.length / 1024) + " KB)", ""); + + start = new(Date); + + new(less.Parser)({ optimization: 2 }).parse(data, function (err, tree) { + end = new(Date); + + total = end - start; + + sys.puts("Parsing: " + + total + " ms (" + + parseInt(1000 / total * + data.length / 1024) + " KB\/s)"); + + start = new(Date); + css = tree.toCSS(); + end = new(Date); + + sys.puts("Generation: " + (end - start) + " ms (" + + parseInt(1000 / (end - start) * + data.length / 1024) + " KB\/s)"); + + total += end - start; + + sys.puts("Total: " + total + "ms (" + + parseInt(1000 / total * data.length / 1024) + " KB/s)"); + + if (err) { + less.writeError(err); + process.exit(3); + } + }); +}); + diff --git a/askbot/skins/default/media/style/node_modules/less/bin/lessc b/askbot/skins/default/media/style/node_modules/less/bin/lessc new file mode 100755 index 00000000..30ae3520 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/bin/lessc @@ -0,0 +1,139 @@ +#!/usr/bin/env node + +var path = require('path'), + fs = require('fs'), + sys = require('util'), + os = require('os'); + +var less = require('../lib/less'); +var args = process.argv.slice(1); +var options = { + compress: false, + yuicompress: false, + optimization: 1, + silent: false, + paths: [], + color: true, + strictImports: false +}; + +args = args.filter(function (arg) { + var match; + + if (match = arg.match(/^-I(.+)$/)) { + options.paths.push(match[1]); + return false; + } + + if (match = arg.match(/^--?([a-z][0-9a-z-]*)(?:=([^\s]+))?$/i)) { arg = match[1] } + else { return arg } + + switch (arg) { + case 'v': + case 'version': + sys.puts("lessc " + less.version.join('.') + " (LESS Compiler) [JavaScript]"); + process.exit(0); + case 'verbose': + options.verbose = true; + break; + case 's': + case 'silent': + options.silent = true; + break; + case 'strict-imports': + options.strictImports = true; + break; + case 'h': + case 'help': + sys.puts("usage: lessc source [destination]"); + process.exit(0); + case 'x': + case 'compress': + options.compress = true; + break; + case 'yui-compress': + options.yuicompress = true; + break; + case 'no-color': + options.color = false; + break; + case 'include-path': + options.paths = match[2].split(os.type().match(/Windows/) ? ';' : ':') + .map(function(p) { + if (p) { + return path.resolve(process.cwd(), p); + } + }); + break; + case 'O0': options.optimization = 0; break; + case 'O1': options.optimization = 1; break; + case 'O2': options.optimization = 2; break; + } +}); + +var input = args[1]; +if (input && input != '-') { + input = path.resolve(process.cwd(), input); +} +var output = args[2]; +if (output) { + output = path.resolve(process.cwd(), output); +} + +var css, fd, tree; + +if (! input) { + sys.puts("lessc: no input files"); + process.exit(1); +} + +var parseLessFile = function (e, data) { + if (e) { + sys.puts("lessc: " + e.message); + process.exit(1); + } + + new(less.Parser)({ + paths: [path.dirname(input)].concat(options.paths), + optimization: options.optimization, + filename: input, + strictImports: options.strictImports + }).parse(data, function (err, tree) { + if (err) { + less.writeError(err, options); + process.exit(1); + } else { + try { + css = tree.toCSS({ + compress: options.compress, + yuicompress: options.yuicompress + }); + if (output) { + fd = fs.openSync(output, "w"); + fs.writeSync(fd, css, 0, "utf8"); + } else { + sys.print(css); + } + } catch (e) { + less.writeError(e, options); + process.exit(2); + } + } + }); +}; + +if (input != '-') { + fs.readFile(input, 'utf-8', parseLessFile); +} else { + process.stdin.resume(); + process.stdin.setEncoding('utf8'); + + var buffer = ''; + process.stdin.on('data', function(data) { + buffer += data; + }); + + process.stdin.on('end', function() { + parseLessFile(false, buffer); + }); +} diff --git a/askbot/skins/default/media/style/node_modules/less/index.html b/askbot/skins/default/media/style/node_modules/less/index.html new file mode 100644 index 00000000..a62c6b6a --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/index.html @@ -0,0 +1,10 @@ + + + + + + + + HELLO + + diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/browser.js b/askbot/skins/default/media/style/node_modules/less/lib/less/browser.js new file mode 100644 index 00000000..cab913be --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/browser.js @@ -0,0 +1,380 @@ +// +// browser.js - client-side engine +// + +var isFileProtocol = (location.protocol === 'file:' || + location.protocol === 'chrome:' || + location.protocol === 'chrome-extension:' || + location.protocol === 'resource:'); + +less.env = less.env || (location.hostname == '127.0.0.1' || + location.hostname == '0.0.0.0' || + location.hostname == 'localhost' || + location.port.length > 0 || + isFileProtocol ? 'development' + : 'production'); + +// Load styles asynchronously (default: false) +// +// This is set to `false` by default, so that the body +// doesn't start loading before the stylesheets are parsed. +// Setting this to `true` can result in flickering. +// +less.async = false; + +// Interval between watch polls +less.poll = less.poll || (isFileProtocol ? 1000 : 1500); + +// +// Watch mode +// +less.watch = function () { return this.watchMode = true }; +less.unwatch = function () { return this.watchMode = false }; + +if (less.env === 'development') { + less.optimization = 0; + + if (/!watch/.test(location.hash)) { + less.watch(); + } + less.watchTimer = setInterval(function () { + if (less.watchMode) { + loadStyleSheets(function (e, root, _, sheet, env) { + if (root) { + createCSS(root.toCSS(), sheet, env.lastModified); + } + }); + } + }, less.poll); +} else { + less.optimization = 3; +} + +var cache; + +try { + cache = (typeof(window.localStorage) === 'undefined') ? null : window.localStorage; +} catch (_) { + cache = null; +} + +// +// Get all tags with the 'rel' attribute set to "stylesheet/less" +// +var links = document.getElementsByTagName('link'); +var typePattern = /^text\/(x-)?less$/; + +less.sheets = []; + +for (var i = 0; i < links.length; i++) { + if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) && + (links[i].type.match(typePattern)))) { + less.sheets.push(links[i]); + } +} + + +less.refresh = function (reload) { + var startTime, endTime; + startTime = endTime = new(Date); + + loadStyleSheets(function (e, root, _, sheet, env) { + if (env.local) { + log("loading " + sheet.href + " from cache."); + } else { + log("parsed " + sheet.href + " successfully."); + createCSS(root.toCSS(), sheet, env.lastModified); + } + log("css for " + sheet.href + " generated in " + (new(Date) - endTime) + 'ms'); + (env.remaining === 0) && log("css generated in " + (new(Date) - startTime) + 'ms'); + endTime = new(Date); + }, reload); + + loadStyles(); +}; +less.refreshStyles = loadStyles; + +less.refresh(less.env === 'development'); + +function loadStyles() { + var styles = document.getElementsByTagName('style'); + for (var i = 0; i < styles.length; i++) { + if (styles[i].type.match(typePattern)) { + new(less.Parser)().parse(styles[i].innerHTML || '', function (e, tree) { + var css = tree.toCSS(); + var style = styles[i]; + style.type = 'text/css'; + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.innerHTML = css; + } + }); + } + } +} + +function loadStyleSheets(callback, reload) { + for (var i = 0; i < less.sheets.length; i++) { + loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1)); + } +} + +function loadStyleSheet(sheet, callback, reload, remaining) { + var url = window.location.href.replace(/[#?].*$/, ''); + var href = sheet.href.replace(/\?.*$/, ''); + var css = cache && cache.getItem(href); + var timestamp = cache && cache.getItem(href + ':timestamp'); + var styles = { css: css, timestamp: timestamp }; + + // Stylesheets in IE don't always return the full path + if (! /^(https?|file):/.test(href)) { + if (href.charAt(0) == "/") { + href = window.location.protocol + "//" + window.location.host + href; + } else { + href = url.slice(0, url.lastIndexOf('/') + 1) + href; + } + } + var filename = href.match(/([^\/]+)$/)[1]; + + xhr(sheet.href, sheet.type, function (data, lastModified) { + if (!reload && styles && lastModified && + (new(Date)(lastModified).valueOf() === + new(Date)(styles.timestamp).valueOf())) { + // Use local copy + createCSS(styles.css, sheet); + callback(null, null, data, sheet, { local: true, remaining: remaining }); + } else { + // Use remote copy (re-parse) + try { + new(less.Parser)({ + optimization: less.optimization, + paths: [href.replace(/[\w\.-]+$/, '')], + mime: sheet.type, + filename: filename + }).parse(data, function (e, root) { + if (e) { return error(e, href) } + try { + callback(e, root, data, sheet, { local: false, lastModified: lastModified, remaining: remaining }); + removeNode(document.getElementById('less-error-message:' + extractId(href))); + } catch (e) { + error(e, href); + } + }); + } catch (e) { + error(e, href); + } + } + }, function (status, url) { + throw new(Error)("Couldn't load " + url + " (" + status + ")"); + }); +} + +function extractId(href) { + return href.replace(/^[a-z]+:\/\/?[^\/]+/, '' ) // Remove protocol & domain + .replace(/^\//, '' ) // Remove root / + .replace(/\?.*$/, '' ) // Remove query + .replace(/\.[^\.\/]+$/, '' ) // Remove file extension + .replace(/[^\.\w-]+/g, '-') // Replace illegal characters + .replace(/\./g, ':'); // Replace dots with colons(for valid id) +} + +function createCSS(styles, sheet, lastModified) { + var css; + + // Strip the query-string + var href = sheet.href ? sheet.href.replace(/\?.*$/, '') : ''; + + // If there is no title set, use the filename, minus the extension + var id = 'less:' + (sheet.title || extractId(href)); + + // If the stylesheet doesn't exist, create a new node + if ((css = document.getElementById(id)) === null) { + css = document.createElement('style'); + css.type = 'text/css'; + css.media = sheet.media || 'screen'; + css.id = id; + document.getElementsByTagName('head')[0].appendChild(css); + } + + if (css.styleSheet) { // IE + try { + css.styleSheet.cssText = styles; + } catch (e) { + throw new(Error)("Couldn't reassign styleSheet.cssText."); + } + } else { + (function (node) { + if (css.childNodes.length > 0) { + if (css.firstChild.nodeValue !== node.nodeValue) { + css.replaceChild(node, css.firstChild); + } + } else { + css.appendChild(node); + } + })(document.createTextNode(styles)); + } + + // Don't update the local store if the file wasn't modified + if (lastModified && cache) { + log('saving ' + href + ' to cache.'); + cache.setItem(href, styles); + cache.setItem(href + ':timestamp', lastModified); + } +} + +function xhr(url, type, callback, errback) { + var xhr = getXMLHttpRequest(); + var async = isFileProtocol ? false : less.async; + + if (typeof(xhr.overrideMimeType) === 'function') { + xhr.overrideMimeType('text/css'); + } + xhr.open('GET', url, async); + xhr.setRequestHeader('Accept', type || 'text/x-less, text/css; q=0.9, */*; q=0.5'); + xhr.send(null); + + if (isFileProtocol) { + if (xhr.status === 0 || (xhr.status >= 200 && xhr.status < 300)) { + callback(xhr.responseText); + } else { + errback(xhr.status, url); + } + } else if (async) { + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + handleResponse(xhr, callback, errback); + } + }; + } else { + handleResponse(xhr, callback, errback); + } + + function handleResponse(xhr, callback, errback) { + if (xhr.status >= 200 && xhr.status < 300) { + callback(xhr.responseText, + xhr.getResponseHeader("Last-Modified")); + } else if (typeof(errback) === 'function') { + errback(xhr.status, url); + } + } +} + +function getXMLHttpRequest() { + if (window.XMLHttpRequest) { + return new(XMLHttpRequest); + } else { + try { + return new(ActiveXObject)("MSXML2.XMLHTTP.3.0"); + } catch (e) { + log("browser doesn't support AJAX."); + return null; + } + } +} + +function removeNode(node) { + return node && node.parentNode.removeChild(node); +} + +function log(str) { + if (less.env == 'development' && typeof(console) !== "undefined") { console.log('less: ' + str) } +} + +function error(e, href) { + var id = 'less-error-message:' + extractId(href); + var template = '
  • {content}
  • '; + var elem = document.createElement('div'), timer, content, error = []; + var filename = e.filename || href; + + elem.id = id; + elem.className = "less-error-message"; + + content = '

    ' + (e.message || 'There is an error in your .less file') + + '

    ' + '

    in ' + filename + " "; + + var errorline = function (e, i, classname) { + if (e.extract[i]) { + error.push(template.replace(/\{line\}/, parseInt(e.line) + (i - 1)) + .replace(/\{class\}/, classname) + .replace(/\{content\}/, e.extract[i])); + } + }; + + if (e.stack) { + content += '
    ' + e.stack.split('\n').slice(1).join('
    '); + } else if (e.extract) { + errorline(e, 0, ''); + errorline(e, 1, 'line'); + errorline(e, 2, ''); + content += 'on line ' + e.line + ', column ' + (e.column + 1) + ':

    ' + + '
      ' + error.join('') + '
    '; + } + elem.innerHTML = content; + + // CSS for error messages + createCSS([ + '.less-error-message ul, .less-error-message li {', + 'list-style-type: none;', + 'margin-right: 15px;', + 'padding: 4px 0;', + 'margin: 0;', + '}', + '.less-error-message label {', + 'font-size: 12px;', + 'margin-right: 15px;', + 'padding: 4px 0;', + 'color: #cc7777;', + '}', + '.less-error-message pre {', + 'color: #dd6666;', + 'padding: 4px 0;', + 'margin: 0;', + 'display: inline-block;', + '}', + '.less-error-message pre.line {', + 'color: #ff0000;', + '}', + '.less-error-message h3 {', + 'font-size: 20px;', + 'font-weight: bold;', + 'padding: 15px 0 5px 0;', + 'margin: 0;', + '}', + '.less-error-message a {', + 'color: #10a', + '}', + '.less-error-message .error {', + 'color: red;', + 'font-weight: bold;', + 'padding-bottom: 2px;', + 'border-bottom: 1px dashed red;', + '}' + ].join('\n'), { title: 'error-message' }); + + elem.style.cssText = [ + "font-family: Arial, sans-serif", + "border: 1px solid #e00", + "background-color: #eee", + "border-radius: 5px", + "-webkit-border-radius: 5px", + "-moz-border-radius: 5px", + "color: #e00", + "padding: 15px", + "margin-bottom: 15px" + ].join(';'); + + if (less.env == 'development') { + timer = setInterval(function () { + if (document.body) { + if (document.getElementById(id)) { + document.body.replaceChild(elem, document.getElementById(id)); + } else { + document.body.insertBefore(elem, document.body.firstChild); + } + clearInterval(timer); + } + }, 10); + } +} + diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/colors.js b/askbot/skins/default/media/style/node_modules/less/lib/less/colors.js new file mode 100644 index 00000000..e509b602 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/colors.js @@ -0,0 +1,151 @@ +(function (tree) { + tree.colors = { + 'aliceblue':'#f0f8ff', + 'antiquewhite':'#faebd7', + 'aqua':'#00ffff', + 'aquamarine':'#7fffd4', + 'azure':'#f0ffff', + 'beige':'#f5f5dc', + 'bisque':'#ffe4c4', + 'black':'#000000', + 'blanchedalmond':'#ffebcd', + 'blue':'#0000ff', + 'blueviolet':'#8a2be2', + 'brown':'#a52a2a', + 'burlywood':'#deb887', + 'cadetblue':'#5f9ea0', + 'chartreuse':'#7fff00', + 'chocolate':'#d2691e', + 'coral':'#ff7f50', + 'cornflowerblue':'#6495ed', + 'cornsilk':'#fff8dc', + 'crimson':'#dc143c', + 'cyan':'#00ffff', + 'darkblue':'#00008b', + 'darkcyan':'#008b8b', + 'darkgoldenrod':'#b8860b', + 'darkgray':'#a9a9a9', + 'darkgrey':'#a9a9a9', + 'darkgreen':'#006400', + 'darkkhaki':'#bdb76b', + 'darkmagenta':'#8b008b', + 'darkolivegreen':'#556b2f', + 'darkorange':'#ff8c00', + 'darkorchid':'#9932cc', + 'darkred':'#8b0000', + 'darksalmon':'#e9967a', + 'darkseagreen':'#8fbc8f', + 'darkslateblue':'#483d8b', + 'darkslategray':'#2f4f4f', + 'darkslategrey':'#2f4f4f', + 'darkturquoise':'#00ced1', + 'darkviolet':'#9400d3', + 'deeppink':'#ff1493', + 'deepskyblue':'#00bfff', + 'dimgray':'#696969', + 'dimgrey':'#696969', + 'dodgerblue':'#1e90ff', + 'firebrick':'#b22222', + 'floralwhite':'#fffaf0', + 'forestgreen':'#228b22', + 'fuchsia':'#ff00ff', + 'gainsboro':'#dcdcdc', + 'ghostwhite':'#f8f8ff', + 'gold':'#ffd700', + 'goldenrod':'#daa520', + 'gray':'#808080', + 'grey':'#808080', + 'green':'#008000', + 'greenyellow':'#adff2f', + 'honeydew':'#f0fff0', + 'hotpink':'#ff69b4', + 'indianred':'#cd5c5c', + 'indigo':'#4b0082', + 'ivory':'#fffff0', + 'khaki':'#f0e68c', + 'lavender':'#e6e6fa', + 'lavenderblush':'#fff0f5', + 'lawngreen':'#7cfc00', + 'lemonchiffon':'#fffacd', + 'lightblue':'#add8e6', + 'lightcoral':'#f08080', + 'lightcyan':'#e0ffff', + 'lightgoldenrodyellow':'#fafad2', + 'lightgray':'#d3d3d3', + 'lightgrey':'#d3d3d3', + 'lightgreen':'#90ee90', + 'lightpink':'#ffb6c1', + 'lightsalmon':'#ffa07a', + 'lightseagreen':'#20b2aa', + 'lightskyblue':'#87cefa', + 'lightslategray':'#778899', + 'lightslategrey':'#778899', + 'lightsteelblue':'#b0c4de', + 'lightyellow':'#ffffe0', + 'lime':'#00ff00', + 'limegreen':'#32cd32', + 'linen':'#faf0e6', + 'magenta':'#ff00ff', + 'maroon':'#800000', + 'mediumaquamarine':'#66cdaa', + 'mediumblue':'#0000cd', + 'mediumorchid':'#ba55d3', + 'mediumpurple':'#9370d8', + 'mediumseagreen':'#3cb371', + 'mediumslateblue':'#7b68ee', + 'mediumspringgreen':'#00fa9a', + 'mediumturquoise':'#48d1cc', + 'mediumvioletred':'#c71585', + 'midnightblue':'#191970', + 'mintcream':'#f5fffa', + 'mistyrose':'#ffe4e1', + 'moccasin':'#ffe4b5', + 'navajowhite':'#ffdead', + 'navy':'#000080', + 'oldlace':'#fdf5e6', + 'olive':'#808000', + 'olivedrab':'#6b8e23', + 'orange':'#ffa500', + 'orangered':'#ff4500', + 'orchid':'#da70d6', + 'palegoldenrod':'#eee8aa', + 'palegreen':'#98fb98', + 'paleturquoise':'#afeeee', + 'palevioletred':'#d87093', + 'papayawhip':'#ffefd5', + 'peachpuff':'#ffdab9', + 'peru':'#cd853f', + 'pink':'#ffc0cb', + 'plum':'#dda0dd', + 'powderblue':'#b0e0e6', + 'purple':'#800080', + 'red':'#ff0000', + 'rosybrown':'#bc8f8f', + 'royalblue':'#4169e1', + 'saddlebrown':'#8b4513', + 'salmon':'#fa8072', + 'sandybrown':'#f4a460', + 'seagreen':'#2e8b57', + 'seashell':'#fff5ee', + 'sienna':'#a0522d', + 'silver':'#c0c0c0', + 'skyblue':'#87ceeb', + 'slateblue':'#6a5acd', + 'slategray':'#708090', + 'slategrey':'#708090', + 'snow':'#fffafa', + 'springgreen':'#00ff7f', + 'steelblue':'#4682b4', + 'tan':'#d2b48c', + 'teal':'#008080', + 'thistle':'#d8bfd8', + 'tomato':'#ff6347', + 'turquoise':'#40e0d0', + 'violet':'#ee82ee', + 'wheat':'#f5deb3', + 'white':'#ffffff', + 'whitesmoke':'#f5f5f5', + 'yellow':'#ffff00', + 'yellowgreen':'#9acd32' + }; +})(require('./tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/cssmin.js b/askbot/skins/default/media/style/node_modules/less/lib/less/cssmin.js new file mode 100644 index 00000000..427de71c --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/cssmin.js @@ -0,0 +1,355 @@ +/** + * cssmin.js + * Author: Stoyan Stefanov - http://phpied.com/ + * This is a JavaScript port of the CSS minification tool + * distributed with YUICompressor, itself a port + * of the cssmin utility by Isaac Schlueter - http://foohack.com/ + * Permission is hereby granted to use the JavaScript version under the same + * conditions as the YUICompressor (original YUICompressor note below). + */ + +/* +* YUI Compressor +* http://developer.yahoo.com/yui/compressor/ +* Author: Julien Lecomte - http://www.julienlecomte.net/ +* Copyright (c) 2011 Yahoo! Inc. All rights reserved. +* The copyrights embodied in the content of this file are licensed +* by Yahoo! Inc. under the BSD (revised) open source license. +*/ +var YAHOO = YAHOO || {}; +YAHOO.compressor = YAHOO.compressor || {}; + +/** + * Utility method to replace all data urls with tokens before we start + * compressing, to avoid performance issues running some of the subsequent + * regexes against large strings chunks. + * + * @private + * @method _extractDataUrls + * @param {String} css The input css + * @param {Array} The global array of tokens to preserve + * @returns String The processed css + */ +YAHOO.compressor._extractDataUrls = function (css, preservedTokens) { + + // Leave data urls alone to increase parse performance. + var maxIndex = css.length - 1, + appendIndex = 0, + startIndex, + endIndex, + terminator, + foundTerminator, + sb = [], + m, + preserver, + token, + pattern = /url\(\s*(["']?)data\:/g; + + // Since we need to account for non-base64 data urls, we need to handle + // ' and ) being part of the data string. Hence switching to indexOf, + // to determine whether or not we have matching string terminators and + // handling sb appends directly, instead of using matcher.append* methods. + + while ((m = pattern.exec(css)) !== null) { + + startIndex = m.index + 4; // "url(".length() + terminator = m[1]; // ', " or empty (not quoted) + + if (terminator.length === 0) { + terminator = ")"; + } + + foundTerminator = false; + + endIndex = pattern.lastIndex - 1; + + while(foundTerminator === false && endIndex+1 <= maxIndex) { + endIndex = css.indexOf(terminator, endIndex + 1); + + // endIndex == 0 doesn't really apply here + if ((endIndex > 0) && (css.charAt(endIndex - 1) !== '\\')) { + foundTerminator = true; + if (")" != terminator) { + endIndex = css.indexOf(")", endIndex); + } + } + } + + // Enough searching, start moving stuff over to the buffer + sb.push(css.substring(appendIndex, m.index)); + + if (foundTerminator) { + token = css.substring(startIndex, endIndex); + token = token.replace(/\s+/g, ""); + preservedTokens.push(token); + + preserver = "url(___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___)"; + sb.push(preserver); + + appendIndex = endIndex + 1; + } else { + // No end terminator found, re-add the whole match. Should we throw/warn here? + sb.push(css.substring(m.index, pattern.lastIndex)); + appendIndex = pattern.lastIndex; + } + } + + sb.push(css.substring(appendIndex)); + + return sb.join(""); +}; + +/** + * Utility method to compress hex color values of the form #AABBCC to #ABC. + * + * DOES NOT compress CSS ID selectors which match the above pattern (which would break things). + * e.g. #AddressForm { ... } + * + * DOES NOT compress IE filters, which have hex color values (which would break things). + * e.g. filter: chroma(color="#FFFFFF"); + * + * DOES NOT compress invalid hex values. + * e.g. background-color: #aabbccdd + * + * @private + * @method _compressHexColors + * @param {String} css The input css + * @returns String The processed css + */ +YAHOO.compressor._compressHexColors = function(css) { + + // Look for hex colors inside { ... } (to avoid IDs) and which don't have a =, or a " in front of them (to avoid filters) + var pattern = /(\=\s*?["']?)?#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])(\}|[^0-9a-f{][^{]*?\})/gi, + m, + index = 0, + isFilter, + sb = []; + + while ((m = pattern.exec(css)) !== null) { + + sb.push(css.substring(index, m.index)); + + isFilter = m[1]; + + if (isFilter) { + // Restore, maintain case, otherwise filter will break + sb.push(m[1] + "#" + (m[2] + m[3] + m[4] + m[5] + m[6] + m[7])); + } else { + if (m[2].toLowerCase() == m[3].toLowerCase() && + m[4].toLowerCase() == m[5].toLowerCase() && + m[6].toLowerCase() == m[7].toLowerCase()) { + + // Compress. + sb.push("#" + (m[3] + m[5] + m[7]).toLowerCase()); + } else { + // Non compressible color, restore but lower case. + sb.push("#" + (m[2] + m[3] + m[4] + m[5] + m[6] + m[7]).toLowerCase()); + } + } + + index = pattern.lastIndex = pattern.lastIndex - m[8].length; + } + + sb.push(css.substring(index)); + + return sb.join(""); +}; + +YAHOO.compressor.cssmin = function (css, linebreakpos) { + + var startIndex = 0, + endIndex = 0, + i = 0, max = 0, + preservedTokens = [], + comments = [], + token = '', + totallen = css.length, + placeholder = ''; + + css = this._extractDataUrls(css, preservedTokens); + + // collect all comment blocks... + while ((startIndex = css.indexOf("/*", startIndex)) >= 0) { + endIndex = css.indexOf("*/", startIndex + 2); + if (endIndex < 0) { + endIndex = totallen; + } + token = css.slice(startIndex + 2, endIndex); + comments.push(token); + css = css.slice(0, startIndex + 2) + "___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_" + (comments.length - 1) + "___" + css.slice(endIndex); + startIndex += 2; + } + + // preserve strings so their content doesn't get accidentally minified + css = css.replace(/("([^\\"]|\\.|\\)*")|('([^\\']|\\.|\\)*')/g, function (match) { + var i, max, quote = match.substring(0, 1); + + match = match.slice(1, -1); + + // maybe the string contains a comment-like substring? + // one, maybe more? put'em back then + if (match.indexOf("___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_") >= 0) { + for (i = 0, max = comments.length; i < max; i = i + 1) { + match = match.replace("___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_" + i + "___", comments[i]); + } + } + + // minify alpha opacity in filter strings + match = match.replace(/progid:DXImageTransform\.Microsoft\.Alpha\(Opacity=/gi, "alpha(opacity="); + + preservedTokens.push(match); + return quote + "___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___" + quote; + }); + + // strings are safe, now wrestle the comments + for (i = 0, max = comments.length; i < max; i = i + 1) { + + token = comments[i]; + placeholder = "___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_" + i + "___"; + + // ! in the first position of the comment means preserve + // so push to the preserved tokens keeping the ! + if (token.charAt(0) === "!") { + preservedTokens.push(token); + css = css.replace(placeholder, "___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___"); + continue; + } + + // \ in the last position looks like hack for Mac/IE5 + // shorten that to /*\*/ and the next one to /**/ + if (token.charAt(token.length - 1) === "\\") { + preservedTokens.push("\\"); + css = css.replace(placeholder, "___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___"); + i = i + 1; // attn: advancing the loop + preservedTokens.push(""); + css = css.replace("___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_" + i + "___", "___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___"); + continue; + } + + // keep empty comments after child selectors (IE7 hack) + // e.g. html >/**/ body + if (token.length === 0) { + startIndex = css.indexOf(placeholder); + if (startIndex > 2) { + if (css.charAt(startIndex - 3) === '>') { + preservedTokens.push(""); + css = css.replace(placeholder, "___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___"); + } + } + } + + // in all other cases kill the comment + css = css.replace("/*" + placeholder + "*/", ""); + } + + + // Normalize all whitespace strings to single spaces. Easier to work with that way. + css = css.replace(/\s+/g, " "); + + // Remove the spaces before the things that should not have spaces before them. + // But, be careful not to turn "p :link {...}" into "p:link{...}" + // Swap out any pseudo-class colons with the token, and then swap back. + css = css.replace(/(^|\})(([^\{:])+:)+([^\{]*\{)/g, function (m) { + return m.replace(":", "___YUICSSMIN_PSEUDOCLASSCOLON___"); + }); + css = css.replace(/\s+([!{};:>+\(\)\],])/g, '$1'); + css = css.replace(/___YUICSSMIN_PSEUDOCLASSCOLON___/g, ":"); + + // retain space for special IE6 cases + css = css.replace(/:first-(line|letter)(\{|,)/g, ":first-$1 $2"); + + // no space after the end of a preserved comment + css = css.replace(/\*\/ /g, '*/'); + + + // If there is a @charset, then only allow one, and push to the top of the file. + css = css.replace(/^(.*)(@charset "[^"]*";)/gi, '$2$1'); + css = css.replace(/^(\s*@charset [^;]+;\s*)+/gi, '$1'); + + // Put the space back in some cases, to support stuff like + // @media screen and (-webkit-min-device-pixel-ratio:0){ + css = css.replace(/\band\(/gi, "and ("); + + + // Remove the spaces after the things that should not have spaces after them. + css = css.replace(/([!{}:;>+\(\[,])\s+/g, '$1'); + + // remove unnecessary semicolons + css = css.replace(/;+\}/g, "}"); + + // Replace 0(px,em,%) with 0. + css = css.replace(/([\s:])(0)(px|em|%|in|cm|mm|pc|pt|ex)/gi, "$1$2"); + + // Replace 0 0 0 0; with 0. + css = css.replace(/:0 0 0 0(;|\})/g, ":0$1"); + css = css.replace(/:0 0 0(;|\})/g, ":0$1"); + css = css.replace(/:0 0(;|\})/g, ":0$1"); + + // Replace background-position:0; with background-position:0 0; + // same for transform-origin + css = css.replace(/(background-position|transform-origin|webkit-transform-origin|moz-transform-origin|o-transform-origin|ms-transform-origin):0(;|\})/gi, function(all, prop, tail) { + return prop.toLowerCase() + ":0 0" + tail; + }); + + // Replace 0.6 to .6, but only when preceded by : or a white-space + css = css.replace(/(:|\s)0+\.(\d+)/g, "$1.$2"); + + // Shorten colors from rgb(51,102,153) to #336699 + // This makes it more likely that it'll get further compressed in the next step. + css = css.replace(/rgb\s*\(\s*([0-9,\s]+)\s*\)/gi, function () { + var i, rgbcolors = arguments[1].split(','); + for (i = 0; i < rgbcolors.length; i = i + 1) { + rgbcolors[i] = parseInt(rgbcolors[i], 10).toString(16); + if (rgbcolors[i].length === 1) { + rgbcolors[i] = '0' + rgbcolors[i]; + } + } + return '#' + rgbcolors.join(''); + }); + + // Shorten colors from #AABBCC to #ABC. + css = this._compressHexColors(css); + + // border: none -> border:0 + css = css.replace(/(border|border-top|border-right|border-bottom|border-right|outline|background):none(;|\})/gi, function(all, prop, tail) { + return prop.toLowerCase() + ":0" + tail; + }); + + // shorter opacity IE filter + css = css.replace(/progid:DXImageTransform\.Microsoft\.Alpha\(Opacity=/gi, "alpha(opacity="); + + // Remove empty rules. + css = css.replace(/[^\};\{\/]+\{\}/g, ""); + + if (linebreakpos >= 0) { + // Some source control tools don't like it when files containing lines longer + // than, say 8000 characters, are checked in. The linebreak option is used in + // that case to split long lines after a specific column. + startIndex = 0; + i = 0; + while (i < css.length) { + i = i + 1; + if (css[i - 1] === '}' && i - startIndex > linebreakpos) { + css = css.slice(0, i) + '\n' + css.slice(i); + startIndex = i; + } + } + } + + // Replace multiple semi-colons in a row by a single one + // See SF bug #1980989 + css = css.replace(/;;+/g, ";"); + + // restore preserved comments and strings + for (i = 0, max = preservedTokens.length; i < max; i = i + 1) { + css = css.replace("___YUICSSMIN_PRESERVED_TOKEN_" + i + "___", preservedTokens[i]); + } + + // Trim the final string (for any leading or trailing white spaces) + css = css.replace(/^\s+|\s+$/g, ""); + + return css; + +}; + +exports.compressor = YAHOO.compressor; diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/functions.js b/askbot/skins/default/media/style/node_modules/less/lib/less/functions.js new file mode 100644 index 00000000..6eb34bac --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/functions.js @@ -0,0 +1,228 @@ +(function (tree) { + +tree.functions = { + rgb: function (r, g, b) { + return this.rgba(r, g, b, 1.0); + }, + rgba: function (r, g, b, a) { + var rgb = [r, g, b].map(function (c) { return number(c) }), + a = number(a); + return new(tree.Color)(rgb, a); + }, + hsl: function (h, s, l) { + return this.hsla(h, s, l, 1.0); + }, + hsla: function (h, s, l, a) { + h = (number(h) % 360) / 360; + s = number(s); l = number(l); a = number(a); + + var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; + var m1 = l * 2 - m2; + + return this.rgba(hue(h + 1/3) * 255, + hue(h) * 255, + hue(h - 1/3) * 255, + a); + + function hue(h) { + h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h); + if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; + else if (h * 2 < 1) return m2; + else if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6; + else return m1; + } + }, + hue: function (color) { + return new(tree.Dimension)(Math.round(color.toHSL().h)); + }, + saturation: function (color) { + return new(tree.Dimension)(Math.round(color.toHSL().s * 100), '%'); + }, + lightness: function (color) { + return new(tree.Dimension)(Math.round(color.toHSL().l * 100), '%'); + }, + alpha: function (color) { + return new(tree.Dimension)(color.toHSL().a); + }, + saturate: function (color, amount) { + var hsl = color.toHSL(); + + hsl.s += amount.value / 100; + hsl.s = clamp(hsl.s); + return hsla(hsl); + }, + desaturate: function (color, amount) { + var hsl = color.toHSL(); + + hsl.s -= amount.value / 100; + hsl.s = clamp(hsl.s); + return hsla(hsl); + }, + lighten: function (color, amount) { + var hsl = color.toHSL(); + + hsl.l += amount.value / 100; + hsl.l = clamp(hsl.l); + return hsla(hsl); + }, + darken: function (color, amount) { + var hsl = color.toHSL(); + + hsl.l -= amount.value / 100; + hsl.l = clamp(hsl.l); + return hsla(hsl); + }, + fadein: function (color, amount) { + var hsl = color.toHSL(); + + hsl.a += amount.value / 100; + hsl.a = clamp(hsl.a); + return hsla(hsl); + }, + fadeout: function (color, amount) { + var hsl = color.toHSL(); + + hsl.a -= amount.value / 100; + hsl.a = clamp(hsl.a); + return hsla(hsl); + }, + fade: function (color, amount) { + var hsl = color.toHSL(); + + hsl.a = amount.value / 100; + hsl.a = clamp(hsl.a); + return hsla(hsl); + }, + spin: function (color, amount) { + var hsl = color.toHSL(); + var hue = (hsl.h + amount.value) % 360; + + hsl.h = hue < 0 ? 360 + hue : hue; + + return hsla(hsl); + }, + // + // Copyright (c) 2006-2009 Hampton Catlin, Nathan Weizenbaum, and Chris Eppstein + // http://sass-lang.com + // + mix: function (color1, color2, weight) { + var p = weight.value / 100.0; + var w = p * 2 - 1; + var a = color1.toHSL().a - color2.toHSL().a; + + var w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; + var w2 = 1 - w1; + + var rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2, + color1.rgb[1] * w1 + color2.rgb[1] * w2, + color1.rgb[2] * w1 + color2.rgb[2] * w2]; + + var alpha = color1.alpha * p + color2.alpha * (1 - p); + + return new(tree.Color)(rgb, alpha); + }, + greyscale: function (color) { + return this.desaturate(color, new(tree.Dimension)(100)); + }, + e: function (str) { + return new(tree.Anonymous)(str instanceof tree.JavaScript ? str.evaluated : str); + }, + escape: function (str) { + return new(tree.Anonymous)(encodeURI(str.value).replace(/=/g, "%3D").replace(/:/g, "%3A").replace(/#/g, "%23").replace(/;/g, "%3B").replace(/\(/g, "%28").replace(/\)/g, "%29")); + }, + '%': function (quoted /* arg, arg, ...*/) { + var args = Array.prototype.slice.call(arguments, 1), + str = quoted.value; + + for (var i = 0; i < args.length; i++) { + str = str.replace(/%[sda]/i, function(token) { + var value = token.match(/s/i) ? args[i].value : args[i].toCSS(); + return token.match(/[A-Z]$/) ? encodeURIComponent(value) : value; + }); + } + str = str.replace(/%%/g, '%'); + return new(tree.Quoted)('"' + str + '"', str); + }, + round: function (n) { + return this._math('round', n); + }, + ceil: function (n) { + return this._math('ceil', n); + }, + floor: function (n) { + return this._math('floor', n); + }, + _math: function (fn, n) { + if (n instanceof tree.Dimension) { + return new(tree.Dimension)(Math[fn](number(n)), n.unit); + } else if (typeof(n) === 'number') { + return Math[fn](n); + } else { + throw { type: "Argument", message: "argument must be a number" }; + } + }, + argb: function (color) { + return new(tree.Anonymous)(color.toARGB()); + + }, + percentage: function (n) { + return new(tree.Dimension)(n.value * 100, '%'); + }, + color: function (n) { + if (n instanceof tree.Quoted) { + return new(tree.Color)(n.value.slice(1)); + } else { + throw { type: "Argument", message: "argument must be a string" }; + } + }, + iscolor: function (n) { + return this._isa(n, tree.Color); + }, + isnumber: function (n) { + return this._isa(n, tree.Dimension); + }, + isstring: function (n) { + return this._isa(n, tree.Quoted); + }, + iskeyword: function (n) { + return this._isa(n, tree.Keyword); + }, + isurl: function (n) { + return this._isa(n, tree.URL); + }, + ispixel: function (n) { + return (n instanceof tree.Dimension) && n.unit === 'px' ? tree.True : tree.False; + }, + ispercentage: function (n) { + return (n instanceof tree.Dimension) && n.unit === '%' ? tree.True : tree.False; + }, + isem: function (n) { + return (n instanceof tree.Dimension) && n.unit === 'em' ? tree.True : tree.False; + }, + _isa: function (n, Type) { + return (n instanceof Type) ? tree.True : tree.False; + } +}; + +function hsla(hsla) { + return tree.functions.hsla(hsla.h, hsla.s, hsla.l, hsla.a); +} + +function number(n) { + if (n instanceof tree.Dimension) { + return parseFloat(n.unit == '%' ? n.value / 100 : n.value); + } else if (typeof(n) === 'number') { + return n; + } else { + throw { + error: "RuntimeError", + message: "color functions take numbers as parameters" + }; + } +} + +function clamp(val) { + return Math.min(1, Math.max(0, val)); +} + +})(require('./tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/index.js b/askbot/skins/default/media/style/node_modules/less/lib/less/index.js new file mode 100644 index 00000000..a11fa998 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/index.js @@ -0,0 +1,148 @@ +var path = require('path'), + sys = require('util'), + fs = require('fs'); + +var less = { + version: [1, 3, 0], + Parser: require('./parser').Parser, + importer: require('./parser').importer, + tree: require('./tree'), + render: function (input, options, callback) { + options = options || {}; + + if (typeof(options) === 'function') { + callback = options, options = {}; + } + + var parser = new(less.Parser)(options), + ee; + + if (callback) { + parser.parse(input, function (e, root) { + callback(e, root && root.toCSS && root.toCSS(options)); + }); + } else { + ee = new(require('events').EventEmitter); + + process.nextTick(function () { + parser.parse(input, function (e, root) { + if (e) { ee.emit('error', e) } + else { ee.emit('success', root.toCSS(options)) } + }); + }); + return ee; + } + }, + writeError: function (ctx, options) { + options = options || {}; + + var message = ""; + var extract = ctx.extract; + var error = []; + var stylize = options.color ? less.stylize : function (str) { return str }; + + if (options.silent) { return } + + if (ctx.stack) { return sys.error(stylize(ctx.stack, 'red')) } + + if (!ctx.hasOwnProperty('index')) { + return sys.error(ctx.stack || ctx.message); + } + + if (typeof(extract[0]) === 'string') { + error.push(stylize((ctx.line - 1) + ' ' + extract[0], 'grey')); + } + + if (extract[1]) { + error.push(ctx.line + ' ' + extract[1].slice(0, ctx.column) + + stylize(stylize(stylize(extract[1][ctx.column], 'bold') + + extract[1].slice(ctx.column + 1), 'red'), 'inverse')); + } + + if (typeof(extract[2]) === 'string') { + error.push(stylize((ctx.line + 1) + ' ' + extract[2], 'grey')); + } + error = error.join('\n') + '\033[0m\n'; + + message += stylize(ctx.type + 'Error: ' + ctx.message, 'red'); + ctx.filename && (message += stylize(' in ', 'red') + ctx.filename + + stylize(':' + ctx.line + ':' + ctx.column, 'grey')); + + sys.error(message, error); + + if (ctx.callLine) { + sys.error(stylize('from ', 'red') + (ctx.filename || '')); + sys.error(stylize(ctx.callLine, 'grey') + ' ' + ctx.callExtract); + } + } +}; + +['color', 'directive', 'operation', 'dimension', + 'keyword', 'variable', 'ruleset', 'element', + 'selector', 'quoted', 'expression', 'rule', + 'call', 'url', 'alpha', 'import', + 'mixin', 'comment', 'anonymous', 'value', + 'javascript', 'assignment', 'condition', 'paren', + 'media' +].forEach(function (n) { + require('./tree/' + n); +}); + +less.Parser.importer = function (file, paths, callback, env) { + var pathname; + + // TODO: Undo this at some point, + // or use different approach. + paths.unshift('.'); + + for (var i = 0; i < paths.length; i++) { + try { + pathname = path.join(paths[i], file); + fs.statSync(pathname); + break; + } catch (e) { + pathname = null; + } + } + + if (pathname) { + fs.readFile(pathname, 'utf-8', function(e, data) { + if (e) return callback(e); + + new(less.Parser)({ + paths: [path.dirname(pathname)].concat(paths), + filename: pathname + }).parse(data, function (e, root) { + callback(e, root, data); + }); + }); + } else { + if (typeof(env.errback) === "function") { + env.errback(file, paths, callback); + } else { + callback({ type: 'File', message: "'" + file + "' wasn't found.\n" }); + } + } +} + +require('./functions'); +require('./colors'); + +for (var k in less) { exports[k] = less[k] } + +// Stylize a string +function stylize(str, style) { + var styles = { + 'bold' : [1, 22], + 'inverse' : [7, 27], + 'underline' : [4, 24], + 'yellow' : [33, 39], + 'green' : [32, 39], + 'red' : [31, 39], + 'grey' : [90, 39] + }; + return '\033[' + styles[style][0] + 'm' + str + + '\033[' + styles[style][1] + 'm'; +} +less.stylize = stylize; + diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/parser.js b/askbot/skins/default/media/style/node_modules/less/lib/less/parser.js new file mode 100644 index 00000000..6ea4f8be --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/parser.js @@ -0,0 +1,1305 @@ +var less, tree; + +if (typeof environment === "object" && ({}).toString.call(environment) === "[object Environment]") { + // Rhino + // Details on how to detect Rhino: https://github.com/ringo/ringojs/issues/88 + if (typeof(window) === 'undefined') { less = {} } + else { less = window.less = {} } + tree = less.tree = {}; + less.mode = 'rhino'; +} else if (typeof(window) === 'undefined') { + // Node.js + less = exports, + tree = require('./tree'); + less.mode = 'node'; +} else { + // Browser + if (typeof(window.less) === 'undefined') { window.less = {} } + less = window.less, + tree = window.less.tree = {}; + less.mode = 'browser'; +} +// +// less.js - parser +// +// A relatively straight-forward predictive parser. +// There is no tokenization/lexing stage, the input is parsed +// in one sweep. +// +// To make the parser fast enough to run in the browser, several +// optimization had to be made: +// +// - Matching and slicing on a huge input is often cause of slowdowns. +// The solution is to chunkify the input into smaller strings. +// The chunks are stored in the `chunks` var, +// `j` holds the current chunk index, and `current` holds +// the index of the current chunk in relation to `input`. +// This gives us an almost 4x speed-up. +// +// - In many cases, we don't need to match individual tokens; +// for example, if a value doesn't hold any variables, operations +// or dynamic references, the parser can effectively 'skip' it, +// treating it as a literal. +// An example would be '1px solid #000' - which evaluates to itself, +// we don't need to know what the individual components are. +// The drawback, of course is that you don't get the benefits of +// syntax-checking on the CSS. This gives us a 50% speed-up in the parser, +// and a smaller speed-up in the code-gen. +// +// +// Token matching is done with the `$` function, which either takes +// a terminal string or regexp, or a non-terminal function to call. +// It also takes care of moving all the indices forwards. +// +// +less.Parser = function Parser(env) { + var input, // LeSS input string + i, // current index in `input` + j, // current chunk + temp, // temporarily holds a chunk's state, for backtracking + memo, // temporarily holds `i`, when backtracking + furthest, // furthest index the parser has gone to + chunks, // chunkified input + current, // index of current chunk, in `input` + parser; + + var that = this; + + // This function is called after all files + // have been imported through `@import`. + var finish = function () {}; + + var imports = this.imports = { + paths: env && env.paths || [], // Search paths, when importing + queue: [], // Files which haven't been imported yet + files: {}, // Holds the imported parse trees + contents: {}, // Holds the imported file contents + mime: env && env.mime, // MIME type of .less files + error: null, // Error in parsing/evaluating an import + push: function (path, callback) { + var that = this; + this.queue.push(path); + + // + // Import a file asynchronously + // + less.Parser.importer(path, this.paths, function (e, root, contents) { + that.queue.splice(that.queue.indexOf(path), 1); // Remove the path from the queue + that.files[path] = root; // Store the root + that.contents[path] = contents; + + if (e && !that.error) { that.error = e } + callback(e, root); + + if (that.queue.length === 0) { finish() } // Call `finish` if we're done importing + }, env); + } + }; + + function save() { temp = chunks[j], memo = i, current = i } + function restore() { chunks[j] = temp, i = memo, current = i } + + function sync() { + if (i > current) { + chunks[j] = chunks[j].slice(i - current); + current = i; + } + } + // + // Parse from a token, regexp or string, and move forward if match + // + function $(tok) { + var match, args, length, c, index, endIndex, k, mem; + + // + // Non-terminal + // + if (tok instanceof Function) { + return tok.call(parser.parsers); + // + // Terminal + // + // Either match a single character in the input, + // or match a regexp in the current chunk (chunk[j]). + // + } else if (typeof(tok) === 'string') { + match = input.charAt(i) === tok ? tok : null; + length = 1; + sync (); + } else { + sync (); + + if (match = tok.exec(chunks[j])) { + length = match[0].length; + } else { + return null; + } + } + + // The match is confirmed, add the match length to `i`, + // and consume any extra white-space characters (' ' || '\n') + // which come after that. The reason for this is that LeSS's + // grammar is mostly white-space insensitive. + // + if (match) { + mem = i += length; + endIndex = i + chunks[j].length - length; + + while (i < endIndex) { + c = input.charCodeAt(i); + if (! (c === 32 || c === 10 || c === 9)) { break } + i++; + } + chunks[j] = chunks[j].slice(length + (i - mem)); + current = i; + + if (chunks[j].length === 0 && j < chunks.length - 1) { j++ } + + if(typeof(match) === 'string') { + return match; + } else { + return match.length === 1 ? match[0] : match; + } + } + } + + function expect(arg, msg) { + var result = $(arg); + if (! result) { + error(msg || (typeof(arg) === 'string' ? "expected '" + arg + "' got '" + input.charAt(i) + "'" + : "unexpected token")); + } else { + return result; + } + } + + function error(msg, type) { + throw { index: i, type: type || 'Syntax', message: msg }; + } + + // Same as $(), but don't change the state of the parser, + // just return the match. + function peek(tok) { + if (typeof(tok) === 'string') { + return input.charAt(i) === tok; + } else { + if (tok.test(chunks[j])) { + return true; + } else { + return false; + } + } + } + + function basename(pathname) { + if (less.mode === 'node') { + return require('path').basename(pathname); + } else { + return pathname.match(/[^\/]+$/)[0]; + } + } + + function getInput(e, env) { + if (e.filename && env.filename && (e.filename !== env.filename)) { + return parser.imports.contents[basename(e.filename)]; + } else { + return input; + } + } + + function getLocation(index, input) { + for (var n = index, column = -1; + n >= 0 && input.charAt(n) !== '\n'; + n--) { column++ } + + return { line: typeof(index) === 'number' ? (input.slice(0, index).match(/\n/g) || "").length : null, + column: column }; + } + + function LessError(e, env) { + var input = getInput(e, env), + loc = getLocation(e.index, input), + line = loc.line, + col = loc.column, + lines = input.split('\n'); + + this.type = e.type || 'Syntax'; + this.message = e.message; + this.filename = e.filename || env.filename; + this.index = e.index; + this.line = typeof(line) === 'number' ? line + 1 : null; + this.callLine = e.call && (getLocation(e.call, input).line + 1); + this.callExtract = lines[getLocation(e.call, input).line]; + this.stack = e.stack; + this.column = col; + this.extract = [ + lines[line - 1], + lines[line], + lines[line + 1] + ]; + } + + this.env = env = env || {}; + + // The optimization level dictates the thoroughness of the parser, + // the lower the number, the less nodes it will create in the tree. + // This could matter for debugging, or if you want to access + // the individual nodes in the tree. + this.optimization = ('optimization' in this.env) ? this.env.optimization : 1; + + this.env.filename = this.env.filename || null; + + // + // The Parser + // + return parser = { + + imports: imports, + // + // Parse an input string into an abstract syntax tree, + // call `callback` when done. + // + parse: function (str, callback) { + var root, start, end, zone, line, lines, buff = [], c, error = null; + + i = j = current = furthest = 0; + input = str.replace(/\r\n/g, '\n'); + + // Split the input into chunks. + chunks = (function (chunks) { + var j = 0, + skip = /[^"'`\{\}\/\(\)\\]+/g, + comment = /\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g, + string = /"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'|`((?:[^`\\\r\n]|\\.)*)`/g, + level = 0, + match, + chunk = chunks[0], + inParam; + + for (var i = 0, c, cc; i < input.length; i++) { + skip.lastIndex = i; + if (match = skip.exec(input)) { + if (match.index === i) { + i += match[0].length; + chunk.push(match[0]); + } + } + c = input.charAt(i); + comment.lastIndex = string.lastIndex = i; + + if (match = string.exec(input)) { + if (match.index === i) { + i += match[0].length; + chunk.push(match[0]); + c = input.charAt(i); + } + } + + if (!inParam && c === '/') { + cc = input.charAt(i + 1); + if (cc === '/' || cc === '*') { + if (match = comment.exec(input)) { + if (match.index === i) { + i += match[0].length; + chunk.push(match[0]); + c = input.charAt(i); + } + } + } + } + + switch (c) { + case '{': if (! inParam) { level ++; chunk.push(c); break } + case '}': if (! inParam) { level --; chunk.push(c); chunks[++j] = chunk = []; break } + case '(': if (! inParam) { inParam = true; chunk.push(c); break } + case ')': if ( inParam) { inParam = false; chunk.push(c); break } + default: chunk.push(c); + } + } + if (level > 0) { + error = new(LessError)({ + index: i, + type: 'Parse', + message: "missing closing `}`", + filename: env.filename + }, env); + } + + return chunks.map(function (c) { return c.join('') });; + })([[]]); + + if (error) { + return callback(error); + } + + // Start with the primary rule. + // The whole syntax tree is held under a Ruleset node, + // with the `root` property set to true, so no `{}` are + // output. The callback is called when the input is parsed. + try { + root = new(tree.Ruleset)([], $(this.parsers.primary)); + root.root = true; + } catch (e) { + return callback(new(LessError)(e, env)); + } + + root.toCSS = (function (evaluate) { + var line, lines, column; + + return function (options, variables) { + var frames = [], importError; + + options = options || {}; + // + // Allows setting variables with a hash, so: + // + // `{ color: new(tree.Color)('#f01') }` will become: + // + // new(tree.Rule)('@color', + // new(tree.Value)([ + // new(tree.Expression)([ + // new(tree.Color)('#f01') + // ]) + // ]) + // ) + // + if (typeof(variables) === 'object' && !Array.isArray(variables)) { + variables = Object.keys(variables).map(function (k) { + var value = variables[k]; + + if (! (value instanceof tree.Value)) { + if (! (value instanceof tree.Expression)) { + value = new(tree.Expression)([value]); + } + value = new(tree.Value)([value]); + } + return new(tree.Rule)('@' + k, value, false, 0); + }); + frames = [new(tree.Ruleset)(null, variables)]; + } + + try { + var css = evaluate.call(this, { frames: frames }) + .toCSS([], { compress: options.compress || false }); + } catch (e) { + throw new(LessError)(e, env); + } + + if ((importError = parser.imports.error)) { // Check if there was an error during importing + if (importError instanceof LessError) throw importError; + else throw new(LessError)(importError, env); + } + + if (options.yuicompress && less.mode === 'node') { + return require('./cssmin').compressor.cssmin(css); + } else if (options.compress) { + return css.replace(/(\s)+/g, "$1"); + } else { + return css; + } + }; + })(root.eval); + + // If `i` is smaller than the `input.length - 1`, + // it means the parser wasn't able to parse the whole + // string, so we've got a parsing error. + // + // We try to extract a \n delimited string, + // showing the line where the parse error occured. + // We split it up into two parts (the part which parsed, + // and the part which didn't), so we can color them differently. + if (i < input.length - 1) { + i = furthest; + lines = input.split('\n'); + line = (input.slice(0, i).match(/\n/g) || "").length + 1; + + for (var n = i, column = -1; n >= 0 && input.charAt(n) !== '\n'; n--) { column++ } + + error = { + type: "Parse", + message: "Syntax Error on line " + line, + index: i, + filename: env.filename, + line: line, + column: column, + extract: [ + lines[line - 2], + lines[line - 1], + lines[line] + ] + }; + } + + if (this.imports.queue.length > 0) { + finish = function () { callback(error, root) }; + } else { + callback(error, root); + } + }, + + // + // Here in, the parsing rules/functions + // + // The basic structure of the syntax tree generated is as follows: + // + // Ruleset -> Rule -> Value -> Expression -> Entity + // + // Here's some LESS code: + // + // .class { + // color: #fff; + // border: 1px solid #000; + // width: @w + 4px; + // > .child {...} + // } + // + // And here's what the parse tree might look like: + // + // Ruleset (Selector '.class', [ + // Rule ("color", Value ([Expression [Color #fff]])) + // Rule ("border", Value ([Expression [Dimension 1px][Keyword "solid"][Color #000]])) + // Rule ("width", Value ([Expression [Operation "+" [Variable "@w"][Dimension 4px]]])) + // Ruleset (Selector [Element '>', '.child'], [...]) + // ]) + // + // In general, most rules will try to parse a token with the `$()` function, and if the return + // value is truly, will return a new node, of the relevant type. Sometimes, we need to check + // first, before parsing, that's when we use `peek()`. + // + parsers: { + // + // The `primary` rule is the *entry* and *exit* point of the parser. + // The rules here can appear at any level of the parse tree. + // + // The recursive nature of the grammar is an interplay between the `block` + // rule, which represents `{ ... }`, the `ruleset` rule, and this `primary` rule, + // as represented by this simplified grammar: + // + // primary → (ruleset | rule)+ + // ruleset → selector+ block + // block → '{' primary '}' + // + // Only at one point is the primary rule not called from the + // block rule: at the root level. + // + primary: function () { + var node, root = []; + + while ((node = $(this.mixin.definition) || $(this.rule) || $(this.ruleset) || + $(this.mixin.call) || $(this.comment) || $(this.directive)) + || $(/^[\s\n]+/)) { + node && root.push(node); + } + return root; + }, + + // We create a Comment node for CSS comments `/* */`, + // but keep the LeSS comments `//` silent, by just skipping + // over them. + comment: function () { + var comment; + + if (input.charAt(i) !== '/') return; + + if (input.charAt(i + 1) === '/') { + return new(tree.Comment)($(/^\/\/.*/), true); + } else if (comment = $(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/)) { + return new(tree.Comment)(comment); + } + }, + + // + // Entities are tokens which can be found inside an Expression + // + entities: { + // + // A string, which supports escaping " and ' + // + // "milky way" 'he\'s the one!' + // + quoted: function () { + var str, j = i, e; + + if (input.charAt(j) === '~') { j++, e = true } // Escaped strings + if (input.charAt(j) !== '"' && input.charAt(j) !== "'") return; + + e && $('~'); + + if (str = $(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/)) { + return new(tree.Quoted)(str[0], str[1] || str[2], e); + } + }, + + // + // A catch-all word, such as: + // + // black border-collapse + // + keyword: function () { + var k; + + if (k = $(/^[_A-Za-z-][_A-Za-z0-9-]*/)) { + if (tree.colors.hasOwnProperty(k)) { + // detect named color + return new(tree.Color)(tree.colors[k].slice(1)); + } else { + return new(tree.Keyword)(k); + } + } + }, + + // + // A function call + // + // rgb(255, 0, 255) + // + // We also try to catch IE's `alpha()`, but let the `alpha` parser + // deal with the details. + // + // The arguments are parsed with the `entities.arguments` parser. + // + call: function () { + var name, args, index = i; + + if (! (name = /^([\w-]+|%|progid:[\w\.]+)\(/.exec(chunks[j]))) return; + + name = name[1].toLowerCase(); + + if (name === 'url') { return null } + else { i += name.length } + + if (name === 'alpha') { return $(this.alpha) } + + $('('); // Parse the '(' and consume whitespace. + + args = $(this.entities.arguments); + + if (! $(')')) return; + + if (name) { return new(tree.Call)(name, args, index, env.filename) } + }, + arguments: function () { + var args = [], arg; + + while (arg = $(this.entities.assignment) || $(this.expression)) { + args.push(arg); + if (! $(',')) { break } + } + return args; + }, + literal: function () { + return $(this.entities.dimension) || + $(this.entities.color) || + $(this.entities.quoted); + }, + + // Assignments are argument entities for calls. + // They are present in ie filter properties as shown below. + // + // filter: progid:DXImageTransform.Microsoft.Alpha( *opacity=50* ) + // + + assignment: function () { + var key, value; + if ((key = $(/^\w+(?=\s?=)/i)) && $('=') && (value = $(this.entity))) { + return new(tree.Assignment)(key, value); + } + }, + + // + // Parse url() tokens + // + // We use a specific rule for urls, because they don't really behave like + // standard function calls. The difference is that the argument doesn't have + // to be enclosed within a string, so it can't be parsed as an Expression. + // + url: function () { + var value; + + if (input.charAt(i) !== 'u' || !$(/^url\(/)) return; + value = $(this.entities.quoted) || $(this.entities.variable) || + $(this.entities.dataURI) || $(/^[-\w%@$\/.&=:;#+?~]+/) || ""; + + expect(')'); + + return new(tree.URL)((value.value || value.data || value instanceof tree.Variable) + ? value : new(tree.Anonymous)(value), imports.paths); + }, + + dataURI: function () { + var obj; + + if ($(/^data:/)) { + obj = {}; + obj.mime = $(/^[^\/]+\/[^,;)]+/) || ''; + obj.charset = $(/^;\s*charset=[^,;)]+/) || ''; + obj.base64 = $(/^;\s*base64/) || ''; + obj.data = $(/^,\s*[^)]+/); + + if (obj.data) { return obj } + } + }, + + // + // A Variable entity, such as `@fink`, in + // + // width: @fink + 2px + // + // We use a different parser for variable definitions, + // see `parsers.variable`. + // + variable: function () { + var name, index = i; + + if (input.charAt(i) === '@' && (name = $(/^@@?[\w-]+/))) { + return new(tree.Variable)(name, index, env.filename); + } + }, + + // + // A Hexadecimal color + // + // #4F3C2F + // + // `rgb` and `hsl` colors are parsed through the `entities.call` parser. + // + color: function () { + var rgb; + + if (input.charAt(i) === '#' && (rgb = $(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/))) { + return new(tree.Color)(rgb[1]); + } + }, + + // + // A Dimension, that is, a number and a unit + // + // 0.5em 95% + // + dimension: function () { + var value, c = input.charCodeAt(i); + if ((c > 57 || c < 45) || c === 47) return; + + if (value = $(/^(-?\d*\.?\d+)(px|%|em|rem|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/)) { + return new(tree.Dimension)(value[1], value[2]); + } + }, + + // + // JavaScript code to be evaluated + // + // `window.location.href` + // + javascript: function () { + var str, j = i, e; + + if (input.charAt(j) === '~') { j++, e = true } // Escaped strings + if (input.charAt(j) !== '`') { return } + + e && $('~'); + + if (str = $(/^`([^`]*)`/)) { + return new(tree.JavaScript)(str[1], i, e); + } + } + }, + + // + // The variable part of a variable definition. Used in the `rule` parser + // + // @fink: + // + variable: function () { + var name; + + if (input.charAt(i) === '@' && (name = $(/^(@[\w-]+)\s*:/))) { return name[1] } + }, + + // + // A font size/line-height shorthand + // + // small/12px + // + // We need to peek first, or we'll match on keywords and dimensions + // + shorthand: function () { + var a, b; + + if (! peek(/^[@\w.%-]+\/[@\w.-]+/)) return; + + if ((a = $(this.entity)) && $('/') && (b = $(this.entity))) { + return new(tree.Shorthand)(a, b); + } + }, + + // + // Mixins + // + mixin: { + // + // A Mixin call, with an optional argument list + // + // #mixins > .square(#fff); + // .rounded(4px, black); + // .button; + // + // The `while` loop is there because mixins can be + // namespaced, but we only support the child and descendant + // selector for now. + // + call: function () { + var elements = [], e, c, args, index = i, s = input.charAt(i), important = false; + + if (s !== '.' && s !== '#') { return } + + while (e = $(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)) { + elements.push(new(tree.Element)(c, e, i)); + c = $('>'); + } + $('(') && (args = $(this.entities.arguments)) && $(')'); + + if ($(this.important)) { + important = true; + } + + if (elements.length > 0 && ($(';') || peek('}'))) { + return new(tree.mixin.Call)(elements, args || [], index, env.filename, important); + } + }, + + // + // A Mixin definition, with a list of parameters + // + // .rounded (@radius: 2px, @color) { + // ... + // } + // + // Until we have a finer grained state-machine, we have to + // do a look-ahead, to make sure we don't have a mixin call. + // See the `rule` function for more information. + // + // We start by matching `.rounded (`, and then proceed on to + // the argument list, which has optional default values. + // We store the parameters in `params`, with a `value` key, + // if there is a value, such as in the case of `@radius`. + // + // Once we've got our params list, and a closing `)`, we parse + // the `{...}` block. + // + definition: function () { + var name, params = [], match, ruleset, param, value, cond, variadic = false; + if ((input.charAt(i) !== '.' && input.charAt(i) !== '#') || + peek(/^[^{]*(;|})/)) return; + + save(); + + if (match = $(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)) { + name = match[1]; + + do { + if (input.charAt(i) === '.' && $(/^\.{3}/)) { + variadic = true; + break; + } else if (param = $(this.entities.variable) || $(this.entities.literal) + || $(this.entities.keyword)) { + // Variable + if (param instanceof tree.Variable) { + if ($(':')) { + value = expect(this.expression, 'expected expression'); + params.push({ name: param.name, value: value }); + } else if ($(/^\.{3}/)) { + params.push({ name: param.name, variadic: true }); + variadic = true; + break; + } else { + params.push({ name: param.name }); + } + } else { + params.push({ value: param }); + } + } else { + break; + } + } while ($(',')) + + expect(')'); + + if ($(/^when/)) { // Guard + cond = expect(this.conditions, 'expected condition'); + } + + ruleset = $(this.block); + + if (ruleset) { + return new(tree.mixin.Definition)(name, params, ruleset, cond, variadic); + } else { + restore(); + } + } + } + }, + + // + // Entities are the smallest recognized token, + // and can be found inside a rule's value. + // + entity: function () { + return $(this.entities.literal) || $(this.entities.variable) || $(this.entities.url) || + $(this.entities.call) || $(this.entities.keyword) || $(this.entities.javascript) || + $(this.comment); + }, + + // + // A Rule terminator. Note that we use `peek()` to check for '}', + // because the `block` rule will be expecting it, but we still need to make sure + // it's there, if ';' was ommitted. + // + end: function () { + return $(';') || peek('}'); + }, + + // + // IE's alpha function + // + // alpha(opacity=88) + // + alpha: function () { + var value; + + if (! $(/^\(opacity=/i)) return; + if (value = $(/^\d+/) || $(this.entities.variable)) { + expect(')'); + return new(tree.Alpha)(value); + } + }, + + // + // A Selector Element + // + // div + // + h1 + // #socks + // input[type="text"] + // + // Elements are the building blocks for Selectors, + // they are made out of a `Combinator` (see combinator rule), + // and an element name, such as a tag a class, or `*`. + // + element: function () { + var e, t, c, v; + + c = $(this.combinator); + e = $(/^(?:\d+\.\d+|\d+)%/) || $(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/) || + $('*') || $(this.attribute) || $(/^\([^)@]+\)/); + + if (! e) { + $('(') && (v = $(this.entities.variable)) && $(')') && (e = new(tree.Paren)(v)); + } + + if (e) { return new(tree.Element)(c, e, i) } + + if (c.value && c.value.charAt(0) === '&') { + return new(tree.Element)(c, null, i); + } + }, + + // + // Combinators combine elements together, in a Selector. + // + // Because our parser isn't white-space sensitive, special care + // has to be taken, when parsing the descendant combinator, ` `, + // as it's an empty space. We have to check the previous character + // in the input, to see if it's a ` ` character. More info on how + // we deal with this in *combinator.js*. + // + combinator: function () { + var match, c = input.charAt(i); + + if (c === '>' || c === '+' || c === '~') { + i++; + while (input.charAt(i) === ' ') { i++ } + return new(tree.Combinator)(c); + } else if (c === '&') { + match = '&'; + i++; + if(input.charAt(i) === ' ') { + match = '& '; + } + while (input.charAt(i) === ' ') { i++ } + return new(tree.Combinator)(match); + } else if (input.charAt(i - 1) === ' ') { + return new(tree.Combinator)(" "); + } else { + return new(tree.Combinator)(null); + } + }, + + // + // A CSS Selector + // + // .class > div + h1 + // li a:hover + // + // Selectors are made out of one or more Elements, see above. + // + selector: function () { + var sel, e, elements = [], c, match; + + if ($('(')) { + sel = $(this.entity); + expect(')'); + return new(tree.Selector)([new(tree.Element)('', sel, i)]); + } + + while (e = $(this.element)) { + c = input.charAt(i); + elements.push(e) + if (c === '{' || c === '}' || c === ';' || c === ',') { break } + } + + if (elements.length > 0) { return new(tree.Selector)(elements) } + }, + tag: function () { + return $(/^[a-zA-Z][a-zA-Z-]*[0-9]?/) || $('*'); + }, + attribute: function () { + var attr = '', key, val, op; + + if (! $('[')) return; + + if (key = $(/^[a-zA-Z-]+/) || $(this.entities.quoted)) { + if ((op = $(/^[|~*$^]?=/)) && + (val = $(this.entities.quoted) || $(/^[\w-]+/))) { + attr = [key, op, val.toCSS ? val.toCSS() : val].join(''); + } else { attr = key } + } + + if (! $(']')) return; + + if (attr) { return "[" + attr + "]" } + }, + + // + // The `block` rule is used by `ruleset` and `mixin.definition`. + // It's a wrapper around the `primary` rule, with added `{}`. + // + block: function () { + var content; + + if ($('{') && (content = $(this.primary)) && $('}')) { + return content; + } + }, + + // + // div, .class, body > p {...} + // + ruleset: function () { + var selectors = [], s, rules, match; + save(); + + while (s = $(this.selector)) { + selectors.push(s); + $(this.comment); + if (! $(',')) { break } + $(this.comment); + } + + if (selectors.length > 0 && (rules = $(this.block))) { + return new(tree.Ruleset)(selectors, rules, env.strictImports); + } else { + // Backtrack + furthest = i; + restore(); + } + }, + rule: function () { + var name, value, c = input.charAt(i), important, match; + save(); + + if (c === '.' || c === '#' || c === '&') { return } + + if (name = $(this.variable) || $(this.property)) { + if ((name.charAt(0) != '@') && (match = /^([^@+\/'"*`(;{}-]*);/.exec(chunks[j]))) { + i += match[0].length - 1; + value = new(tree.Anonymous)(match[1]); + } else if (name === "font") { + value = $(this.font); + } else { + value = $(this.value); + } + important = $(this.important); + + if (value && $(this.end)) { + return new(tree.Rule)(name, value, important, memo); + } else { + furthest = i; + restore(); + } + } + }, + + // + // An @import directive + // + // @import "lib"; + // + // Depending on our environemnt, importing is done differently: + // In the browser, it's an XHR request, in Node, it would be a + // file-system operation. The function used for importing is + // stored in `import`, which we pass to the Import constructor. + // + "import": function () { + var path, features, index = i; + if ($(/^@import\s+/) && + (path = $(this.entities.quoted) || $(this.entities.url))) { + features = $(this.mediaFeatures); + if ($(';')) { + return new(tree.Import)(path, imports, features, index); + } + } + }, + + mediaFeature: function () { + var e, p, nodes = []; + + do { + if (e = $(this.entities.keyword)) { + nodes.push(e); + } else if ($('(')) { + p = $(this.property); + e = $(this.entity); + if ($(')')) { + if (p && e) { + nodes.push(new(tree.Paren)(new(tree.Rule)(p, e, null, i, true))); + } else if (e) { + nodes.push(new(tree.Paren)(e)); + } else { + return null; + } + } else { return null } + } + } while (e); + + if (nodes.length > 0) { + return new(tree.Expression)(nodes); + } + }, + + mediaFeatures: function () { + var e, features = []; + + do { + if (e = $(this.mediaFeature)) { + features.push(e); + if (! $(',')) { break } + } else if (e = $(this.entities.variable)) { + features.push(e); + if (! $(',')) { break } + } + } while (e); + + return features.length > 0 ? features : null; + }, + + media: function () { + var features, rules; + + if ($(/^@media/)) { + features = $(this.mediaFeatures); + + if (rules = $(this.block)) { + return new(tree.Media)(rules, features); + } + } + }, + + // + // A CSS Directive + // + // @charset "utf-8"; + // + directive: function () { + var name, value, rules, types, e, nodes; + + if (input.charAt(i) !== '@') return; + + if (value = $(this['import']) || $(this.media)) { + return value; + } else if (name = $(/^@page|@keyframes/) || $(/^@(?:-webkit-|-moz-|-o-|-ms-)[a-z0-9-]+/)) { + types = ($(/^[^{]+/) || '').trim(); + if (rules = $(this.block)) { + return new(tree.Directive)(name + " " + types, rules); + } + } else if (name = $(/^@[-a-z]+/)) { + if (name === '@font-face') { + if (rules = $(this.block)) { + return new(tree.Directive)(name, rules); + } + } else if ((value = $(this.entity)) && $(';')) { + return new(tree.Directive)(name, value); + } + } + }, + font: function () { + var value = [], expression = [], weight, shorthand, font, e; + + while (e = $(this.shorthand) || $(this.entity)) { + expression.push(e); + } + value.push(new(tree.Expression)(expression)); + + if ($(',')) { + while (e = $(this.expression)) { + value.push(e); + if (! $(',')) { break } + } + } + return new(tree.Value)(value); + }, + + // + // A Value is a comma-delimited list of Expressions + // + // font-family: Baskerville, Georgia, serif; + // + // In a Rule, a Value represents everything after the `:`, + // and before the `;`. + // + value: function () { + var e, expressions = [], important; + + while (e = $(this.expression)) { + expressions.push(e); + if (! $(',')) { break } + } + + if (expressions.length > 0) { + return new(tree.Value)(expressions); + } + }, + important: function () { + if (input.charAt(i) === '!') { + return $(/^! *important/); + } + }, + sub: function () { + var e; + + if ($('(') && (e = $(this.expression)) && $(')')) { + return e; + } + }, + multiplication: function () { + var m, a, op, operation; + if (m = $(this.operand)) { + while (!peek(/^\/\*/) && (op = ($('/') || $('*'))) && (a = $(this.operand))) { + operation = new(tree.Operation)(op, [operation || m, a]); + } + return operation || m; + } + }, + addition: function () { + var m, a, op, operation; + if (m = $(this.multiplication)) { + while ((op = $(/^[-+]\s+/) || (input.charAt(i - 1) != ' ' && ($('+') || $('-')))) && + (a = $(this.multiplication))) { + operation = new(tree.Operation)(op, [operation || m, a]); + } + return operation || m; + } + }, + conditions: function () { + var a, b, index = i, condition; + + if (a = $(this.condition)) { + while ($(',') && (b = $(this.condition))) { + condition = new(tree.Condition)('or', condition || a, b, index); + } + return condition || a; + } + }, + condition: function () { + var a, b, c, op, index = i, negate = false; + + if ($(/^not/)) { negate = true } + expect('('); + if (a = $(this.addition) || $(this.entities.keyword) || $(this.entities.quoted)) { + if (op = $(/^(?:>=|=<|[<=>])/)) { + if (b = $(this.addition) || $(this.entities.keyword) || $(this.entities.quoted)) { + c = new(tree.Condition)(op, a, b, index, negate); + } else { + error('expected expression'); + } + } else { + c = new(tree.Condition)('=', a, new(tree.Keyword)('true'), index, negate); + } + expect(')'); + return $(/^and/) ? new(tree.Condition)('and', c, $(this.condition)) : c; + } + }, + + // + // An operand is anything that can be part of an operation, + // such as a Color, or a Variable + // + operand: function () { + var negate, p = input.charAt(i + 1); + + if (input.charAt(i) === '-' && (p === '@' || p === '(')) { negate = $('-') } + var o = $(this.sub) || $(this.entities.dimension) || + $(this.entities.color) || $(this.entities.variable) || + $(this.entities.call); + return negate ? new(tree.Operation)('*', [new(tree.Dimension)(-1), o]) + : o; + }, + + // + // Expressions either represent mathematical operations, + // or white-space delimited Entities. + // + // 1px solid black + // @var * 2 + // + expression: function () { + var e, delim, entities = [], d; + + while (e = $(this.addition) || $(this.entity)) { + entities.push(e); + } + if (entities.length > 0) { + return new(tree.Expression)(entities); + } + }, + property: function () { + var name; + + if (name = $(/^(\*?-?[-a-z_0-9]+)\s*:/)) { + return name[1]; + } + } + } + }; +}; + +if (less.mode === 'browser' || less.mode === 'rhino') { + // + // Used by `@import` directives + // + less.Parser.importer = function (path, paths, callback, env) { + if (!/^([a-z]+:)?\//.test(path) && paths.length > 0) { + path = paths[0] + path; + } + // We pass `true` as 3rd argument, to force the reload of the import. + // This is so we can get the syntax tree as opposed to just the CSS output, + // as we need this to evaluate the current stylesheet. + loadStyleSheet({ href: path, title: path, type: env.mime }, function (e) { + if (e && typeof(env.errback) === "function") { + env.errback.call(null, path, paths, callback, env); + } else { + callback.apply(null, arguments); + } + }, true); + }; +} + diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/rhino.js b/askbot/skins/default/media/style/node_modules/less/lib/less/rhino.js new file mode 100644 index 00000000..a2c5662f --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/rhino.js @@ -0,0 +1,62 @@ +var name; + +function loadStyleSheet(sheet, callback, reload, remaining) { + var sheetName = name.slice(0, name.lastIndexOf('/') + 1) + sheet.href; + var input = readFile(sheetName); + var parser = new less.Parser({ + paths: [sheet.href.replace(/[\w\.-]+$/, '')] + }); + parser.parse(input, function (e, root) { + if (e) { + print("Error: " + e); + quit(1); + } + callback(root, sheet, { local: false, lastModified: 0, remaining: remaining }); + }); + + // callback({}, sheet, { local: true, remaining: remaining }); +} + +function writeFile(filename, content) { + var fstream = new java.io.FileWriter(filename); + var out = new java.io.BufferedWriter(fstream); + out.write(content); + out.close(); +} + +// Command line integration via Rhino +(function (args) { + name = args[0]; + var output = args[1]; + + if (!name) { + print('No files present in the fileset; Check your pattern match in build.xml'); + quit(1); + } + path = name.split("/");path.pop();path=path.join("/") + + var input = readFile(name); + + if (!input) { + print('lesscss: couldn\'t open file ' + name); + quit(1); + } + + var result; + var parser = new less.Parser(); + parser.parse(input, function (e, root) { + if (e) { + quit(1); + } else { + result = root.toCSS(); + if (output) { + writeFile(output, result); + print("Written to " + output); + } else { + print(result); + } + quit(0); + } + }); + print("done"); +}(arguments)); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree.js new file mode 100644 index 00000000..24ecd712 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree.js @@ -0,0 +1,17 @@ +(function (tree) { + +tree.find = function (obj, fun) { + for (var i = 0, r; i < obj.length; i++) { + if (r = fun.call(obj, obj[i])) { return r } + } + return null; +}; +tree.jsify = function (obj) { + if (Array.isArray(obj.value) && (obj.value.length > 1)) { + return '[' + obj.value.map(function (v) { return v.toCSS(false) }).join(', ') + ']'; + } else { + return obj.toCSS(false); + } +}; + +})(require('./tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/alpha.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/alpha.js new file mode 100644 index 00000000..139ae920 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/alpha.js @@ -0,0 +1,17 @@ +(function (tree) { + +tree.Alpha = function (val) { + this.value = val; +}; +tree.Alpha.prototype = { + toCSS: function () { + return "alpha(opacity=" + + (this.value.toCSS ? this.value.toCSS() : this.value) + ")"; + }, + eval: function (env) { + if (this.value.eval) { this.value = this.value.eval(env) } + return this; + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/anonymous.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/anonymous.js new file mode 100644 index 00000000..460c9ec7 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/anonymous.js @@ -0,0 +1,13 @@ +(function (tree) { + +tree.Anonymous = function (string) { + this.value = string.value || string; +}; +tree.Anonymous.prototype = { + toCSS: function () { + return this.value; + }, + eval: function () { return this } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/assignment.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/assignment.js new file mode 100644 index 00000000..70ce6e2f --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/assignment.js @@ -0,0 +1,17 @@ +(function (tree) { + +tree.Assignment = function (key, val) { + this.key = key; + this.value = val; +}; +tree.Assignment.prototype = { + toCSS: function () { + return this.key + '=' + (this.value.toCSS ? this.value.toCSS() : this.value); + }, + eval: function (env) { + if (this.value.eval) { this.value = this.value.eval(env) } + return this; + } +}; + +})(require('../tree')); \ No newline at end of file diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/call.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/call.js new file mode 100644 index 00000000..c1465dd4 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/call.js @@ -0,0 +1,48 @@ +(function (tree) { + +// +// A function call node. +// +tree.Call = function (name, args, index, filename) { + this.name = name; + this.args = args; + this.index = index; + this.filename = filename; +}; +tree.Call.prototype = { + // + // When evaluating a function call, + // we either find the function in `tree.functions` [1], + // in which case we call it, passing the evaluated arguments, + // or we simply print it out as it appeared originally [2]. + // + // The *functions.js* file contains the built-in functions. + // + // The reason why we evaluate the arguments, is in the case where + // we try to pass a variable to a function, like: `saturate(@color)`. + // The function should receive the value, not the variable. + // + eval: function (env) { + var args = this.args.map(function (a) { return a.eval(env) }); + + if (this.name in tree.functions) { // 1. + try { + return tree.functions[this.name].apply(tree.functions, args); + } catch (e) { + throw { type: e.type || "Runtime", + message: "error evaluating function `" + this.name + "`" + + (e.message ? ': ' + e.message : ''), + index: this.index, filename: this.filename }; + } + } else { // 2. + return new(tree.Anonymous)(this.name + + "(" + args.map(function (a) { return a.toCSS() }).join(', ') + ")"); + } + }, + + toCSS: function (env) { + return this.eval(env).toCSS(); + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/color.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/color.js new file mode 100644 index 00000000..37ce1781 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/color.js @@ -0,0 +1,101 @@ +(function (tree) { +// +// RGB Colors - #ff0014, #eee +// +tree.Color = function (rgb, a) { + // + // The end goal here, is to parse the arguments + // into an integer triplet, such as `128, 255, 0` + // + // This facilitates operations and conversions. + // + if (Array.isArray(rgb)) { + this.rgb = rgb; + } else if (rgb.length == 6) { + this.rgb = rgb.match(/.{2}/g).map(function (c) { + return parseInt(c, 16); + }); + } else { + this.rgb = rgb.split('').map(function (c) { + return parseInt(c + c, 16); + }); + } + this.alpha = typeof(a) === 'number' ? a : 1; +}; +tree.Color.prototype = { + eval: function () { return this }, + + // + // If we have some transparency, the only way to represent it + // is via `rgba`. Otherwise, we use the hex representation, + // which has better compatibility with older browsers. + // Values are capped between `0` and `255`, rounded and zero-padded. + // + toCSS: function () { + if (this.alpha < 1.0) { + return "rgba(" + this.rgb.map(function (c) { + return Math.round(c); + }).concat(this.alpha).join(', ') + ")"; + } else { + return '#' + this.rgb.map(function (i) { + i = Math.round(i); + i = (i > 255 ? 255 : (i < 0 ? 0 : i)).toString(16); + return i.length === 1 ? '0' + i : i; + }).join(''); + } + }, + + // + // Operations have to be done per-channel, if not, + // channels will spill onto each other. Once we have + // our result, in the form of an integer triplet, + // we create a new Color node to hold the result. + // + operate: function (op, other) { + var result = []; + + if (! (other instanceof tree.Color)) { + other = other.toColor(); + } + + for (var c = 0; c < 3; c++) { + result[c] = tree.operate(op, this.rgb[c], other.rgb[c]); + } + return new(tree.Color)(result, this.alpha + other.alpha); + }, + + toHSL: function () { + var r = this.rgb[0] / 255, + g = this.rgb[1] / 255, + b = this.rgb[2] / 255, + a = this.alpha; + + var max = Math.max(r, g, b), min = Math.min(r, g, b); + var h, s, l = (max + min) / 2, d = max - min; + + if (max === min) { + h = s = 0; + } else { + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + + switch (max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h * 360, s: s, l: l, a: a }; + }, + toARGB: function () { + var argb = [Math.round(this.alpha * 255)].concat(this.rgb); + return '#' + argb.map(function (i) { + i = Math.round(i); + i = (i > 255 ? 255 : (i < 0 ? 0 : i)).toString(16); + return i.length === 1 ? '0' + i : i; + }).join(''); + } +}; + + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/comment.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/comment.js new file mode 100644 index 00000000..f4a33840 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/comment.js @@ -0,0 +1,14 @@ +(function (tree) { + +tree.Comment = function (value, silent) { + this.value = value; + this.silent = !!silent; +}; +tree.Comment.prototype = { + toCSS: function (env) { + return env.compress ? '' : this.value; + }, + eval: function () { return this } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/condition.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/condition.js new file mode 100644 index 00000000..6b79dc96 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/condition.js @@ -0,0 +1,42 @@ +(function (tree) { + +tree.Condition = function (op, l, r, i, negate) { + this.op = op.trim(); + this.lvalue = l; + this.rvalue = r; + this.index = i; + this.negate = negate; +}; +tree.Condition.prototype.eval = function (env) { + var a = this.lvalue.eval(env), + b = this.rvalue.eval(env); + + var i = this.index, result; + + var result = (function (op) { + switch (op) { + case 'and': + return a && b; + case 'or': + return a || b; + default: + if (a.compare) { + result = a.compare(b); + } else if (b.compare) { + result = b.compare(a); + } else { + throw { type: "Type", + message: "Unable to perform comparison", + index: i }; + } + switch (result) { + case -1: return op === '<' || op === '=<'; + case 0: return op === '=' || op === '>=' || op === '=<'; + case 1: return op === '>' || op === '>='; + } + } + })(this.op); + return this.negate ? !result : result; +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/dimension.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/dimension.js new file mode 100644 index 00000000..9a6fce3d --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/dimension.js @@ -0,0 +1,49 @@ +(function (tree) { + +// +// A number with a unit +// +tree.Dimension = function (value, unit) { + this.value = parseFloat(value); + this.unit = unit || null; +}; + +tree.Dimension.prototype = { + eval: function () { return this }, + toColor: function () { + return new(tree.Color)([this.value, this.value, this.value]); + }, + toCSS: function () { + var css = this.value + this.unit; + return css; + }, + + // In an operation between two Dimensions, + // we default to the first Dimension's unit, + // so `1px + 2em` will yield `3px`. + // In the future, we could implement some unit + // conversions such that `100cm + 10mm` would yield + // `101cm`. + operate: function (op, other) { + return new(tree.Dimension) + (tree.operate(op, this.value, other.value), + this.unit || other.unit); + }, + + // TODO: Perform unit conversion before comparing + compare: function (other) { + if (other instanceof tree.Dimension) { + if (other.value > this.value) { + return -1; + } else if (other.value < this.value) { + return 1; + } else { + return 0; + } + } else { + return -1; + } + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/directive.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/directive.js new file mode 100644 index 00000000..27538332 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/directive.js @@ -0,0 +1,35 @@ +(function (tree) { + +tree.Directive = function (name, value, features) { + this.name = name; + + if (Array.isArray(value)) { + this.ruleset = new(tree.Ruleset)([], value); + this.ruleset.allowImports = true; + } else { + this.value = value; + } +}; +tree.Directive.prototype = { + toCSS: function (ctx, env) { + if (this.ruleset) { + this.ruleset.root = true; + return this.name + (env.compress ? '{' : ' {\n ') + + this.ruleset.toCSS(ctx, env).trim().replace(/\n/g, '\n ') + + (env.compress ? '}': '\n}\n'); + } else { + return this.name + ' ' + this.value.toCSS() + ';\n'; + } + }, + eval: function (env) { + env.frames.unshift(this); + this.ruleset = this.ruleset && this.ruleset.eval(env); + env.frames.shift(); + return this; + }, + variable: function (name) { return tree.Ruleset.prototype.variable.call(this.ruleset, name) }, + find: function () { return tree.Ruleset.prototype.find.apply(this.ruleset, arguments) }, + rulesets: function () { return tree.Ruleset.prototype.rulesets.apply(this.ruleset) } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/element.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/element.js new file mode 100644 index 00000000..4736857e --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/element.js @@ -0,0 +1,47 @@ +(function (tree) { + +tree.Element = function (combinator, value, index) { + this.combinator = combinator instanceof tree.Combinator ? + combinator : new(tree.Combinator)(combinator); + + if (typeof(value) === 'string') { + this.value = value.trim(); + } else if (value) { + this.value = value; + } else { + this.value = ""; + } + this.index = index; +}; +tree.Element.prototype.eval = function (env) { + return new(tree.Element)(this.combinator, + this.value.eval ? this.value.eval(env) : this.value, + this.index); +}; +tree.Element.prototype.toCSS = function (env) { + return this.combinator.toCSS(env || {}) + (this.value.toCSS ? this.value.toCSS(env) : this.value); +}; + +tree.Combinator = function (value) { + if (value === ' ') { + this.value = ' '; + } else if (value === '& ') { + this.value = '& '; + } else { + this.value = value ? value.trim() : ""; + } +}; +tree.Combinator.prototype.toCSS = function (env) { + return { + '' : '', + ' ' : ' ', + '&' : '', + '& ' : ' ', + ':' : ' :', + '+' : env.compress ? '+' : ' + ', + '~' : env.compress ? '~' : ' ~ ', + '>' : env.compress ? '>' : ' > ' + }[this.value]; +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/expression.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/expression.js new file mode 100644 index 00000000..fbfa9c5b --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/expression.js @@ -0,0 +1,23 @@ +(function (tree) { + +tree.Expression = function (value) { this.value = value }; +tree.Expression.prototype = { + eval: function (env) { + if (this.value.length > 1) { + return new(tree.Expression)(this.value.map(function (e) { + return e.eval(env); + })); + } else if (this.value.length === 1) { + return this.value[0].eval(env); + } else { + return this; + } + }, + toCSS: function (env) { + return this.value.map(function (e) { + return e.toCSS ? e.toCSS(env) : ''; + }).join(' '); + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/import.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/import.js new file mode 100644 index 00000000..c3b0b009 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/import.js @@ -0,0 +1,79 @@ +(function (tree) { +// +// CSS @import node +// +// The general strategy here is that we don't want to wait +// for the parsing to be completed, before we start importing +// the file. That's because in the context of a browser, +// most of the time will be spent waiting for the server to respond. +// +// On creation, we push the import path to our import queue, though +// `import,push`, we also pass it a callback, which it'll call once +// the file has been fetched, and parsed. +// +tree.Import = function (path, imports, features, index) { + var that = this; + + this.index = index; + this._path = path; + this.features = features && new(tree.Value)(features); + + // The '.less' extension is optional + if (path instanceof tree.Quoted) { + this.path = /\.(le?|c)ss(\?.*)?$/.test(path.value) ? path.value : path.value + '.less'; + } else { + this.path = path.value.value || path.value; + } + + this.css = /css(\?.*)?$/.test(this.path); + + // Only pre-compile .less files + if (! this.css) { + imports.push(this.path, function (e, root) { + if (e) { e.index = index } + that.root = root || new(tree.Ruleset)([], []); + }); + } +}; + +// +// The actual import node doesn't return anything, when converted to CSS. +// The reason is that it's used at the evaluation stage, so that the rules +// it imports can be treated like any other rules. +// +// In `eval`, we make sure all Import nodes get evaluated, recursively, so +// we end up with a flat structure, which can easily be imported in the parent +// ruleset. +// +tree.Import.prototype = { + toCSS: function (env) { + var features = this.features ? ' ' + this.features.toCSS(env) : ''; + + if (this.css) { + return "@import " + this._path.toCSS() + features + ';\n'; + } else { + return ""; + } + }, + eval: function (env) { + var ruleset, features = this.features && this.features.eval(env); + + if (this.css) { + return this; + } else { + ruleset = new(tree.Ruleset)([], this.root.rules.slice(0)); + + for (var i = 0; i < ruleset.rules.length; i++) { + if (ruleset.rules[i] instanceof tree.Import) { + Array.prototype + .splice + .apply(ruleset.rules, + [i, 1].concat(ruleset.rules[i].eval(env))); + } + } + return this.features ? new(tree.Media)(ruleset.rules, this.features.value) : ruleset.rules; + } + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/javascript.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/javascript.js new file mode 100644 index 00000000..772a31dd --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/javascript.js @@ -0,0 +1,51 @@ +(function (tree) { + +tree.JavaScript = function (string, index, escaped) { + this.escaped = escaped; + this.expression = string; + this.index = index; +}; +tree.JavaScript.prototype = { + eval: function (env) { + var result, + that = this, + context = {}; + + var expression = this.expression.replace(/@\{([\w-]+)\}/g, function (_, name) { + return tree.jsify(new(tree.Variable)('@' + name, that.index).eval(env)); + }); + + try { + expression = new(Function)('return (' + expression + ')'); + } catch (e) { + throw { message: "JavaScript evaluation error: `" + expression + "`" , + index: this.index }; + } + + for (var k in env.frames[0].variables()) { + context[k.slice(1)] = { + value: env.frames[0].variables()[k].value, + toJS: function () { + return this.value.eval(env).toCSS(); + } + }; + } + + try { + result = expression.call(context); + } catch (e) { + throw { message: "JavaScript evaluation error: '" + e.name + ': ' + e.message + "'" , + index: this.index }; + } + if (typeof(result) === 'string') { + return new(tree.Quoted)('"' + result + '"', result, this.escaped, this.index); + } else if (Array.isArray(result)) { + return new(tree.Anonymous)(result.join(', ')); + } else { + return new(tree.Anonymous)(result); + } + } +}; + +})(require('../tree')); + diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/keyword.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/keyword.js new file mode 100644 index 00000000..701b79e5 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/keyword.js @@ -0,0 +1,19 @@ +(function (tree) { + +tree.Keyword = function (value) { this.value = value }; +tree.Keyword.prototype = { + eval: function () { return this }, + toCSS: function () { return this.value }, + compare: function (other) { + if (other instanceof tree.Keyword) { + return other.value === this.value ? 0 : 1; + } else { + return -1; + } + } +}; + +tree.True = new(tree.Keyword)('true'); +tree.False = new(tree.Keyword)('false'); + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/media.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/media.js new file mode 100644 index 00000000..2b7b26e5 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/media.js @@ -0,0 +1,114 @@ +(function (tree) { + +tree.Media = function (value, features) { + var el = new(tree.Element)('&', null, 0), + selectors = [new(tree.Selector)([el])]; + + this.features = new(tree.Value)(features); + this.ruleset = new(tree.Ruleset)(selectors, value); + this.ruleset.allowImports = true; +}; +tree.Media.prototype = { + toCSS: function (ctx, env) { + var features = this.features.toCSS(env); + + this.ruleset.root = (ctx.length === 0 || ctx[0].multiMedia); + return '@media ' + features + (env.compress ? '{' : ' {\n ') + + this.ruleset.toCSS(ctx, env).trim().replace(/\n/g, '\n ') + + (env.compress ? '}': '\n}\n'); + }, + eval: function (env) { + if (!env.mediaBlocks) { + env.mediaBlocks = []; + env.mediaPath = []; + } + + var blockIndex = env.mediaBlocks.length; + env.mediaPath.push(this); + env.mediaBlocks.push(this); + + var media = new(tree.Media)([], []); + media.features = this.features.eval(env); + + env.frames.unshift(this.ruleset); + media.ruleset = this.ruleset.eval(env); + env.frames.shift(); + + env.mediaBlocks[blockIndex] = media; + env.mediaPath.pop(); + + return env.mediaPath.length === 0 ? media.evalTop(env) : + media.evalNested(env) + }, + variable: function (name) { return tree.Ruleset.prototype.variable.call(this.ruleset, name) }, + find: function () { return tree.Ruleset.prototype.find.apply(this.ruleset, arguments) }, + rulesets: function () { return tree.Ruleset.prototype.rulesets.apply(this.ruleset) }, + + evalTop: function (env) { + var result = this; + + // Render all dependent Media blocks. + if (env.mediaBlocks.length > 1) { + var el = new(tree.Element)('&', null, 0); + var selectors = [new(tree.Selector)([el])]; + result = new(tree.Ruleset)(selectors, env.mediaBlocks); + result.multiMedia = true; + } + + delete env.mediaBlocks; + delete env.mediaPath; + + return result; + }, + evalNested: function (env) { + var i, value, + path = env.mediaPath.concat([this]); + + // Extract the media-query conditions separated with `,` (OR). + for (i = 0; i < path.length; i++) { + value = path[i].features instanceof tree.Value ? + path[i].features.value : path[i].features; + path[i] = Array.isArray(value) ? value : [value]; + } + + // Trace all permutations to generate the resulting media-query. + // + // (a, b and c) with nested (d, e) -> + // a and d + // a and e + // b and c and d + // b and c and e + this.features = new(tree.Value)(this.permute(path).map(function (path) { + path = path.map(function (fragment) { + return fragment.toCSS ? fragment : new(tree.Anonymous)(fragment); + }); + + for(i = path.length - 1; i > 0; i--) { + path.splice(i, 0, new(tree.Anonymous)("and")); + } + + return new(tree.Expression)(path); + })); + + // Fake a tree-node that doesn't output anything. + return new(tree.Ruleset)([], []); + }, + permute: function (arr) { + if (arr.length === 0) { + return []; + } else if (arr.length === 1) { + return arr[0]; + } else { + var result = []; + var rest = this.permute(arr.slice(1)); + for (var i = 0; i < rest.length; i++) { + for (var j = 0; j < arr[0].length; j++) { + result.push([arr[0][j]].concat(rest[i])); + } + } + return result; + } + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/mixin.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/mixin.js new file mode 100644 index 00000000..4464bc6c --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/mixin.js @@ -0,0 +1,135 @@ +(function (tree) { + +tree.mixin = {}; +tree.mixin.Call = function (elements, args, index, filename, important) { + this.selector = new(tree.Selector)(elements); + this.arguments = args; + this.index = index; + this.filename = filename; + this.important = important; +}; +tree.mixin.Call.prototype = { + eval: function (env) { + var mixins, args, rules = [], match = false; + + for (var i = 0; i < env.frames.length; i++) { + if ((mixins = env.frames[i].find(this.selector)).length > 0) { + args = this.arguments && this.arguments.map(function (a) { return a.eval(env) }); + for (var m = 0; m < mixins.length; m++) { + if (mixins[m].match(args, env)) { + try { + Array.prototype.push.apply( + rules, mixins[m].eval(env, this.arguments, this.important).rules); + match = true; + } catch (e) { + throw { message: e.message, index: this.index, filename: this.filename, stack: e.stack }; + } + } + } + if (match) { + return rules; + } else { + throw { type: 'Runtime', + message: 'No matching definition was found for `' + + this.selector.toCSS().trim() + '(' + + this.arguments.map(function (a) { + return a.toCSS(); + }).join(', ') + ")`", + index: this.index, filename: this.filename }; + } + } + } + throw { type: 'Name', + message: this.selector.toCSS().trim() + " is undefined", + index: this.index, filename: this.filename }; + } +}; + +tree.mixin.Definition = function (name, params, rules, condition, variadic) { + this.name = name; + this.selectors = [new(tree.Selector)([new(tree.Element)(null, name)])]; + this.params = params; + this.condition = condition; + this.variadic = variadic; + this.arity = params.length; + this.rules = rules; + this._lookups = {}; + this.required = params.reduce(function (count, p) { + if (!p.name || (p.name && !p.value)) { return count + 1 } + else { return count } + }, 0); + this.parent = tree.Ruleset.prototype; + this.frames = []; +}; +tree.mixin.Definition.prototype = { + toCSS: function () { return "" }, + variable: function (name) { return this.parent.variable.call(this, name) }, + variables: function () { return this.parent.variables.call(this) }, + find: function () { return this.parent.find.apply(this, arguments) }, + rulesets: function () { return this.parent.rulesets.apply(this) }, + + evalParams: function (env, args) { + var frame = new(tree.Ruleset)(null, []), varargs; + + for (var i = 0, val, name; i < this.params.length; i++) { + if (name = this.params[i].name) { + if (this.params[i].variadic && args) { + varargs = []; + for (var j = i; j < args.length; j++) { + varargs.push(args[j].eval(env)); + } + frame.rules.unshift(new(tree.Rule)(name, new(tree.Expression)(varargs).eval(env))); + } else if (val = (args && args[i]) || this.params[i].value) { + frame.rules.unshift(new(tree.Rule)(name, val.eval(env))); + } else { + throw { type: 'Runtime', message: "wrong number of arguments for " + this.name + + ' (' + args.length + ' for ' + this.arity + ')' }; + } + } + } + return frame; + }, + eval: function (env, args, important) { + var frame = this.evalParams(env, args), context, _arguments = [], rules, start; + + for (var i = 0; i < Math.max(this.params.length, args && args.length); i++) { + _arguments.push(args[i] || this.params[i].value); + } + frame.rules.unshift(new(tree.Rule)('@arguments', new(tree.Expression)(_arguments).eval(env))); + + rules = important ? + this.rules.map(function (r) { + return new(tree.Rule)(r.name, r.value, '!important', r.index); + }) : this.rules.slice(0); + + return new(tree.Ruleset)(null, rules).eval({ + frames: [this, frame].concat(this.frames, env.frames) + }); + }, + match: function (args, env) { + var argsLength = (args && args.length) || 0, len, frame; + + if (! this.variadic) { + if (argsLength < this.required) { return false } + if (argsLength > this.params.length) { return false } + if ((this.required > 0) && (argsLength > this.params.length)) { return false } + } + + if (this.condition && !this.condition.eval({ + frames: [this.evalParams(env, args)].concat(env.frames) + })) { return false } + + len = Math.min(argsLength, this.arity); + + for (var i = 0; i < len; i++) { + if (!this.params[i].name) { + if (args[i].eval(env).toCSS() != this.params[i].value.eval(env).toCSS()) { + return false; + } + } + } + return true; + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/operation.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/operation.js new file mode 100644 index 00000000..1ce22fb0 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/operation.js @@ -0,0 +1,32 @@ +(function (tree) { + +tree.Operation = function (op, operands) { + this.op = op.trim(); + this.operands = operands; +}; +tree.Operation.prototype.eval = function (env) { + var a = this.operands[0].eval(env), + b = this.operands[1].eval(env), + temp; + + if (a instanceof tree.Dimension && b instanceof tree.Color) { + if (this.op === '*' || this.op === '+') { + temp = b, b = a, a = temp; + } else { + throw { name: "OperationError", + message: "Can't substract or divide a color from a number" }; + } + } + return a.operate(this.op, b); +}; + +tree.operate = function (op, a, b) { + switch (op) { + case '+': return a + b; + case '-': return a - b; + case '*': return a * b; + case '/': return a / b; + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/paren.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/paren.js new file mode 100644 index 00000000..384a43c7 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/paren.js @@ -0,0 +1,16 @@ + +(function (tree) { + +tree.Paren = function (node) { + this.value = node; +}; +tree.Paren.prototype = { + toCSS: function (env) { + return '(' + this.value.toCSS(env) + ')'; + }, + eval: function (env) { + return new(tree.Paren)(this.value.eval(env)); + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/quoted.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/quoted.js new file mode 100644 index 00000000..794bf4ce --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/quoted.js @@ -0,0 +1,29 @@ +(function (tree) { + +tree.Quoted = function (str, content, escaped, i) { + this.escaped = escaped; + this.value = content || ''; + this.quote = str.charAt(0); + this.index = i; +}; +tree.Quoted.prototype = { + toCSS: function () { + if (this.escaped) { + return this.value; + } else { + return this.quote + this.value + this.quote; + } + }, + eval: function (env) { + var that = this; + var value = this.value.replace(/`([^`]+)`/g, function (_, exp) { + return new(tree.JavaScript)(exp, that.index, true).eval(env).value; + }).replace(/@\{([\w-]+)\}/g, function (_, name) { + var v = new(tree.Variable)('@' + name, that.index).eval(env); + return ('value' in v) ? v.value : v.toCSS(); + }); + return new(tree.Quoted)(this.quote + value + this.quote, value, this.escaped, this.index); + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/rule.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/rule.js new file mode 100644 index 00000000..9e4e54a3 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/rule.js @@ -0,0 +1,42 @@ +(function (tree) { + +tree.Rule = function (name, value, important, index, inline) { + this.name = name; + this.value = (value instanceof tree.Value) ? value : new(tree.Value)([value]); + this.important = important ? ' ' + important.trim() : ''; + this.index = index; + this.inline = inline || false; + + if (name.charAt(0) === '@') { + this.variable = true; + } else { this.variable = false } +}; +tree.Rule.prototype.toCSS = function (env) { + if (this.variable) { return "" } + else { + return this.name + (env.compress ? ':' : ': ') + + this.value.toCSS(env) + + this.important + (this.inline ? "" : ";"); + } +}; + +tree.Rule.prototype.eval = function (context) { + return new(tree.Rule)(this.name, + this.value.eval(context), + this.important, + this.index, this.inline); +}; + +tree.Shorthand = function (a, b) { + this.a = a; + this.b = b; +}; + +tree.Shorthand.prototype = { + toCSS: function (env) { + return this.a.toCSS(env) + "/" + this.b.toCSS(env); + }, + eval: function () { return this } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/ruleset.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/ruleset.js new file mode 100644 index 00000000..7d6283ea --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/ruleset.js @@ -0,0 +1,216 @@ +(function (tree) { + +tree.Ruleset = function (selectors, rules, strictImports) { + this.selectors = selectors; + this.rules = rules; + this._lookups = {}; + this.strictImports = strictImports; +}; +tree.Ruleset.prototype = { + eval: function (env) { + var selectors = this.selectors && this.selectors.map(function (s) { return s.eval(env) }); + var ruleset = new(tree.Ruleset)(selectors, this.rules.slice(0), this.strictImports); + + ruleset.root = this.root; + ruleset.allowImports = this.allowImports; + + // push the current ruleset to the frames stack + env.frames.unshift(ruleset); + + // Evaluate imports + if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) { + for (var i = 0; i < ruleset.rules.length; i++) { + if (ruleset.rules[i] instanceof tree.Import) { + Array.prototype.splice + .apply(ruleset.rules, [i, 1].concat(ruleset.rules[i].eval(env))); + } + } + } + + // Store the frames around mixin definitions, + // so they can be evaluated like closures when the time comes. + for (var i = 0; i < ruleset.rules.length; i++) { + if (ruleset.rules[i] instanceof tree.mixin.Definition) { + ruleset.rules[i].frames = env.frames.slice(0); + } + } + + // Evaluate mixin calls. + for (var i = 0; i < ruleset.rules.length; i++) { + if (ruleset.rules[i] instanceof tree.mixin.Call) { + Array.prototype.splice + .apply(ruleset.rules, [i, 1].concat(ruleset.rules[i].eval(env))); + } + } + + // Evaluate everything else + for (var i = 0, rule; i < ruleset.rules.length; i++) { + rule = ruleset.rules[i]; + + if (! (rule instanceof tree.mixin.Definition)) { + ruleset.rules[i] = rule.eval ? rule.eval(env) : rule; + } + } + + // Pop the stack + env.frames.shift(); + + return ruleset; + }, + match: function (args) { + return !args || args.length === 0; + }, + variables: function () { + if (this._variables) { return this._variables } + else { + return this._variables = this.rules.reduce(function (hash, r) { + if (r instanceof tree.Rule && r.variable === true) { + hash[r.name] = r; + } + return hash; + }, {}); + } + }, + variable: function (name) { + return this.variables()[name]; + }, + rulesets: function () { + if (this._rulesets) { return this._rulesets } + else { + return this._rulesets = this.rules.filter(function (r) { + return (r instanceof tree.Ruleset) || (r instanceof tree.mixin.Definition); + }); + } + }, + find: function (selector, self) { + self = self || this; + var rules = [], rule, match, + key = selector.toCSS(); + + if (key in this._lookups) { return this._lookups[key] } + + this.rulesets().forEach(function (rule) { + if (rule !== self) { + for (var j = 0; j < rule.selectors.length; j++) { + if (match = selector.match(rule.selectors[j])) { + if (selector.elements.length > rule.selectors[j].elements.length) { + Array.prototype.push.apply(rules, rule.find( + new(tree.Selector)(selector.elements.slice(1)), self)); + } else { + rules.push(rule); + } + break; + } + } + } + }); + return this._lookups[key] = rules; + }, + // + // Entry point for code generation + // + // `context` holds an array of arrays. + // + toCSS: function (context, env) { + var css = [], // The CSS output + rules = [], // node.Rule instances + rulesets = [], // node.Ruleset instances + paths = [], // Current selectors + selector, // The fully rendered selector + rule; + + if (! this.root) { + if (context.length === 0) { + paths = this.selectors.map(function (s) { return [s] }); + } else { + this.joinSelectors(paths, context, this.selectors); + } + } + + // Compile rules and rulesets + for (var i = 0; i < this.rules.length; i++) { + rule = this.rules[i]; + + if (rule.rules || (rule instanceof tree.Directive) || (rule instanceof tree.Media)) { + rulesets.push(rule.toCSS(paths, env)); + } else if (rule instanceof tree.Comment) { + if (!rule.silent) { + if (this.root) { + rulesets.push(rule.toCSS(env)); + } else { + rules.push(rule.toCSS(env)); + } + } + } else { + if (rule.toCSS && !rule.variable) { + rules.push(rule.toCSS(env)); + } else if (rule.value && !rule.variable) { + rules.push(rule.value.toString()); + } + } + } + + rulesets = rulesets.join(''); + + // If this is the root node, we don't render + // a selector, or {}. + // Otherwise, only output if this ruleset has rules. + if (this.root) { + css.push(rules.join(env.compress ? '' : '\n')); + } else { + if (rules.length > 0) { + selector = paths.map(function (p) { + return p.map(function (s) { + return s.toCSS(env); + }).join('').trim(); + }).join( env.compress ? ',' : ',\n'); + + css.push(selector, + (env.compress ? '{' : ' {\n ') + + rules.join(env.compress ? '' : '\n ') + + (env.compress ? '}' : '\n}\n')); + } + } + css.push(rulesets); + + return css.join('') + (env.compress ? '\n' : ''); + }, + + joinSelectors: function (paths, context, selectors) { + for (var s = 0; s < selectors.length; s++) { + this.joinSelector(paths, context, selectors[s]); + } + }, + + joinSelector: function (paths, context, selector) { + var before = [], after = [], beforeElements = [], + afterElements = [], hasParentSelector = false, el; + + for (var i = 0; i < selector.elements.length; i++) { + el = selector.elements[i]; + if (el.combinator.value.charAt(0) === '&') { + hasParentSelector = true; + } + if (hasParentSelector) afterElements.push(el); + else beforeElements.push(el); + } + + if (! hasParentSelector) { + afterElements = beforeElements; + beforeElements = []; + } + + if (beforeElements.length > 0) { + before.push(new(tree.Selector)(beforeElements)); + } + + if (afterElements.length > 0) { + after.push(new(tree.Selector)(afterElements)); + } + + for (var c = 0; c < context.length; c++) { + paths.push(before.concat(context[c]).concat(after)); + } + } +}; +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/selector.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/selector.js new file mode 100644 index 00000000..65abbb69 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/selector.js @@ -0,0 +1,42 @@ +(function (tree) { + +tree.Selector = function (elements) { + this.elements = elements; + if (this.elements[0].combinator.value === "") { + this.elements[0].combinator.value = ' '; + } +}; +tree.Selector.prototype.match = function (other) { + var len = this.elements.length, + olen = other.elements.length, + max = Math.min(len, olen); + + if (len < olen) { + return false; + } else { + for (var i = 0; i < max; i++) { + if (this.elements[i].value !== other.elements[i].value) { + return false; + } + } + } + return true; +}; +tree.Selector.prototype.eval = function (env) { + return new(tree.Selector)(this.elements.map(function (e) { + return e.eval(env); + })); +}; +tree.Selector.prototype.toCSS = function (env) { + if (this._css) { return this._css } + + return this._css = this.elements.map(function (e) { + if (typeof(e) === 'string') { + return ' ' + e.trim(); + } else { + return e.toCSS(env); + } + }).join(''); +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/url.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/url.js new file mode 100644 index 00000000..0caec345 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/url.js @@ -0,0 +1,25 @@ +(function (tree) { + +tree.URL = function (val, paths) { + if (val.data) { + this.attrs = val; + } else { + // Add the base path if the URL is relative and we are in the browser + if (typeof(window) !== 'undefined' && !/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(val.value) && paths.length > 0) { + val.value = paths[0] + (val.value.charAt(0) === '/' ? val.value.slice(1) : val.value); + } + this.value = val; + this.paths = paths; + } +}; +tree.URL.prototype = { + toCSS: function () { + return "url(" + (this.attrs ? 'data:' + this.attrs.mime + this.attrs.charset + this.attrs.base64 + this.attrs.data + : this.value.toCSS()) + ")"; + }, + eval: function (ctx) { + return this.attrs ? this : new(tree.URL)(this.value.eval(ctx), this.paths); + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/value.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/value.js new file mode 100644 index 00000000..3c1eb29a --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/value.js @@ -0,0 +1,24 @@ +(function (tree) { + +tree.Value = function (value) { + this.value = value; + this.is = 'value'; +}; +tree.Value.prototype = { + eval: function (env) { + if (this.value.length === 1) { + return this.value[0].eval(env); + } else { + return new(tree.Value)(this.value.map(function (v) { + return v.eval(env); + })); + } + }, + toCSS: function (env) { + return this.value.map(function (e) { + return e.toCSS(env); + }).join(env.compress ? ',' : ', '); + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/variable.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/variable.js new file mode 100644 index 00000000..ee557e1d --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/variable.js @@ -0,0 +1,26 @@ +(function (tree) { + +tree.Variable = function (name, index, file) { this.name = name, this.index = index, this.file = file }; +tree.Variable.prototype = { + eval: function (env) { + var variable, v, name = this.name; + + if (name.indexOf('@@') == 0) { + name = '@' + new(tree.Variable)(name.slice(1)).eval(env).value; + } + + if (variable = tree.find(env.frames, function (frame) { + if (v = frame.variable(name)) { + return v.value.eval(env); + } + })) { return variable } + else { + throw { type: 'Name', + message: "variable " + name + " is undefined", + filename: this.file, + index: this.index }; + } + } +}; + +})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/package.json b/askbot/skins/default/media/style/node_modules/less/package.json new file mode 100644 index 00000000..c35300b1 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/package.json @@ -0,0 +1,36 @@ +{ + "name": "less", + "description": "Leaner CSS", + "url": "http://lesscss.org", + "keywords": [ + "css", + "parser", + "lesscss", + "browser" + ], + "author": { + "name": "Alexis Sellier", + "email": "self@cloudhead.net" + }, + "contributors": [], + "version": "1.3.0", + "bin": { + "lessc": "./bin/lessc" + }, + "main": "./lib/less/index", + "directories": { + "test": "./test" + }, + "engines": { + "node": ">=0.4.0" + }, + "_id": "less@1.3.0", + "dependencies": {}, + "devDependencies": {}, + "optionalDependencies": {}, + "_engineSupported": true, + "_npmVersion": "1.1.18", + "_nodeVersion": "v0.7.9-pre", + "_defaultsLoaded": true, + "_from": "less" +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/colors.css b/askbot/skins/default/media/style/node_modules/less/test/css/colors.css new file mode 100644 index 00000000..b4516425 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/colors.css @@ -0,0 +1,58 @@ +#yelow #short { + color: #fea; +} +#yelow #long { + color: #ffeeaa; +} +#yelow #rgba { + color: rgba(255, 238, 170, 0.1); +} +#yelow #argb { + color: #1affeeaa; +} +#blue #short { + color: #00f; +} +#blue #long { + color: #0000ff; +} +#blue #rgba { + color: rgba(0, 0, 255, 0.1); +} +#blue #argb { + color: #1a0000ff; +} +#alpha #hsla { + color: rgba(61, 45, 41, 0.6); +} +#overflow .a { + color: #000000; +} +#overflow .b { + color: #ffffff; +} +#overflow .c { + color: #ffffff; +} +#overflow .d { + color: #00ff00; +} +#grey { + color: #c8c8c8; +} +#808080 { + color: #808080; +} +#00ff00 { + color: #00ff00; +} +.lightenblue { + color: #3333ff; +} +.darkenblue { + color: #0000cc; +} +.unknowncolors { + color: blue2; + border: 2px solid superred; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/comments.css b/askbot/skins/default/media/style/node_modules/less/test/css/comments.css new file mode 100644 index 00000000..352dd48e --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/comments.css @@ -0,0 +1,56 @@ +/******************\ +* * +* Comment Header * +* * +\******************/ +/* + + Comment + +*/ +/* + * Comment Test + * + * - cloudhead (http://cloudhead.net) + * + */ +/* Colors + * ------ + * #EDF8FC (background blue) + * #166C89 (darkest blue) + * + * Text: + * #333 (standard text) // A comment within a comment! + * #1F9EC9 (standard link) + * + */ +/* @group Variables +------------------- */ +#comments { + /**/ + color: red; + /* A C-style comment */ + + background-color: orange; + font-size: 12px; + /* lost comment */ + content: "content"; + border: 1px solid black; + padding: 0; + margin: 2em; +} +/* commented out + #more-comments { + color: grey; + } +*/ +.selector, +.lots, +.comments { + color: #808080, /* blue */ #ffa500; + -webkit-border-radius: 2px /* webkit only */; + -moz-border-radius: 8px /* moz only with operation */; +} +#last { + color: #0000ff; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/css-3.css b/askbot/skins/default/media/style/node_modules/less/test/css/css-3.css new file mode 100644 index 00000000..45bdc40d --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/css-3.css @@ -0,0 +1,58 @@ +.comma-delimited { + background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg); + text-shadow: -1px -1px 1px #ff0000, 6px 5px 5px #ffff00; + -moz-box-shadow: 0pt 0pt 2px rgba(255, 255, 255, 0.4) inset, 0pt 4px 6px rgba(255, 255, 255, 0.4) inset; +} +@font-face { + font-family: Headline; + src: local(Futura-Medium), url(fonts.svg#MyGeometricModern) format("svg"); +} +.other { + -moz-transform: translate(0, 11em) rotate(-90deg); +} +p:not([class*="lead"]) { + color: black; +} +input[type="text"].class#id[attr=32]:not(1) { + color: white; +} +div#id.class[a=1][b=2].class:not(1) { + color: white; +} +ul.comma > li:not(:only-child)::after { + color: white; +} +ol.comma > li:nth-last-child(2)::after { + color: white; +} +li:nth-child(4n+1), +li:nth-child(-5n), +li:nth-child(-n+2) { + color: white; +} +a[href^="http://"] { + color: black; +} +a[href$="http://"] { + color: black; +} +form[data-disabled] { + color: black; +} +p::before { + color: black; +} +#issue322 { + -webkit-animation: anim2 7s infinite ease-in-out; +} +@-webkit-keyframes frames { + 0% { + border: 1px; + } + 5.5% { + border: 2px; + } + 100% { + border: 3px; + } +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/css-escapes.css b/askbot/skins/default/media/style/node_modules/less/test/css/css-escapes.css new file mode 100644 index 00000000..278d5576 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/css-escapes.css @@ -0,0 +1,20 @@ +.escape\|random\|char { + color: red; +} +.mixin\!tUp { + font-weight: bold; +} +.\34 04 { + background: red; +} +.\34 04 strong { + color: #ff00ff; + font-weight: bold; +} +.trailingTest\+ { + color: red; +} +/* This hideous test of hideousness checks for the selector "blockquote" with various permutations of hex escapes */ +\62\6c\6f \63 \6B \0071 \000075o\74 e { + color: silver; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/css.css b/askbot/skins/default/media/style/node_modules/less/test/css/css.css new file mode 100644 index 00000000..63d20ec4 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/css.css @@ -0,0 +1,89 @@ +@charset "utf-8"; +div { + color: black; +} +div { + width: 99%; +} +* { + min-width: 45em; +} +h1, +h2 > a > p, +h3 { + color: none; +} +div.class { + color: blue; +} +div#id { + color: green; +} +.class#id { + color: purple; +} +.one.two.three { + color: grey; +} +@media print { + font-size: 3em; +} +@media screen { + font-size: 10px; +} +@font-face { + font-family: 'Garamond Pro'; + src: url("/fonts/garamond-pro.ttf"); +} +a:hover, +a:link { + color: #999; +} +p, +p:first-child { + text-transform: none; +} +q:lang(no) { + quotes: none; +} +p + h1 { + font-size: 2.2em; +} +#shorthands { + border: 1px solid #000; + font: 12px/16px Arial; + font: 100%/16px Arial; + margin: 1px 0; + padding: 0 auto; + background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px; +} +#more-shorthands { + margin: 0; + padding: 1px 0 2px 0; + font: normal small/20px 'Trebuchet MS', Verdana, sans-serif; +} +.misc { + -moz-border-radius: 2px; + display: -moz-inline-stack; + width: .1em; + background-color: #009998; + background-image: url(images/image.jpg); + background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), to(#0000ff)); + margin: ; + filter: alpha(opacity=100); +} +#important { + color: red !important; + width: 100%!important; + height: 20px ! important; +} +#data-uri { + background: url(data:image/png;charset=utf-8;base64, + kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/ + k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U + kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC); + background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==); +} +#svg-data-uri { + background: transparent url('data:image/svg+xml, '); +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/functions.css b/askbot/skins/default/media/style/node_modules/less/test/css/functions.css new file mode 100644 index 00000000..82328145 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/functions.css @@ -0,0 +1,43 @@ +#functions { + color: #660000; + width: 16; + height: undefined("self"); + border-width: 5; + variable: 11; +} +#built-in { + escaped: -Some::weird(#thing, y); + lighten: #ffcccc; + darken: #330000; + saturate: #203c31; + desaturate: #29332f; + greyscale: #2e2e2e; + spin-p: #bf6a40; + spin-n: #bf4055; + format: "rgb(32, 128, 64)"; + format-string: "hello world"; + format-multiple: "hello earth 2"; + format-url-encode: "red is %23ff0000"; + eformat: rgb(32, 128, 64); + hue: 98; + saturation: 12%; + lightness: 95%; + rounded: 11; + roundedpx: 3px; + percentage: 20%; + color: #ff0011; +} +#built-in .is-a { + color: true; + color: true; + color: true; + keyword: true; + number: true; + string: true; + pixel: true; + percent: true; + em: true; +} +#alpha { + alpha: rgba(153, 94, 51, 0.6); +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/ie-filters.css b/askbot/skins/default/media/style/node_modules/less/test/css/ie-filters.css new file mode 100644 index 00000000..933318ab --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/ie-filters.css @@ -0,0 +1,5 @@ +.nav { + filter: progid:dximagetransform.microsoft.alpha(opacity=20); + filter: progid:dximagetransform.microsoft.alpha(opacity=0); + filter: progid:dximagetransform.microsoft.gradient(startColorstr="#333333", endColorstr="#000000", GradientType=0); +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/import.css b/askbot/skins/default/media/style/node_modules/less/test/css/import.css new file mode 100644 index 00000000..89dc162c --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/import.css @@ -0,0 +1,23 @@ +@import "import-test-d.css"; + +@import url(http://fonts.googleapis.com/css?family=Open+Sans); + +@import url(something.css) screen and (color) and (max-width: 600px); +#import { + color: #ff0000; +} +.mixin { + height: 10px; + color: #ff0000; +} +#import-test { + height: 10px; + color: #ff0000; + width: 10px; + height: 30%; +} +@media screen and (max-width: 600px) { + body { + width: 100%; + } +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/javascript.css b/askbot/skins/default/media/style/node_modules/less/test/css/javascript.css new file mode 100644 index 00000000..5a3f8223 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/javascript.css @@ -0,0 +1,22 @@ +.eval { + js: 42; + js: 2; + js: "hello world"; + js: 1, 2, 3; + title: "node"; + ternary: true; +} +.scope { + var: 42; + escaped: 7px; +} +.vars { + width: 8; +} +.escape-interpol { + width: hello world; +} +.arrays { + ary: "1, 2, 3"; + ary: "1, 2, 3"; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/lazy-eval.css b/askbot/skins/default/media/style/node_modules/less/test/css/lazy-eval.css new file mode 100644 index 00000000..1adfb8f3 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/lazy-eval.css @@ -0,0 +1,3 @@ +.lazy-eval { + width: 100%; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/media.css b/askbot/skins/default/media/style/node_modules/less/test/css/media.css new file mode 100644 index 00000000..61d169df --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/media.css @@ -0,0 +1,79 @@ +@media print { + .class { + color: blue; + } + .class .sub { + width: 42; + } + .top, + header > h1 { + color: #444444; + } +} +@media screen { + body { + max-width: 480; + } +} +@media all and (orientation: portrait) { + aside { + float: none; + } +} +@media handheld and (min-width: 42), screen and (min-width: 20em) { + body { + max-width: 480px; + } +} +@media print { + body { + padding: 20px; + } + body header { + background-color: red; + } +} +@media print and (orientation: landscape) { + body { + margin-left: 20px; + } +} +@media a, b and c { + body { + width: 95%; + } +} +@media a and x, b and c and x, a and y, b and c and y { + body { + width: 100%; + } +} +.a { + background: black; +} +@media handheld { + .a { + background: white; + } +} +@media handheld and (max-width: 100px) { + .a { + background: red; + } +} +.b { + background: black; +} +@media handheld { + .b { + background: white; + } +} +@media handheld and (max-width: 200px) { + .b { + background: red; + } +} +@media only screen and (max-width: 200px) { + width: 480px; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-args.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-args.css new file mode 100644 index 00000000..8e544ba0 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-args.css @@ -0,0 +1,76 @@ +#hidden { + color: transparent; + color: transparent; +} +.two-args { + color: blue; + width: 10px; + height: 99%; + border: 2px dotted #000000; +} +.one-arg { + width: 15px; + height: 49%; +} +.no-parens { + width: 5px; + height: 49%; +} +.no-args { + width: 5px; + height: 49%; +} +.var-args { + width: 45; + height: 17%; +} +.multi-mix { + width: 10px; + height: 29%; + margin: 4; + padding: 5; +} +body { + padding: 30px; + color: #ff0000; +} +.scope-mix { + width: 8; +} +.content { + width: 600px; +} +.content .column { + margin: 600px; +} +#same-var-name { + radius: 5px; +} +#var-inside { + width: 10px; +} +.id-class { + color: red; + color: red; +} +.arguments { + border: 1px solid #000000; + width: 1px; +} +.arguments2 { + border: 0px; + width: 0px; +} +.arguments3 { + border: 0px; + width: 0px; +} +.arguments4 { + border: 0 1 2 3 4; + rest: 1 2 3 4; + width: 0; +} +.edge-case { + border: "{"; + width: "{"; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-closure.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-closure.css new file mode 100644 index 00000000..b1021b6f --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-closure.css @@ -0,0 +1,9 @@ +.class { + width: 99px; +} +.overwrite { + width: 99px; +} +.nested .class { + width: 5px; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-guards.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-guards.css new file mode 100644 index 00000000..0c563e52 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-guards.css @@ -0,0 +1,58 @@ +.light1 { + color: white; + margin: 1px; +} +.light2 { + color: black; + margin: 1px; +} +.max1 { + width: 6; +} +.max2 { + width: 8; +} +.glob1 { + margin: auto auto; +} +.ops1 { + height: gt-or-eq; + height: lt-or-eq; +} +.ops2 { + height: gt-or-eq; + height: not-eq; +} +.ops3 { + height: lt-or-eq; + height: not-eq; +} +.default1 { + content: default; +} +.test1 { + content: "true."; +} +.test2 { + content: "false."; +} +.test3 { + content: "false."; +} +.test4 { + content: "false."; +} +.test5 { + content: "false."; +} +.bool1 { + content: true and true; + content: true; + content: false, true; + content: false and true and true, true; + content: false, true and true; + content: false, false, true; + content: false, true and true and true, false; + content: not false; + content: not false and false, not false; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-important.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-important.css new file mode 100644 index 00000000..2f74c647 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-important.css @@ -0,0 +1,17 @@ +.class { + border: 1; + boxer: 1; + border: 2 !important; + boxer: 2 !important; + border: 3; + boxer: 3; + border: 4 !important; + boxer: 4 !important; + border: 5; + boxer: 5; + border: 0 !important; + boxer: 0 !important; + border: 9 !important; + border: 9; + boxer: 9; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-nested.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-nested.css new file mode 100644 index 00000000..6378c475 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-nested.css @@ -0,0 +1,14 @@ +.class .inner { + height: 300; +} +.class .inner .innest { + width: 30; + border-width: 60; +} +.class2 .inner { + height: 600; +} +.class2 .inner .innest { + width: 60; + border-width: 120; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-pattern.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-pattern.css new file mode 100644 index 00000000..8b828335 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-pattern.css @@ -0,0 +1,47 @@ +.zero { + variadic: true; + zero: 0; + one: 1; + two: 2; + three: 3; +} +.one { + variadic: true; + one: 1; + one-req: 1; + two: 2; + three: 3; +} +.two { + variadic: true; + two: 2; + three: 3; +} +.three { + variadic: true; + three-req: 3; + three: 3; +} +.left { + left: 1; +} +.right { + right: 1; +} +.border-right { + color: black; + border-right: 4px; +} +.border-left { + color: black; + border-left: 4px; +} +.only-right { + right: 33; +} +.only-left { + left: 33; +} +.left-right { + both: 330; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins.css new file mode 100644 index 00000000..45d51793 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/mixins.css @@ -0,0 +1,71 @@ +.mixin { + border: 1px solid black; +} +.mixout { + border-color: orange; +} +.borders { + border-style: dashed; +} +#namespace .borders { + border-style: dotted; +} +#namespace .biohazard { + content: "death"; +} +#namespace .biohazard .man { + color: transparent; +} +#theme > .mixin { + background-color: grey; +} +#container { + color: black; + border: 1px solid black; + border-color: orange; + background-color: grey; +} +#header .milk { + color: white; + border: 1px solid black; + background-color: grey; +} +#header #cookie { + border-style: dashed; +} +#header #cookie .chips { + border-style: dotted; +} +#header #cookie .chips .calories { + color: black; + border: 1px solid black; + border-color: orange; + background-color: grey; +} +.secure-zone { + color: transparent; +} +.direct { + border-style: dotted; +} +.bo, +.bar { + width: 100%; +} +.bo { + border: 1px; +} +.ar.bo.ca { + color: black; +} +.jo.ki { + background: none; +} +.extended { + width: 100%; + border: 1px; + background: none; +} +.foo .bar { + width: 100%; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/operations.css b/askbot/skins/default/media/style/node_modules/less/test/css/operations.css new file mode 100644 index 00000000..fb9e0aff --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/operations.css @@ -0,0 +1,49 @@ +#operations { + color: #111111; + height: 9px; + width: 3em; + substraction: 0; + division: 1; +} +#operations .spacing { + height: 9px; + width: 3em; +} +.with-variables { + height: 16em; + width: 24em; + size: 1cm; +} +.with-functions { + color: #646464; + color: #ff8080; + color: #c94a4a; +} +.negative { + height: 0px; + width: 4px; +} +.shorthands { + padding: -1px 2px 0 -4px; +} +.rem-dimensions { + font-size: 5.5rem; +} +.colors { + color: #123; + border-color: #334455; + background-color: #000000; +} +.colors .other { + color: #222222; + border-color: #222222; +} +.negations { + variable: -4px; + variable1: 0px; + variable2: 0px; + variable3: 8px; + variable4: 0px; + paren: -4px; + paren2: 16px; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/parens.css b/askbot/skins/default/media/style/node_modules/less/test/css/parens.css new file mode 100644 index 00000000..36487fe5 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/parens.css @@ -0,0 +1,20 @@ +.parens { + border: 2px solid #000000; + margin: 1px 3px 16 3; + width: 36; + padding: 2px 36px; +} +.more-parens { + padding: 8 4 4 4px; + width: 96; + height: 113; + margin: 12; +} +.nested-parens { + width: 71; + height: 6; +} +.mixed-units { + margin: 2px 4em 1 5pc; + padding: 6px 1em 2px 2; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/rulesets.css b/askbot/skins/default/media/style/node_modules/less/test/css/rulesets.css new file mode 100644 index 00000000..408c76aa --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/rulesets.css @@ -0,0 +1,33 @@ +#first > .one { + font-size: 2em; +} +#first > .one > #second .two > #deux { + width: 50%; +} +#first > .one > #second .two > #deux #third { + height: 100%; +} +#first > .one > #second .two > #deux #third:focus { + color: black; +} +#first > .one > #second .two > #deux #third:focus #fifth > #sixth .seventh #eighth + #ninth { + color: purple; +} +#first > .one > #second .two > #deux #fourth, +#first > .one > #second .two > #deux #five, +#first > .one > #second .two > #deux #six { + color: #110000; +} +#first > .one > #second .two > #deux #fourth .seven, +#first > .one > #second .two > #deux #five .seven, +#first > .one > #second .two > #deux #six .seven, +#first > .one > #second .two > #deux #fourth .eight > #nine, +#first > .one > #second .two > #deux #five .eight > #nine, +#first > .one > #second .two > #deux #six .eight > #nine { + border: 1px solid black; +} +#first > .one > #second .two > #deux #fourth #ten, +#first > .one > #second .two > #deux #five #ten, +#first > .one > #second .two > #deux #six #ten { + color: red; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/scope.css b/askbot/skins/default/media/style/node_modules/less/test/css/scope.css new file mode 100644 index 00000000..11feda89 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/scope.css @@ -0,0 +1,15 @@ +.tiny-scope { + color: #998899; +} +.scope1 { + color: #0000ff; + border-color: #000000; +} +.scope1 .scope2 { + color: #0000ff; +} +.scope1 .scope2 .scope3 { + color: #ff0000; + border-color: #000000; + background-color: #ffffff; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/selectors.css b/askbot/skins/default/media/style/node_modules/less/test/css/selectors.css new file mode 100644 index 00000000..6f69a8c9 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/selectors.css @@ -0,0 +1,69 @@ +h1 a:hover, +h2 a:hover, +h3 a:hover, +h1 p:hover, +h2 p:hover, +h3 p:hover { + color: red; +} +#all { + color: blue; +} +#the { + color: blue; +} +#same { + color: blue; +} +ul, +li, +div, +q, +blockquote, +textarea { + margin: 0; +} +td { + margin: 0; + padding: 0; +} +td, +input { + line-height: 1em; +} +a { + color: red; +} +a:hover { + color: blue; +} +div a { + color: green; +} +p a span { + color: yellow; +} +.foo .bar .qux, +.foo .baz .qux { + display: block; +} +.qux .foo .bar, +.qux .foo .baz { + display: inline; +} +.qux .foo .bar .biz, +.qux .foo .baz .biz { + display: none; +} +.other ::fnord { + color: #ff0000; +} +.other::fnord { + color: #ff0000; +} +.other ::bnord { + color: #ff0000; +} +.other::bnord { + color: #ff0000; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/strings.css b/askbot/skins/default/media/style/node_modules/less/test/css/strings.css new file mode 100644 index 00000000..80e115c0 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/strings.css @@ -0,0 +1,40 @@ +#strings { + background-image: url("http://son-of-a-banana.com"); + quotes: "~" "~"; + content: "#*%:&^,)!.(~*})"; + empty: ""; + brackets: "{" "}"; + escapes: "\"hello\" \\world"; + escapes2: "\"llo"; +} +#comments { + content: "/* hello */ // not-so-secret"; +} +#single-quote { + quotes: "'" "'"; + content: '""#!&""'; + empty: ''; + semi-colon: ';'; +} +#escaped { + filter: DX.Transform.MS.BS.filter(opacity=50); +} +#one-line { + image: url(http://tooks.com); +} +#crazy { + image: url(http://), "}", url("http://}"); +} +#interpolation { + url: "http://lesscss.org/dev/image.jpg"; + url2: "http://lesscss.org/image-256.jpg"; + url3: "http://lesscss.org#445566"; + url4: "http://lesscss.org/hello"; + url5: "http://lesscss.org/54.4"; +} +.mix-mul-class { + color: #0000ff; + color: #ff0000; + color: #0000ff; + color: #ffa500; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/variables.css b/askbot/skins/default/media/style/node_modules/less/test/css/variables.css new file mode 100644 index 00000000..961fe695 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/variables.css @@ -0,0 +1,27 @@ +.variables { + width: 14cm; +} +.variables { + height: 24px; + color: #888888; + font-family: "Trebuchet MS", Verdana, sans-serif; + quotes: "~" "~"; +} +.redefinition { + three: 3; +} +.values { + font-family: 'Trebuchet', 'Trebuchet', 'Trebuchet'; + color: #888888 !important; + url: url('Trebuchet'); + multi: something 'A', B, C, 'Trebuchet'; +} +.variable-names { + name: 'hello'; +} +.alpha { + filter: alpha(opacity=42); +} +a:nth-child(2) { + border: 1px; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/whitespace.css b/askbot/skins/default/media/style/node_modules/less/test/css/whitespace.css new file mode 100644 index 00000000..56e067fc --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/css/whitespace.css @@ -0,0 +1,38 @@ +.whitespace { + color: white; +} +.whitespace { + color: white; +} +.whitespace { + color: white; +} +.whitespace { + color: white; +} +.whitespace { + color: white ; +} +.white, +.space, +.mania { + color: white; +} +.no-semi-column { + color: #ffffff; +} +.no-semi-column { + color: white; + white-space: pre; +} +.no-semi-column { + border: 2px solid #ffffff; +} +.newlines { + background: the, + great, + wall; + border: 2px + solid + black; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/less-test.js b/askbot/skins/default/media/style/node_modules/less/test/less-test.js new file mode 100644 index 00000000..46412e01 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/less-test.js @@ -0,0 +1,73 @@ +var path = require('path'), + fs = require('fs'), + sys = require('util'); + +var less = require('../lib/less'); + +less.tree.functions.add = function (a, b) { + return new(less.tree.Dimension)(a.value + b.value); +} +less.tree.functions.increment = function (a) { + return new(less.tree.Dimension)(a.value + 1); +} +less.tree.functions._color = function (str) { + if (str.value === "evil red") { return new(less.tree.Color)("600") } +} + +sys.puts("\n" + stylize("LESS", 'underline') + "\n"); + +fs.readdirSync('test/less').forEach(function (file) { + if (! /\.less/.test(file)) { return } + + toCSS('test/less/' + file, function (err, less) { + var name = path.basename(file, '.less'); + + fs.readFile(path.join('test/css', name) + '.css', 'utf-8', function (e, css) { + sys.print("- " + name + ": ") + if (less === css) { sys.print(stylize('OK', 'green')) } + else if (err) { + sys.print(stylize("ERROR: " + (err && err.message), 'red')); + } else { + sys.print(stylize("FAIL", 'yellow')); + } + sys.puts(""); + }); + }); +}); + +function toCSS(path, callback) { + var tree, css; + fs.readFile(path, 'utf-8', function (e, str) { + if (e) { return callback(e) } + + new(less.Parser)({ + paths: [require('path').dirname(path)], + optimization: 0 + }).parse(str, function (err, tree) { + if (err) { + callback(err); + } else { + try { + css = tree.toCSS(); + callback(null, css); + } catch (e) { + callback(e); + } + } + }); + }); +} + +// Stylize a string +function stylize(str, style) { + var styles = { + 'bold' : [1, 22], + 'inverse' : [7, 27], + 'underline' : [4, 24], + 'yellow' : [33, 39], + 'green' : [32, 39], + 'red' : [31, 39] + }; + return '\033[' + styles[style][0] + 'm' + str + + '\033[' + styles[style][1] + 'm'; +} diff --git a/askbot/skins/default/media/style/node_modules/less/test/less/import/import-test-d.css b/askbot/skins/default/media/style/node_modules/less/test/less/import/import-test-d.css new file mode 100644 index 00000000..30575f01 --- /dev/null +++ b/askbot/skins/default/media/style/node_modules/less/test/less/import/import-test-d.css @@ -0,0 +1 @@ +#css { color: yellow; } diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index 73664c57..8d3f7769 100644 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -148,7 +148,7 @@ a:hover { } h1 { font-size: 24px; - padding: 10px 0 5px 0px; + padding: 0px 0 5px 0px; } /* ----- Extra space above for messages ----- */ body.user-messages { @@ -179,7 +179,7 @@ body.user-messages { text-align: center; background-color: #f5dd69; border-top: #fff 1px solid; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .notify p.notification { margin-top: 6px; @@ -206,7 +206,7 @@ body.user-messages { #header { margin-top: 0px; background: #16160f; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .content-wrapper { /* wrapper positioning class */ @@ -295,6 +295,9 @@ body.user-messages { #metaNav #navUsers { background: -125px -5px url(../images/sprites.png) no-repeat; } +#metaNav #navGroups { + background: -125px -5px url(../images/sprites.png) no-repeat; +} #metaNav #navBadges { background: -210px -5px url(../images/sprites.png) no-repeat; } @@ -318,7 +321,7 @@ body.user-messages { border-bottom: #d3d3c2 1px solid; border-top: #fcfcfc 1px solid; margin-bottom: 10px; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } #secondaryHeader #homeButton { border-right: #afaf9e 1px solid; @@ -481,6 +484,8 @@ body.anon #searchBar .searchInputCancelable { } .box p { margin-bottom: 4px; + color: #707070; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .box p.info-box-follow-up-links { text-align: right; @@ -497,14 +502,14 @@ body.anon #searchBar .searchInputCancelable { color: #656565; padding-right: 10px; margin-bottom: 10px; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .box h3 { color: #4a757f; font-size: 18px; text-align: left; font-weight: normal; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; padding-left: 0px; } .box .contributorback { @@ -516,12 +521,13 @@ body.anon #searchBar .searchInputCancelable { display: block; float: right; text-align: left; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; width: 80px; margin-right: 18px; } -.box #displayTagFilterControl label { - /*Especial width just for the display tag filter box in index page*/ +.box #displayTagFilterControl label, +.box #emailTagFilterControl label { + /*Especial width just for the tag filter boxes in index page*/ width: 160px; } @@ -547,14 +553,21 @@ body.anon #searchBar .searchInputCancelable { font-size: 15px; } .box .inputs #interestingTagInput, -.box .inputs #ignoredTagInput { +.box .inputs #ignoredTagInput, +.box .inputs #subscribedTagInput, +.box .inputs #ab-tag-search { width: 153px; padding-left: 5px; border: #c9c9b5 1px solid; height: 25px; } +.box .inputs #ab-tag-search { + width: 135px; +} .box .inputs #interestingTagAdd, -.box .inputs #ignoredTagAdd { +.box .inputs #ignoredTagAdd, +.box .inputs #subscribedTagAdd, +.box .inputs #ab-tag-search-add { background: url(../images/small-button-blue.png) repeat-x top; border: 0; color: #4a757f; @@ -576,8 +589,13 @@ body.anon #searchBar .searchInputCancelable { -moz-box-shadow: 1px 1px 2px #808080; box-shadow: 1px 1px 2px #808080; } +.box .inputs #ab-tag-search-add { + width: 47px; + margin-left: 3px; +} .box .inputs #interestingTagAdd:hover, -.box .inputs #ignoredTagAdd:hover { +.box .inputs #ignoredTagAdd:hover, +.box .inputs #subscribedTag:hover { background: url(../images/small-button-blue.png) repeat-x bottom; } .box img.gravatar { @@ -590,7 +608,7 @@ body.anon #searchBar .searchInputCancelable { line-height: 34px; text-align: center; border: 0; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; color: #4a757f; font-weight: normal; font-size: 21px; @@ -638,6 +656,10 @@ body.anon #searchBar .searchInputCancelable { .box .notify-sidebar #question-subscribe-sidebar { margin: 7px 0 0 3px; } +.users-page .box label { + display: inline; + float: none; +} .statsWidget p { color: #707070; font-size: 16px; @@ -730,8 +752,7 @@ body.anon #searchBar .searchInputCancelable { .tabsC .label { float: left; color: #646464; - margin-top: 4px; - margin-right: 5px; + margin: 4px 5px 0px 8px; } .main-page .tabsA .label { margin-left: 8px; @@ -776,14 +797,14 @@ body.anon #searchBar .searchInputCancelable { float: left; margin-bottom: 8px; padding-top: 6px; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } #listSearchTags { float: left; margin-top: 3px; color: #707070; font-size: 16px; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } ul#searchTags { margin-left: 10px; @@ -797,7 +818,7 @@ ul#searchTags { margin: 5px 0 10px 0; padding: 0px; float: left; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .search-tips a { text-decoration: underline; @@ -811,6 +832,9 @@ ul#searchTags { padding: 0; width: 100%; } +.main-page #question-list { + margin-top: 10px; +} .short-summary { position: relative; filter: inherit; @@ -829,7 +853,7 @@ ul#searchTags { padding-left: 0; margin-bottom: 6px; display: block; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .short-summary a { color: #464646; @@ -840,7 +864,7 @@ ul#searchTags { font-family: Arial; padding-right: 4px; } -.short-summary .userinfo .relativetime, +.short-summary .userinfo .timeago, .short-summary span.anonymous { font-size: 11px; clear: both; @@ -854,12 +878,12 @@ ul#searchTags { .short-summary .counts { float: right; margin: 4px 0 0 5px; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .short-summary .counts .item-count { padding: 0px 5px 0px 5px; font-size: 25px; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .short-summary .counts .votes div, .short-summary .counts .views div, @@ -1173,7 +1197,7 @@ ul#related-tags li { /* ----- Ask and Edit Question Form template----- */ .section-title { color: #7ea9b3; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; font-weight: bold; font-size: 24px; } @@ -1199,7 +1223,7 @@ ul#related-tags li { margin: 0px; padding: 0px 0 0 5px; border: #cce6ec 3px solid; - width: 725px; + width: 719px; } .ask-page div#question-list, .edit-question-page div#question-list { @@ -1264,7 +1288,7 @@ ul#related-tags li { background: url(../images/medium-button.png) top repeat-x; height: 34px; border: 0; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; color: #4a757f; font-weight: normal; font-size: 21px; @@ -1288,27 +1312,44 @@ ul#related-tags li { -moz-text-shadow: 0px 1px 0px #c6d9dd; -webkit-text-shadow: 0px 1px 0px #c6d9dd; } +.wmd-container { + border: #cce6ec 3px solid; +} +.users-page .wmd-container { + width: 200px; +} +.ask-page .wmd-container, +.question-page .wmd-container, +.edit-question-page .wmd-container, +.edit-answer-page .wmd-container { + width: 723px; +} +.ask-page #editor, +.question-page #editor, +.edit-question-page #editor, +.edit-answer-page #editor { + width: 710px; + padding: 6px; +} #editor { - /*adjustment for editor preview*/ + /* adjustment for editor preview */ + display: block; font-size: 100%; min-height: 200px; line-height: 18px; margin: 0; - border-left: #cce6ec 3px solid; - border-bottom: #cce6ec 3px solid; - border-right: #cce6ec 3px solid; - border-top: 0; - padding: 10px; - margin-bottom: 10px; - width: 717px; + border: 0; +} +.users-page #editor { + width: 192px; } #id_title { width: 100%; } .wmd-preview { - margin: 3px 0 5px 0; - padding: 6px; + margin: 0; + padding: 5px; background-color: #F5F5F5; min-height: 20px; overflow: auto; @@ -1320,6 +1361,9 @@ ul#related-tags li { line-height: 1.4; font-size: 14px; } +.wmd-preview p:last-child { + margin-bottom: 0; +} .wmd-preview pre { background-color: #E7F1F8; } @@ -1329,6 +1373,9 @@ ul#related-tags li { .wmd-preview IMG { max-width: 600px; } +.user-page .wmd-buttons { + width: 725px; +} .preview-toggle { width: 100%; color: #b6a475; @@ -1383,7 +1430,7 @@ ul#related-tags li { margin: 0px; padding: 0px 0 0 5px; border: #cce6ec 3px solid; - width: 725px; + width: 719px; margin-bottom: 10px; } .edit-question-page #id_summary, @@ -1403,7 +1450,7 @@ ul#related-tags li { /* ----- Question template ----- */ .question-page h1 { padding-top: 0px; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .question-page h1 a { color: #464646; @@ -1421,7 +1468,7 @@ ul#related-tags li { margin-left: 0px !important; } .question-page p.rss a { - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; vertical-align: top; } .question-page .question-content { @@ -1586,7 +1633,7 @@ ul#related-tags li { } .question-page #questionCount { float: left; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; line-height: 15px; } .question-page .question-img-upvote, @@ -1632,13 +1679,11 @@ ul#related-tags li { color: #7ea9b3; width: 200px; float: left; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .question-page .comments { font-size: 12px; clear: both; - /* A small hack to solve 1px problem on webkit browsers */ - } .question-page .comments div.controls { clear: both; @@ -1688,11 +1733,6 @@ ul#related-tags li { padding-top: 3px; border: #cce6ec 3px solid; } -@media screen and (-webkit-min-device-pixel-ratio: 0) { - .question-page .comments textarea { - padding-left: 3px !important; - } -} .question-page .comments input { margin-left: 10px; margin-top: 1px; @@ -1870,7 +1910,7 @@ ul#related-tags li { cursor: pointer; } .question-page .vote-number { - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; padding: 0px 0 5px 0; font-size: 25px; font-weight: bold; @@ -1948,7 +1988,7 @@ ul#related-tags li { margin-top: 10px; } .question-page #fmanswer h2 { - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; color: #7ea9b3; font-size: 24px; } @@ -1993,7 +2033,6 @@ ul#related-tags li { /* -----Content pages, Login, About, FAQ, Users----- */ .openid-signin, .meta, -.users-page, .user-profile-edit-page { font-size: 13px; line-height: 1.3; @@ -2001,7 +2040,6 @@ ul#related-tags li { } .openid-signin p, .meta p, -.users-page p, .user-profile-edit-page p { font-size: 13px; color: #707070; @@ -2012,7 +2050,6 @@ ul#related-tags li { } .openid-signin h2, .meta h2, -.users-page h2, .user-profile-edit-page h2 { color: #525252; padding-left: 0px; @@ -2115,6 +2152,9 @@ ul#related-tags li { .user-profile-page .cancel:hover { background: url(../images/small-button-cancel.png) repeat-x bottom !important; } +.openid-signin form { + margin-bottom: 5px; +} #email-input-fs, #local_login_buttons, #password-fs, @@ -2199,20 +2239,15 @@ ul#related-tags li { font-size: 120%; } /* People page */ -.tabBar-user { - width: 375px; -} +/*.users-page .tabBar{ + width:375px; +}*/ .user { - padding: 5px; + padding: 5px 10px 5px 0; line-height: 140%; width: 166px; - border: #eee 1px solid; + height: 32px; margin-bottom: 5px; - border-radius: 3px; - -ms-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - -khtml-border-radius: 3px; } .user .user-micro-info { color: #525252; @@ -2280,7 +2315,7 @@ a:hover.medal { } .user-profile-page h2 { padding: 10px 0px 10px 0px; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } .user-details { font-size: 13px; @@ -2310,7 +2345,7 @@ a:hover.medal { margin-top: -2px; font-size: 15px; cursor: pointer; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; background: url(../images/small-button-blue.png) repeat-x top; border-radius: 4px; -ms-border-radius: 4px; @@ -2346,13 +2381,13 @@ a:hover.medal { display: none; } .count { - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; font-size: 200%; font-weight: 700; color: #777777; } .scoreNumber { - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; font-size: 35px; font-weight: 800; color: #777; @@ -2463,7 +2498,7 @@ a:hover.medal { color: #525252; } .revision h3 { - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; font-size: 21px; padding-left: 0px; } @@ -2570,7 +2605,7 @@ ins { padding: 6px 0 0 0; background: #16160f; font-size: 16px; - font-family: 'Yanone Kaffeesatz', sans-serif; + font-family: 'Yanone Kaffeesatz', Arial, sans-serif; } #ground p { margin-bottom: 0; @@ -2714,7 +2749,7 @@ span.form-error { padding: 0px; margin: 0px; } -.relativetime { +.timeago { font-weight: bold; text-decoration: none; } @@ -2935,6 +2970,9 @@ button::-moz-focus-inner { -khtml-border-radius: 5px; -webkit-border-radius: 5px; } +.list-table { + border-spacing: 0; +} .list-table td { vertical-align: top; } @@ -3144,7 +3182,6 @@ img.flag { .main-page img.flag { vertical-align: text-bottom; } - /* Pretty printing styles. Used with prettify.js. */ a.edit { padding-left: 3px; @@ -3247,3 +3284,110 @@ body.anon.lang-es #searchBar .searchInput { body.anon.lang-es #searchBar .searchInputCancelable { width: 390px; } +/* user groups */ +#user-groups ul { + margin-bottom: 0px; +} +#user-groups .delete-icon { + float: none; + display: inline; + color: #525252; + padding: 0 3px 0 3px; + background: #ccc; + border-radius: 4px; + line-height: inherit; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; +} +#user-groups .delete-icon:hover { + color: white; + background: #b32f2f; +} +.users-page .wmd-prompt-dialog { + background: #ccc; +} +.group-wiki .content > p:last-child { + margin-bottom: 5px; +} +.group-wiki .group-logo { + float: left; + margin: 0 5px 3px 0; +} +.group-wiki .follow-toggle.group-join-btn { + width: 150px; + margin: 4px auto 10px auto; + display: block; +} +.group-wiki .controls { + margin: 0 0 10px 0; +} +img.group-logo { + height: 60px; + /* important to align with the line spacing */ + +} +#groups-list { + margin-left: 0px; +} +#groups-list li { + display: inline; + list-style-type: none; + list-style-position: inside; + float: left; + text-align: center; +} +#groups-list .group-logo, +#groups-list .group-name { + display: block; +} +#reject-edit-modal input, +#reject-edit-modal textarea { + width: 514px; +} +input.tipped-input, +textarea.tipped-input { + padding-left: 5px; +} +.tipped-input.blank { + color: #707070; +} +.select-box { + margin: 0; +} +.select-box li { + list-style-type: none; + list-style-position: inside; + padding-left: 7px; + font-size: 14px; + line-height: 25px; +} +.select-box li.selected, +.select-box li.selected:hover { + background-color: #fcf8e3; + color: #c09853; +} +.select-box li:hover { + background-color: #cecece; + color: white; +} +/* fixes for bootstrap */ +.caret { + margin-bottom: 7px; +} +.btn-group { + text-align: left; +} +.btn-toolbar { + margin: 0; +} +.modal-footer { + text-align: left; +} +.modal p { + font-size: 14px; +} +.modal-body > textarea { + width: 515px; + margin-bottom: 0px; +} diff --git a/askbot/views/commands.py b/askbot/views/commands.py index 2cad834e..0bb64475 100644 --- a/askbot/views/commands.py +++ b/askbot/views/commands.py @@ -589,7 +589,7 @@ def set_tag_filter_strategy(request): """ filter_type = request.POST['filter_type'] filter_value = int(request.POST['filter_value']) - assert(filter_type in 'display', 'email') + assert(filter_type in ('display', 'email')) if filter_type == 'display': assert(filter_value in dict(const.TAG_DISPLAY_FILTER_STRATEGY_CHOICES)) request.user.display_tag_filter_strategy = filter_value -- cgit v1.2.3-1-g7c22 From 2986c05f2f34e3878ecfce235c795f22bdf982ab Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Wed, 9 May 2012 22:09:30 -0400 Subject: removed mistakenly committed lessc --- .../default/media/style/node_modules/.bin/lessc | 1 - .../media/style/node_modules/less/.npmignore | 2 - .../media/style/node_modules/less/CHANGELOG | 26 - .../default/media/style/node_modules/less/LICENSE | 179 --- .../default/media/style/node_modules/less/Makefile | 75 -- .../media/style/node_modules/less/README.md | 20 - .../node_modules/less/benchmark/less-benchmark.js | 47 - .../media/style/node_modules/less/bin/lessc | 139 --- .../media/style/node_modules/less/index.html | 10 - .../style/node_modules/less/lib/less/browser.js | 380 ------ .../style/node_modules/less/lib/less/colors.js | 151 --- .../style/node_modules/less/lib/less/cssmin.js | 355 ------ .../style/node_modules/less/lib/less/functions.js | 228 ---- .../style/node_modules/less/lib/less/index.js | 148 --- .../style/node_modules/less/lib/less/parser.js | 1305 -------------------- .../style/node_modules/less/lib/less/rhino.js | 62 - .../media/style/node_modules/less/lib/less/tree.js | 17 - .../style/node_modules/less/lib/less/tree/alpha.js | 17 - .../node_modules/less/lib/less/tree/anonymous.js | 13 - .../node_modules/less/lib/less/tree/assignment.js | 17 - .../style/node_modules/less/lib/less/tree/call.js | 48 - .../style/node_modules/less/lib/less/tree/color.js | 101 -- .../node_modules/less/lib/less/tree/comment.js | 14 - .../node_modules/less/lib/less/tree/condition.js | 42 - .../node_modules/less/lib/less/tree/dimension.js | 49 - .../node_modules/less/lib/less/tree/directive.js | 35 - .../node_modules/less/lib/less/tree/element.js | 47 - .../node_modules/less/lib/less/tree/expression.js | 23 - .../node_modules/less/lib/less/tree/import.js | 79 -- .../node_modules/less/lib/less/tree/javascript.js | 51 - .../node_modules/less/lib/less/tree/keyword.js | 19 - .../style/node_modules/less/lib/less/tree/media.js | 114 -- .../style/node_modules/less/lib/less/tree/mixin.js | 135 -- .../node_modules/less/lib/less/tree/operation.js | 32 - .../style/node_modules/less/lib/less/tree/paren.js | 16 - .../node_modules/less/lib/less/tree/quoted.js | 29 - .../style/node_modules/less/lib/less/tree/rule.js | 42 - .../node_modules/less/lib/less/tree/ruleset.js | 216 ---- .../node_modules/less/lib/less/tree/selector.js | 42 - .../style/node_modules/less/lib/less/tree/url.js | 25 - .../style/node_modules/less/lib/less/tree/value.js | 24 - .../node_modules/less/lib/less/tree/variable.js | 26 - .../media/style/node_modules/less/package.json | 36 - .../style/node_modules/less/test/css/colors.css | 58 - .../style/node_modules/less/test/css/comments.css | 56 - .../style/node_modules/less/test/css/css-3.css | 58 - .../node_modules/less/test/css/css-escapes.css | 20 - .../media/style/node_modules/less/test/css/css.css | 89 -- .../style/node_modules/less/test/css/functions.css | 43 - .../node_modules/less/test/css/ie-filters.css | 5 - .../style/node_modules/less/test/css/import.css | 23 - .../node_modules/less/test/css/javascript.css | 22 - .../style/node_modules/less/test/css/lazy-eval.css | 3 - .../style/node_modules/less/test/css/media.css | 79 -- .../node_modules/less/test/css/mixins-args.css | 76 -- .../node_modules/less/test/css/mixins-closure.css | 9 - .../node_modules/less/test/css/mixins-guards.css | 58 - .../less/test/css/mixins-important.css | 17 - .../node_modules/less/test/css/mixins-nested.css | 14 - .../node_modules/less/test/css/mixins-pattern.css | 47 - .../style/node_modules/less/test/css/mixins.css | 71 -- .../node_modules/less/test/css/operations.css | 49 - .../style/node_modules/less/test/css/parens.css | 20 - .../style/node_modules/less/test/css/rulesets.css | 33 - .../style/node_modules/less/test/css/scope.css | 15 - .../style/node_modules/less/test/css/selectors.css | 69 -- .../style/node_modules/less/test/css/strings.css | 40 - .../style/node_modules/less/test/css/variables.css | 27 - .../node_modules/less/test/css/whitespace.css | 38 - .../style/node_modules/less/test/less-test.js | 73 -- .../less/test/less/import/import-test-d.css | 1 - 71 files changed, 5550 deletions(-) delete mode 120000 askbot/skins/default/media/style/node_modules/.bin/lessc delete mode 100644 askbot/skins/default/media/style/node_modules/less/.npmignore delete mode 100644 askbot/skins/default/media/style/node_modules/less/CHANGELOG delete mode 100644 askbot/skins/default/media/style/node_modules/less/LICENSE delete mode 100644 askbot/skins/default/media/style/node_modules/less/Makefile delete mode 100644 askbot/skins/default/media/style/node_modules/less/README.md delete mode 100644 askbot/skins/default/media/style/node_modules/less/benchmark/less-benchmark.js delete mode 100755 askbot/skins/default/media/style/node_modules/less/bin/lessc delete mode 100644 askbot/skins/default/media/style/node_modules/less/index.html delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/browser.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/colors.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/cssmin.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/functions.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/index.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/parser.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/rhino.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/alpha.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/anonymous.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/assignment.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/call.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/color.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/comment.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/condition.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/dimension.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/directive.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/element.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/expression.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/import.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/javascript.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/keyword.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/media.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/mixin.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/operation.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/paren.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/quoted.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/rule.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/ruleset.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/selector.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/url.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/value.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/lib/less/tree/variable.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/package.json delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/colors.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/comments.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/css-3.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/css-escapes.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/css.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/functions.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/ie-filters.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/import.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/javascript.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/lazy-eval.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/media.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-args.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-closure.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-guards.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-important.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-nested.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins-pattern.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/mixins.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/operations.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/parens.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/rulesets.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/scope.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/selectors.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/strings.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/variables.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/css/whitespace.css delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/less-test.js delete mode 100644 askbot/skins/default/media/style/node_modules/less/test/less/import/import-test-d.css diff --git a/askbot/skins/default/media/style/node_modules/.bin/lessc b/askbot/skins/default/media/style/node_modules/.bin/lessc deleted file mode 120000 index 87a5294c..00000000 --- a/askbot/skins/default/media/style/node_modules/.bin/lessc +++ /dev/null @@ -1 +0,0 @@ -../less/bin/lessc \ No newline at end of file diff --git a/askbot/skins/default/media/style/node_modules/less/.npmignore b/askbot/skins/default/media/style/node_modules/less/.npmignore deleted file mode 100644 index 320faecc..00000000 --- a/askbot/skins/default/media/style/node_modules/less/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ - -*.less diff --git a/askbot/skins/default/media/style/node_modules/less/CHANGELOG b/askbot/skins/default/media/style/node_modules/less/CHANGELOG deleted file mode 100644 index 9269555d..00000000 --- a/askbot/skins/default/media/style/node_modules/less/CHANGELOG +++ /dev/null @@ -1,26 +0,0 @@ -1.2.1 - -fix imports on browser -improve error reporting on browser -fix Runtime error reports from imported files -fix 'File not found' import error reporting - -1.2.0 - -- mixin guards -- new function `percentage` -- new `color` function to parse hex color strings -- new type-checking stylesheet functions -- fix Rhino support -- fix bug in string arguments to mixin call -- fix error reporting when index is 0 -- fix browser support in webkit and IE -- fix string interpolation bug when var is empty -- support '!important' after mixin calls -- support vanilla @keyframes directive -- support variables in certain css selectors, like 'nth-child' -- support @media and @import features properly -- improve @import support with media features -- improve error reports from imported files -- improve function call error reporting -- improve error-reporting diff --git a/askbot/skins/default/media/style/node_modules/less/LICENSE b/askbot/skins/default/media/style/node_modules/less/LICENSE deleted file mode 100644 index 40f3b781..00000000 --- a/askbot/skins/default/media/style/node_modules/less/LICENSE +++ /dev/null @@ -1,179 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -Copyright (c) 2009-2010 Alexis Sellier diff --git a/askbot/skins/default/media/style/node_modules/less/Makefile b/askbot/skins/default/media/style/node_modules/less/Makefile deleted file mode 100644 index 32d7cc04..00000000 --- a/askbot/skins/default/media/style/node_modules/less/Makefile +++ /dev/null @@ -1,75 +0,0 @@ -# -# Run all tests -# -test: - node test/less-test.js - -# -# Run benchmark -# -benchmark: - node benchmark/less-benchmark.js - -# -# Build less.js -# -SRC = lib/less -HEADER = build/header.js -VERSION = `cat package.json | grep version \ - | grep -o '[0-9]\.[0-9]\.[0-9]\+'` -DIST = dist/less-${VERSION}.js -RHINO = dist/less-rhino-${VERSION}.js -DIST_MIN = dist/less-${VERSION}.min.js - -less: - @@mkdir -p dist - @@touch ${DIST} - @@cat ${HEADER} | sed s/@VERSION/${VERSION}/ > ${DIST} - @@echo "(function (window, undefined) {" >> ${DIST} - @@cat build/require.js\ - build/amd.js\ - build/ecma-5.js\ - ${SRC}/parser.js\ - ${SRC}/functions.js\ - ${SRC}/colors.js\ - ${SRC}/tree/*.js\ - ${SRC}/tree.js\ - ${SRC}/browser.js >> ${DIST} - @@echo "})(window);" >> ${DIST} - @@echo ${DIST} built. - -rhino: - @@mkdir -p dist - @@touch ${RHINO} - @@cat build/require-rhino.js\ - build/ecma-5.js\ - ${SRC}/parser.js\ - ${SRC}/functions.js\ - ${SRC}/tree/*.js\ - ${SRC}/tree.js\ - ${SRC}/rhino.js > ${RHINO} - @@echo ${RHINO} built. - -min: less - @@echo minifying... - @@uglifyjs ${DIST} > ${DIST_MIN} - @@echo ${DIST_MIN} built. - -server: less - cp dist/less-${VERSION}.js test/html/ - cd test/html && python -m SimpleHTTPServer - -clean: - git rm dist/* - -dist: clean min - git add dist/* - git commit -a -m "(dist) build ${VERSION}" - git archive master --prefix=less/ -o less-${VERSION}.tar.gz - npm publish less-${VERSION}.tar.gz - -stable: - npm tag less ${VERSION} stable - - -.PHONY: test benchmark diff --git a/askbot/skins/default/media/style/node_modules/less/README.md b/askbot/skins/default/media/style/node_modules/less/README.md deleted file mode 100644 index 726d6910..00000000 --- a/askbot/skins/default/media/style/node_modules/less/README.md +++ /dev/null @@ -1,20 +0,0 @@ -less.js -======= - -The **dynamic** stylesheet language. - - - -about ------ - -This is the JavaScript, and now official, stable version of LESS. - -For more information, visit . - -license -------- - -See `LICENSE` file. - -> Copyright (c) 2009-2011 Alexis Sellier diff --git a/askbot/skins/default/media/style/node_modules/less/benchmark/less-benchmark.js b/askbot/skins/default/media/style/node_modules/less/benchmark/less-benchmark.js deleted file mode 100644 index 68fe1ad4..00000000 --- a/askbot/skins/default/media/style/node_modules/less/benchmark/less-benchmark.js +++ /dev/null @@ -1,47 +0,0 @@ -var path = require('path'), - fs = require('fs'), - sys = require('util'); - -var less = require('../lib/less'); -var file = path.join(__dirname, 'benchmark.less'); - -if (process.argv[2]) { file = path.join(process.cwd(), process.argv[2]) } - -fs.readFile(file, 'utf8', function (e, data) { - var tree, css, start, end, total; - - sys.puts("Benchmarking...\n", path.basename(file) + " (" + - parseInt(data.length / 1024) + " KB)", ""); - - start = new(Date); - - new(less.Parser)({ optimization: 2 }).parse(data, function (err, tree) { - end = new(Date); - - total = end - start; - - sys.puts("Parsing: " + - total + " ms (" + - parseInt(1000 / total * - data.length / 1024) + " KB\/s)"); - - start = new(Date); - css = tree.toCSS(); - end = new(Date); - - sys.puts("Generation: " + (end - start) + " ms (" + - parseInt(1000 / (end - start) * - data.length / 1024) + " KB\/s)"); - - total += end - start; - - sys.puts("Total: " + total + "ms (" + - parseInt(1000 / total * data.length / 1024) + " KB/s)"); - - if (err) { - less.writeError(err); - process.exit(3); - } - }); -}); - diff --git a/askbot/skins/default/media/style/node_modules/less/bin/lessc b/askbot/skins/default/media/style/node_modules/less/bin/lessc deleted file mode 100755 index 30ae3520..00000000 --- a/askbot/skins/default/media/style/node_modules/less/bin/lessc +++ /dev/null @@ -1,139 +0,0 @@ -#!/usr/bin/env node - -var path = require('path'), - fs = require('fs'), - sys = require('util'), - os = require('os'); - -var less = require('../lib/less'); -var args = process.argv.slice(1); -var options = { - compress: false, - yuicompress: false, - optimization: 1, - silent: false, - paths: [], - color: true, - strictImports: false -}; - -args = args.filter(function (arg) { - var match; - - if (match = arg.match(/^-I(.+)$/)) { - options.paths.push(match[1]); - return false; - } - - if (match = arg.match(/^--?([a-z][0-9a-z-]*)(?:=([^\s]+))?$/i)) { arg = match[1] } - else { return arg } - - switch (arg) { - case 'v': - case 'version': - sys.puts("lessc " + less.version.join('.') + " (LESS Compiler) [JavaScript]"); - process.exit(0); - case 'verbose': - options.verbose = true; - break; - case 's': - case 'silent': - options.silent = true; - break; - case 'strict-imports': - options.strictImports = true; - break; - case 'h': - case 'help': - sys.puts("usage: lessc source [destination]"); - process.exit(0); - case 'x': - case 'compress': - options.compress = true; - break; - case 'yui-compress': - options.yuicompress = true; - break; - case 'no-color': - options.color = false; - break; - case 'include-path': - options.paths = match[2].split(os.type().match(/Windows/) ? ';' : ':') - .map(function(p) { - if (p) { - return path.resolve(process.cwd(), p); - } - }); - break; - case 'O0': options.optimization = 0; break; - case 'O1': options.optimization = 1; break; - case 'O2': options.optimization = 2; break; - } -}); - -var input = args[1]; -if (input && input != '-') { - input = path.resolve(process.cwd(), input); -} -var output = args[2]; -if (output) { - output = path.resolve(process.cwd(), output); -} - -var css, fd, tree; - -if (! input) { - sys.puts("lessc: no input files"); - process.exit(1); -} - -var parseLessFile = function (e, data) { - if (e) { - sys.puts("lessc: " + e.message); - process.exit(1); - } - - new(less.Parser)({ - paths: [path.dirname(input)].concat(options.paths), - optimization: options.optimization, - filename: input, - strictImports: options.strictImports - }).parse(data, function (err, tree) { - if (err) { - less.writeError(err, options); - process.exit(1); - } else { - try { - css = tree.toCSS({ - compress: options.compress, - yuicompress: options.yuicompress - }); - if (output) { - fd = fs.openSync(output, "w"); - fs.writeSync(fd, css, 0, "utf8"); - } else { - sys.print(css); - } - } catch (e) { - less.writeError(e, options); - process.exit(2); - } - } - }); -}; - -if (input != '-') { - fs.readFile(input, 'utf-8', parseLessFile); -} else { - process.stdin.resume(); - process.stdin.setEncoding('utf8'); - - var buffer = ''; - process.stdin.on('data', function(data) { - buffer += data; - }); - - process.stdin.on('end', function() { - parseLessFile(false, buffer); - }); -} diff --git a/askbot/skins/default/media/style/node_modules/less/index.html b/askbot/skins/default/media/style/node_modules/less/index.html deleted file mode 100644 index a62c6b6a..00000000 --- a/askbot/skins/default/media/style/node_modules/less/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - HELLO - - diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/browser.js b/askbot/skins/default/media/style/node_modules/less/lib/less/browser.js deleted file mode 100644 index cab913be..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/browser.js +++ /dev/null @@ -1,380 +0,0 @@ -// -// browser.js - client-side engine -// - -var isFileProtocol = (location.protocol === 'file:' || - location.protocol === 'chrome:' || - location.protocol === 'chrome-extension:' || - location.protocol === 'resource:'); - -less.env = less.env || (location.hostname == '127.0.0.1' || - location.hostname == '0.0.0.0' || - location.hostname == 'localhost' || - location.port.length > 0 || - isFileProtocol ? 'development' - : 'production'); - -// Load styles asynchronously (default: false) -// -// This is set to `false` by default, so that the body -// doesn't start loading before the stylesheets are parsed. -// Setting this to `true` can result in flickering. -// -less.async = false; - -// Interval between watch polls -less.poll = less.poll || (isFileProtocol ? 1000 : 1500); - -// -// Watch mode -// -less.watch = function () { return this.watchMode = true }; -less.unwatch = function () { return this.watchMode = false }; - -if (less.env === 'development') { - less.optimization = 0; - - if (/!watch/.test(location.hash)) { - less.watch(); - } - less.watchTimer = setInterval(function () { - if (less.watchMode) { - loadStyleSheets(function (e, root, _, sheet, env) { - if (root) { - createCSS(root.toCSS(), sheet, env.lastModified); - } - }); - } - }, less.poll); -} else { - less.optimization = 3; -} - -var cache; - -try { - cache = (typeof(window.localStorage) === 'undefined') ? null : window.localStorage; -} catch (_) { - cache = null; -} - -// -// Get all tags with the 'rel' attribute set to "stylesheet/less" -// -var links = document.getElementsByTagName('link'); -var typePattern = /^text\/(x-)?less$/; - -less.sheets = []; - -for (var i = 0; i < links.length; i++) { - if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) && - (links[i].type.match(typePattern)))) { - less.sheets.push(links[i]); - } -} - - -less.refresh = function (reload) { - var startTime, endTime; - startTime = endTime = new(Date); - - loadStyleSheets(function (e, root, _, sheet, env) { - if (env.local) { - log("loading " + sheet.href + " from cache."); - } else { - log("parsed " + sheet.href + " successfully."); - createCSS(root.toCSS(), sheet, env.lastModified); - } - log("css for " + sheet.href + " generated in " + (new(Date) - endTime) + 'ms'); - (env.remaining === 0) && log("css generated in " + (new(Date) - startTime) + 'ms'); - endTime = new(Date); - }, reload); - - loadStyles(); -}; -less.refreshStyles = loadStyles; - -less.refresh(less.env === 'development'); - -function loadStyles() { - var styles = document.getElementsByTagName('style'); - for (var i = 0; i < styles.length; i++) { - if (styles[i].type.match(typePattern)) { - new(less.Parser)().parse(styles[i].innerHTML || '', function (e, tree) { - var css = tree.toCSS(); - var style = styles[i]; - style.type = 'text/css'; - if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - style.innerHTML = css; - } - }); - } - } -} - -function loadStyleSheets(callback, reload) { - for (var i = 0; i < less.sheets.length; i++) { - loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1)); - } -} - -function loadStyleSheet(sheet, callback, reload, remaining) { - var url = window.location.href.replace(/[#?].*$/, ''); - var href = sheet.href.replace(/\?.*$/, ''); - var css = cache && cache.getItem(href); - var timestamp = cache && cache.getItem(href + ':timestamp'); - var styles = { css: css, timestamp: timestamp }; - - // Stylesheets in IE don't always return the full path - if (! /^(https?|file):/.test(href)) { - if (href.charAt(0) == "/") { - href = window.location.protocol + "//" + window.location.host + href; - } else { - href = url.slice(0, url.lastIndexOf('/') + 1) + href; - } - } - var filename = href.match(/([^\/]+)$/)[1]; - - xhr(sheet.href, sheet.type, function (data, lastModified) { - if (!reload && styles && lastModified && - (new(Date)(lastModified).valueOf() === - new(Date)(styles.timestamp).valueOf())) { - // Use local copy - createCSS(styles.css, sheet); - callback(null, null, data, sheet, { local: true, remaining: remaining }); - } else { - // Use remote copy (re-parse) - try { - new(less.Parser)({ - optimization: less.optimization, - paths: [href.replace(/[\w\.-]+$/, '')], - mime: sheet.type, - filename: filename - }).parse(data, function (e, root) { - if (e) { return error(e, href) } - try { - callback(e, root, data, sheet, { local: false, lastModified: lastModified, remaining: remaining }); - removeNode(document.getElementById('less-error-message:' + extractId(href))); - } catch (e) { - error(e, href); - } - }); - } catch (e) { - error(e, href); - } - } - }, function (status, url) { - throw new(Error)("Couldn't load " + url + " (" + status + ")"); - }); -} - -function extractId(href) { - return href.replace(/^[a-z]+:\/\/?[^\/]+/, '' ) // Remove protocol & domain - .replace(/^\//, '' ) // Remove root / - .replace(/\?.*$/, '' ) // Remove query - .replace(/\.[^\.\/]+$/, '' ) // Remove file extension - .replace(/[^\.\w-]+/g, '-') // Replace illegal characters - .replace(/\./g, ':'); // Replace dots with colons(for valid id) -} - -function createCSS(styles, sheet, lastModified) { - var css; - - // Strip the query-string - var href = sheet.href ? sheet.href.replace(/\?.*$/, '') : ''; - - // If there is no title set, use the filename, minus the extension - var id = 'less:' + (sheet.title || extractId(href)); - - // If the stylesheet doesn't exist, create a new node - if ((css = document.getElementById(id)) === null) { - css = document.createElement('style'); - css.type = 'text/css'; - css.media = sheet.media || 'screen'; - css.id = id; - document.getElementsByTagName('head')[0].appendChild(css); - } - - if (css.styleSheet) { // IE - try { - css.styleSheet.cssText = styles; - } catch (e) { - throw new(Error)("Couldn't reassign styleSheet.cssText."); - } - } else { - (function (node) { - if (css.childNodes.length > 0) { - if (css.firstChild.nodeValue !== node.nodeValue) { - css.replaceChild(node, css.firstChild); - } - } else { - css.appendChild(node); - } - })(document.createTextNode(styles)); - } - - // Don't update the local store if the file wasn't modified - if (lastModified && cache) { - log('saving ' + href + ' to cache.'); - cache.setItem(href, styles); - cache.setItem(href + ':timestamp', lastModified); - } -} - -function xhr(url, type, callback, errback) { - var xhr = getXMLHttpRequest(); - var async = isFileProtocol ? false : less.async; - - if (typeof(xhr.overrideMimeType) === 'function') { - xhr.overrideMimeType('text/css'); - } - xhr.open('GET', url, async); - xhr.setRequestHeader('Accept', type || 'text/x-less, text/css; q=0.9, */*; q=0.5'); - xhr.send(null); - - if (isFileProtocol) { - if (xhr.status === 0 || (xhr.status >= 200 && xhr.status < 300)) { - callback(xhr.responseText); - } else { - errback(xhr.status, url); - } - } else if (async) { - xhr.onreadystatechange = function () { - if (xhr.readyState == 4) { - handleResponse(xhr, callback, errback); - } - }; - } else { - handleResponse(xhr, callback, errback); - } - - function handleResponse(xhr, callback, errback) { - if (xhr.status >= 200 && xhr.status < 300) { - callback(xhr.responseText, - xhr.getResponseHeader("Last-Modified")); - } else if (typeof(errback) === 'function') { - errback(xhr.status, url); - } - } -} - -function getXMLHttpRequest() { - if (window.XMLHttpRequest) { - return new(XMLHttpRequest); - } else { - try { - return new(ActiveXObject)("MSXML2.XMLHTTP.3.0"); - } catch (e) { - log("browser doesn't support AJAX."); - return null; - } - } -} - -function removeNode(node) { - return node && node.parentNode.removeChild(node); -} - -function log(str) { - if (less.env == 'development' && typeof(console) !== "undefined") { console.log('less: ' + str) } -} - -function error(e, href) { - var id = 'less-error-message:' + extractId(href); - var template = '
  • {content}
  • '; - var elem = document.createElement('div'), timer, content, error = []; - var filename = e.filename || href; - - elem.id = id; - elem.className = "less-error-message"; - - content = '

    ' + (e.message || 'There is an error in your .less file') + - '

    ' + '

    in ' + filename + " "; - - var errorline = function (e, i, classname) { - if (e.extract[i]) { - error.push(template.replace(/\{line\}/, parseInt(e.line) + (i - 1)) - .replace(/\{class\}/, classname) - .replace(/\{content\}/, e.extract[i])); - } - }; - - if (e.stack) { - content += '
    ' + e.stack.split('\n').slice(1).join('
    '); - } else if (e.extract) { - errorline(e, 0, ''); - errorline(e, 1, 'line'); - errorline(e, 2, ''); - content += 'on line ' + e.line + ', column ' + (e.column + 1) + ':

    ' + - '
      ' + error.join('') + '
    '; - } - elem.innerHTML = content; - - // CSS for error messages - createCSS([ - '.less-error-message ul, .less-error-message li {', - 'list-style-type: none;', - 'margin-right: 15px;', - 'padding: 4px 0;', - 'margin: 0;', - '}', - '.less-error-message label {', - 'font-size: 12px;', - 'margin-right: 15px;', - 'padding: 4px 0;', - 'color: #cc7777;', - '}', - '.less-error-message pre {', - 'color: #dd6666;', - 'padding: 4px 0;', - 'margin: 0;', - 'display: inline-block;', - '}', - '.less-error-message pre.line {', - 'color: #ff0000;', - '}', - '.less-error-message h3 {', - 'font-size: 20px;', - 'font-weight: bold;', - 'padding: 15px 0 5px 0;', - 'margin: 0;', - '}', - '.less-error-message a {', - 'color: #10a', - '}', - '.less-error-message .error {', - 'color: red;', - 'font-weight: bold;', - 'padding-bottom: 2px;', - 'border-bottom: 1px dashed red;', - '}' - ].join('\n'), { title: 'error-message' }); - - elem.style.cssText = [ - "font-family: Arial, sans-serif", - "border: 1px solid #e00", - "background-color: #eee", - "border-radius: 5px", - "-webkit-border-radius: 5px", - "-moz-border-radius: 5px", - "color: #e00", - "padding: 15px", - "margin-bottom: 15px" - ].join(';'); - - if (less.env == 'development') { - timer = setInterval(function () { - if (document.body) { - if (document.getElementById(id)) { - document.body.replaceChild(elem, document.getElementById(id)); - } else { - document.body.insertBefore(elem, document.body.firstChild); - } - clearInterval(timer); - } - }, 10); - } -} - diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/colors.js b/askbot/skins/default/media/style/node_modules/less/lib/less/colors.js deleted file mode 100644 index e509b602..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/colors.js +++ /dev/null @@ -1,151 +0,0 @@ -(function (tree) { - tree.colors = { - 'aliceblue':'#f0f8ff', - 'antiquewhite':'#faebd7', - 'aqua':'#00ffff', - 'aquamarine':'#7fffd4', - 'azure':'#f0ffff', - 'beige':'#f5f5dc', - 'bisque':'#ffe4c4', - 'black':'#000000', - 'blanchedalmond':'#ffebcd', - 'blue':'#0000ff', - 'blueviolet':'#8a2be2', - 'brown':'#a52a2a', - 'burlywood':'#deb887', - 'cadetblue':'#5f9ea0', - 'chartreuse':'#7fff00', - 'chocolate':'#d2691e', - 'coral':'#ff7f50', - 'cornflowerblue':'#6495ed', - 'cornsilk':'#fff8dc', - 'crimson':'#dc143c', - 'cyan':'#00ffff', - 'darkblue':'#00008b', - 'darkcyan':'#008b8b', - 'darkgoldenrod':'#b8860b', - 'darkgray':'#a9a9a9', - 'darkgrey':'#a9a9a9', - 'darkgreen':'#006400', - 'darkkhaki':'#bdb76b', - 'darkmagenta':'#8b008b', - 'darkolivegreen':'#556b2f', - 'darkorange':'#ff8c00', - 'darkorchid':'#9932cc', - 'darkred':'#8b0000', - 'darksalmon':'#e9967a', - 'darkseagreen':'#8fbc8f', - 'darkslateblue':'#483d8b', - 'darkslategray':'#2f4f4f', - 'darkslategrey':'#2f4f4f', - 'darkturquoise':'#00ced1', - 'darkviolet':'#9400d3', - 'deeppink':'#ff1493', - 'deepskyblue':'#00bfff', - 'dimgray':'#696969', - 'dimgrey':'#696969', - 'dodgerblue':'#1e90ff', - 'firebrick':'#b22222', - 'floralwhite':'#fffaf0', - 'forestgreen':'#228b22', - 'fuchsia':'#ff00ff', - 'gainsboro':'#dcdcdc', - 'ghostwhite':'#f8f8ff', - 'gold':'#ffd700', - 'goldenrod':'#daa520', - 'gray':'#808080', - 'grey':'#808080', - 'green':'#008000', - 'greenyellow':'#adff2f', - 'honeydew':'#f0fff0', - 'hotpink':'#ff69b4', - 'indianred':'#cd5c5c', - 'indigo':'#4b0082', - 'ivory':'#fffff0', - 'khaki':'#f0e68c', - 'lavender':'#e6e6fa', - 'lavenderblush':'#fff0f5', - 'lawngreen':'#7cfc00', - 'lemonchiffon':'#fffacd', - 'lightblue':'#add8e6', - 'lightcoral':'#f08080', - 'lightcyan':'#e0ffff', - 'lightgoldenrodyellow':'#fafad2', - 'lightgray':'#d3d3d3', - 'lightgrey':'#d3d3d3', - 'lightgreen':'#90ee90', - 'lightpink':'#ffb6c1', - 'lightsalmon':'#ffa07a', - 'lightseagreen':'#20b2aa', - 'lightskyblue':'#87cefa', - 'lightslategray':'#778899', - 'lightslategrey':'#778899', - 'lightsteelblue':'#b0c4de', - 'lightyellow':'#ffffe0', - 'lime':'#00ff00', - 'limegreen':'#32cd32', - 'linen':'#faf0e6', - 'magenta':'#ff00ff', - 'maroon':'#800000', - 'mediumaquamarine':'#66cdaa', - 'mediumblue':'#0000cd', - 'mediumorchid':'#ba55d3', - 'mediumpurple':'#9370d8', - 'mediumseagreen':'#3cb371', - 'mediumslateblue':'#7b68ee', - 'mediumspringgreen':'#00fa9a', - 'mediumturquoise':'#48d1cc', - 'mediumvioletred':'#c71585', - 'midnightblue':'#191970', - 'mintcream':'#f5fffa', - 'mistyrose':'#ffe4e1', - 'moccasin':'#ffe4b5', - 'navajowhite':'#ffdead', - 'navy':'#000080', - 'oldlace':'#fdf5e6', - 'olive':'#808000', - 'olivedrab':'#6b8e23', - 'orange':'#ffa500', - 'orangered':'#ff4500', - 'orchid':'#da70d6', - 'palegoldenrod':'#eee8aa', - 'palegreen':'#98fb98', - 'paleturquoise':'#afeeee', - 'palevioletred':'#d87093', - 'papayawhip':'#ffefd5', - 'peachpuff':'#ffdab9', - 'peru':'#cd853f', - 'pink':'#ffc0cb', - 'plum':'#dda0dd', - 'powderblue':'#b0e0e6', - 'purple':'#800080', - 'red':'#ff0000', - 'rosybrown':'#bc8f8f', - 'royalblue':'#4169e1', - 'saddlebrown':'#8b4513', - 'salmon':'#fa8072', - 'sandybrown':'#f4a460', - 'seagreen':'#2e8b57', - 'seashell':'#fff5ee', - 'sienna':'#a0522d', - 'silver':'#c0c0c0', - 'skyblue':'#87ceeb', - 'slateblue':'#6a5acd', - 'slategray':'#708090', - 'slategrey':'#708090', - 'snow':'#fffafa', - 'springgreen':'#00ff7f', - 'steelblue':'#4682b4', - 'tan':'#d2b48c', - 'teal':'#008080', - 'thistle':'#d8bfd8', - 'tomato':'#ff6347', - 'turquoise':'#40e0d0', - 'violet':'#ee82ee', - 'wheat':'#f5deb3', - 'white':'#ffffff', - 'whitesmoke':'#f5f5f5', - 'yellow':'#ffff00', - 'yellowgreen':'#9acd32' - }; -})(require('./tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/cssmin.js b/askbot/skins/default/media/style/node_modules/less/lib/less/cssmin.js deleted file mode 100644 index 427de71c..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/cssmin.js +++ /dev/null @@ -1,355 +0,0 @@ -/** - * cssmin.js - * Author: Stoyan Stefanov - http://phpied.com/ - * This is a JavaScript port of the CSS minification tool - * distributed with YUICompressor, itself a port - * of the cssmin utility by Isaac Schlueter - http://foohack.com/ - * Permission is hereby granted to use the JavaScript version under the same - * conditions as the YUICompressor (original YUICompressor note below). - */ - -/* -* YUI Compressor -* http://developer.yahoo.com/yui/compressor/ -* Author: Julien Lecomte - http://www.julienlecomte.net/ -* Copyright (c) 2011 Yahoo! Inc. All rights reserved. -* The copyrights embodied in the content of this file are licensed -* by Yahoo! Inc. under the BSD (revised) open source license. -*/ -var YAHOO = YAHOO || {}; -YAHOO.compressor = YAHOO.compressor || {}; - -/** - * Utility method to replace all data urls with tokens before we start - * compressing, to avoid performance issues running some of the subsequent - * regexes against large strings chunks. - * - * @private - * @method _extractDataUrls - * @param {String} css The input css - * @param {Array} The global array of tokens to preserve - * @returns String The processed css - */ -YAHOO.compressor._extractDataUrls = function (css, preservedTokens) { - - // Leave data urls alone to increase parse performance. - var maxIndex = css.length - 1, - appendIndex = 0, - startIndex, - endIndex, - terminator, - foundTerminator, - sb = [], - m, - preserver, - token, - pattern = /url\(\s*(["']?)data\:/g; - - // Since we need to account for non-base64 data urls, we need to handle - // ' and ) being part of the data string. Hence switching to indexOf, - // to determine whether or not we have matching string terminators and - // handling sb appends directly, instead of using matcher.append* methods. - - while ((m = pattern.exec(css)) !== null) { - - startIndex = m.index + 4; // "url(".length() - terminator = m[1]; // ', " or empty (not quoted) - - if (terminator.length === 0) { - terminator = ")"; - } - - foundTerminator = false; - - endIndex = pattern.lastIndex - 1; - - while(foundTerminator === false && endIndex+1 <= maxIndex) { - endIndex = css.indexOf(terminator, endIndex + 1); - - // endIndex == 0 doesn't really apply here - if ((endIndex > 0) && (css.charAt(endIndex - 1) !== '\\')) { - foundTerminator = true; - if (")" != terminator) { - endIndex = css.indexOf(")", endIndex); - } - } - } - - // Enough searching, start moving stuff over to the buffer - sb.push(css.substring(appendIndex, m.index)); - - if (foundTerminator) { - token = css.substring(startIndex, endIndex); - token = token.replace(/\s+/g, ""); - preservedTokens.push(token); - - preserver = "url(___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___)"; - sb.push(preserver); - - appendIndex = endIndex + 1; - } else { - // No end terminator found, re-add the whole match. Should we throw/warn here? - sb.push(css.substring(m.index, pattern.lastIndex)); - appendIndex = pattern.lastIndex; - } - } - - sb.push(css.substring(appendIndex)); - - return sb.join(""); -}; - -/** - * Utility method to compress hex color values of the form #AABBCC to #ABC. - * - * DOES NOT compress CSS ID selectors which match the above pattern (which would break things). - * e.g. #AddressForm { ... } - * - * DOES NOT compress IE filters, which have hex color values (which would break things). - * e.g. filter: chroma(color="#FFFFFF"); - * - * DOES NOT compress invalid hex values. - * e.g. background-color: #aabbccdd - * - * @private - * @method _compressHexColors - * @param {String} css The input css - * @returns String The processed css - */ -YAHOO.compressor._compressHexColors = function(css) { - - // Look for hex colors inside { ... } (to avoid IDs) and which don't have a =, or a " in front of them (to avoid filters) - var pattern = /(\=\s*?["']?)?#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])(\}|[^0-9a-f{][^{]*?\})/gi, - m, - index = 0, - isFilter, - sb = []; - - while ((m = pattern.exec(css)) !== null) { - - sb.push(css.substring(index, m.index)); - - isFilter = m[1]; - - if (isFilter) { - // Restore, maintain case, otherwise filter will break - sb.push(m[1] + "#" + (m[2] + m[3] + m[4] + m[5] + m[6] + m[7])); - } else { - if (m[2].toLowerCase() == m[3].toLowerCase() && - m[4].toLowerCase() == m[5].toLowerCase() && - m[6].toLowerCase() == m[7].toLowerCase()) { - - // Compress. - sb.push("#" + (m[3] + m[5] + m[7]).toLowerCase()); - } else { - // Non compressible color, restore but lower case. - sb.push("#" + (m[2] + m[3] + m[4] + m[5] + m[6] + m[7]).toLowerCase()); - } - } - - index = pattern.lastIndex = pattern.lastIndex - m[8].length; - } - - sb.push(css.substring(index)); - - return sb.join(""); -}; - -YAHOO.compressor.cssmin = function (css, linebreakpos) { - - var startIndex = 0, - endIndex = 0, - i = 0, max = 0, - preservedTokens = [], - comments = [], - token = '', - totallen = css.length, - placeholder = ''; - - css = this._extractDataUrls(css, preservedTokens); - - // collect all comment blocks... - while ((startIndex = css.indexOf("/*", startIndex)) >= 0) { - endIndex = css.indexOf("*/", startIndex + 2); - if (endIndex < 0) { - endIndex = totallen; - } - token = css.slice(startIndex + 2, endIndex); - comments.push(token); - css = css.slice(0, startIndex + 2) + "___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_" + (comments.length - 1) + "___" + css.slice(endIndex); - startIndex += 2; - } - - // preserve strings so their content doesn't get accidentally minified - css = css.replace(/("([^\\"]|\\.|\\)*")|('([^\\']|\\.|\\)*')/g, function (match) { - var i, max, quote = match.substring(0, 1); - - match = match.slice(1, -1); - - // maybe the string contains a comment-like substring? - // one, maybe more? put'em back then - if (match.indexOf("___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_") >= 0) { - for (i = 0, max = comments.length; i < max; i = i + 1) { - match = match.replace("___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_" + i + "___", comments[i]); - } - } - - // minify alpha opacity in filter strings - match = match.replace(/progid:DXImageTransform\.Microsoft\.Alpha\(Opacity=/gi, "alpha(opacity="); - - preservedTokens.push(match); - return quote + "___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___" + quote; - }); - - // strings are safe, now wrestle the comments - for (i = 0, max = comments.length; i < max; i = i + 1) { - - token = comments[i]; - placeholder = "___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_" + i + "___"; - - // ! in the first position of the comment means preserve - // so push to the preserved tokens keeping the ! - if (token.charAt(0) === "!") { - preservedTokens.push(token); - css = css.replace(placeholder, "___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___"); - continue; - } - - // \ in the last position looks like hack for Mac/IE5 - // shorten that to /*\*/ and the next one to /**/ - if (token.charAt(token.length - 1) === "\\") { - preservedTokens.push("\\"); - css = css.replace(placeholder, "___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___"); - i = i + 1; // attn: advancing the loop - preservedTokens.push(""); - css = css.replace("___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_" + i + "___", "___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___"); - continue; - } - - // keep empty comments after child selectors (IE7 hack) - // e.g. html >/**/ body - if (token.length === 0) { - startIndex = css.indexOf(placeholder); - if (startIndex > 2) { - if (css.charAt(startIndex - 3) === '>') { - preservedTokens.push(""); - css = css.replace(placeholder, "___YUICSSMIN_PRESERVED_TOKEN_" + (preservedTokens.length - 1) + "___"); - } - } - } - - // in all other cases kill the comment - css = css.replace("/*" + placeholder + "*/", ""); - } - - - // Normalize all whitespace strings to single spaces. Easier to work with that way. - css = css.replace(/\s+/g, " "); - - // Remove the spaces before the things that should not have spaces before them. - // But, be careful not to turn "p :link {...}" into "p:link{...}" - // Swap out any pseudo-class colons with the token, and then swap back. - css = css.replace(/(^|\})(([^\{:])+:)+([^\{]*\{)/g, function (m) { - return m.replace(":", "___YUICSSMIN_PSEUDOCLASSCOLON___"); - }); - css = css.replace(/\s+([!{};:>+\(\)\],])/g, '$1'); - css = css.replace(/___YUICSSMIN_PSEUDOCLASSCOLON___/g, ":"); - - // retain space for special IE6 cases - css = css.replace(/:first-(line|letter)(\{|,)/g, ":first-$1 $2"); - - // no space after the end of a preserved comment - css = css.replace(/\*\/ /g, '*/'); - - - // If there is a @charset, then only allow one, and push to the top of the file. - css = css.replace(/^(.*)(@charset "[^"]*";)/gi, '$2$1'); - css = css.replace(/^(\s*@charset [^;]+;\s*)+/gi, '$1'); - - // Put the space back in some cases, to support stuff like - // @media screen and (-webkit-min-device-pixel-ratio:0){ - css = css.replace(/\band\(/gi, "and ("); - - - // Remove the spaces after the things that should not have spaces after them. - css = css.replace(/([!{}:;>+\(\[,])\s+/g, '$1'); - - // remove unnecessary semicolons - css = css.replace(/;+\}/g, "}"); - - // Replace 0(px,em,%) with 0. - css = css.replace(/([\s:])(0)(px|em|%|in|cm|mm|pc|pt|ex)/gi, "$1$2"); - - // Replace 0 0 0 0; with 0. - css = css.replace(/:0 0 0 0(;|\})/g, ":0$1"); - css = css.replace(/:0 0 0(;|\})/g, ":0$1"); - css = css.replace(/:0 0(;|\})/g, ":0$1"); - - // Replace background-position:0; with background-position:0 0; - // same for transform-origin - css = css.replace(/(background-position|transform-origin|webkit-transform-origin|moz-transform-origin|o-transform-origin|ms-transform-origin):0(;|\})/gi, function(all, prop, tail) { - return prop.toLowerCase() + ":0 0" + tail; - }); - - // Replace 0.6 to .6, but only when preceded by : or a white-space - css = css.replace(/(:|\s)0+\.(\d+)/g, "$1.$2"); - - // Shorten colors from rgb(51,102,153) to #336699 - // This makes it more likely that it'll get further compressed in the next step. - css = css.replace(/rgb\s*\(\s*([0-9,\s]+)\s*\)/gi, function () { - var i, rgbcolors = arguments[1].split(','); - for (i = 0; i < rgbcolors.length; i = i + 1) { - rgbcolors[i] = parseInt(rgbcolors[i], 10).toString(16); - if (rgbcolors[i].length === 1) { - rgbcolors[i] = '0' + rgbcolors[i]; - } - } - return '#' + rgbcolors.join(''); - }); - - // Shorten colors from #AABBCC to #ABC. - css = this._compressHexColors(css); - - // border: none -> border:0 - css = css.replace(/(border|border-top|border-right|border-bottom|border-right|outline|background):none(;|\})/gi, function(all, prop, tail) { - return prop.toLowerCase() + ":0" + tail; - }); - - // shorter opacity IE filter - css = css.replace(/progid:DXImageTransform\.Microsoft\.Alpha\(Opacity=/gi, "alpha(opacity="); - - // Remove empty rules. - css = css.replace(/[^\};\{\/]+\{\}/g, ""); - - if (linebreakpos >= 0) { - // Some source control tools don't like it when files containing lines longer - // than, say 8000 characters, are checked in. The linebreak option is used in - // that case to split long lines after a specific column. - startIndex = 0; - i = 0; - while (i < css.length) { - i = i + 1; - if (css[i - 1] === '}' && i - startIndex > linebreakpos) { - css = css.slice(0, i) + '\n' + css.slice(i); - startIndex = i; - } - } - } - - // Replace multiple semi-colons in a row by a single one - // See SF bug #1980989 - css = css.replace(/;;+/g, ";"); - - // restore preserved comments and strings - for (i = 0, max = preservedTokens.length; i < max; i = i + 1) { - css = css.replace("___YUICSSMIN_PRESERVED_TOKEN_" + i + "___", preservedTokens[i]); - } - - // Trim the final string (for any leading or trailing white spaces) - css = css.replace(/^\s+|\s+$/g, ""); - - return css; - -}; - -exports.compressor = YAHOO.compressor; diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/functions.js b/askbot/skins/default/media/style/node_modules/less/lib/less/functions.js deleted file mode 100644 index 6eb34bac..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/functions.js +++ /dev/null @@ -1,228 +0,0 @@ -(function (tree) { - -tree.functions = { - rgb: function (r, g, b) { - return this.rgba(r, g, b, 1.0); - }, - rgba: function (r, g, b, a) { - var rgb = [r, g, b].map(function (c) { return number(c) }), - a = number(a); - return new(tree.Color)(rgb, a); - }, - hsl: function (h, s, l) { - return this.hsla(h, s, l, 1.0); - }, - hsla: function (h, s, l, a) { - h = (number(h) % 360) / 360; - s = number(s); l = number(l); a = number(a); - - var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; - var m1 = l * 2 - m2; - - return this.rgba(hue(h + 1/3) * 255, - hue(h) * 255, - hue(h - 1/3) * 255, - a); - - function hue(h) { - h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h); - if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; - else if (h * 2 < 1) return m2; - else if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6; - else return m1; - } - }, - hue: function (color) { - return new(tree.Dimension)(Math.round(color.toHSL().h)); - }, - saturation: function (color) { - return new(tree.Dimension)(Math.round(color.toHSL().s * 100), '%'); - }, - lightness: function (color) { - return new(tree.Dimension)(Math.round(color.toHSL().l * 100), '%'); - }, - alpha: function (color) { - return new(tree.Dimension)(color.toHSL().a); - }, - saturate: function (color, amount) { - var hsl = color.toHSL(); - - hsl.s += amount.value / 100; - hsl.s = clamp(hsl.s); - return hsla(hsl); - }, - desaturate: function (color, amount) { - var hsl = color.toHSL(); - - hsl.s -= amount.value / 100; - hsl.s = clamp(hsl.s); - return hsla(hsl); - }, - lighten: function (color, amount) { - var hsl = color.toHSL(); - - hsl.l += amount.value / 100; - hsl.l = clamp(hsl.l); - return hsla(hsl); - }, - darken: function (color, amount) { - var hsl = color.toHSL(); - - hsl.l -= amount.value / 100; - hsl.l = clamp(hsl.l); - return hsla(hsl); - }, - fadein: function (color, amount) { - var hsl = color.toHSL(); - - hsl.a += amount.value / 100; - hsl.a = clamp(hsl.a); - return hsla(hsl); - }, - fadeout: function (color, amount) { - var hsl = color.toHSL(); - - hsl.a -= amount.value / 100; - hsl.a = clamp(hsl.a); - return hsla(hsl); - }, - fade: function (color, amount) { - var hsl = color.toHSL(); - - hsl.a = amount.value / 100; - hsl.a = clamp(hsl.a); - return hsla(hsl); - }, - spin: function (color, amount) { - var hsl = color.toHSL(); - var hue = (hsl.h + amount.value) % 360; - - hsl.h = hue < 0 ? 360 + hue : hue; - - return hsla(hsl); - }, - // - // Copyright (c) 2006-2009 Hampton Catlin, Nathan Weizenbaum, and Chris Eppstein - // http://sass-lang.com - // - mix: function (color1, color2, weight) { - var p = weight.value / 100.0; - var w = p * 2 - 1; - var a = color1.toHSL().a - color2.toHSL().a; - - var w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; - var w2 = 1 - w1; - - var rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2, - color1.rgb[1] * w1 + color2.rgb[1] * w2, - color1.rgb[2] * w1 + color2.rgb[2] * w2]; - - var alpha = color1.alpha * p + color2.alpha * (1 - p); - - return new(tree.Color)(rgb, alpha); - }, - greyscale: function (color) { - return this.desaturate(color, new(tree.Dimension)(100)); - }, - e: function (str) { - return new(tree.Anonymous)(str instanceof tree.JavaScript ? str.evaluated : str); - }, - escape: function (str) { - return new(tree.Anonymous)(encodeURI(str.value).replace(/=/g, "%3D").replace(/:/g, "%3A").replace(/#/g, "%23").replace(/;/g, "%3B").replace(/\(/g, "%28").replace(/\)/g, "%29")); - }, - '%': function (quoted /* arg, arg, ...*/) { - var args = Array.prototype.slice.call(arguments, 1), - str = quoted.value; - - for (var i = 0; i < args.length; i++) { - str = str.replace(/%[sda]/i, function(token) { - var value = token.match(/s/i) ? args[i].value : args[i].toCSS(); - return token.match(/[A-Z]$/) ? encodeURIComponent(value) : value; - }); - } - str = str.replace(/%%/g, '%'); - return new(tree.Quoted)('"' + str + '"', str); - }, - round: function (n) { - return this._math('round', n); - }, - ceil: function (n) { - return this._math('ceil', n); - }, - floor: function (n) { - return this._math('floor', n); - }, - _math: function (fn, n) { - if (n instanceof tree.Dimension) { - return new(tree.Dimension)(Math[fn](number(n)), n.unit); - } else if (typeof(n) === 'number') { - return Math[fn](n); - } else { - throw { type: "Argument", message: "argument must be a number" }; - } - }, - argb: function (color) { - return new(tree.Anonymous)(color.toARGB()); - - }, - percentage: function (n) { - return new(tree.Dimension)(n.value * 100, '%'); - }, - color: function (n) { - if (n instanceof tree.Quoted) { - return new(tree.Color)(n.value.slice(1)); - } else { - throw { type: "Argument", message: "argument must be a string" }; - } - }, - iscolor: function (n) { - return this._isa(n, tree.Color); - }, - isnumber: function (n) { - return this._isa(n, tree.Dimension); - }, - isstring: function (n) { - return this._isa(n, tree.Quoted); - }, - iskeyword: function (n) { - return this._isa(n, tree.Keyword); - }, - isurl: function (n) { - return this._isa(n, tree.URL); - }, - ispixel: function (n) { - return (n instanceof tree.Dimension) && n.unit === 'px' ? tree.True : tree.False; - }, - ispercentage: function (n) { - return (n instanceof tree.Dimension) && n.unit === '%' ? tree.True : tree.False; - }, - isem: function (n) { - return (n instanceof tree.Dimension) && n.unit === 'em' ? tree.True : tree.False; - }, - _isa: function (n, Type) { - return (n instanceof Type) ? tree.True : tree.False; - } -}; - -function hsla(hsla) { - return tree.functions.hsla(hsla.h, hsla.s, hsla.l, hsla.a); -} - -function number(n) { - if (n instanceof tree.Dimension) { - return parseFloat(n.unit == '%' ? n.value / 100 : n.value); - } else if (typeof(n) === 'number') { - return n; - } else { - throw { - error: "RuntimeError", - message: "color functions take numbers as parameters" - }; - } -} - -function clamp(val) { - return Math.min(1, Math.max(0, val)); -} - -})(require('./tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/index.js b/askbot/skins/default/media/style/node_modules/less/lib/less/index.js deleted file mode 100644 index a11fa998..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/index.js +++ /dev/null @@ -1,148 +0,0 @@ -var path = require('path'), - sys = require('util'), - fs = require('fs'); - -var less = { - version: [1, 3, 0], - Parser: require('./parser').Parser, - importer: require('./parser').importer, - tree: require('./tree'), - render: function (input, options, callback) { - options = options || {}; - - if (typeof(options) === 'function') { - callback = options, options = {}; - } - - var parser = new(less.Parser)(options), - ee; - - if (callback) { - parser.parse(input, function (e, root) { - callback(e, root && root.toCSS && root.toCSS(options)); - }); - } else { - ee = new(require('events').EventEmitter); - - process.nextTick(function () { - parser.parse(input, function (e, root) { - if (e) { ee.emit('error', e) } - else { ee.emit('success', root.toCSS(options)) } - }); - }); - return ee; - } - }, - writeError: function (ctx, options) { - options = options || {}; - - var message = ""; - var extract = ctx.extract; - var error = []; - var stylize = options.color ? less.stylize : function (str) { return str }; - - if (options.silent) { return } - - if (ctx.stack) { return sys.error(stylize(ctx.stack, 'red')) } - - if (!ctx.hasOwnProperty('index')) { - return sys.error(ctx.stack || ctx.message); - } - - if (typeof(extract[0]) === 'string') { - error.push(stylize((ctx.line - 1) + ' ' + extract[0], 'grey')); - } - - if (extract[1]) { - error.push(ctx.line + ' ' + extract[1].slice(0, ctx.column) - + stylize(stylize(stylize(extract[1][ctx.column], 'bold') - + extract[1].slice(ctx.column + 1), 'red'), 'inverse')); - } - - if (typeof(extract[2]) === 'string') { - error.push(stylize((ctx.line + 1) + ' ' + extract[2], 'grey')); - } - error = error.join('\n') + '\033[0m\n'; - - message += stylize(ctx.type + 'Error: ' + ctx.message, 'red'); - ctx.filename && (message += stylize(' in ', 'red') + ctx.filename + - stylize(':' + ctx.line + ':' + ctx.column, 'grey')); - - sys.error(message, error); - - if (ctx.callLine) { - sys.error(stylize('from ', 'red') + (ctx.filename || '')); - sys.error(stylize(ctx.callLine, 'grey') + ' ' + ctx.callExtract); - } - } -}; - -['color', 'directive', 'operation', 'dimension', - 'keyword', 'variable', 'ruleset', 'element', - 'selector', 'quoted', 'expression', 'rule', - 'call', 'url', 'alpha', 'import', - 'mixin', 'comment', 'anonymous', 'value', - 'javascript', 'assignment', 'condition', 'paren', - 'media' -].forEach(function (n) { - require('./tree/' + n); -}); - -less.Parser.importer = function (file, paths, callback, env) { - var pathname; - - // TODO: Undo this at some point, - // or use different approach. - paths.unshift('.'); - - for (var i = 0; i < paths.length; i++) { - try { - pathname = path.join(paths[i], file); - fs.statSync(pathname); - break; - } catch (e) { - pathname = null; - } - } - - if (pathname) { - fs.readFile(pathname, 'utf-8', function(e, data) { - if (e) return callback(e); - - new(less.Parser)({ - paths: [path.dirname(pathname)].concat(paths), - filename: pathname - }).parse(data, function (e, root) { - callback(e, root, data); - }); - }); - } else { - if (typeof(env.errback) === "function") { - env.errback(file, paths, callback); - } else { - callback({ type: 'File', message: "'" + file + "' wasn't found.\n" }); - } - } -} - -require('./functions'); -require('./colors'); - -for (var k in less) { exports[k] = less[k] } - -// Stylize a string -function stylize(str, style) { - var styles = { - 'bold' : [1, 22], - 'inverse' : [7, 27], - 'underline' : [4, 24], - 'yellow' : [33, 39], - 'green' : [32, 39], - 'red' : [31, 39], - 'grey' : [90, 39] - }; - return '\033[' + styles[style][0] + 'm' + str + - '\033[' + styles[style][1] + 'm'; -} -less.stylize = stylize; - diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/parser.js b/askbot/skins/default/media/style/node_modules/less/lib/less/parser.js deleted file mode 100644 index 6ea4f8be..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/parser.js +++ /dev/null @@ -1,1305 +0,0 @@ -var less, tree; - -if (typeof environment === "object" && ({}).toString.call(environment) === "[object Environment]") { - // Rhino - // Details on how to detect Rhino: https://github.com/ringo/ringojs/issues/88 - if (typeof(window) === 'undefined') { less = {} } - else { less = window.less = {} } - tree = less.tree = {}; - less.mode = 'rhino'; -} else if (typeof(window) === 'undefined') { - // Node.js - less = exports, - tree = require('./tree'); - less.mode = 'node'; -} else { - // Browser - if (typeof(window.less) === 'undefined') { window.less = {} } - less = window.less, - tree = window.less.tree = {}; - less.mode = 'browser'; -} -// -// less.js - parser -// -// A relatively straight-forward predictive parser. -// There is no tokenization/lexing stage, the input is parsed -// in one sweep. -// -// To make the parser fast enough to run in the browser, several -// optimization had to be made: -// -// - Matching and slicing on a huge input is often cause of slowdowns. -// The solution is to chunkify the input into smaller strings. -// The chunks are stored in the `chunks` var, -// `j` holds the current chunk index, and `current` holds -// the index of the current chunk in relation to `input`. -// This gives us an almost 4x speed-up. -// -// - In many cases, we don't need to match individual tokens; -// for example, if a value doesn't hold any variables, operations -// or dynamic references, the parser can effectively 'skip' it, -// treating it as a literal. -// An example would be '1px solid #000' - which evaluates to itself, -// we don't need to know what the individual components are. -// The drawback, of course is that you don't get the benefits of -// syntax-checking on the CSS. This gives us a 50% speed-up in the parser, -// and a smaller speed-up in the code-gen. -// -// -// Token matching is done with the `$` function, which either takes -// a terminal string or regexp, or a non-terminal function to call. -// It also takes care of moving all the indices forwards. -// -// -less.Parser = function Parser(env) { - var input, // LeSS input string - i, // current index in `input` - j, // current chunk - temp, // temporarily holds a chunk's state, for backtracking - memo, // temporarily holds `i`, when backtracking - furthest, // furthest index the parser has gone to - chunks, // chunkified input - current, // index of current chunk, in `input` - parser; - - var that = this; - - // This function is called after all files - // have been imported through `@import`. - var finish = function () {}; - - var imports = this.imports = { - paths: env && env.paths || [], // Search paths, when importing - queue: [], // Files which haven't been imported yet - files: {}, // Holds the imported parse trees - contents: {}, // Holds the imported file contents - mime: env && env.mime, // MIME type of .less files - error: null, // Error in parsing/evaluating an import - push: function (path, callback) { - var that = this; - this.queue.push(path); - - // - // Import a file asynchronously - // - less.Parser.importer(path, this.paths, function (e, root, contents) { - that.queue.splice(that.queue.indexOf(path), 1); // Remove the path from the queue - that.files[path] = root; // Store the root - that.contents[path] = contents; - - if (e && !that.error) { that.error = e } - callback(e, root); - - if (that.queue.length === 0) { finish() } // Call `finish` if we're done importing - }, env); - } - }; - - function save() { temp = chunks[j], memo = i, current = i } - function restore() { chunks[j] = temp, i = memo, current = i } - - function sync() { - if (i > current) { - chunks[j] = chunks[j].slice(i - current); - current = i; - } - } - // - // Parse from a token, regexp or string, and move forward if match - // - function $(tok) { - var match, args, length, c, index, endIndex, k, mem; - - // - // Non-terminal - // - if (tok instanceof Function) { - return tok.call(parser.parsers); - // - // Terminal - // - // Either match a single character in the input, - // or match a regexp in the current chunk (chunk[j]). - // - } else if (typeof(tok) === 'string') { - match = input.charAt(i) === tok ? tok : null; - length = 1; - sync (); - } else { - sync (); - - if (match = tok.exec(chunks[j])) { - length = match[0].length; - } else { - return null; - } - } - - // The match is confirmed, add the match length to `i`, - // and consume any extra white-space characters (' ' || '\n') - // which come after that. The reason for this is that LeSS's - // grammar is mostly white-space insensitive. - // - if (match) { - mem = i += length; - endIndex = i + chunks[j].length - length; - - while (i < endIndex) { - c = input.charCodeAt(i); - if (! (c === 32 || c === 10 || c === 9)) { break } - i++; - } - chunks[j] = chunks[j].slice(length + (i - mem)); - current = i; - - if (chunks[j].length === 0 && j < chunks.length - 1) { j++ } - - if(typeof(match) === 'string') { - return match; - } else { - return match.length === 1 ? match[0] : match; - } - } - } - - function expect(arg, msg) { - var result = $(arg); - if (! result) { - error(msg || (typeof(arg) === 'string' ? "expected '" + arg + "' got '" + input.charAt(i) + "'" - : "unexpected token")); - } else { - return result; - } - } - - function error(msg, type) { - throw { index: i, type: type || 'Syntax', message: msg }; - } - - // Same as $(), but don't change the state of the parser, - // just return the match. - function peek(tok) { - if (typeof(tok) === 'string') { - return input.charAt(i) === tok; - } else { - if (tok.test(chunks[j])) { - return true; - } else { - return false; - } - } - } - - function basename(pathname) { - if (less.mode === 'node') { - return require('path').basename(pathname); - } else { - return pathname.match(/[^\/]+$/)[0]; - } - } - - function getInput(e, env) { - if (e.filename && env.filename && (e.filename !== env.filename)) { - return parser.imports.contents[basename(e.filename)]; - } else { - return input; - } - } - - function getLocation(index, input) { - for (var n = index, column = -1; - n >= 0 && input.charAt(n) !== '\n'; - n--) { column++ } - - return { line: typeof(index) === 'number' ? (input.slice(0, index).match(/\n/g) || "").length : null, - column: column }; - } - - function LessError(e, env) { - var input = getInput(e, env), - loc = getLocation(e.index, input), - line = loc.line, - col = loc.column, - lines = input.split('\n'); - - this.type = e.type || 'Syntax'; - this.message = e.message; - this.filename = e.filename || env.filename; - this.index = e.index; - this.line = typeof(line) === 'number' ? line + 1 : null; - this.callLine = e.call && (getLocation(e.call, input).line + 1); - this.callExtract = lines[getLocation(e.call, input).line]; - this.stack = e.stack; - this.column = col; - this.extract = [ - lines[line - 1], - lines[line], - lines[line + 1] - ]; - } - - this.env = env = env || {}; - - // The optimization level dictates the thoroughness of the parser, - // the lower the number, the less nodes it will create in the tree. - // This could matter for debugging, or if you want to access - // the individual nodes in the tree. - this.optimization = ('optimization' in this.env) ? this.env.optimization : 1; - - this.env.filename = this.env.filename || null; - - // - // The Parser - // - return parser = { - - imports: imports, - // - // Parse an input string into an abstract syntax tree, - // call `callback` when done. - // - parse: function (str, callback) { - var root, start, end, zone, line, lines, buff = [], c, error = null; - - i = j = current = furthest = 0; - input = str.replace(/\r\n/g, '\n'); - - // Split the input into chunks. - chunks = (function (chunks) { - var j = 0, - skip = /[^"'`\{\}\/\(\)\\]+/g, - comment = /\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g, - string = /"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'|`((?:[^`\\\r\n]|\\.)*)`/g, - level = 0, - match, - chunk = chunks[0], - inParam; - - for (var i = 0, c, cc; i < input.length; i++) { - skip.lastIndex = i; - if (match = skip.exec(input)) { - if (match.index === i) { - i += match[0].length; - chunk.push(match[0]); - } - } - c = input.charAt(i); - comment.lastIndex = string.lastIndex = i; - - if (match = string.exec(input)) { - if (match.index === i) { - i += match[0].length; - chunk.push(match[0]); - c = input.charAt(i); - } - } - - if (!inParam && c === '/') { - cc = input.charAt(i + 1); - if (cc === '/' || cc === '*') { - if (match = comment.exec(input)) { - if (match.index === i) { - i += match[0].length; - chunk.push(match[0]); - c = input.charAt(i); - } - } - } - } - - switch (c) { - case '{': if (! inParam) { level ++; chunk.push(c); break } - case '}': if (! inParam) { level --; chunk.push(c); chunks[++j] = chunk = []; break } - case '(': if (! inParam) { inParam = true; chunk.push(c); break } - case ')': if ( inParam) { inParam = false; chunk.push(c); break } - default: chunk.push(c); - } - } - if (level > 0) { - error = new(LessError)({ - index: i, - type: 'Parse', - message: "missing closing `}`", - filename: env.filename - }, env); - } - - return chunks.map(function (c) { return c.join('') });; - })([[]]); - - if (error) { - return callback(error); - } - - // Start with the primary rule. - // The whole syntax tree is held under a Ruleset node, - // with the `root` property set to true, so no `{}` are - // output. The callback is called when the input is parsed. - try { - root = new(tree.Ruleset)([], $(this.parsers.primary)); - root.root = true; - } catch (e) { - return callback(new(LessError)(e, env)); - } - - root.toCSS = (function (evaluate) { - var line, lines, column; - - return function (options, variables) { - var frames = [], importError; - - options = options || {}; - // - // Allows setting variables with a hash, so: - // - // `{ color: new(tree.Color)('#f01') }` will become: - // - // new(tree.Rule)('@color', - // new(tree.Value)([ - // new(tree.Expression)([ - // new(tree.Color)('#f01') - // ]) - // ]) - // ) - // - if (typeof(variables) === 'object' && !Array.isArray(variables)) { - variables = Object.keys(variables).map(function (k) { - var value = variables[k]; - - if (! (value instanceof tree.Value)) { - if (! (value instanceof tree.Expression)) { - value = new(tree.Expression)([value]); - } - value = new(tree.Value)([value]); - } - return new(tree.Rule)('@' + k, value, false, 0); - }); - frames = [new(tree.Ruleset)(null, variables)]; - } - - try { - var css = evaluate.call(this, { frames: frames }) - .toCSS([], { compress: options.compress || false }); - } catch (e) { - throw new(LessError)(e, env); - } - - if ((importError = parser.imports.error)) { // Check if there was an error during importing - if (importError instanceof LessError) throw importError; - else throw new(LessError)(importError, env); - } - - if (options.yuicompress && less.mode === 'node') { - return require('./cssmin').compressor.cssmin(css); - } else if (options.compress) { - return css.replace(/(\s)+/g, "$1"); - } else { - return css; - } - }; - })(root.eval); - - // If `i` is smaller than the `input.length - 1`, - // it means the parser wasn't able to parse the whole - // string, so we've got a parsing error. - // - // We try to extract a \n delimited string, - // showing the line where the parse error occured. - // We split it up into two parts (the part which parsed, - // and the part which didn't), so we can color them differently. - if (i < input.length - 1) { - i = furthest; - lines = input.split('\n'); - line = (input.slice(0, i).match(/\n/g) || "").length + 1; - - for (var n = i, column = -1; n >= 0 && input.charAt(n) !== '\n'; n--) { column++ } - - error = { - type: "Parse", - message: "Syntax Error on line " + line, - index: i, - filename: env.filename, - line: line, - column: column, - extract: [ - lines[line - 2], - lines[line - 1], - lines[line] - ] - }; - } - - if (this.imports.queue.length > 0) { - finish = function () { callback(error, root) }; - } else { - callback(error, root); - } - }, - - // - // Here in, the parsing rules/functions - // - // The basic structure of the syntax tree generated is as follows: - // - // Ruleset -> Rule -> Value -> Expression -> Entity - // - // Here's some LESS code: - // - // .class { - // color: #fff; - // border: 1px solid #000; - // width: @w + 4px; - // > .child {...} - // } - // - // And here's what the parse tree might look like: - // - // Ruleset (Selector '.class', [ - // Rule ("color", Value ([Expression [Color #fff]])) - // Rule ("border", Value ([Expression [Dimension 1px][Keyword "solid"][Color #000]])) - // Rule ("width", Value ([Expression [Operation "+" [Variable "@w"][Dimension 4px]]])) - // Ruleset (Selector [Element '>', '.child'], [...]) - // ]) - // - // In general, most rules will try to parse a token with the `$()` function, and if the return - // value is truly, will return a new node, of the relevant type. Sometimes, we need to check - // first, before parsing, that's when we use `peek()`. - // - parsers: { - // - // The `primary` rule is the *entry* and *exit* point of the parser. - // The rules here can appear at any level of the parse tree. - // - // The recursive nature of the grammar is an interplay between the `block` - // rule, which represents `{ ... }`, the `ruleset` rule, and this `primary` rule, - // as represented by this simplified grammar: - // - // primary → (ruleset | rule)+ - // ruleset → selector+ block - // block → '{' primary '}' - // - // Only at one point is the primary rule not called from the - // block rule: at the root level. - // - primary: function () { - var node, root = []; - - while ((node = $(this.mixin.definition) || $(this.rule) || $(this.ruleset) || - $(this.mixin.call) || $(this.comment) || $(this.directive)) - || $(/^[\s\n]+/)) { - node && root.push(node); - } - return root; - }, - - // We create a Comment node for CSS comments `/* */`, - // but keep the LeSS comments `//` silent, by just skipping - // over them. - comment: function () { - var comment; - - if (input.charAt(i) !== '/') return; - - if (input.charAt(i + 1) === '/') { - return new(tree.Comment)($(/^\/\/.*/), true); - } else if (comment = $(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/)) { - return new(tree.Comment)(comment); - } - }, - - // - // Entities are tokens which can be found inside an Expression - // - entities: { - // - // A string, which supports escaping " and ' - // - // "milky way" 'he\'s the one!' - // - quoted: function () { - var str, j = i, e; - - if (input.charAt(j) === '~') { j++, e = true } // Escaped strings - if (input.charAt(j) !== '"' && input.charAt(j) !== "'") return; - - e && $('~'); - - if (str = $(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/)) { - return new(tree.Quoted)(str[0], str[1] || str[2], e); - } - }, - - // - // A catch-all word, such as: - // - // black border-collapse - // - keyword: function () { - var k; - - if (k = $(/^[_A-Za-z-][_A-Za-z0-9-]*/)) { - if (tree.colors.hasOwnProperty(k)) { - // detect named color - return new(tree.Color)(tree.colors[k].slice(1)); - } else { - return new(tree.Keyword)(k); - } - } - }, - - // - // A function call - // - // rgb(255, 0, 255) - // - // We also try to catch IE's `alpha()`, but let the `alpha` parser - // deal with the details. - // - // The arguments are parsed with the `entities.arguments` parser. - // - call: function () { - var name, args, index = i; - - if (! (name = /^([\w-]+|%|progid:[\w\.]+)\(/.exec(chunks[j]))) return; - - name = name[1].toLowerCase(); - - if (name === 'url') { return null } - else { i += name.length } - - if (name === 'alpha') { return $(this.alpha) } - - $('('); // Parse the '(' and consume whitespace. - - args = $(this.entities.arguments); - - if (! $(')')) return; - - if (name) { return new(tree.Call)(name, args, index, env.filename) } - }, - arguments: function () { - var args = [], arg; - - while (arg = $(this.entities.assignment) || $(this.expression)) { - args.push(arg); - if (! $(',')) { break } - } - return args; - }, - literal: function () { - return $(this.entities.dimension) || - $(this.entities.color) || - $(this.entities.quoted); - }, - - // Assignments are argument entities for calls. - // They are present in ie filter properties as shown below. - // - // filter: progid:DXImageTransform.Microsoft.Alpha( *opacity=50* ) - // - - assignment: function () { - var key, value; - if ((key = $(/^\w+(?=\s?=)/i)) && $('=') && (value = $(this.entity))) { - return new(tree.Assignment)(key, value); - } - }, - - // - // Parse url() tokens - // - // We use a specific rule for urls, because they don't really behave like - // standard function calls. The difference is that the argument doesn't have - // to be enclosed within a string, so it can't be parsed as an Expression. - // - url: function () { - var value; - - if (input.charAt(i) !== 'u' || !$(/^url\(/)) return; - value = $(this.entities.quoted) || $(this.entities.variable) || - $(this.entities.dataURI) || $(/^[-\w%@$\/.&=:;#+?~]+/) || ""; - - expect(')'); - - return new(tree.URL)((value.value || value.data || value instanceof tree.Variable) - ? value : new(tree.Anonymous)(value), imports.paths); - }, - - dataURI: function () { - var obj; - - if ($(/^data:/)) { - obj = {}; - obj.mime = $(/^[^\/]+\/[^,;)]+/) || ''; - obj.charset = $(/^;\s*charset=[^,;)]+/) || ''; - obj.base64 = $(/^;\s*base64/) || ''; - obj.data = $(/^,\s*[^)]+/); - - if (obj.data) { return obj } - } - }, - - // - // A Variable entity, such as `@fink`, in - // - // width: @fink + 2px - // - // We use a different parser for variable definitions, - // see `parsers.variable`. - // - variable: function () { - var name, index = i; - - if (input.charAt(i) === '@' && (name = $(/^@@?[\w-]+/))) { - return new(tree.Variable)(name, index, env.filename); - } - }, - - // - // A Hexadecimal color - // - // #4F3C2F - // - // `rgb` and `hsl` colors are parsed through the `entities.call` parser. - // - color: function () { - var rgb; - - if (input.charAt(i) === '#' && (rgb = $(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/))) { - return new(tree.Color)(rgb[1]); - } - }, - - // - // A Dimension, that is, a number and a unit - // - // 0.5em 95% - // - dimension: function () { - var value, c = input.charCodeAt(i); - if ((c > 57 || c < 45) || c === 47) return; - - if (value = $(/^(-?\d*\.?\d+)(px|%|em|rem|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/)) { - return new(tree.Dimension)(value[1], value[2]); - } - }, - - // - // JavaScript code to be evaluated - // - // `window.location.href` - // - javascript: function () { - var str, j = i, e; - - if (input.charAt(j) === '~') { j++, e = true } // Escaped strings - if (input.charAt(j) !== '`') { return } - - e && $('~'); - - if (str = $(/^`([^`]*)`/)) { - return new(tree.JavaScript)(str[1], i, e); - } - } - }, - - // - // The variable part of a variable definition. Used in the `rule` parser - // - // @fink: - // - variable: function () { - var name; - - if (input.charAt(i) === '@' && (name = $(/^(@[\w-]+)\s*:/))) { return name[1] } - }, - - // - // A font size/line-height shorthand - // - // small/12px - // - // We need to peek first, or we'll match on keywords and dimensions - // - shorthand: function () { - var a, b; - - if (! peek(/^[@\w.%-]+\/[@\w.-]+/)) return; - - if ((a = $(this.entity)) && $('/') && (b = $(this.entity))) { - return new(tree.Shorthand)(a, b); - } - }, - - // - // Mixins - // - mixin: { - // - // A Mixin call, with an optional argument list - // - // #mixins > .square(#fff); - // .rounded(4px, black); - // .button; - // - // The `while` loop is there because mixins can be - // namespaced, but we only support the child and descendant - // selector for now. - // - call: function () { - var elements = [], e, c, args, index = i, s = input.charAt(i), important = false; - - if (s !== '.' && s !== '#') { return } - - while (e = $(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)) { - elements.push(new(tree.Element)(c, e, i)); - c = $('>'); - } - $('(') && (args = $(this.entities.arguments)) && $(')'); - - if ($(this.important)) { - important = true; - } - - if (elements.length > 0 && ($(';') || peek('}'))) { - return new(tree.mixin.Call)(elements, args || [], index, env.filename, important); - } - }, - - // - // A Mixin definition, with a list of parameters - // - // .rounded (@radius: 2px, @color) { - // ... - // } - // - // Until we have a finer grained state-machine, we have to - // do a look-ahead, to make sure we don't have a mixin call. - // See the `rule` function for more information. - // - // We start by matching `.rounded (`, and then proceed on to - // the argument list, which has optional default values. - // We store the parameters in `params`, with a `value` key, - // if there is a value, such as in the case of `@radius`. - // - // Once we've got our params list, and a closing `)`, we parse - // the `{...}` block. - // - definition: function () { - var name, params = [], match, ruleset, param, value, cond, variadic = false; - if ((input.charAt(i) !== '.' && input.charAt(i) !== '#') || - peek(/^[^{]*(;|})/)) return; - - save(); - - if (match = $(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)) { - name = match[1]; - - do { - if (input.charAt(i) === '.' && $(/^\.{3}/)) { - variadic = true; - break; - } else if (param = $(this.entities.variable) || $(this.entities.literal) - || $(this.entities.keyword)) { - // Variable - if (param instanceof tree.Variable) { - if ($(':')) { - value = expect(this.expression, 'expected expression'); - params.push({ name: param.name, value: value }); - } else if ($(/^\.{3}/)) { - params.push({ name: param.name, variadic: true }); - variadic = true; - break; - } else { - params.push({ name: param.name }); - } - } else { - params.push({ value: param }); - } - } else { - break; - } - } while ($(',')) - - expect(')'); - - if ($(/^when/)) { // Guard - cond = expect(this.conditions, 'expected condition'); - } - - ruleset = $(this.block); - - if (ruleset) { - return new(tree.mixin.Definition)(name, params, ruleset, cond, variadic); - } else { - restore(); - } - } - } - }, - - // - // Entities are the smallest recognized token, - // and can be found inside a rule's value. - // - entity: function () { - return $(this.entities.literal) || $(this.entities.variable) || $(this.entities.url) || - $(this.entities.call) || $(this.entities.keyword) || $(this.entities.javascript) || - $(this.comment); - }, - - // - // A Rule terminator. Note that we use `peek()` to check for '}', - // because the `block` rule will be expecting it, but we still need to make sure - // it's there, if ';' was ommitted. - // - end: function () { - return $(';') || peek('}'); - }, - - // - // IE's alpha function - // - // alpha(opacity=88) - // - alpha: function () { - var value; - - if (! $(/^\(opacity=/i)) return; - if (value = $(/^\d+/) || $(this.entities.variable)) { - expect(')'); - return new(tree.Alpha)(value); - } - }, - - // - // A Selector Element - // - // div - // + h1 - // #socks - // input[type="text"] - // - // Elements are the building blocks for Selectors, - // they are made out of a `Combinator` (see combinator rule), - // and an element name, such as a tag a class, or `*`. - // - element: function () { - var e, t, c, v; - - c = $(this.combinator); - e = $(/^(?:\d+\.\d+|\d+)%/) || $(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/) || - $('*') || $(this.attribute) || $(/^\([^)@]+\)/); - - if (! e) { - $('(') && (v = $(this.entities.variable)) && $(')') && (e = new(tree.Paren)(v)); - } - - if (e) { return new(tree.Element)(c, e, i) } - - if (c.value && c.value.charAt(0) === '&') { - return new(tree.Element)(c, null, i); - } - }, - - // - // Combinators combine elements together, in a Selector. - // - // Because our parser isn't white-space sensitive, special care - // has to be taken, when parsing the descendant combinator, ` `, - // as it's an empty space. We have to check the previous character - // in the input, to see if it's a ` ` character. More info on how - // we deal with this in *combinator.js*. - // - combinator: function () { - var match, c = input.charAt(i); - - if (c === '>' || c === '+' || c === '~') { - i++; - while (input.charAt(i) === ' ') { i++ } - return new(tree.Combinator)(c); - } else if (c === '&') { - match = '&'; - i++; - if(input.charAt(i) === ' ') { - match = '& '; - } - while (input.charAt(i) === ' ') { i++ } - return new(tree.Combinator)(match); - } else if (input.charAt(i - 1) === ' ') { - return new(tree.Combinator)(" "); - } else { - return new(tree.Combinator)(null); - } - }, - - // - // A CSS Selector - // - // .class > div + h1 - // li a:hover - // - // Selectors are made out of one or more Elements, see above. - // - selector: function () { - var sel, e, elements = [], c, match; - - if ($('(')) { - sel = $(this.entity); - expect(')'); - return new(tree.Selector)([new(tree.Element)('', sel, i)]); - } - - while (e = $(this.element)) { - c = input.charAt(i); - elements.push(e) - if (c === '{' || c === '}' || c === ';' || c === ',') { break } - } - - if (elements.length > 0) { return new(tree.Selector)(elements) } - }, - tag: function () { - return $(/^[a-zA-Z][a-zA-Z-]*[0-9]?/) || $('*'); - }, - attribute: function () { - var attr = '', key, val, op; - - if (! $('[')) return; - - if (key = $(/^[a-zA-Z-]+/) || $(this.entities.quoted)) { - if ((op = $(/^[|~*$^]?=/)) && - (val = $(this.entities.quoted) || $(/^[\w-]+/))) { - attr = [key, op, val.toCSS ? val.toCSS() : val].join(''); - } else { attr = key } - } - - if (! $(']')) return; - - if (attr) { return "[" + attr + "]" } - }, - - // - // The `block` rule is used by `ruleset` and `mixin.definition`. - // It's a wrapper around the `primary` rule, with added `{}`. - // - block: function () { - var content; - - if ($('{') && (content = $(this.primary)) && $('}')) { - return content; - } - }, - - // - // div, .class, body > p {...} - // - ruleset: function () { - var selectors = [], s, rules, match; - save(); - - while (s = $(this.selector)) { - selectors.push(s); - $(this.comment); - if (! $(',')) { break } - $(this.comment); - } - - if (selectors.length > 0 && (rules = $(this.block))) { - return new(tree.Ruleset)(selectors, rules, env.strictImports); - } else { - // Backtrack - furthest = i; - restore(); - } - }, - rule: function () { - var name, value, c = input.charAt(i), important, match; - save(); - - if (c === '.' || c === '#' || c === '&') { return } - - if (name = $(this.variable) || $(this.property)) { - if ((name.charAt(0) != '@') && (match = /^([^@+\/'"*`(;{}-]*);/.exec(chunks[j]))) { - i += match[0].length - 1; - value = new(tree.Anonymous)(match[1]); - } else if (name === "font") { - value = $(this.font); - } else { - value = $(this.value); - } - important = $(this.important); - - if (value && $(this.end)) { - return new(tree.Rule)(name, value, important, memo); - } else { - furthest = i; - restore(); - } - } - }, - - // - // An @import directive - // - // @import "lib"; - // - // Depending on our environemnt, importing is done differently: - // In the browser, it's an XHR request, in Node, it would be a - // file-system operation. The function used for importing is - // stored in `import`, which we pass to the Import constructor. - // - "import": function () { - var path, features, index = i; - if ($(/^@import\s+/) && - (path = $(this.entities.quoted) || $(this.entities.url))) { - features = $(this.mediaFeatures); - if ($(';')) { - return new(tree.Import)(path, imports, features, index); - } - } - }, - - mediaFeature: function () { - var e, p, nodes = []; - - do { - if (e = $(this.entities.keyword)) { - nodes.push(e); - } else if ($('(')) { - p = $(this.property); - e = $(this.entity); - if ($(')')) { - if (p && e) { - nodes.push(new(tree.Paren)(new(tree.Rule)(p, e, null, i, true))); - } else if (e) { - nodes.push(new(tree.Paren)(e)); - } else { - return null; - } - } else { return null } - } - } while (e); - - if (nodes.length > 0) { - return new(tree.Expression)(nodes); - } - }, - - mediaFeatures: function () { - var e, features = []; - - do { - if (e = $(this.mediaFeature)) { - features.push(e); - if (! $(',')) { break } - } else if (e = $(this.entities.variable)) { - features.push(e); - if (! $(',')) { break } - } - } while (e); - - return features.length > 0 ? features : null; - }, - - media: function () { - var features, rules; - - if ($(/^@media/)) { - features = $(this.mediaFeatures); - - if (rules = $(this.block)) { - return new(tree.Media)(rules, features); - } - } - }, - - // - // A CSS Directive - // - // @charset "utf-8"; - // - directive: function () { - var name, value, rules, types, e, nodes; - - if (input.charAt(i) !== '@') return; - - if (value = $(this['import']) || $(this.media)) { - return value; - } else if (name = $(/^@page|@keyframes/) || $(/^@(?:-webkit-|-moz-|-o-|-ms-)[a-z0-9-]+/)) { - types = ($(/^[^{]+/) || '').trim(); - if (rules = $(this.block)) { - return new(tree.Directive)(name + " " + types, rules); - } - } else if (name = $(/^@[-a-z]+/)) { - if (name === '@font-face') { - if (rules = $(this.block)) { - return new(tree.Directive)(name, rules); - } - } else if ((value = $(this.entity)) && $(';')) { - return new(tree.Directive)(name, value); - } - } - }, - font: function () { - var value = [], expression = [], weight, shorthand, font, e; - - while (e = $(this.shorthand) || $(this.entity)) { - expression.push(e); - } - value.push(new(tree.Expression)(expression)); - - if ($(',')) { - while (e = $(this.expression)) { - value.push(e); - if (! $(',')) { break } - } - } - return new(tree.Value)(value); - }, - - // - // A Value is a comma-delimited list of Expressions - // - // font-family: Baskerville, Georgia, serif; - // - // In a Rule, a Value represents everything after the `:`, - // and before the `;`. - // - value: function () { - var e, expressions = [], important; - - while (e = $(this.expression)) { - expressions.push(e); - if (! $(',')) { break } - } - - if (expressions.length > 0) { - return new(tree.Value)(expressions); - } - }, - important: function () { - if (input.charAt(i) === '!') { - return $(/^! *important/); - } - }, - sub: function () { - var e; - - if ($('(') && (e = $(this.expression)) && $(')')) { - return e; - } - }, - multiplication: function () { - var m, a, op, operation; - if (m = $(this.operand)) { - while (!peek(/^\/\*/) && (op = ($('/') || $('*'))) && (a = $(this.operand))) { - operation = new(tree.Operation)(op, [operation || m, a]); - } - return operation || m; - } - }, - addition: function () { - var m, a, op, operation; - if (m = $(this.multiplication)) { - while ((op = $(/^[-+]\s+/) || (input.charAt(i - 1) != ' ' && ($('+') || $('-')))) && - (a = $(this.multiplication))) { - operation = new(tree.Operation)(op, [operation || m, a]); - } - return operation || m; - } - }, - conditions: function () { - var a, b, index = i, condition; - - if (a = $(this.condition)) { - while ($(',') && (b = $(this.condition))) { - condition = new(tree.Condition)('or', condition || a, b, index); - } - return condition || a; - } - }, - condition: function () { - var a, b, c, op, index = i, negate = false; - - if ($(/^not/)) { negate = true } - expect('('); - if (a = $(this.addition) || $(this.entities.keyword) || $(this.entities.quoted)) { - if (op = $(/^(?:>=|=<|[<=>])/)) { - if (b = $(this.addition) || $(this.entities.keyword) || $(this.entities.quoted)) { - c = new(tree.Condition)(op, a, b, index, negate); - } else { - error('expected expression'); - } - } else { - c = new(tree.Condition)('=', a, new(tree.Keyword)('true'), index, negate); - } - expect(')'); - return $(/^and/) ? new(tree.Condition)('and', c, $(this.condition)) : c; - } - }, - - // - // An operand is anything that can be part of an operation, - // such as a Color, or a Variable - // - operand: function () { - var negate, p = input.charAt(i + 1); - - if (input.charAt(i) === '-' && (p === '@' || p === '(')) { negate = $('-') } - var o = $(this.sub) || $(this.entities.dimension) || - $(this.entities.color) || $(this.entities.variable) || - $(this.entities.call); - return negate ? new(tree.Operation)('*', [new(tree.Dimension)(-1), o]) - : o; - }, - - // - // Expressions either represent mathematical operations, - // or white-space delimited Entities. - // - // 1px solid black - // @var * 2 - // - expression: function () { - var e, delim, entities = [], d; - - while (e = $(this.addition) || $(this.entity)) { - entities.push(e); - } - if (entities.length > 0) { - return new(tree.Expression)(entities); - } - }, - property: function () { - var name; - - if (name = $(/^(\*?-?[-a-z_0-9]+)\s*:/)) { - return name[1]; - } - } - } - }; -}; - -if (less.mode === 'browser' || less.mode === 'rhino') { - // - // Used by `@import` directives - // - less.Parser.importer = function (path, paths, callback, env) { - if (!/^([a-z]+:)?\//.test(path) && paths.length > 0) { - path = paths[0] + path; - } - // We pass `true` as 3rd argument, to force the reload of the import. - // This is so we can get the syntax tree as opposed to just the CSS output, - // as we need this to evaluate the current stylesheet. - loadStyleSheet({ href: path, title: path, type: env.mime }, function (e) { - if (e && typeof(env.errback) === "function") { - env.errback.call(null, path, paths, callback, env); - } else { - callback.apply(null, arguments); - } - }, true); - }; -} - diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/rhino.js b/askbot/skins/default/media/style/node_modules/less/lib/less/rhino.js deleted file mode 100644 index a2c5662f..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/rhino.js +++ /dev/null @@ -1,62 +0,0 @@ -var name; - -function loadStyleSheet(sheet, callback, reload, remaining) { - var sheetName = name.slice(0, name.lastIndexOf('/') + 1) + sheet.href; - var input = readFile(sheetName); - var parser = new less.Parser({ - paths: [sheet.href.replace(/[\w\.-]+$/, '')] - }); - parser.parse(input, function (e, root) { - if (e) { - print("Error: " + e); - quit(1); - } - callback(root, sheet, { local: false, lastModified: 0, remaining: remaining }); - }); - - // callback({}, sheet, { local: true, remaining: remaining }); -} - -function writeFile(filename, content) { - var fstream = new java.io.FileWriter(filename); - var out = new java.io.BufferedWriter(fstream); - out.write(content); - out.close(); -} - -// Command line integration via Rhino -(function (args) { - name = args[0]; - var output = args[1]; - - if (!name) { - print('No files present in the fileset; Check your pattern match in build.xml'); - quit(1); - } - path = name.split("/");path.pop();path=path.join("/") - - var input = readFile(name); - - if (!input) { - print('lesscss: couldn\'t open file ' + name); - quit(1); - } - - var result; - var parser = new less.Parser(); - parser.parse(input, function (e, root) { - if (e) { - quit(1); - } else { - result = root.toCSS(); - if (output) { - writeFile(output, result); - print("Written to " + output); - } else { - print(result); - } - quit(0); - } - }); - print("done"); -}(arguments)); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree.js deleted file mode 100644 index 24ecd712..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree.js +++ /dev/null @@ -1,17 +0,0 @@ -(function (tree) { - -tree.find = function (obj, fun) { - for (var i = 0, r; i < obj.length; i++) { - if (r = fun.call(obj, obj[i])) { return r } - } - return null; -}; -tree.jsify = function (obj) { - if (Array.isArray(obj.value) && (obj.value.length > 1)) { - return '[' + obj.value.map(function (v) { return v.toCSS(false) }).join(', ') + ']'; - } else { - return obj.toCSS(false); - } -}; - -})(require('./tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/alpha.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/alpha.js deleted file mode 100644 index 139ae920..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/alpha.js +++ /dev/null @@ -1,17 +0,0 @@ -(function (tree) { - -tree.Alpha = function (val) { - this.value = val; -}; -tree.Alpha.prototype = { - toCSS: function () { - return "alpha(opacity=" + - (this.value.toCSS ? this.value.toCSS() : this.value) + ")"; - }, - eval: function (env) { - if (this.value.eval) { this.value = this.value.eval(env) } - return this; - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/anonymous.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/anonymous.js deleted file mode 100644 index 460c9ec7..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/anonymous.js +++ /dev/null @@ -1,13 +0,0 @@ -(function (tree) { - -tree.Anonymous = function (string) { - this.value = string.value || string; -}; -tree.Anonymous.prototype = { - toCSS: function () { - return this.value; - }, - eval: function () { return this } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/assignment.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/assignment.js deleted file mode 100644 index 70ce6e2f..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/assignment.js +++ /dev/null @@ -1,17 +0,0 @@ -(function (tree) { - -tree.Assignment = function (key, val) { - this.key = key; - this.value = val; -}; -tree.Assignment.prototype = { - toCSS: function () { - return this.key + '=' + (this.value.toCSS ? this.value.toCSS() : this.value); - }, - eval: function (env) { - if (this.value.eval) { this.value = this.value.eval(env) } - return this; - } -}; - -})(require('../tree')); \ No newline at end of file diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/call.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/call.js deleted file mode 100644 index c1465dd4..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/call.js +++ /dev/null @@ -1,48 +0,0 @@ -(function (tree) { - -// -// A function call node. -// -tree.Call = function (name, args, index, filename) { - this.name = name; - this.args = args; - this.index = index; - this.filename = filename; -}; -tree.Call.prototype = { - // - // When evaluating a function call, - // we either find the function in `tree.functions` [1], - // in which case we call it, passing the evaluated arguments, - // or we simply print it out as it appeared originally [2]. - // - // The *functions.js* file contains the built-in functions. - // - // The reason why we evaluate the arguments, is in the case where - // we try to pass a variable to a function, like: `saturate(@color)`. - // The function should receive the value, not the variable. - // - eval: function (env) { - var args = this.args.map(function (a) { return a.eval(env) }); - - if (this.name in tree.functions) { // 1. - try { - return tree.functions[this.name].apply(tree.functions, args); - } catch (e) { - throw { type: e.type || "Runtime", - message: "error evaluating function `" + this.name + "`" + - (e.message ? ': ' + e.message : ''), - index: this.index, filename: this.filename }; - } - } else { // 2. - return new(tree.Anonymous)(this.name + - "(" + args.map(function (a) { return a.toCSS() }).join(', ') + ")"); - } - }, - - toCSS: function (env) { - return this.eval(env).toCSS(); - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/color.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/color.js deleted file mode 100644 index 37ce1781..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/color.js +++ /dev/null @@ -1,101 +0,0 @@ -(function (tree) { -// -// RGB Colors - #ff0014, #eee -// -tree.Color = function (rgb, a) { - // - // The end goal here, is to parse the arguments - // into an integer triplet, such as `128, 255, 0` - // - // This facilitates operations and conversions. - // - if (Array.isArray(rgb)) { - this.rgb = rgb; - } else if (rgb.length == 6) { - this.rgb = rgb.match(/.{2}/g).map(function (c) { - return parseInt(c, 16); - }); - } else { - this.rgb = rgb.split('').map(function (c) { - return parseInt(c + c, 16); - }); - } - this.alpha = typeof(a) === 'number' ? a : 1; -}; -tree.Color.prototype = { - eval: function () { return this }, - - // - // If we have some transparency, the only way to represent it - // is via `rgba`. Otherwise, we use the hex representation, - // which has better compatibility with older browsers. - // Values are capped between `0` and `255`, rounded and zero-padded. - // - toCSS: function () { - if (this.alpha < 1.0) { - return "rgba(" + this.rgb.map(function (c) { - return Math.round(c); - }).concat(this.alpha).join(', ') + ")"; - } else { - return '#' + this.rgb.map(function (i) { - i = Math.round(i); - i = (i > 255 ? 255 : (i < 0 ? 0 : i)).toString(16); - return i.length === 1 ? '0' + i : i; - }).join(''); - } - }, - - // - // Operations have to be done per-channel, if not, - // channels will spill onto each other. Once we have - // our result, in the form of an integer triplet, - // we create a new Color node to hold the result. - // - operate: function (op, other) { - var result = []; - - if (! (other instanceof tree.Color)) { - other = other.toColor(); - } - - for (var c = 0; c < 3; c++) { - result[c] = tree.operate(op, this.rgb[c], other.rgb[c]); - } - return new(tree.Color)(result, this.alpha + other.alpha); - }, - - toHSL: function () { - var r = this.rgb[0] / 255, - g = this.rgb[1] / 255, - b = this.rgb[2] / 255, - a = this.alpha; - - var max = Math.max(r, g, b), min = Math.min(r, g, b); - var h, s, l = (max + min) / 2, d = max - min; - - if (max === min) { - h = s = 0; - } else { - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - - switch (max) { - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - } - h /= 6; - } - return { h: h * 360, s: s, l: l, a: a }; - }, - toARGB: function () { - var argb = [Math.round(this.alpha * 255)].concat(this.rgb); - return '#' + argb.map(function (i) { - i = Math.round(i); - i = (i > 255 ? 255 : (i < 0 ? 0 : i)).toString(16); - return i.length === 1 ? '0' + i : i; - }).join(''); - } -}; - - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/comment.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/comment.js deleted file mode 100644 index f4a33840..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/comment.js +++ /dev/null @@ -1,14 +0,0 @@ -(function (tree) { - -tree.Comment = function (value, silent) { - this.value = value; - this.silent = !!silent; -}; -tree.Comment.prototype = { - toCSS: function (env) { - return env.compress ? '' : this.value; - }, - eval: function () { return this } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/condition.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/condition.js deleted file mode 100644 index 6b79dc96..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/condition.js +++ /dev/null @@ -1,42 +0,0 @@ -(function (tree) { - -tree.Condition = function (op, l, r, i, negate) { - this.op = op.trim(); - this.lvalue = l; - this.rvalue = r; - this.index = i; - this.negate = negate; -}; -tree.Condition.prototype.eval = function (env) { - var a = this.lvalue.eval(env), - b = this.rvalue.eval(env); - - var i = this.index, result; - - var result = (function (op) { - switch (op) { - case 'and': - return a && b; - case 'or': - return a || b; - default: - if (a.compare) { - result = a.compare(b); - } else if (b.compare) { - result = b.compare(a); - } else { - throw { type: "Type", - message: "Unable to perform comparison", - index: i }; - } - switch (result) { - case -1: return op === '<' || op === '=<'; - case 0: return op === '=' || op === '>=' || op === '=<'; - case 1: return op === '>' || op === '>='; - } - } - })(this.op); - return this.negate ? !result : result; -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/dimension.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/dimension.js deleted file mode 100644 index 9a6fce3d..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/dimension.js +++ /dev/null @@ -1,49 +0,0 @@ -(function (tree) { - -// -// A number with a unit -// -tree.Dimension = function (value, unit) { - this.value = parseFloat(value); - this.unit = unit || null; -}; - -tree.Dimension.prototype = { - eval: function () { return this }, - toColor: function () { - return new(tree.Color)([this.value, this.value, this.value]); - }, - toCSS: function () { - var css = this.value + this.unit; - return css; - }, - - // In an operation between two Dimensions, - // we default to the first Dimension's unit, - // so `1px + 2em` will yield `3px`. - // In the future, we could implement some unit - // conversions such that `100cm + 10mm` would yield - // `101cm`. - operate: function (op, other) { - return new(tree.Dimension) - (tree.operate(op, this.value, other.value), - this.unit || other.unit); - }, - - // TODO: Perform unit conversion before comparing - compare: function (other) { - if (other instanceof tree.Dimension) { - if (other.value > this.value) { - return -1; - } else if (other.value < this.value) { - return 1; - } else { - return 0; - } - } else { - return -1; - } - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/directive.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/directive.js deleted file mode 100644 index 27538332..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/directive.js +++ /dev/null @@ -1,35 +0,0 @@ -(function (tree) { - -tree.Directive = function (name, value, features) { - this.name = name; - - if (Array.isArray(value)) { - this.ruleset = new(tree.Ruleset)([], value); - this.ruleset.allowImports = true; - } else { - this.value = value; - } -}; -tree.Directive.prototype = { - toCSS: function (ctx, env) { - if (this.ruleset) { - this.ruleset.root = true; - return this.name + (env.compress ? '{' : ' {\n ') + - this.ruleset.toCSS(ctx, env).trim().replace(/\n/g, '\n ') + - (env.compress ? '}': '\n}\n'); - } else { - return this.name + ' ' + this.value.toCSS() + ';\n'; - } - }, - eval: function (env) { - env.frames.unshift(this); - this.ruleset = this.ruleset && this.ruleset.eval(env); - env.frames.shift(); - return this; - }, - variable: function (name) { return tree.Ruleset.prototype.variable.call(this.ruleset, name) }, - find: function () { return tree.Ruleset.prototype.find.apply(this.ruleset, arguments) }, - rulesets: function () { return tree.Ruleset.prototype.rulesets.apply(this.ruleset) } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/element.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/element.js deleted file mode 100644 index 4736857e..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/element.js +++ /dev/null @@ -1,47 +0,0 @@ -(function (tree) { - -tree.Element = function (combinator, value, index) { - this.combinator = combinator instanceof tree.Combinator ? - combinator : new(tree.Combinator)(combinator); - - if (typeof(value) === 'string') { - this.value = value.trim(); - } else if (value) { - this.value = value; - } else { - this.value = ""; - } - this.index = index; -}; -tree.Element.prototype.eval = function (env) { - return new(tree.Element)(this.combinator, - this.value.eval ? this.value.eval(env) : this.value, - this.index); -}; -tree.Element.prototype.toCSS = function (env) { - return this.combinator.toCSS(env || {}) + (this.value.toCSS ? this.value.toCSS(env) : this.value); -}; - -tree.Combinator = function (value) { - if (value === ' ') { - this.value = ' '; - } else if (value === '& ') { - this.value = '& '; - } else { - this.value = value ? value.trim() : ""; - } -}; -tree.Combinator.prototype.toCSS = function (env) { - return { - '' : '', - ' ' : ' ', - '&' : '', - '& ' : ' ', - ':' : ' :', - '+' : env.compress ? '+' : ' + ', - '~' : env.compress ? '~' : ' ~ ', - '>' : env.compress ? '>' : ' > ' - }[this.value]; -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/expression.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/expression.js deleted file mode 100644 index fbfa9c5b..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/expression.js +++ /dev/null @@ -1,23 +0,0 @@ -(function (tree) { - -tree.Expression = function (value) { this.value = value }; -tree.Expression.prototype = { - eval: function (env) { - if (this.value.length > 1) { - return new(tree.Expression)(this.value.map(function (e) { - return e.eval(env); - })); - } else if (this.value.length === 1) { - return this.value[0].eval(env); - } else { - return this; - } - }, - toCSS: function (env) { - return this.value.map(function (e) { - return e.toCSS ? e.toCSS(env) : ''; - }).join(' '); - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/import.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/import.js deleted file mode 100644 index c3b0b009..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/import.js +++ /dev/null @@ -1,79 +0,0 @@ -(function (tree) { -// -// CSS @import node -// -// The general strategy here is that we don't want to wait -// for the parsing to be completed, before we start importing -// the file. That's because in the context of a browser, -// most of the time will be spent waiting for the server to respond. -// -// On creation, we push the import path to our import queue, though -// `import,push`, we also pass it a callback, which it'll call once -// the file has been fetched, and parsed. -// -tree.Import = function (path, imports, features, index) { - var that = this; - - this.index = index; - this._path = path; - this.features = features && new(tree.Value)(features); - - // The '.less' extension is optional - if (path instanceof tree.Quoted) { - this.path = /\.(le?|c)ss(\?.*)?$/.test(path.value) ? path.value : path.value + '.less'; - } else { - this.path = path.value.value || path.value; - } - - this.css = /css(\?.*)?$/.test(this.path); - - // Only pre-compile .less files - if (! this.css) { - imports.push(this.path, function (e, root) { - if (e) { e.index = index } - that.root = root || new(tree.Ruleset)([], []); - }); - } -}; - -// -// The actual import node doesn't return anything, when converted to CSS. -// The reason is that it's used at the evaluation stage, so that the rules -// it imports can be treated like any other rules. -// -// In `eval`, we make sure all Import nodes get evaluated, recursively, so -// we end up with a flat structure, which can easily be imported in the parent -// ruleset. -// -tree.Import.prototype = { - toCSS: function (env) { - var features = this.features ? ' ' + this.features.toCSS(env) : ''; - - if (this.css) { - return "@import " + this._path.toCSS() + features + ';\n'; - } else { - return ""; - } - }, - eval: function (env) { - var ruleset, features = this.features && this.features.eval(env); - - if (this.css) { - return this; - } else { - ruleset = new(tree.Ruleset)([], this.root.rules.slice(0)); - - for (var i = 0; i < ruleset.rules.length; i++) { - if (ruleset.rules[i] instanceof tree.Import) { - Array.prototype - .splice - .apply(ruleset.rules, - [i, 1].concat(ruleset.rules[i].eval(env))); - } - } - return this.features ? new(tree.Media)(ruleset.rules, this.features.value) : ruleset.rules; - } - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/javascript.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/javascript.js deleted file mode 100644 index 772a31dd..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/javascript.js +++ /dev/null @@ -1,51 +0,0 @@ -(function (tree) { - -tree.JavaScript = function (string, index, escaped) { - this.escaped = escaped; - this.expression = string; - this.index = index; -}; -tree.JavaScript.prototype = { - eval: function (env) { - var result, - that = this, - context = {}; - - var expression = this.expression.replace(/@\{([\w-]+)\}/g, function (_, name) { - return tree.jsify(new(tree.Variable)('@' + name, that.index).eval(env)); - }); - - try { - expression = new(Function)('return (' + expression + ')'); - } catch (e) { - throw { message: "JavaScript evaluation error: `" + expression + "`" , - index: this.index }; - } - - for (var k in env.frames[0].variables()) { - context[k.slice(1)] = { - value: env.frames[0].variables()[k].value, - toJS: function () { - return this.value.eval(env).toCSS(); - } - }; - } - - try { - result = expression.call(context); - } catch (e) { - throw { message: "JavaScript evaluation error: '" + e.name + ': ' + e.message + "'" , - index: this.index }; - } - if (typeof(result) === 'string') { - return new(tree.Quoted)('"' + result + '"', result, this.escaped, this.index); - } else if (Array.isArray(result)) { - return new(tree.Anonymous)(result.join(', ')); - } else { - return new(tree.Anonymous)(result); - } - } -}; - -})(require('../tree')); - diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/keyword.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/keyword.js deleted file mode 100644 index 701b79e5..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/keyword.js +++ /dev/null @@ -1,19 +0,0 @@ -(function (tree) { - -tree.Keyword = function (value) { this.value = value }; -tree.Keyword.prototype = { - eval: function () { return this }, - toCSS: function () { return this.value }, - compare: function (other) { - if (other instanceof tree.Keyword) { - return other.value === this.value ? 0 : 1; - } else { - return -1; - } - } -}; - -tree.True = new(tree.Keyword)('true'); -tree.False = new(tree.Keyword)('false'); - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/media.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/media.js deleted file mode 100644 index 2b7b26e5..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/media.js +++ /dev/null @@ -1,114 +0,0 @@ -(function (tree) { - -tree.Media = function (value, features) { - var el = new(tree.Element)('&', null, 0), - selectors = [new(tree.Selector)([el])]; - - this.features = new(tree.Value)(features); - this.ruleset = new(tree.Ruleset)(selectors, value); - this.ruleset.allowImports = true; -}; -tree.Media.prototype = { - toCSS: function (ctx, env) { - var features = this.features.toCSS(env); - - this.ruleset.root = (ctx.length === 0 || ctx[0].multiMedia); - return '@media ' + features + (env.compress ? '{' : ' {\n ') + - this.ruleset.toCSS(ctx, env).trim().replace(/\n/g, '\n ') + - (env.compress ? '}': '\n}\n'); - }, - eval: function (env) { - if (!env.mediaBlocks) { - env.mediaBlocks = []; - env.mediaPath = []; - } - - var blockIndex = env.mediaBlocks.length; - env.mediaPath.push(this); - env.mediaBlocks.push(this); - - var media = new(tree.Media)([], []); - media.features = this.features.eval(env); - - env.frames.unshift(this.ruleset); - media.ruleset = this.ruleset.eval(env); - env.frames.shift(); - - env.mediaBlocks[blockIndex] = media; - env.mediaPath.pop(); - - return env.mediaPath.length === 0 ? media.evalTop(env) : - media.evalNested(env) - }, - variable: function (name) { return tree.Ruleset.prototype.variable.call(this.ruleset, name) }, - find: function () { return tree.Ruleset.prototype.find.apply(this.ruleset, arguments) }, - rulesets: function () { return tree.Ruleset.prototype.rulesets.apply(this.ruleset) }, - - evalTop: function (env) { - var result = this; - - // Render all dependent Media blocks. - if (env.mediaBlocks.length > 1) { - var el = new(tree.Element)('&', null, 0); - var selectors = [new(tree.Selector)([el])]; - result = new(tree.Ruleset)(selectors, env.mediaBlocks); - result.multiMedia = true; - } - - delete env.mediaBlocks; - delete env.mediaPath; - - return result; - }, - evalNested: function (env) { - var i, value, - path = env.mediaPath.concat([this]); - - // Extract the media-query conditions separated with `,` (OR). - for (i = 0; i < path.length; i++) { - value = path[i].features instanceof tree.Value ? - path[i].features.value : path[i].features; - path[i] = Array.isArray(value) ? value : [value]; - } - - // Trace all permutations to generate the resulting media-query. - // - // (a, b and c) with nested (d, e) -> - // a and d - // a and e - // b and c and d - // b and c and e - this.features = new(tree.Value)(this.permute(path).map(function (path) { - path = path.map(function (fragment) { - return fragment.toCSS ? fragment : new(tree.Anonymous)(fragment); - }); - - for(i = path.length - 1; i > 0; i--) { - path.splice(i, 0, new(tree.Anonymous)("and")); - } - - return new(tree.Expression)(path); - })); - - // Fake a tree-node that doesn't output anything. - return new(tree.Ruleset)([], []); - }, - permute: function (arr) { - if (arr.length === 0) { - return []; - } else if (arr.length === 1) { - return arr[0]; - } else { - var result = []; - var rest = this.permute(arr.slice(1)); - for (var i = 0; i < rest.length; i++) { - for (var j = 0; j < arr[0].length; j++) { - result.push([arr[0][j]].concat(rest[i])); - } - } - return result; - } - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/mixin.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/mixin.js deleted file mode 100644 index 4464bc6c..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/mixin.js +++ /dev/null @@ -1,135 +0,0 @@ -(function (tree) { - -tree.mixin = {}; -tree.mixin.Call = function (elements, args, index, filename, important) { - this.selector = new(tree.Selector)(elements); - this.arguments = args; - this.index = index; - this.filename = filename; - this.important = important; -}; -tree.mixin.Call.prototype = { - eval: function (env) { - var mixins, args, rules = [], match = false; - - for (var i = 0; i < env.frames.length; i++) { - if ((mixins = env.frames[i].find(this.selector)).length > 0) { - args = this.arguments && this.arguments.map(function (a) { return a.eval(env) }); - for (var m = 0; m < mixins.length; m++) { - if (mixins[m].match(args, env)) { - try { - Array.prototype.push.apply( - rules, mixins[m].eval(env, this.arguments, this.important).rules); - match = true; - } catch (e) { - throw { message: e.message, index: this.index, filename: this.filename, stack: e.stack }; - } - } - } - if (match) { - return rules; - } else { - throw { type: 'Runtime', - message: 'No matching definition was found for `' + - this.selector.toCSS().trim() + '(' + - this.arguments.map(function (a) { - return a.toCSS(); - }).join(', ') + ")`", - index: this.index, filename: this.filename }; - } - } - } - throw { type: 'Name', - message: this.selector.toCSS().trim() + " is undefined", - index: this.index, filename: this.filename }; - } -}; - -tree.mixin.Definition = function (name, params, rules, condition, variadic) { - this.name = name; - this.selectors = [new(tree.Selector)([new(tree.Element)(null, name)])]; - this.params = params; - this.condition = condition; - this.variadic = variadic; - this.arity = params.length; - this.rules = rules; - this._lookups = {}; - this.required = params.reduce(function (count, p) { - if (!p.name || (p.name && !p.value)) { return count + 1 } - else { return count } - }, 0); - this.parent = tree.Ruleset.prototype; - this.frames = []; -}; -tree.mixin.Definition.prototype = { - toCSS: function () { return "" }, - variable: function (name) { return this.parent.variable.call(this, name) }, - variables: function () { return this.parent.variables.call(this) }, - find: function () { return this.parent.find.apply(this, arguments) }, - rulesets: function () { return this.parent.rulesets.apply(this) }, - - evalParams: function (env, args) { - var frame = new(tree.Ruleset)(null, []), varargs; - - for (var i = 0, val, name; i < this.params.length; i++) { - if (name = this.params[i].name) { - if (this.params[i].variadic && args) { - varargs = []; - for (var j = i; j < args.length; j++) { - varargs.push(args[j].eval(env)); - } - frame.rules.unshift(new(tree.Rule)(name, new(tree.Expression)(varargs).eval(env))); - } else if (val = (args && args[i]) || this.params[i].value) { - frame.rules.unshift(new(tree.Rule)(name, val.eval(env))); - } else { - throw { type: 'Runtime', message: "wrong number of arguments for " + this.name + - ' (' + args.length + ' for ' + this.arity + ')' }; - } - } - } - return frame; - }, - eval: function (env, args, important) { - var frame = this.evalParams(env, args), context, _arguments = [], rules, start; - - for (var i = 0; i < Math.max(this.params.length, args && args.length); i++) { - _arguments.push(args[i] || this.params[i].value); - } - frame.rules.unshift(new(tree.Rule)('@arguments', new(tree.Expression)(_arguments).eval(env))); - - rules = important ? - this.rules.map(function (r) { - return new(tree.Rule)(r.name, r.value, '!important', r.index); - }) : this.rules.slice(0); - - return new(tree.Ruleset)(null, rules).eval({ - frames: [this, frame].concat(this.frames, env.frames) - }); - }, - match: function (args, env) { - var argsLength = (args && args.length) || 0, len, frame; - - if (! this.variadic) { - if (argsLength < this.required) { return false } - if (argsLength > this.params.length) { return false } - if ((this.required > 0) && (argsLength > this.params.length)) { return false } - } - - if (this.condition && !this.condition.eval({ - frames: [this.evalParams(env, args)].concat(env.frames) - })) { return false } - - len = Math.min(argsLength, this.arity); - - for (var i = 0; i < len; i++) { - if (!this.params[i].name) { - if (args[i].eval(env).toCSS() != this.params[i].value.eval(env).toCSS()) { - return false; - } - } - } - return true; - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/operation.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/operation.js deleted file mode 100644 index 1ce22fb0..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/operation.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (tree) { - -tree.Operation = function (op, operands) { - this.op = op.trim(); - this.operands = operands; -}; -tree.Operation.prototype.eval = function (env) { - var a = this.operands[0].eval(env), - b = this.operands[1].eval(env), - temp; - - if (a instanceof tree.Dimension && b instanceof tree.Color) { - if (this.op === '*' || this.op === '+') { - temp = b, b = a, a = temp; - } else { - throw { name: "OperationError", - message: "Can't substract or divide a color from a number" }; - } - } - return a.operate(this.op, b); -}; - -tree.operate = function (op, a, b) { - switch (op) { - case '+': return a + b; - case '-': return a - b; - case '*': return a * b; - case '/': return a / b; - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/paren.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/paren.js deleted file mode 100644 index 384a43c7..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/paren.js +++ /dev/null @@ -1,16 +0,0 @@ - -(function (tree) { - -tree.Paren = function (node) { - this.value = node; -}; -tree.Paren.prototype = { - toCSS: function (env) { - return '(' + this.value.toCSS(env) + ')'; - }, - eval: function (env) { - return new(tree.Paren)(this.value.eval(env)); - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/quoted.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/quoted.js deleted file mode 100644 index 794bf4ce..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/quoted.js +++ /dev/null @@ -1,29 +0,0 @@ -(function (tree) { - -tree.Quoted = function (str, content, escaped, i) { - this.escaped = escaped; - this.value = content || ''; - this.quote = str.charAt(0); - this.index = i; -}; -tree.Quoted.prototype = { - toCSS: function () { - if (this.escaped) { - return this.value; - } else { - return this.quote + this.value + this.quote; - } - }, - eval: function (env) { - var that = this; - var value = this.value.replace(/`([^`]+)`/g, function (_, exp) { - return new(tree.JavaScript)(exp, that.index, true).eval(env).value; - }).replace(/@\{([\w-]+)\}/g, function (_, name) { - var v = new(tree.Variable)('@' + name, that.index).eval(env); - return ('value' in v) ? v.value : v.toCSS(); - }); - return new(tree.Quoted)(this.quote + value + this.quote, value, this.escaped, this.index); - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/rule.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/rule.js deleted file mode 100644 index 9e4e54a3..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/rule.js +++ /dev/null @@ -1,42 +0,0 @@ -(function (tree) { - -tree.Rule = function (name, value, important, index, inline) { - this.name = name; - this.value = (value instanceof tree.Value) ? value : new(tree.Value)([value]); - this.important = important ? ' ' + important.trim() : ''; - this.index = index; - this.inline = inline || false; - - if (name.charAt(0) === '@') { - this.variable = true; - } else { this.variable = false } -}; -tree.Rule.prototype.toCSS = function (env) { - if (this.variable) { return "" } - else { - return this.name + (env.compress ? ':' : ': ') + - this.value.toCSS(env) + - this.important + (this.inline ? "" : ";"); - } -}; - -tree.Rule.prototype.eval = function (context) { - return new(tree.Rule)(this.name, - this.value.eval(context), - this.important, - this.index, this.inline); -}; - -tree.Shorthand = function (a, b) { - this.a = a; - this.b = b; -}; - -tree.Shorthand.prototype = { - toCSS: function (env) { - return this.a.toCSS(env) + "/" + this.b.toCSS(env); - }, - eval: function () { return this } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/ruleset.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/ruleset.js deleted file mode 100644 index 7d6283ea..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/ruleset.js +++ /dev/null @@ -1,216 +0,0 @@ -(function (tree) { - -tree.Ruleset = function (selectors, rules, strictImports) { - this.selectors = selectors; - this.rules = rules; - this._lookups = {}; - this.strictImports = strictImports; -}; -tree.Ruleset.prototype = { - eval: function (env) { - var selectors = this.selectors && this.selectors.map(function (s) { return s.eval(env) }); - var ruleset = new(tree.Ruleset)(selectors, this.rules.slice(0), this.strictImports); - - ruleset.root = this.root; - ruleset.allowImports = this.allowImports; - - // push the current ruleset to the frames stack - env.frames.unshift(ruleset); - - // Evaluate imports - if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) { - for (var i = 0; i < ruleset.rules.length; i++) { - if (ruleset.rules[i] instanceof tree.Import) { - Array.prototype.splice - .apply(ruleset.rules, [i, 1].concat(ruleset.rules[i].eval(env))); - } - } - } - - // Store the frames around mixin definitions, - // so they can be evaluated like closures when the time comes. - for (var i = 0; i < ruleset.rules.length; i++) { - if (ruleset.rules[i] instanceof tree.mixin.Definition) { - ruleset.rules[i].frames = env.frames.slice(0); - } - } - - // Evaluate mixin calls. - for (var i = 0; i < ruleset.rules.length; i++) { - if (ruleset.rules[i] instanceof tree.mixin.Call) { - Array.prototype.splice - .apply(ruleset.rules, [i, 1].concat(ruleset.rules[i].eval(env))); - } - } - - // Evaluate everything else - for (var i = 0, rule; i < ruleset.rules.length; i++) { - rule = ruleset.rules[i]; - - if (! (rule instanceof tree.mixin.Definition)) { - ruleset.rules[i] = rule.eval ? rule.eval(env) : rule; - } - } - - // Pop the stack - env.frames.shift(); - - return ruleset; - }, - match: function (args) { - return !args || args.length === 0; - }, - variables: function () { - if (this._variables) { return this._variables } - else { - return this._variables = this.rules.reduce(function (hash, r) { - if (r instanceof tree.Rule && r.variable === true) { - hash[r.name] = r; - } - return hash; - }, {}); - } - }, - variable: function (name) { - return this.variables()[name]; - }, - rulesets: function () { - if (this._rulesets) { return this._rulesets } - else { - return this._rulesets = this.rules.filter(function (r) { - return (r instanceof tree.Ruleset) || (r instanceof tree.mixin.Definition); - }); - } - }, - find: function (selector, self) { - self = self || this; - var rules = [], rule, match, - key = selector.toCSS(); - - if (key in this._lookups) { return this._lookups[key] } - - this.rulesets().forEach(function (rule) { - if (rule !== self) { - for (var j = 0; j < rule.selectors.length; j++) { - if (match = selector.match(rule.selectors[j])) { - if (selector.elements.length > rule.selectors[j].elements.length) { - Array.prototype.push.apply(rules, rule.find( - new(tree.Selector)(selector.elements.slice(1)), self)); - } else { - rules.push(rule); - } - break; - } - } - } - }); - return this._lookups[key] = rules; - }, - // - // Entry point for code generation - // - // `context` holds an array of arrays. - // - toCSS: function (context, env) { - var css = [], // The CSS output - rules = [], // node.Rule instances - rulesets = [], // node.Ruleset instances - paths = [], // Current selectors - selector, // The fully rendered selector - rule; - - if (! this.root) { - if (context.length === 0) { - paths = this.selectors.map(function (s) { return [s] }); - } else { - this.joinSelectors(paths, context, this.selectors); - } - } - - // Compile rules and rulesets - for (var i = 0; i < this.rules.length; i++) { - rule = this.rules[i]; - - if (rule.rules || (rule instanceof tree.Directive) || (rule instanceof tree.Media)) { - rulesets.push(rule.toCSS(paths, env)); - } else if (rule instanceof tree.Comment) { - if (!rule.silent) { - if (this.root) { - rulesets.push(rule.toCSS(env)); - } else { - rules.push(rule.toCSS(env)); - } - } - } else { - if (rule.toCSS && !rule.variable) { - rules.push(rule.toCSS(env)); - } else if (rule.value && !rule.variable) { - rules.push(rule.value.toString()); - } - } - } - - rulesets = rulesets.join(''); - - // If this is the root node, we don't render - // a selector, or {}. - // Otherwise, only output if this ruleset has rules. - if (this.root) { - css.push(rules.join(env.compress ? '' : '\n')); - } else { - if (rules.length > 0) { - selector = paths.map(function (p) { - return p.map(function (s) { - return s.toCSS(env); - }).join('').trim(); - }).join( env.compress ? ',' : ',\n'); - - css.push(selector, - (env.compress ? '{' : ' {\n ') + - rules.join(env.compress ? '' : '\n ') + - (env.compress ? '}' : '\n}\n')); - } - } - css.push(rulesets); - - return css.join('') + (env.compress ? '\n' : ''); - }, - - joinSelectors: function (paths, context, selectors) { - for (var s = 0; s < selectors.length; s++) { - this.joinSelector(paths, context, selectors[s]); - } - }, - - joinSelector: function (paths, context, selector) { - var before = [], after = [], beforeElements = [], - afterElements = [], hasParentSelector = false, el; - - for (var i = 0; i < selector.elements.length; i++) { - el = selector.elements[i]; - if (el.combinator.value.charAt(0) === '&') { - hasParentSelector = true; - } - if (hasParentSelector) afterElements.push(el); - else beforeElements.push(el); - } - - if (! hasParentSelector) { - afterElements = beforeElements; - beforeElements = []; - } - - if (beforeElements.length > 0) { - before.push(new(tree.Selector)(beforeElements)); - } - - if (afterElements.length > 0) { - after.push(new(tree.Selector)(afterElements)); - } - - for (var c = 0; c < context.length; c++) { - paths.push(before.concat(context[c]).concat(after)); - } - } -}; -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/selector.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/selector.js deleted file mode 100644 index 65abbb69..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/selector.js +++ /dev/null @@ -1,42 +0,0 @@ -(function (tree) { - -tree.Selector = function (elements) { - this.elements = elements; - if (this.elements[0].combinator.value === "") { - this.elements[0].combinator.value = ' '; - } -}; -tree.Selector.prototype.match = function (other) { - var len = this.elements.length, - olen = other.elements.length, - max = Math.min(len, olen); - - if (len < olen) { - return false; - } else { - for (var i = 0; i < max; i++) { - if (this.elements[i].value !== other.elements[i].value) { - return false; - } - } - } - return true; -}; -tree.Selector.prototype.eval = function (env) { - return new(tree.Selector)(this.elements.map(function (e) { - return e.eval(env); - })); -}; -tree.Selector.prototype.toCSS = function (env) { - if (this._css) { return this._css } - - return this._css = this.elements.map(function (e) { - if (typeof(e) === 'string') { - return ' ' + e.trim(); - } else { - return e.toCSS(env); - } - }).join(''); -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/url.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/url.js deleted file mode 100644 index 0caec345..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/url.js +++ /dev/null @@ -1,25 +0,0 @@ -(function (tree) { - -tree.URL = function (val, paths) { - if (val.data) { - this.attrs = val; - } else { - // Add the base path if the URL is relative and we are in the browser - if (typeof(window) !== 'undefined' && !/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(val.value) && paths.length > 0) { - val.value = paths[0] + (val.value.charAt(0) === '/' ? val.value.slice(1) : val.value); - } - this.value = val; - this.paths = paths; - } -}; -tree.URL.prototype = { - toCSS: function () { - return "url(" + (this.attrs ? 'data:' + this.attrs.mime + this.attrs.charset + this.attrs.base64 + this.attrs.data - : this.value.toCSS()) + ")"; - }, - eval: function (ctx) { - return this.attrs ? this : new(tree.URL)(this.value.eval(ctx), this.paths); - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/value.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/value.js deleted file mode 100644 index 3c1eb29a..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/value.js +++ /dev/null @@ -1,24 +0,0 @@ -(function (tree) { - -tree.Value = function (value) { - this.value = value; - this.is = 'value'; -}; -tree.Value.prototype = { - eval: function (env) { - if (this.value.length === 1) { - return this.value[0].eval(env); - } else { - return new(tree.Value)(this.value.map(function (v) { - return v.eval(env); - })); - } - }, - toCSS: function (env) { - return this.value.map(function (e) { - return e.toCSS(env); - }).join(env.compress ? ',' : ', '); - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/variable.js b/askbot/skins/default/media/style/node_modules/less/lib/less/tree/variable.js deleted file mode 100644 index ee557e1d..00000000 --- a/askbot/skins/default/media/style/node_modules/less/lib/less/tree/variable.js +++ /dev/null @@ -1,26 +0,0 @@ -(function (tree) { - -tree.Variable = function (name, index, file) { this.name = name, this.index = index, this.file = file }; -tree.Variable.prototype = { - eval: function (env) { - var variable, v, name = this.name; - - if (name.indexOf('@@') == 0) { - name = '@' + new(tree.Variable)(name.slice(1)).eval(env).value; - } - - if (variable = tree.find(env.frames, function (frame) { - if (v = frame.variable(name)) { - return v.value.eval(env); - } - })) { return variable } - else { - throw { type: 'Name', - message: "variable " + name + " is undefined", - filename: this.file, - index: this.index }; - } - } -}; - -})(require('../tree')); diff --git a/askbot/skins/default/media/style/node_modules/less/package.json b/askbot/skins/default/media/style/node_modules/less/package.json deleted file mode 100644 index c35300b1..00000000 --- a/askbot/skins/default/media/style/node_modules/less/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "less", - "description": "Leaner CSS", - "url": "http://lesscss.org", - "keywords": [ - "css", - "parser", - "lesscss", - "browser" - ], - "author": { - "name": "Alexis Sellier", - "email": "self@cloudhead.net" - }, - "contributors": [], - "version": "1.3.0", - "bin": { - "lessc": "./bin/lessc" - }, - "main": "./lib/less/index", - "directories": { - "test": "./test" - }, - "engines": { - "node": ">=0.4.0" - }, - "_id": "less@1.3.0", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "_engineSupported": true, - "_npmVersion": "1.1.18", - "_nodeVersion": "v0.7.9-pre", - "_defaultsLoaded": true, - "_from": "less" -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/colors.css b/askbot/skins/default/media/style/node_modules/less/test/css/colors.css deleted file mode 100644 index b4516425..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/colors.css +++ /dev/null @@ -1,58 +0,0 @@ -#yelow #short { - color: #fea; -} -#yelow #long { - color: #ffeeaa; -} -#yelow #rgba { - color: rgba(255, 238, 170, 0.1); -} -#yelow #argb { - color: #1affeeaa; -} -#blue #short { - color: #00f; -} -#blue #long { - color: #0000ff; -} -#blue #rgba { - color: rgba(0, 0, 255, 0.1); -} -#blue #argb { - color: #1a0000ff; -} -#alpha #hsla { - color: rgba(61, 45, 41, 0.6); -} -#overflow .a { - color: #000000; -} -#overflow .b { - color: #ffffff; -} -#overflow .c { - color: #ffffff; -} -#overflow .d { - color: #00ff00; -} -#grey { - color: #c8c8c8; -} -#808080 { - color: #808080; -} -#00ff00 { - color: #00ff00; -} -.lightenblue { - color: #3333ff; -} -.darkenblue { - color: #0000cc; -} -.unknowncolors { - color: blue2; - border: 2px solid superred; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/comments.css b/askbot/skins/default/media/style/node_modules/less/test/css/comments.css deleted file mode 100644 index 352dd48e..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/comments.css +++ /dev/null @@ -1,56 +0,0 @@ -/******************\ -* * -* Comment Header * -* * -\******************/ -/* - - Comment - -*/ -/* - * Comment Test - * - * - cloudhead (http://cloudhead.net) - * - */ -/* Colors - * ------ - * #EDF8FC (background blue) - * #166C89 (darkest blue) - * - * Text: - * #333 (standard text) // A comment within a comment! - * #1F9EC9 (standard link) - * - */ -/* @group Variables -------------------- */ -#comments { - /**/ - color: red; - /* A C-style comment */ - - background-color: orange; - font-size: 12px; - /* lost comment */ - content: "content"; - border: 1px solid black; - padding: 0; - margin: 2em; -} -/* commented out - #more-comments { - color: grey; - } -*/ -.selector, -.lots, -.comments { - color: #808080, /* blue */ #ffa500; - -webkit-border-radius: 2px /* webkit only */; - -moz-border-radius: 8px /* moz only with operation */; -} -#last { - color: #0000ff; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/css-3.css b/askbot/skins/default/media/style/node_modules/less/test/css/css-3.css deleted file mode 100644 index 45bdc40d..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/css-3.css +++ /dev/null @@ -1,58 +0,0 @@ -.comma-delimited { - background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg); - text-shadow: -1px -1px 1px #ff0000, 6px 5px 5px #ffff00; - -moz-box-shadow: 0pt 0pt 2px rgba(255, 255, 255, 0.4) inset, 0pt 4px 6px rgba(255, 255, 255, 0.4) inset; -} -@font-face { - font-family: Headline; - src: local(Futura-Medium), url(fonts.svg#MyGeometricModern) format("svg"); -} -.other { - -moz-transform: translate(0, 11em) rotate(-90deg); -} -p:not([class*="lead"]) { - color: black; -} -input[type="text"].class#id[attr=32]:not(1) { - color: white; -} -div#id.class[a=1][b=2].class:not(1) { - color: white; -} -ul.comma > li:not(:only-child)::after { - color: white; -} -ol.comma > li:nth-last-child(2)::after { - color: white; -} -li:nth-child(4n+1), -li:nth-child(-5n), -li:nth-child(-n+2) { - color: white; -} -a[href^="http://"] { - color: black; -} -a[href$="http://"] { - color: black; -} -form[data-disabled] { - color: black; -} -p::before { - color: black; -} -#issue322 { - -webkit-animation: anim2 7s infinite ease-in-out; -} -@-webkit-keyframes frames { - 0% { - border: 1px; - } - 5.5% { - border: 2px; - } - 100% { - border: 3px; - } -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/css-escapes.css b/askbot/skins/default/media/style/node_modules/less/test/css/css-escapes.css deleted file mode 100644 index 278d5576..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/css-escapes.css +++ /dev/null @@ -1,20 +0,0 @@ -.escape\|random\|char { - color: red; -} -.mixin\!tUp { - font-weight: bold; -} -.\34 04 { - background: red; -} -.\34 04 strong { - color: #ff00ff; - font-weight: bold; -} -.trailingTest\+ { - color: red; -} -/* This hideous test of hideousness checks for the selector "blockquote" with various permutations of hex escapes */ -\62\6c\6f \63 \6B \0071 \000075o\74 e { - color: silver; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/css.css b/askbot/skins/default/media/style/node_modules/less/test/css/css.css deleted file mode 100644 index 63d20ec4..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/css.css +++ /dev/null @@ -1,89 +0,0 @@ -@charset "utf-8"; -div { - color: black; -} -div { - width: 99%; -} -* { - min-width: 45em; -} -h1, -h2 > a > p, -h3 { - color: none; -} -div.class { - color: blue; -} -div#id { - color: green; -} -.class#id { - color: purple; -} -.one.two.three { - color: grey; -} -@media print { - font-size: 3em; -} -@media screen { - font-size: 10px; -} -@font-face { - font-family: 'Garamond Pro'; - src: url("/fonts/garamond-pro.ttf"); -} -a:hover, -a:link { - color: #999; -} -p, -p:first-child { - text-transform: none; -} -q:lang(no) { - quotes: none; -} -p + h1 { - font-size: 2.2em; -} -#shorthands { - border: 1px solid #000; - font: 12px/16px Arial; - font: 100%/16px Arial; - margin: 1px 0; - padding: 0 auto; - background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px; -} -#more-shorthands { - margin: 0; - padding: 1px 0 2px 0; - font: normal small/20px 'Trebuchet MS', Verdana, sans-serif; -} -.misc { - -moz-border-radius: 2px; - display: -moz-inline-stack; - width: .1em; - background-color: #009998; - background-image: url(images/image.jpg); - background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), to(#0000ff)); - margin: ; - filter: alpha(opacity=100); -} -#important { - color: red !important; - width: 100%!important; - height: 20px ! important; -} -#data-uri { - background: url(data:image/png;charset=utf-8;base64, - kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/ - k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U - kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC); - background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==); -} -#svg-data-uri { - background: transparent url('data:image/svg+xml, '); -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/functions.css b/askbot/skins/default/media/style/node_modules/less/test/css/functions.css deleted file mode 100644 index 82328145..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/functions.css +++ /dev/null @@ -1,43 +0,0 @@ -#functions { - color: #660000; - width: 16; - height: undefined("self"); - border-width: 5; - variable: 11; -} -#built-in { - escaped: -Some::weird(#thing, y); - lighten: #ffcccc; - darken: #330000; - saturate: #203c31; - desaturate: #29332f; - greyscale: #2e2e2e; - spin-p: #bf6a40; - spin-n: #bf4055; - format: "rgb(32, 128, 64)"; - format-string: "hello world"; - format-multiple: "hello earth 2"; - format-url-encode: "red is %23ff0000"; - eformat: rgb(32, 128, 64); - hue: 98; - saturation: 12%; - lightness: 95%; - rounded: 11; - roundedpx: 3px; - percentage: 20%; - color: #ff0011; -} -#built-in .is-a { - color: true; - color: true; - color: true; - keyword: true; - number: true; - string: true; - pixel: true; - percent: true; - em: true; -} -#alpha { - alpha: rgba(153, 94, 51, 0.6); -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/ie-filters.css b/askbot/skins/default/media/style/node_modules/less/test/css/ie-filters.css deleted file mode 100644 index 933318ab..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/ie-filters.css +++ /dev/null @@ -1,5 +0,0 @@ -.nav { - filter: progid:dximagetransform.microsoft.alpha(opacity=20); - filter: progid:dximagetransform.microsoft.alpha(opacity=0); - filter: progid:dximagetransform.microsoft.gradient(startColorstr="#333333", endColorstr="#000000", GradientType=0); -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/import.css b/askbot/skins/default/media/style/node_modules/less/test/css/import.css deleted file mode 100644 index 89dc162c..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/import.css +++ /dev/null @@ -1,23 +0,0 @@ -@import "import-test-d.css"; - -@import url(http://fonts.googleapis.com/css?family=Open+Sans); - -@import url(something.css) screen and (color) and (max-width: 600px); -#import { - color: #ff0000; -} -.mixin { - height: 10px; - color: #ff0000; -} -#import-test { - height: 10px; - color: #ff0000; - width: 10px; - height: 30%; -} -@media screen and (max-width: 600px) { - body { - width: 100%; - } -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/javascript.css b/askbot/skins/default/media/style/node_modules/less/test/css/javascript.css deleted file mode 100644 index 5a3f8223..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/javascript.css +++ /dev/null @@ -1,22 +0,0 @@ -.eval { - js: 42; - js: 2; - js: "hello world"; - js: 1, 2, 3; - title: "node"; - ternary: true; -} -.scope { - var: 42; - escaped: 7px; -} -.vars { - width: 8; -} -.escape-interpol { - width: hello world; -} -.arrays { - ary: "1, 2, 3"; - ary: "1, 2, 3"; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/lazy-eval.css b/askbot/skins/default/media/style/node_modules/less/test/css/lazy-eval.css deleted file mode 100644 index 1adfb8f3..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/lazy-eval.css +++ /dev/null @@ -1,3 +0,0 @@ -.lazy-eval { - width: 100%; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/media.css b/askbot/skins/default/media/style/node_modules/less/test/css/media.css deleted file mode 100644 index 61d169df..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/media.css +++ /dev/null @@ -1,79 +0,0 @@ -@media print { - .class { - color: blue; - } - .class .sub { - width: 42; - } - .top, - header > h1 { - color: #444444; - } -} -@media screen { - body { - max-width: 480; - } -} -@media all and (orientation: portrait) { - aside { - float: none; - } -} -@media handheld and (min-width: 42), screen and (min-width: 20em) { - body { - max-width: 480px; - } -} -@media print { - body { - padding: 20px; - } - body header { - background-color: red; - } -} -@media print and (orientation: landscape) { - body { - margin-left: 20px; - } -} -@media a, b and c { - body { - width: 95%; - } -} -@media a and x, b and c and x, a and y, b and c and y { - body { - width: 100%; - } -} -.a { - background: black; -} -@media handheld { - .a { - background: white; - } -} -@media handheld and (max-width: 100px) { - .a { - background: red; - } -} -.b { - background: black; -} -@media handheld { - .b { - background: white; - } -} -@media handheld and (max-width: 200px) { - .b { - background: red; - } -} -@media only screen and (max-width: 200px) { - width: 480px; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-args.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-args.css deleted file mode 100644 index 8e544ba0..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-args.css +++ /dev/null @@ -1,76 +0,0 @@ -#hidden { - color: transparent; - color: transparent; -} -.two-args { - color: blue; - width: 10px; - height: 99%; - border: 2px dotted #000000; -} -.one-arg { - width: 15px; - height: 49%; -} -.no-parens { - width: 5px; - height: 49%; -} -.no-args { - width: 5px; - height: 49%; -} -.var-args { - width: 45; - height: 17%; -} -.multi-mix { - width: 10px; - height: 29%; - margin: 4; - padding: 5; -} -body { - padding: 30px; - color: #ff0000; -} -.scope-mix { - width: 8; -} -.content { - width: 600px; -} -.content .column { - margin: 600px; -} -#same-var-name { - radius: 5px; -} -#var-inside { - width: 10px; -} -.id-class { - color: red; - color: red; -} -.arguments { - border: 1px solid #000000; - width: 1px; -} -.arguments2 { - border: 0px; - width: 0px; -} -.arguments3 { - border: 0px; - width: 0px; -} -.arguments4 { - border: 0 1 2 3 4; - rest: 1 2 3 4; - width: 0; -} -.edge-case { - border: "{"; - width: "{"; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-closure.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-closure.css deleted file mode 100644 index b1021b6f..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-closure.css +++ /dev/null @@ -1,9 +0,0 @@ -.class { - width: 99px; -} -.overwrite { - width: 99px; -} -.nested .class { - width: 5px; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-guards.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-guards.css deleted file mode 100644 index 0c563e52..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-guards.css +++ /dev/null @@ -1,58 +0,0 @@ -.light1 { - color: white; - margin: 1px; -} -.light2 { - color: black; - margin: 1px; -} -.max1 { - width: 6; -} -.max2 { - width: 8; -} -.glob1 { - margin: auto auto; -} -.ops1 { - height: gt-or-eq; - height: lt-or-eq; -} -.ops2 { - height: gt-or-eq; - height: not-eq; -} -.ops3 { - height: lt-or-eq; - height: not-eq; -} -.default1 { - content: default; -} -.test1 { - content: "true."; -} -.test2 { - content: "false."; -} -.test3 { - content: "false."; -} -.test4 { - content: "false."; -} -.test5 { - content: "false."; -} -.bool1 { - content: true and true; - content: true; - content: false, true; - content: false and true and true, true; - content: false, true and true; - content: false, false, true; - content: false, true and true and true, false; - content: not false; - content: not false and false, not false; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-important.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-important.css deleted file mode 100644 index 2f74c647..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-important.css +++ /dev/null @@ -1,17 +0,0 @@ -.class { - border: 1; - boxer: 1; - border: 2 !important; - boxer: 2 !important; - border: 3; - boxer: 3; - border: 4 !important; - boxer: 4 !important; - border: 5; - boxer: 5; - border: 0 !important; - boxer: 0 !important; - border: 9 !important; - border: 9; - boxer: 9; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-nested.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-nested.css deleted file mode 100644 index 6378c475..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-nested.css +++ /dev/null @@ -1,14 +0,0 @@ -.class .inner { - height: 300; -} -.class .inner .innest { - width: 30; - border-width: 60; -} -.class2 .inner { - height: 600; -} -.class2 .inner .innest { - width: 60; - border-width: 120; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-pattern.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins-pattern.css deleted file mode 100644 index 8b828335..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/mixins-pattern.css +++ /dev/null @@ -1,47 +0,0 @@ -.zero { - variadic: true; - zero: 0; - one: 1; - two: 2; - three: 3; -} -.one { - variadic: true; - one: 1; - one-req: 1; - two: 2; - three: 3; -} -.two { - variadic: true; - two: 2; - three: 3; -} -.three { - variadic: true; - three-req: 3; - three: 3; -} -.left { - left: 1; -} -.right { - right: 1; -} -.border-right { - color: black; - border-right: 4px; -} -.border-left { - color: black; - border-left: 4px; -} -.only-right { - right: 33; -} -.only-left { - left: 33; -} -.left-right { - both: 330; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/mixins.css b/askbot/skins/default/media/style/node_modules/less/test/css/mixins.css deleted file mode 100644 index 45d51793..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/mixins.css +++ /dev/null @@ -1,71 +0,0 @@ -.mixin { - border: 1px solid black; -} -.mixout { - border-color: orange; -} -.borders { - border-style: dashed; -} -#namespace .borders { - border-style: dotted; -} -#namespace .biohazard { - content: "death"; -} -#namespace .biohazard .man { - color: transparent; -} -#theme > .mixin { - background-color: grey; -} -#container { - color: black; - border: 1px solid black; - border-color: orange; - background-color: grey; -} -#header .milk { - color: white; - border: 1px solid black; - background-color: grey; -} -#header #cookie { - border-style: dashed; -} -#header #cookie .chips { - border-style: dotted; -} -#header #cookie .chips .calories { - color: black; - border: 1px solid black; - border-color: orange; - background-color: grey; -} -.secure-zone { - color: transparent; -} -.direct { - border-style: dotted; -} -.bo, -.bar { - width: 100%; -} -.bo { - border: 1px; -} -.ar.bo.ca { - color: black; -} -.jo.ki { - background: none; -} -.extended { - width: 100%; - border: 1px; - background: none; -} -.foo .bar { - width: 100%; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/operations.css b/askbot/skins/default/media/style/node_modules/less/test/css/operations.css deleted file mode 100644 index fb9e0aff..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/operations.css +++ /dev/null @@ -1,49 +0,0 @@ -#operations { - color: #111111; - height: 9px; - width: 3em; - substraction: 0; - division: 1; -} -#operations .spacing { - height: 9px; - width: 3em; -} -.with-variables { - height: 16em; - width: 24em; - size: 1cm; -} -.with-functions { - color: #646464; - color: #ff8080; - color: #c94a4a; -} -.negative { - height: 0px; - width: 4px; -} -.shorthands { - padding: -1px 2px 0 -4px; -} -.rem-dimensions { - font-size: 5.5rem; -} -.colors { - color: #123; - border-color: #334455; - background-color: #000000; -} -.colors .other { - color: #222222; - border-color: #222222; -} -.negations { - variable: -4px; - variable1: 0px; - variable2: 0px; - variable3: 8px; - variable4: 0px; - paren: -4px; - paren2: 16px; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/parens.css b/askbot/skins/default/media/style/node_modules/less/test/css/parens.css deleted file mode 100644 index 36487fe5..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/parens.css +++ /dev/null @@ -1,20 +0,0 @@ -.parens { - border: 2px solid #000000; - margin: 1px 3px 16 3; - width: 36; - padding: 2px 36px; -} -.more-parens { - padding: 8 4 4 4px; - width: 96; - height: 113; - margin: 12; -} -.nested-parens { - width: 71; - height: 6; -} -.mixed-units { - margin: 2px 4em 1 5pc; - padding: 6px 1em 2px 2; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/rulesets.css b/askbot/skins/default/media/style/node_modules/less/test/css/rulesets.css deleted file mode 100644 index 408c76aa..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/rulesets.css +++ /dev/null @@ -1,33 +0,0 @@ -#first > .one { - font-size: 2em; -} -#first > .one > #second .two > #deux { - width: 50%; -} -#first > .one > #second .two > #deux #third { - height: 100%; -} -#first > .one > #second .two > #deux #third:focus { - color: black; -} -#first > .one > #second .two > #deux #third:focus #fifth > #sixth .seventh #eighth + #ninth { - color: purple; -} -#first > .one > #second .two > #deux #fourth, -#first > .one > #second .two > #deux #five, -#first > .one > #second .two > #deux #six { - color: #110000; -} -#first > .one > #second .two > #deux #fourth .seven, -#first > .one > #second .two > #deux #five .seven, -#first > .one > #second .two > #deux #six .seven, -#first > .one > #second .two > #deux #fourth .eight > #nine, -#first > .one > #second .two > #deux #five .eight > #nine, -#first > .one > #second .two > #deux #six .eight > #nine { - border: 1px solid black; -} -#first > .one > #second .two > #deux #fourth #ten, -#first > .one > #second .two > #deux #five #ten, -#first > .one > #second .two > #deux #six #ten { - color: red; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/scope.css b/askbot/skins/default/media/style/node_modules/less/test/css/scope.css deleted file mode 100644 index 11feda89..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/scope.css +++ /dev/null @@ -1,15 +0,0 @@ -.tiny-scope { - color: #998899; -} -.scope1 { - color: #0000ff; - border-color: #000000; -} -.scope1 .scope2 { - color: #0000ff; -} -.scope1 .scope2 .scope3 { - color: #ff0000; - border-color: #000000; - background-color: #ffffff; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/selectors.css b/askbot/skins/default/media/style/node_modules/less/test/css/selectors.css deleted file mode 100644 index 6f69a8c9..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/selectors.css +++ /dev/null @@ -1,69 +0,0 @@ -h1 a:hover, -h2 a:hover, -h3 a:hover, -h1 p:hover, -h2 p:hover, -h3 p:hover { - color: red; -} -#all { - color: blue; -} -#the { - color: blue; -} -#same { - color: blue; -} -ul, -li, -div, -q, -blockquote, -textarea { - margin: 0; -} -td { - margin: 0; - padding: 0; -} -td, -input { - line-height: 1em; -} -a { - color: red; -} -a:hover { - color: blue; -} -div a { - color: green; -} -p a span { - color: yellow; -} -.foo .bar .qux, -.foo .baz .qux { - display: block; -} -.qux .foo .bar, -.qux .foo .baz { - display: inline; -} -.qux .foo .bar .biz, -.qux .foo .baz .biz { - display: none; -} -.other ::fnord { - color: #ff0000; -} -.other::fnord { - color: #ff0000; -} -.other ::bnord { - color: #ff0000; -} -.other::bnord { - color: #ff0000; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/strings.css b/askbot/skins/default/media/style/node_modules/less/test/css/strings.css deleted file mode 100644 index 80e115c0..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/strings.css +++ /dev/null @@ -1,40 +0,0 @@ -#strings { - background-image: url("http://son-of-a-banana.com"); - quotes: "~" "~"; - content: "#*%:&^,)!.(~*})"; - empty: ""; - brackets: "{" "}"; - escapes: "\"hello\" \\world"; - escapes2: "\"llo"; -} -#comments { - content: "/* hello */ // not-so-secret"; -} -#single-quote { - quotes: "'" "'"; - content: '""#!&""'; - empty: ''; - semi-colon: ';'; -} -#escaped { - filter: DX.Transform.MS.BS.filter(opacity=50); -} -#one-line { - image: url(http://tooks.com); -} -#crazy { - image: url(http://), "}", url("http://}"); -} -#interpolation { - url: "http://lesscss.org/dev/image.jpg"; - url2: "http://lesscss.org/image-256.jpg"; - url3: "http://lesscss.org#445566"; - url4: "http://lesscss.org/hello"; - url5: "http://lesscss.org/54.4"; -} -.mix-mul-class { - color: #0000ff; - color: #ff0000; - color: #0000ff; - color: #ffa500; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/variables.css b/askbot/skins/default/media/style/node_modules/less/test/css/variables.css deleted file mode 100644 index 961fe695..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/variables.css +++ /dev/null @@ -1,27 +0,0 @@ -.variables { - width: 14cm; -} -.variables { - height: 24px; - color: #888888; - font-family: "Trebuchet MS", Verdana, sans-serif; - quotes: "~" "~"; -} -.redefinition { - three: 3; -} -.values { - font-family: 'Trebuchet', 'Trebuchet', 'Trebuchet'; - color: #888888 !important; - url: url('Trebuchet'); - multi: something 'A', B, C, 'Trebuchet'; -} -.variable-names { - name: 'hello'; -} -.alpha { - filter: alpha(opacity=42); -} -a:nth-child(2) { - border: 1px; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/css/whitespace.css b/askbot/skins/default/media/style/node_modules/less/test/css/whitespace.css deleted file mode 100644 index 56e067fc..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/css/whitespace.css +++ /dev/null @@ -1,38 +0,0 @@ -.whitespace { - color: white; -} -.whitespace { - color: white; -} -.whitespace { - color: white; -} -.whitespace { - color: white; -} -.whitespace { - color: white ; -} -.white, -.space, -.mania { - color: white; -} -.no-semi-column { - color: #ffffff; -} -.no-semi-column { - color: white; - white-space: pre; -} -.no-semi-column { - border: 2px solid #ffffff; -} -.newlines { - background: the, - great, - wall; - border: 2px - solid - black; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/less-test.js b/askbot/skins/default/media/style/node_modules/less/test/less-test.js deleted file mode 100644 index 46412e01..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/less-test.js +++ /dev/null @@ -1,73 +0,0 @@ -var path = require('path'), - fs = require('fs'), - sys = require('util'); - -var less = require('../lib/less'); - -less.tree.functions.add = function (a, b) { - return new(less.tree.Dimension)(a.value + b.value); -} -less.tree.functions.increment = function (a) { - return new(less.tree.Dimension)(a.value + 1); -} -less.tree.functions._color = function (str) { - if (str.value === "evil red") { return new(less.tree.Color)("600") } -} - -sys.puts("\n" + stylize("LESS", 'underline') + "\n"); - -fs.readdirSync('test/less').forEach(function (file) { - if (! /\.less/.test(file)) { return } - - toCSS('test/less/' + file, function (err, less) { - var name = path.basename(file, '.less'); - - fs.readFile(path.join('test/css', name) + '.css', 'utf-8', function (e, css) { - sys.print("- " + name + ": ") - if (less === css) { sys.print(stylize('OK', 'green')) } - else if (err) { - sys.print(stylize("ERROR: " + (err && err.message), 'red')); - } else { - sys.print(stylize("FAIL", 'yellow')); - } - sys.puts(""); - }); - }); -}); - -function toCSS(path, callback) { - var tree, css; - fs.readFile(path, 'utf-8', function (e, str) { - if (e) { return callback(e) } - - new(less.Parser)({ - paths: [require('path').dirname(path)], - optimization: 0 - }).parse(str, function (err, tree) { - if (err) { - callback(err); - } else { - try { - css = tree.toCSS(); - callback(null, css); - } catch (e) { - callback(e); - } - } - }); - }); -} - -// Stylize a string -function stylize(str, style) { - var styles = { - 'bold' : [1, 22], - 'inverse' : [7, 27], - 'underline' : [4, 24], - 'yellow' : [33, 39], - 'green' : [32, 39], - 'red' : [31, 39] - }; - return '\033[' + styles[style][0] + 'm' + str + - '\033[' + styles[style][1] + 'm'; -} diff --git a/askbot/skins/default/media/style/node_modules/less/test/less/import/import-test-d.css b/askbot/skins/default/media/style/node_modules/less/test/less/import/import-test-d.css deleted file mode 100644 index 30575f01..00000000 --- a/askbot/skins/default/media/style/node_modules/less/test/less/import/import-test-d.css +++ /dev/null @@ -1 +0,0 @@ -#css { color: yellow; } -- cgit v1.2.3-1-g7c22 From d228b8fee95a073e67749227d80c75e31dd43096 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Wed, 9 May 2012 22:28:06 -0400 Subject: made a "safe" version of setting update function --- askbot/conf/settings_wrapper.py | 10 ++++++++-- askbot/skins/utils.py | 23 ++--------------------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/askbot/conf/settings_wrapper.py b/askbot/conf/settings_wrapper.py index 78d16397..b6b5f302 100644 --- a/askbot/conf/settings_wrapper.py +++ b/askbot/conf/settings_wrapper.py @@ -58,8 +58,14 @@ class ConfigSettings(object): self.update(key, self.get_default(key)) def update(self, key, value): - setting = config_get(self.__group_map[key], key) - setting.update(value) + try: + setting = config_get(self.__group_map[key], key) + setting.update(value) + except: + from askbot.deps.livesettings.models import Setting + setting = Setting.objects.get(key=key) + setting.value = value + setting.save() #self.prime_cache() def register(self, value): diff --git a/askbot/skins/utils.py b/askbot/skins/utils.py index 4f8e1992..2bd11147 100644 --- a/askbot/skins/utils.py +++ b/askbot/skins/utils.py @@ -192,25 +192,6 @@ def update_media_revision(skin = None): current_hash = hasher.get_hash_of_dirs(media_dirs) if current_hash != askbot_settings.MEDIA_RESOURCE_REVISION_HASH: - try: - askbot_settings.update('MEDIA_RESOURCE_REVISION', resource_revision + 1) - logging.debug('media revision worked for MEDIA_RESOURCE_REVISION') - except Exception, e: - logging.critical(e.message) - safe_settings_update('MEDIA_RESOURCE_REVISION', resource_revision + 1) - - try: - askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash) - logging.debug('media revision worked for MEDIA_RESOURCE_REVISION_HASH') - except Exception, e: - logging.critical(e.message) - safe_settings_update('MEDIA_RESOURCE_REVISION_HASH', current_hash) + askbot_settings.update('MEDIA_RESOURCE_REVISION', resource_revision + 1) + askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash) logging.debug('MEDIA_RESOURCE_REVISION changed') - - -def safe_settings_update(key, value): - '''Fallback when IntegrityError bug raises''' - from askbot.deps.livesettings.models import Setting - setting = Setting.objects.get(key=key) - setting.value = value - setting.save() -- cgit v1.2.3-1-g7c22 From 6b11c5d8c80a52767fdaf77234cafa67008fd47e Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Wed, 9 May 2012 22:31:30 -0400 Subject: temporarily disabled the language selector feature --- askbot/conf/skin_general_settings.py | 2 ++ askbot/setup_templates/settings.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/askbot/conf/skin_general_settings.py b/askbot/conf/skin_general_settings.py index 6abee90a..9c6ee745 100644 --- a/askbot/conf/skin_general_settings.py +++ b/askbot/conf/skin_general_settings.py @@ -54,6 +54,7 @@ LANGUAGE_CHOICES = ( ('zh_TW', _("Chinese (Taiwan)")), ) +""" settings.register( values.StringValue( GENERAL_SKIN_SETTINGS, @@ -63,6 +64,7 @@ settings.register( description = _('Select Language'), ) ) +""" settings.register( values.BooleanValue( diff --git a/askbot/setup_templates/settings.py b/askbot/setup_templates/settings.py index b326ea85..32af9920 100644 --- a/askbot/setup_templates/settings.py +++ b/askbot/setup_templates/settings.py @@ -98,7 +98,7 @@ TEMPLATE_LOADERS = ( MIDDLEWARE_CLASSES = ( #'django.middleware.gzip.GZipMiddleware', - 'askbot.middleware.locale.LocaleMiddleware', + #'askbot.middleware.locale.LocaleMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', #'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', -- cgit v1.2.3-1-g7c22 From b35abc3d919191fc0dc30ffd0820b1bffcd36e5b Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Mon, 14 May 2012 13:30:55 -0400 Subject: recompiled style.css --- askbot/skins/default/media/style/style.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index 4e802991..6ca0bc5c 100644 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -655,9 +655,9 @@ body.anon #searchBar .searchInputCancelable { background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba); text-decoration: none; - text-shadow: 0px 1px 0px #e6f6fa; - -moz-text-shadow: 0px 1px 0px #e6f6fa; - -webkit-text-shadow: 0px 1px 0px #e6f6fa; + text-shadow: 0px 1px 0px #c6d9dd; + -moz-text-shadow: 0px 1px 0px #c6d9dd; + -webkit-text-shadow: 0px 1px 0px #c6d9dd; } .box .inputs #ab-tag-search-add { width: 47px; -- cgit v1.2.3-1-g7c22 From d4778e5eba9b5861611492eb6166eb6d8c8eec96 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Mon, 14 May 2012 13:45:27 -0400 Subject: fixed label size on interesting and ignored tag buttons --- askbot/skins/default/media/style/style.css | 2 +- askbot/skins/default/media/style/style.less | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index 6ca0bc5c..3d53eba8 100644 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -611,7 +611,7 @@ body.anon #searchBar .searchInputCancelable { margin-top: -2px; width: 30px; height: 27px; - font-size: 12px; + font-size: 14px; text-align: center; text-decoration: none; cursor: pointer; diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index b6f0754a..a98bcdbe 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -602,7 +602,7 @@ body.anon { border:0; font-weight:bold; margin-top:-2px; - .button-style(30px,27px,12px); + .button-style(30px, 27px, 14px); .rounded-corners(4px); } #interestingTagAdd:hover, -- cgit v1.2.3-1-g7c22 From 4cf3ec3998b1f067a7f0c76eae4a90c274024986 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Mon, 14 May 2012 15:35:47 -0400 Subject: bumped version and updated changelog and the contributor list --- askbot/__init__.py | 2 +- askbot/doc/source/changelog.rst | 6 ++++-- askbot/doc/source/contributors.rst | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/askbot/__init__.py b/askbot/__init__.py index 12517182..859b2695 100644 --- a/askbot/__init__.py +++ b/askbot/__init__.py @@ -9,7 +9,7 @@ import smtplib import sys import logging -VERSION = (0, 7, 42) +VERSION = (0, 7, 43) #keys are module names used by python imports, #values - the package qualifier to use for pip diff --git a/askbot/doc/source/changelog.rst b/askbot/doc/source/changelog.rst index 25d96e88..e005e019 100644 --- a/askbot/doc/source/changelog.rst +++ b/askbot/doc/source/changelog.rst @@ -1,13 +1,15 @@ Changes in Askbot ================= -Future version --------------- +0.7.43 (May 14, 2012) +--------------------- * User groups (Evgeny) * Public/Private/Hidden reputation (Evgeny) * Enabling/disabling the badges system (Evgeny) * Created a basic post moderation feature (Evgeny) * Created a way to specify reasons for rejecting posts in a modal dialog (Evgeny) +* A number of bug fixes (Adolfo Fitoria, Jim Tittsler, + Evgeny Fadeev, Robin Stocker, Radim Řehůřek, Silvio Heuberger) 0.7.41, 0.7.42 (April 21, 2012) ------------------------------- diff --git a/askbot/doc/source/contributors.rst b/askbot/doc/source/contributors.rst index 71bc5cc9..81729979 100644 --- a/askbot/doc/source/contributors.rst +++ b/askbot/doc/source/contributors.rst @@ -38,6 +38,7 @@ Programming and documentation * `Radim Řehůřek `_ * `monkut `_ * `Jim Tittsler `_ +* Silvio Heuberger Translations ------------ -- cgit v1.2.3-1-g7c22 From cbebe08a0cc993693a7a90cbd1ddc82bb89c4194 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Wed, 16 May 2012 18:17:44 -0400 Subject: added the YanoneKaffeesatz font to the media files and an settings.py option ASKBOT_USE_LOCAL_FONTS for use on the intranet or development offline --- askbot/context.py | 11 ++- askbot/doc/source/index.rst | 1 + askbot/doc/source/intranet-setup.rst | 14 ++++ .../default/media/bootstrap/css/bootstrap.css | 12 --- askbot/skins/default/media/images/OFL.txt | 93 +++++++++++++++++++++ .../default/media/images/YanoneKaffeesatz-Bold.ttf | Bin 0 -> 73000 bytes .../media/images/YanoneKaffeesatz-ExtraLight.ttf | Bin 0 -> 77024 bytes .../media/images/YanoneKaffeesatz-Light.ttf | Bin 0 -> 77296 bytes .../media/images/YanoneKaffeesatz-Regular.ttf | Bin 0 -> 76588 bytes .../default/media/images/Yanone_Kaffeesatz.zip | Bin 0 -> 154362 bytes askbot/skins/default/media/style/style.less | 4 +- askbot/skins/default/templates/meta/fonts.html | 20 +++++ .../templates/meta/html_head_stylesheets.html | 6 +- 13 files changed, 145 insertions(+), 16 deletions(-) create mode 100644 askbot/doc/source/intranet-setup.rst create mode 100644 askbot/skins/default/media/images/OFL.txt create mode 100644 askbot/skins/default/media/images/YanoneKaffeesatz-Bold.ttf create mode 100644 askbot/skins/default/media/images/YanoneKaffeesatz-ExtraLight.ttf create mode 100644 askbot/skins/default/media/images/YanoneKaffeesatz-Light.ttf create mode 100644 askbot/skins/default/media/images/YanoneKaffeesatz-Regular.ttf create mode 100644 askbot/skins/default/media/images/Yanone_Kaffeesatz.zip create mode 100644 askbot/skins/default/templates/meta/fonts.html diff --git a/askbot/context.py b/askbot/context.py index ea10a890..03a2d1d8 100644 --- a/askbot/context.py +++ b/askbot/context.py @@ -26,7 +26,16 @@ def application_settings(request): my_settings['LANGUAGE_CODE'] = getattr(request, 'LANGUAGE_CODE', settings.LANGUAGE_CODE) my_settings['ASKBOT_URL'] = settings.ASKBOT_URL my_settings['STATIC_URL'] = settings.STATIC_URL - my_settings['ASKBOT_CSS_DEVEL'] = getattr(settings, 'ASKBOT_CSS_DEVEL', False) + my_settings['ASKBOT_CSS_DEVEL'] = getattr( + settings, + 'ASKBOT_CSS_DEVEL', + False + ) + my_settings['USE_LOCAL_FONTS'] = getattr( + settings, + 'ASKBOT_USE_LOCAL_FONTS', + False + ) my_settings['DEBUG'] = settings.DEBUG my_settings['USING_RUNSERVER'] = 'runserver' in sys.argv my_settings['ASKBOT_VERSION'] = askbot.get_version() diff --git a/askbot/doc/source/index.rst b/askbot/doc/source/index.rst index 81f21fcc..353b9105 100644 --- a/askbot/doc/source/index.rst +++ b/askbot/doc/source/index.rst @@ -26,6 +26,7 @@ at the forum_ or by email at admin@askbot.org Appendix C: Optional modules Appendix D: Askbot as reusable Django application Appendix E: Customizing skin in askbot + Appendix F: Intranet setup Footnotes Contributors Changelog diff --git a/askbot/doc/source/intranet-setup.rst b/askbot/doc/source/intranet-setup.rst new file mode 100644 index 00000000..224ffb89 --- /dev/null +++ b/askbot/doc/source/intranet-setup.rst @@ -0,0 +1,14 @@ +========================================================== +Setting up Askbot for use on the closed network (Intranet) +========================================================== + +When using Askbot on the Intranet (for example - within your +Company network), it will be useful to disable references to +all external resources - such as custom fonts, gravatars. + +Please change the following settings in your ``settings.py`` file:: + + ASKBOT_USE_LOCAL_FONTS=True + +In addition, in the "live settings": +* disable gravatar in "settings->User settings" diff --git a/askbot/skins/default/media/bootstrap/css/bootstrap.css b/askbot/skins/default/media/bootstrap/css/bootstrap.css index 9447a9a2..3e829732 100644 --- a/askbot/skins/default/media/bootstrap/css/bootstrap.css +++ b/askbot/skins/default/media/bootstrap/css/bootstrap.css @@ -918,18 +918,6 @@ input, textarea, select, .uneditable-input { - display: inline-block; - width: 210px; - height: 18px; - padding: 4px; - margin-bottom: 9px; - font-size: 13px; - line-height: 18px; - color: #555555; - border: 1px solid #cccccc; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; } .uneditable-textarea { width: auto; diff --git a/askbot/skins/default/media/images/OFL.txt b/askbot/skins/default/media/images/OFL.txt new file mode 100644 index 00000000..3bc11311 --- /dev/null +++ b/askbot/skins/default/media/images/OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2010, Jan Gerner (post@yanone.de) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/askbot/skins/default/media/images/YanoneKaffeesatz-Bold.ttf b/askbot/skins/default/media/images/YanoneKaffeesatz-Bold.ttf new file mode 100644 index 00000000..c693c4b3 Binary files /dev/null and b/askbot/skins/default/media/images/YanoneKaffeesatz-Bold.ttf differ diff --git a/askbot/skins/default/media/images/YanoneKaffeesatz-ExtraLight.ttf b/askbot/skins/default/media/images/YanoneKaffeesatz-ExtraLight.ttf new file mode 100644 index 00000000..b59e4894 Binary files /dev/null and b/askbot/skins/default/media/images/YanoneKaffeesatz-ExtraLight.ttf differ diff --git a/askbot/skins/default/media/images/YanoneKaffeesatz-Light.ttf b/askbot/skins/default/media/images/YanoneKaffeesatz-Light.ttf new file mode 100644 index 00000000..5026d3bd Binary files /dev/null and b/askbot/skins/default/media/images/YanoneKaffeesatz-Light.ttf differ diff --git a/askbot/skins/default/media/images/YanoneKaffeesatz-Regular.ttf b/askbot/skins/default/media/images/YanoneKaffeesatz-Regular.ttf new file mode 100644 index 00000000..808ce0d0 Binary files /dev/null and b/askbot/skins/default/media/images/YanoneKaffeesatz-Regular.ttf differ diff --git a/askbot/skins/default/media/images/Yanone_Kaffeesatz.zip b/askbot/skins/default/media/images/Yanone_Kaffeesatz.zip new file mode 100644 index 00000000..55e9731a Binary files /dev/null and b/askbot/skins/default/media/images/Yanone_Kaffeesatz.zip differ diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index 5967817d..c3423418 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -1812,7 +1812,7 @@ ul#related-tags li { button{ line-height:25px; margin-bottom:5px; - .button-style(100px,27px,12px); + .button-style(100px, 27px, 12px); font-family:@body-font; font-weight:bold; } @@ -2354,7 +2354,7 @@ a:hover.medal { font-weight:bold; line-height:26px; margin-top:-2px; - .button-style(100px,26px,12px); + .button-style(100px,26px,14px); } .follow-toggle:hover, .submit:hover { diff --git a/askbot/skins/default/templates/meta/fonts.html b/askbot/skins/default/templates/meta/fonts.html new file mode 100644 index 00000000..f55d567c --- /dev/null +++ b/askbot/skins/default/templates/meta/fonts.html @@ -0,0 +1,20 @@ + diff --git a/askbot/skins/default/templates/meta/html_head_stylesheets.html b/askbot/skins/default/templates/meta/html_head_stylesheets.html index 14f3c106..0d2ba463 100644 --- a/askbot/skins/default/templates/meta/html_head_stylesheets.html +++ b/askbot/skins/default/templates/meta/html_head_stylesheets.html @@ -4,7 +4,11 @@ {% endif %} - +{% if settings.USE_LOCAL_FONTS %} + {% include "meta/fonts.html" %} +{% else %} + +{% endif %} {{ skin.get_extra_css_link() }} {% if settings.USE_CUSTOM_CSS %}