bootstrap3

This commit is contained in:
Athou
2013-11-27 12:13:18 +01:00
parent 4f8e2ab478
commit 7caa99f8f2
41 changed files with 787 additions and 1416 deletions

View File

@@ -5,15 +5,19 @@
<div class="text-center"> <div class="text-center">
<img src="images/logo_2.png" /> <img src="images/logo_2.png" />
<div wicket:id="feedback"></div> <div wicket:id="feedback"></div>
<form wicket:id="form"> <form wicket:id="form" class="form-horizontal">
New Password: <div class="form-group">
<input type="password" wicket:id="password" /> <label>New Password</label>
<br /> <input type="password" wicket:id="password" />
Confirm: </div>
<input type="password" wicket:id="confirm" /> <div class="form-group">
<br /> <label>Confirm</label>
<input type="submit" class="btn btn-primary" value="Submit" /> <input type="password" wicket:id="confirm" />
<input type="button" class="btn" wicket:id="cancel" value="Home page" /> </div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Submit" />
<input type="button" class="btn btn-default" wicket:id="cancel" value="Home page" />
</div>
</form> </form>
</div> </div>
</div> </div>

View File

@@ -2,15 +2,18 @@
<body> <body>
<wicket:extend> <wicket:extend>
<div class="container"> <div class="container">
<div class="text-center"> <div class="col-xs-6 col-xs-offset-3 text-center">
<img src="images/logo_2.png" /> <img src="images/logo_2.png" />
<div wicket:id="feedback"></div> <div wicket:id="feedback"></div>
<form wicket:id="form"> <form wicket:id="form" class="form-horizontal">
Email: <div class="form-group">
<input type="email" wicket:id="email" /> <label>Email</label>
<br /> <input type="email" wicket:id="email" class="form-control"/>
<input type="submit" class="btn btn-primary" value="Submit" /> </div>
<input type="button" class="btn" wicket:id="cancel" value="Cancel" /> <div class="form-group">
<input type="submit" class="btn btn-primary" value="Submit" />
<input type="button" class="btn btn-default" wicket:id="cancel" value="Cancel" />
</div>
</form> </form>
</div> </div>
</div> </div>

View File

@@ -3,8 +3,8 @@
<body> <body>
<wicket:extend> <wicket:extend>
<div class="welcome"> <div class="welcome">
<div class="container-fluid"> <div class="container">
<div class="row-fluid header"> <div class="row header">
<div class="pull-left"> <div class="pull-left">
<a wicket:id="logo-link"> <a wicket:id="logo-link">
<img src="images/logo_2.png"></img> <img src="images/logo_2.png"></img>
@@ -23,14 +23,14 @@
</a> </a>
</div> </div>
</div> </div>
<div class="row-fluid"> <div class="row">
<div class="span6"> <div class="col-md-6">
<div class="well" id="login-panel"> <div class="well" id="login-panel">
<h3>Login</h3> <h3>Login</h3>
<span wicket:id="login"></span> <span wicket:id="login"></span>
</div> </div>
</div> </div>
<div class="span6" wicket:enclosure="register"> <div class="col-md-6" wicket:enclosure="register">
<div class="well" id="register-panel"> <div class="well" id="register-panel">
<h3>Register</h3> <h3>Register</h3>
<span wicket:id="register"></span> <span wicket:id="register"></span>
@@ -40,7 +40,7 @@
<hr /> <hr />
<div class="footer"> <div class="footer">
<div class="row-fluid"> <div class="row">
<span> <span>
&copy; &copy;
<a href="http://www.commafeed.com" target="_blank">CommaFeed</a> <a href="http://www.commafeed.com" target="_blank">CommaFeed</a>

View File

@@ -4,24 +4,20 @@
<wicket:panel> <wicket:panel>
<span wicket:id="feedback"></span> <span wicket:id="feedback"></span>
<form wicket:id="signInForm"> <form wicket:id="signInForm">
<div class="control-group"> <div class="form-group">
<label class="control-label" for="username">User Name</label> <label for="username">User Name</label>
<div class="controls"> <input type="text" id="username" wicket:id="username" class="form-control"></input>
<input type="text" id="username" wicket:id="username" class="input-block-level"></input>
</div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="password">Password</label> <label for="password">Password</label>
<div class="controls"> <input type="password" id="password" wicket:id="password" class="form-control"></input>
<input type="password" id="password" wicket:id="password" class="input-block-level"></input>
</div>
</div> </div>
<p class="help-block" wicket:id="rememberMeRow"> <div wicket:id="rememberMeRow">
<label class="checkbox"> <label>
<input wicket:id="rememberMe" type="checkbox" /> <input wicket:id="rememberMe" type="checkbox" />
Remember me Remember me
</label> </label>
</p> </div>
<div> <div>
<input type="submit" class="btn btn-primary" value="Log in" /> <input type="submit" class="btn btn-primary" value="Log in" />
<a wicket:id="recover" class="pull-right">Forgot password?</a> <a wicket:id="recover" class="pull-right">Forgot password?</a>

View File

@@ -4,23 +4,17 @@
<wicket:panel> <wicket:panel>
<div wicket:id="feedback"></div> <div wicket:id="feedback"></div>
<form wicket:id="form" autocomplete="off"> <form wicket:id="form" autocomplete="off">
<div class="control-group"> <div class="form-group">
<label class="control-label">User Name</label> <label>User Name</label>
<div class="controls"> <input type="text" wicket:id="name" class="form-control"></input>
<input type="text" wicket:id="name" class="input-block-level"></input>
</div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label">Password</label> <label>Password</label>
<div class="controls"> <input type="password" wicket:id="password" class="form-control"></input>
<input type="password" wicket:id="password" class="input-block-level"></input>
</div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label">Email address (used for password recovery only)</label> <label>Email address (used for password recovery only)</label>
<div class="controls"> <input type="email" wicket:id="email" class="form-control"></input>
<input type="email" wicket:id="email" class="input-block-level"></input>
</div>
</div> </div>
<div> <div>
<input type="submit" class="btn btn-primary" value="Register" /> <input type="submit" class="btn btn-primary" value="Register" />

View File

@@ -30,36 +30,16 @@ module.run(['$rootScope', function($rootScope) {
}); });
}]); }]);
module.controller('SubscribeCtrl', ['$scope', 'FeedService', 'CategoryService', 'MobileService', module.controller('SubscribeCtrl', ['$scope', '$location', 'FeedService', 'CategoryService', 'MobileService',
function($scope, FeedService, CategoryService, MobileService) { function($scope, $location, FeedService, CategoryService, MobileService) {
$scope.opts = { $scope.sub = {
backdropFade : true, categoryId : 'all'
dialogFade : true
}; };
$scope.isOpen = false;
$scope.isOpenImport = false;
$scope.sub = {};
$scope.CategoryService = CategoryService; $scope.CategoryService = CategoryService;
$scope.MobileService = MobileService; $scope.MobileService = MobileService;
$scope.search = function() {
$scope.$emit('emitFeedSearch');
};
$scope.open = function() {
$scope.sub = {
categoryId : $scope.sub.categoryId || 'all'
};
$scope.isOpen = true;
};
$scope.close = function() {
$scope.isOpen = false;
};
// 'ok', 'loading' or 'failed' // 'ok', 'loading' or 'failed'
$scope.state = 'ok'; $scope.state = 'ok';
$scope.urlChanged = function() { $scope.urlChanged = function() {
@@ -88,39 +68,45 @@ module.controller('SubscribeCtrl', ['$scope', 'FeedService', 'CategoryService',
} }
FeedService.subscribe($scope.sub, function() { FeedService.subscribe($scope.sub, function() {
CategoryService.init(); CategoryService.init();
$scope.close(); $location.path('/');
}, function(data) { }, function(data) {
$scope.state = 'failed'; $scope.state = 'failed';
$scope.sub.title = 'ERROR: ' + data.data; $scope.sub.title = 'ERROR: ' + data.data;
}); });
}; };
$scope.openImport = function() { $scope.back = function() {
$scope.isOpenImport = true; $location.path('/');
}; };
}]);
$scope.closeImport = function() { module.controller('NewCategoryCtrl', ['$scope', '$location', 'FeedService', 'CategoryService', 'MobileService',
$scope.isOpenImport = false; function($scope, $location, FeedService, CategoryService, MobileService) {
};
$scope.cat = {}; $scope.CategoryService = CategoryService;
$scope.MobileService = MobileService;
$scope.openCategory = function() { $scope.cat = {
$scope.isOpenCategory = true; parentId : 'all'
$scope.cat = {
parentId : 'all'
};
};
$scope.closeCategory = function() {
$scope.isOpenCategory = false;
}; };
$scope.saveCategory = function() { $scope.saveCategory = function() {
CategoryService.add($scope.cat, function() { CategoryService.add($scope.cat, function() {
CategoryService.init(); CategoryService.init();
}); });
$scope.closeCategory(); $location.path('/');
};
$scope.back = function() {
$location.path('/');
};
}]);
module.controller('ImportCtrl', ['$scope', '$location', 'FeedService', 'CategoryService', 'MobileService',
function($scope, $location, FeedService, CategoryService, MobileService) {
$scope.back = function() {
$location.path('/');
}; };
}]); }]);

View File

@@ -39,6 +39,21 @@ app.config(['$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpProv
templateUrl : 'templates/feeds.view.html', templateUrl : 'templates/feeds.view.html',
controller : 'FeedListCtrl' controller : 'FeedListCtrl'
}); });
$stateProvider.state('feeds.subscribe', {
url : '/subscribe',
templateUrl : 'templates/feeds.subscribe.html',
controller : 'SubscribeCtrl'
});
$stateProvider.state('feeds.new_category', {
url : '/add_category',
templateUrl : 'templates/feeds.new_category.html',
controller : 'NewCategoryCtrl'
});
$stateProvider.state('feeds.import', {
url : '/import',
templateUrl : 'templates/feeds.import.html',
controller : 'ImportCtrl'
});
$stateProvider.state('feeds.search', { $stateProvider.state('feeds.search', {
url : '/search/:_keywords', url : '/search/:_keywords',
templateUrl : 'templates/feeds.view.html', templateUrl : 'templates/feeds.view.html',

View File

@@ -14,6 +14,7 @@
.entrylist-header h3 { .entrylist-header h3 {
margin: 0; margin: 0;
line-height: 40px;
} }
.entrylist-header a { .entrylist-header a {
@@ -70,7 +71,7 @@
#feed-accordion .entry-heading-link { #feed-accordion .entry-heading-link {
color: black; color: black;
height: 20px; height: 32px;
display: block; display: block;
cursor: pointer; cursor: pointer;
padding: 6px 0px; padding: 6px 0px;

View File

@@ -48,6 +48,7 @@
.css-treeview ul { .css-treeview ul {
list-style: none; list-style: none;
margin-left: 0px; margin-left: 0px;
padding: 0;
} }
.css-treeview li { .css-treeview li {

View File

@@ -1,4 +1,3 @@
.toolbar { .toolbar {
padding-top: 10px; padding-top: 10px;
padding-bottom: 10px; padding-bottom: 10px;
@@ -12,3 +11,6 @@
display: inline-block; display: inline-block;
} }
.toolbar .keywords {
width: 244px;
}

View File

@@ -1,3 +1,11 @@
.container-full {
width: 100%;
margin: 0 auto;
padding-right: 20px;
padding-left: 20px;
padding-left: 20px;
}
.pointer { .pointer {
cursor: pointer; cursor: pointer;
} }
@@ -50,6 +58,7 @@
.welcome .preview { .welcome .preview {
margin: 20px 0 20px 0; margin: 20px 0 20px 0;
max-width: 100%;
} }
.welcome .demo { .welcome .demo {

View File

@@ -7,42 +7,31 @@
</div> </div>
<div class="category-link" ng-click="categoryClicked(node.id, node.isTag)" ng-dblclick="showCategoryDetails(node.id, node.isTag)"> <div class="category-link" ng-click="categoryClicked(node.id, node.isTag)" ng-dblclick="showCategoryDetails(node.id, node.isTag)">
<span class="fldr"> <span class="fldr">
<i ng-class="{'icon-caret-right': !node.expanded, 'icon-caret-down': node.expanded}" ng-click="toggleCategory(node, $event)" ng-show="showChildren"></i> <i ng-class="{'icon-caret-right': !node.expanded, 'icon-caret-down': node.expanded}" ng-click="toggleCategory(node, $event)"
ng-show="showChildren"></i>
<i ng-class="{'icon-star' : node.id == 'starred', 'icon-inbox': node.id == 'all', 'icon-tag' : node.isTag}" ng-show="!showChildren"></i> <i ng-class="{'icon-star' : node.id == 'starred', 'icon-inbox': node.id == 'all', 'icon-tag' : node.isTag}" ng-show="!showChildren"></i>
</span> </span>
<span ng-class="{selected: (node.id == selectedId && (node.isTag ? selectedType == 'tag' : selectedType == 'category'))}"> <span ng-class="{selected: (node.id == selectedId && (node.isTag ? selectedType == 'tag' : selectedType == 'category'))}">
<span ng-class="{unread: unreadCount({category:node})}" class="bidi-embed"> <span ng-class="{unread: unreadCount({category:node})}" class="bidi-embed"> {{categoryLabel(node)}} </span>
{{categoryLabel(node)}} <span class="unread-counter"> {{categoryCountLabel(node)}} </span>
</span>
<span class="unread-counter">
{{categoryCountLabel(node)}}
</span>
</span> </span>
</div> </div>
</div> </div>
<ul ng-show="node.expanded && showChildren"> <ul ng-show="node.expanded && showChildren">
<recursive> <recursive> <category ng-repeat="child in node.children"
<category ng-repeat="child in node.children" ng-show="settingsService.settings.showRead == true || unreadCount({category:node}) > 0" ng-show="settingsService.settings.showRead == true || unreadCount({category:node}) > 0" node="child" level="level + 1"
node="child" level="level + 1" selected-type="selectedType" selected-type="selectedType" selected-id="selectedId" show-label="true" show-children="true"
selected-id="selectedId" show-label="true" show-children="true" unread-count="unreadCount({category:category})"> </category> </recursive>
unread-count="unreadCount({category:category})">
</category>
</recursive>
<li ng-repeat="feed in node.feeds" ng-class="getClass(level)" class="tree-item" draggable="feed" droppable="feed" <li ng-repeat="feed in node.feeds" ng-class="getClass(level)" class="tree-item" draggable="feed" droppable="feed"
ng-show="settingsService.settings.showRead == true || feed.unread > 0"> ng-show="settingsService.settings.showRead == true || feed.unread > 0">
<div class="pull-right" ng-click="showFeedDetails(feed)"> <div class="pull-right" ng-click="showFeedDetails(feed)">
<i class="icon-wrench config pointer"></i> <i class="icon-wrench config pointer"></i>
</div> </div>
<a ng-click="feedClicked(feed.id, $event)" ng-dblclick="showFeedDetails(feed)" class="feed-link" <a ng-click="feedClicked(feed.id, $event)" ng-dblclick="showFeedDetails(feed)" class="feed-link" href="{{feed.feedLink}}" target="_blank"
href="{{feed.feedLink}}" target="_blank"
ng-class="{error: feed.message && feed.errorCount > 10, selected: (feed.id == selectedId && selectedType == 'feed') }"> ng-class="{error: feed.message && feed.errorCount > 10, selected: (feed.id == selectedId && selectedType == 'feed') }">
<favicon url="feed.iconUrl" /> <favicon url="feed.iconUrl" />
<span ng-class="{unread: feed.unread}" class="bidi-embed"> <span ng-class="{unread: feed.unread}" class="bidi-embed"> {{feed.name}} </span>
{{feed.name}} <span class="unread-counter"> {{feedCountLabel(feed)}} </span>
</span>
<span class="unread-counter">
{{feedCountLabel(feed)}}
</span>
</a> </a>
</li> </li>
</ul> </ul>

View File

@@ -1,19 +1,17 @@
<div ng-controller="FeedSearchCtrl"> <div ng-controller="FeedSearchCtrl">
<div modal="feedSearchModal" close="close()" <div modal="feedSearchModal" close="close()" options="{dialogClass: 'modal feed-search-dialog'}">
options="{dialogClass: 'modal feed-search-dialog'}">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" ng-click="close()">&times;</button> <button type="button" class="close" ng-click="close()">&times;</button>
<h4> <h4>
<input ng-model="filter" class="filter-input" <input ng-model="filter" class="filter-input"
ui-keydown="{'up': 'focusPrevious($event)', 'down': 'focusNext($event)', 'enter': 'openFocused()' }" ui-keydown="{'up': 'focusPrevious($event)', 'down': 'focusNext($event)', 'enter': 'openFocused()' }" placeholder="${feedsearch.hint}"
placeholder="${feedsearch.hint}" focus="feedSearchModal"> focus="feedSearchModal">
</h4> </h4>
<small>${feedsearch.help}</small> <small>${feedsearch.help}</small>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<strong>${feedsearch.result_prefix}</strong> <strong>${feedsearch.result_prefix}</strong>
<span <span ng-repeat="feed in (filtered = (CategoryService.feeds | filter:{name: filter} | limitTo:40))">
ng-repeat="feed in (filtered = (CategoryService.feeds | filter:{name: filter} | limitTo:40))">
<span ng-class="{block: filter, focus: focus.id == feed.id}" class="feed-link"> <span ng-class="{block: filter, focus: focus.id == feed.id}" class="feed-link">
<a class=" pointer" ng-click="goToFeed(feed.id)"> <a class=" pointer" ng-click="goToFeed(feed.id)">
<favicon url="feed.iconUrl" /> <favicon url="feed.iconUrl" />

View File

@@ -1,3 +1,3 @@
<div ng-controller="FooterController"> <div ng-controller="FooterController">
<iframe ng-if="subToMeUrl" style="display:none;" ng-src='{{subToMeUrl}}'></iframe> <iframe ng-if="subToMeUrl" style="display: none;" ng-src='{{subToMeUrl}}'></iframe>
</div> </div>

View File

@@ -3,7 +3,7 @@
<dl class="dl-horizontal"> <dl class="dl-horizontal">
<dt>Mean</dt> <dt>Mean</dt>
<dd>{{metric.meanRate | number:2}}</dd> <dd>{{metric.meanRate | number:2}}</dd>
<dt>1 min</dt> <dt>1 min</dt>
<dd>{{metric.oneMinuteRate | number:2}}</dd> <dd>{{metric.oneMinuteRate | number:2}}</dd>
@@ -12,9 +12,9 @@
<dt>15 min</dt> <dt>15 min</dt>
<dd>{{metric.fifteenMinuteRate | number:2}}</dd> <dd>{{metric.fifteenMinuteRate | number:2}}</dd>
<dt>Total</dt> <dt>Total</dt>
<dd>{{metric.count}}</dd> <dd>{{metric.count}}</dd>
</dl> </dl>
</div> </div>

View File

@@ -4,19 +4,19 @@
<dt>k</dt> <dt>k</dt>
<dd>${about.shortcuts.open_previous_entry}</dd> <dd>${about.shortcuts.open_previous_entry}</dd>
<dt>${about.shortcuts.spacebar}</dt> <dt>${about.shortcuts.spacebar}</dt>
<dd>${about.shortcuts.move_page_down_up}</dd> <dd>${about.shortcuts.move_page_down_up}</dd>
<dt>n</dt> <dt>n</dt>
<dd>${about.shortcuts.focus_next_entry}</dd> <dd>${about.shortcuts.focus_next_entry}</dd>
<dt>p</dt> <dt>p</dt>
<dd>${about.shortcuts.focus_previous_entry}</dd> <dd>${about.shortcuts.focus_previous_entry}</dd>
<dt>shift+j,shift+n</dt> <dt>shift+j,shift+n</dt>
<dd>${about.shortcuts.open_next_feed}</dd> <dd>${about.shortcuts.open_next_feed}</dd>
<dt>shift+k,shift+p</dt> <dt>shift+k,shift+p</dt>
<dd>${about.shortcuts.open_previous_feed}</dd> <dd>${about.shortcuts.open_previous_feed}</dd>
@@ -25,35 +25,47 @@
<dt>v</dt> <dt>v</dt>
<dd>${about.shortcuts.open_current_entry_in_new_window}</dd> <dd>${about.shortcuts.open_current_entry_in_new_window}</dd>
<dt>b</dt> <dt>b</dt>
<dd>${about.shortcuts.open_current_entry_in_new_window_background}</dd> <dd>${about.shortcuts.open_current_entry_in_new_window_background}</dd>
<dt>s</dt> <dt>s</dt>
<dd>${about.shortcuts.star_unstar}</dd> <dd>${about.shortcuts.star_unstar}</dd>
<dt>m</dt> <dt>m</dt>
<dd>${about.shortcuts.mark_current_entry}</dd> <dd>${about.shortcuts.mark_current_entry}</dd>
<dt>shift+a</dt> <dt>shift+a</dt>
<dd>${about.shortcuts.mark_all_as_read}</dd> <dd>${about.shortcuts.mark_all_as_read}</dd>
<dt>${about.shortcuts.mouse_middleclick}</dt> <dt>${about.shortcuts.mouse_middleclick}</dt>
<dd>${about.shortcuts.open_in_new_tab_mark_as_read}</dd> <dd>${about.shortcuts.open_in_new_tab_mark_as_read}</dd>
<dt>f</dt> <dt>f</dt>
<dd>${about.shortcuts.fullscreen}</dd> <dd>${about.shortcuts.fullscreen}</dd>
<dt>+,-</dt> <dt>+,-</dt>
<dd>${about.shortcuts.font_size}</dd> <dd>${about.shortcuts.font_size}</dd>
<dt>g <i class="icon-arrow-right"></i> a</dt> <dt>
g
<i class="icon-arrow-right"></i>
a
</dt>
<dd>${about.shortcuts.go_to_all}</dd> <dd>${about.shortcuts.go_to_all}</dd>
<dt>g <i class="icon-arrow-right"></i> s</dt> <dt>
g
<i class="icon-arrow-right"></i>
s
</dt>
<dd>${about.shortcuts.go_to_starred}</dd> <dd>${about.shortcuts.go_to_starred}</dd>
<dt>g <i class="icon-arrow-right"></i> u</dt> <dt>
g
<i class="icon-arrow-right"></i>
u
</dt>
<dd>${about.shortcuts.feed_search}</dd> <dd>${about.shortcuts.feed_search}</dd>
</dl> </dl>

View File

@@ -1,109 +0,0 @@
<div ng-controller="SubscribeCtrl">
<div class="btn-group">
<button class="btn" ng-click="open()"><span class="icon-rss"></span> ${tree.subscribe}</button>
<button class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a ng-click="openImport()"><i class="icon-arrow-down"></i> ${tree.import}</a></li>
<li><a ng-click="openCategory()"><i class="icon-plus"></i> ${tree.new_category}</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn" ng-click="MobileService.toggleLeftMenu()" ng-if="MobileService.mobile">
<i class="icon-remove"></i> ${global.close}
</button>
</div>
<div modal="isOpen" close="close()" options="opts">
<div class="modal-header">
<button type="button" class="close" ng-click="close()">&times;</button>
<h4>${tree.subscribe}</h4>
</div>
<form name="subscribeForm" class="form-horizontal" ng-submit="save()">
<div class="modal-body">
<div class="control-group" ng-class="{error : !subscribeForm.url.$valid}">
<label class="control-label">${subscribe.feed_url}</label>
<div class="controls">
<input type="text" name="url" ng-model="sub.url" ng-blur="urlChanged()" placeholder="http://example.com/feed"
class="input-block-level" required ng-disabled="state=='loading'" focus="isOpen"></input>
<span class="help-block" ng-show="!subscribeForm.url.$valid">${global.required}</span>
</div>
</div>
<div class="control-group" ng-class="{error : !subscribeForm.title.$valid}">
<label class="control-label">${subscribe.feed_name}</label>
<div class="controls">
<input type="text" name="title" ng-model="sub.title"
class="input-block-level" required ng-disabled="state=='loading'"></input>
<span class="help-block" ng-show="!subscribeForm.title.$valid">${global.required}</span>
</div>
</div>
<div class="control-group" ng-class="{error : !subscribeForm.category.$valid}">
<label class="control-label">${subscribe.category}</label>
<div class="controls">
<select name="category" ng-model="sub.categoryId" class="input-block-level"
ng-options="cat.id as cat.name for cat in CategoryService.flatCategories" required>
</select>
<span class="help-block" ng-show="!subscribeForm.category.$valid">${global.required}</span>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn cancel" ng-click="close()" type="button">${global.cancel}</button>
<button class="btn btn-primary ok" type="submit" ng-disabled="state!='ok'">${global.save}</button>
</div>
</form>
</div>
<div modal="isOpenImport" close="closeImport()" options="opts">
<div class="modal-header">
<button type="button" class="close" ng-click="closeImport()">&times;</button>
<h4>${tree.import}</h4>
</div>
<form class="form-horizontal" action="rest/feed/import" method="post" enctype="multipart/form-data">
<div class="modal-body">
<div class="control-group">
<label class="control-label">${import.xml_file}</label>
<div class="controls">
<input type="file" name="file"></input>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn cancel" ng-click="closeImport()">${global.cancel}</button>
<button class="btn btn-primary ok" type="submit">${tree.import}</button>
</div>
</form>
</div>
<div modal="isOpenCategory" close="closeCategory()" options="opts">
<div class="modal-header">
<button type="button" class="close" ng-click="closeCategory()">&times;</button>
<h4>${tree.new_category}</h4>
</div>
<form name="categoryForm" class="form-horizontal" ng-submit="saveCategory()">
<div class="modal-body">
<div class="control-group" ng-class="{error : !categoryForm.name.$valid}">
<label class="control-label">${new_category.name}</label>
<div class="controls">
<input type="text" name="name" ng-model="cat.name" required></input>
<span class="help-block" ng-show="!categoryForm.name.$valid">${global.required}</span>
</div>
</div>
<div class="control-group" ng-class="{error : !categoryForm.category.$valid}">
<label class="control-label">${new_category.parent}</label>
<div class="controls">
<select name="category" ng-model="cat.parentId" class="input-block-level"
ng-options="cat.id as cat.name for cat in CategoryService.flatCategories"required>
</select>
<span class="help-block" ng-show="!categoryForm.category.$valid">${global.required}</span>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn cancel" ng-click="closeCategory()">${global.cancel}</button>
<button class="btn btn-primary ok" type="submit">${global.save}</button>
</div>
</form>
</div>
</div>

View File

@@ -1,84 +1,132 @@
<div ng-controller="ToolbarCtrl"> <div ng-controller="ToolbarCtrl">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="btn-group" ng-if="MobileService.mobile"> <div class="btn-group" ng-if="MobileService.mobile">
<button type="button" class="btn" ng-click="MobileService.toggleLeftMenu()"> <button type="button" class="btn btn-default" ng-click="MobileService.toggleLeftMenu()">
<i class="icon-list-alt"></i> <i class="icon-list-alt"></i>
</button> </button>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a type="button" class="btn" ng-click="previousEntry()" title="${toolbar.previous_entry}"><i class="icon-chevron-up"></i></a> <a type="button" class="btn btn-default" ng-click="previousEntry()" title="${toolbar.previous_entry}">
<a type="button" class="btn" ng-click="nextEntry()" title="${toolbar.next_entry}"><i class="icon-chevron-down"></i></a> <i class="icon-chevron-up"></i>
</a>
<a type="button" class="btn btn-default" ng-click="nextEntry()" title="${toolbar.next_entry}">
<i class="icon-chevron-down"></i>
</a>
<div class="btn-group"> <div class="btn-group">
<a type="button" class="btn" ng-click="refresh()" title="${toolbar.refresh}"><i class="icon-refresh"></i></a> <a type="button" class="btn btn-default" ng-click="refresh()" title="${toolbar.refresh}">
<button class="btn dropdown-toggle" data-toggle="dropdown"> <i class="icon-refresh"></i>
</a>
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span> <span class="caret"></span>
</button> </button>
<ul class="dropdown-menu pull-right"> <ul class="dropdown-menu pull-right">
<li><a ng-click="refreshAll()">${toolbar.refresh_all}</a></li> <li>
<a ng-click="refreshAll()">${toolbar.refresh_all}</a>
</li>
</ul> </ul>
</div> </div>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a type="button" class="btn" ng-click="markAllAsRead()" title="${toolbar.mark_all_as_read}"><i class="icon-ok"></i></a> <a type="button" class="btn btn-default" ng-click="markAllAsRead()" title="${toolbar.mark_all_as_read}">
<button class="btn dropdown-toggle" data-toggle="dropdown"> <i class="icon-ok"></i>
</a>
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span> <span class="caret"></span>
</button> </button>
<ul class="dropdown-menu pull-right"> <ul class="dropdown-menu pull-right">
<li><a ng-click="markAll12Hours()">${toolbar.mark_all_older_12_hours}</a></li> <li>
<li><a ng-click="markAllDay()">${toolbar.mark_all_older_day}</a></li> <a ng-click="markAll12Hours()">${toolbar.mark_all_older_12_hours}</a>
<li><a ng-click="markAllWeek()">${toolbar.mark_all_older_week}</a></li> </li>
<li><a ng-click="markAllTwoWeeks()">${toolbar.mark_all_older_two_weeks}</a></li> <li>
<a ng-click="markAllDay()">${toolbar.mark_all_older_day}</a>
</li>
<li>
<a ng-click="markAllWeek()">${toolbar.mark_all_older_week}</a>
</li>
<li>
<a ng-click="markAllTwoWeeks()">${toolbar.mark_all_older_two_weeks}</a>
</li>
</ul> </ul>
</div> </div>
<div class="btn-group toolbar-expand" ng-if="MobileService.mobile"> <div class="btn-group toolbar-expand" ng-if="MobileService.mobile">
<button type="button" class="btn" ng-click="MobileService.toggleRightMenu()"> <button type="button" class="btn btn-default" ng-click="MobileService.toggleRightMenu()">
<i ng-class="{'icon-double-angle-right' : !MobileService.rightMenu, 'icon-double-angle-left': MobileService.rightMenu}"></i> <i ng-class="{'icon-double-angle-right' : !MobileService.rightMenu, 'icon-double-angle-left': MobileService.rightMenu}"></i>
</button> </button>
</div> </div>
<div class="actions btn-group"> <div class="actions btn-group">
<div ng-if="!MobileService.mobile || MobileService.rightMenu"> <div ng-if="!MobileService.mobile || MobileService.rightMenu">
<div class="btn-group read-mode" data-toggle="buttons-radio"> <div class="btn-group read-mode" data-toggle="buttons-radio">
<button type="button" class="btn" ng-model="settingsService.settings.readingMode" btn-radio="'unread'">${toolbar.unread}</button> <button type="button" class="btn btn-default" ng-model="settingsService.settings.readingMode" btn-radio="'unread'">${toolbar.unread}</button>
<button type="button" class="btn" ng-model="settingsService.settings.readingMode" btn-radio="'all'">${toolbar.all}</button> <button type="button" class="btn btn-default" ng-model="settingsService.settings.readingMode" btn-radio="'all'">${toolbar.all}</button>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a type="button" class="btn" ng-click="toggleOrder()" title="${toolbar.sort_by_asc_desc}"> <a type="button" class="btn btn-default" ng-click="toggleOrder()" title="${toolbar.sort_by_asc_desc}">
<i ng-class="{'icon-arrow-up' : settingsService.settings.readingOrder == 'asc', 'icon-arrow-down': settingsService.settings.readingOrder == 'desc'}"></i> <i
ng-class="{'icon-arrow-up' : settingsService.settings.readingOrder == 'asc', 'icon-arrow-down': settingsService.settings.readingOrder == 'desc'}"></i>
</a> </a>
</div> </div>
<div class="btn-group" data-toggle="buttons-radio"> <div class="btn-group" data-toggle="buttons-radio">
<a type="button" class="btn" ng-model="settingsService.settings.viewMode" btn-radio="'title'" title="${toolbar.titles_only}"><i class="icon-list"></i></a> <a type="button" class="btn btn-default" ng-model="settingsService.settings.viewMode" btn-radio="'title'"
<a type="button" class="btn" ng-model="settingsService.settings.viewMode" btn-radio="'expanded'" title="${toolbar.expanded_view}"><i class="icon-th-list"></i></a> title="${toolbar.titles_only}">
<i class="icon-list"></i>
</a>
<a type="button" class="btn btn-default" ng-model="settingsService.settings.viewMode" btn-radio="'expanded'"
title="${toolbar.expanded_view}">
<i class="icon-th-list"></i>
</a>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a class="btn" ng-click="toSettings()" title="${toolbar.settings}"><i class="icon-cog"></i></a> <a class="btn btn-default" ng-click="toSettings()" title="${toolbar.settings}">
<button class="btn dropdown-toggle" data-toggle="dropdown"> <i class="icon-cog"></i>
</a>
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span> <span class="caret"></span>
</button> </button>
<ul class="dropdown-menu pull-right"> <ul class="dropdown-menu pull-right">
<li><a ng-click="toProfile()"><i class="icon-user"></i> ${toolbar.profile}</a></li> <li>
<li ng-show="session.admin"><a ng-click="toAdmin()"><i class="icon-edit"></i> ${toolbar.admin}</a></li> <a ng-click="toProfile()">
<i class="icon-user"></i>
${toolbar.profile}
</a>
</li>
<li ng-show="session.admin">
<a ng-click="toAdmin()">
<i class="icon-edit"></i>
${toolbar.admin}
</a>
</li>
<li class="divider"></li> <li class="divider"></li>
<li><a href="logout"><i class="icon-off"></i> ${toolbar.logout}</a></li> <li>
<a href="logout">
<i class="icon-off"></i>
${toolbar.logout}
</a>
</li>
</ul> </ul>
</div> </div>
<form ng-submit="search()" class="btn-group input-append" ng-if="!MobileService.mobile"> <div class="btn-group">
<input type="text" ng-model="keywords"></input> <form ng-submit="search()" class="input-group keywords" ng-if="!MobileService.mobile">
<button class="btn" type="submit"><i class="icon-search"></i></button> <input type="text" class="form-control" ng-model="keywords"></input>
</form> <span class="input-group-btn">
<button class="btn btn-default" type="submit">
<i class="icon-search"></i>
</button>
</span>
</form>
</div>
<div class="btn-group donate"> <div class="btn-group donate">
<a class="btn btn-success" type="button" ng-click="toHelp()" title="${toolbar.about} / ${toolbar.donate}"> <a class="btn btn-success" type="button" ng-click="toHelp()" title="${toolbar.about} / ${toolbar.donate}">
<i class="icon-info-sign"></i> <i class="icon-info-sign"></i>
</a> </a>
</div> </div>
</div> </div>
</div> </div>
<div spinner shown="loading"></div> <div spinner shown="loading"></div>

View File

@@ -1,15 +1,48 @@
<div class="css-treeview" ng-controller="CategoryTreeCtrl"> <div>
<ul> <div class="btn-group">
<category node="CategoryService.subscriptions" show-label="'${tree.all}'" show-children="false" level="0" selected-type="selectedType" <button class="btn btn-default" ui-sref="feeds.subscribe">
selected-id="selectedId" unread-count="unreadCount(category)"> </category> <span class="icon-rss"></span>
<category node="starred" show-label="'${tree.starred}'" show-children="false" level="0" selected-type="selectedType" ${tree.subscribe}
selected-id="selectedId" unread-count="unreadCount(category)"> </category> </button>
<category node="CategoryService.subscriptions" show-label="false" show-children="true" level="0" selected-type="selectedType" <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
selected-id="selectedId" unread-count="unreadCount(category)"> </category> <span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<a ui-sref="feeds.new_category">
<i class="icon-plus"></i>
${tree.new_category}
</a>
</li>
<li>
<a ui-sref="feeds.import">
<i class="icon-arrow-down"></i>
${tree.import}
</a>
</li>
</ul>
</div>
<li ng-repeat="tag in tags | orderBy: 'name'"> <div class="btn-group">
<category node="tag" show-label="tag.name" show-children="false" level="0" selected-type="selectedType" selected-id="selectedId" <button type="button" class="btn btn-default" ng-click="MobileService.toggleLeftMenu()" ng-if="MobileService.mobile">
unread-count="unreadCount(category)"> </category> <i class="icon-remove"></i>
</li> ${global.close}
</ul> </button>
</div>
<div class="css-treeview" ng-controller="CategoryTreeCtrl">
<ul>
<category node="CategoryService.subscriptions" show-label="'${tree.all}'" show-children="false" level="0" selected-type="selectedType"
selected-id="selectedId" unread-count="unreadCount(category)"> </category>
<category node="starred" show-label="'${tree.starred}'" show-children="false" level="0" selected-type="selectedType"
selected-id="selectedId" unread-count="unreadCount(category)"> </category>
<category node="CategoryService.subscriptions" show-label="false" show-children="true" level="0" selected-type="selectedType"
selected-id="selectedId" unread-count="unreadCount(category)"> </category>
<li ng-repeat="tag in tags | orderBy: 'name'">
<category node="tag" show-label="tag.name" show-children="false" level="0" selected-type="selectedType" selected-id="selectedId"
unread-count="unreadCount(category)"> </category>
</li>
</ul>
</div>
</div> </div>

View File

@@ -4,10 +4,14 @@
<metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshUpdater.feedUpdated']" label="'Feed updated (/sec)'"></metric-meter> <metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshUpdater.feedUpdated']" label="'Feed updated (/sec)'"></metric-meter>
<metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshUpdater.entryCacheHit']" label="'Entry cache hit (/sec)'"></metric-meter> <metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshUpdater.entryCacheHit']" label="'Entry cache hit (/sec)'"></metric-meter>
<metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshUpdater.entryCacheMiss']" label="'Entry cache miss (/sec)'"></metric-meter> <metric-meter metric="metrics.meters['com.commafeed.backend.feeds.FeedRefreshUpdater.entryCacheMiss']" label="'Entry cache miss (/sec)'"></metric-meter>
<metric-gauge metric="metrics.gauges['com.commafeed.backend.feeds.FeedRefreshExecutor.feed-refresh-updater.active']" label="'Feed Updater active'"></metric-gauge> <metric-gauge metric="metrics.gauges['com.commafeed.backend.feeds.FeedRefreshExecutor.feed-refresh-updater.active']"
<metric-gauge metric="metrics.gauges['com.commafeed.backend.feeds.FeedRefreshExecutor.feed-refresh-updater.pending']" label="'Feed Updater queued'"></metric-gauge> label="'Feed Updater active'"></metric-gauge>
<metric-gauge metric="metrics.gauges['com.commafeed.backend.feeds.FeedRefreshExecutor.feed-refresh-updater.pending']"
<metric-gauge metric="metrics.gauges['com.commafeed.backend.feeds.FeedRefreshExecutor.feed-refresh-worker.active']" label="'Feed Worker active'"></metric-gauge> label="'Feed Updater queued'"></metric-gauge>
<metric-gauge metric="metrics.gauges['com.commafeed.backend.feeds.FeedRefreshExecutor.feed-refresh-worker.pending']" label="'Feed Worker queued'"></metric-gauge>
<metric-gauge metric="metrics.gauges['com.commafeed.backend.feeds.FeedRefreshExecutor.feed-refresh-worker.active']"
label="'Feed Worker active'"></metric-gauge>
<metric-gauge metric="metrics.gauges['com.commafeed.backend.feeds.FeedRefreshExecutor.feed-refresh-worker.pending']"
label="'Feed Worker queued'"></metric-gauge>
</div> </div>

View File

@@ -10,182 +10,171 @@
<div> <div>
<form name="settingsForm" class="form-horizontal" ng-submit="save()"> <form name="settingsForm" class="form-horizontal" ng-submit="save()">
<div class="row-fluid"> <div class="row">
<div class="span6"> <div class="col-md-6">
<div class="control-group"> <div class="form-group">
<label class="control-label" for="publicUrl">Public URL</label> <label class="control-label col-sm-3" for="publicUrl">Public URL</label>
<div class="controls"> <div class="col-sm-9">
<input type="text" id="publicUrl" name="publicUrl" class="input-block-level" <input type="text" id="publicUrl" name="publicUrl" class="form-control" placeholder="http://localhost:8082/commafeed"
placeholder="http://localhost:8082/commafeed" ng-model="settings.publicUrl" /> ng-model="settings.publicUrl" />
<span class="help-block">The URL in your address bar right now, up to the # (not included)</span> <span class="help-block">The URL in your address bar right now, up to the # (not included)</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="allowRegistrations">Allow <label class="control-label col-sm-3" for="publicUrl">Allow registrations</label>
registrations</label> <div class="col-sm-9">
<div class="controls"> <div class="checkbox">
<input type="checkbox" id="allowRegistrations" class="input-block-level" <input type="checkbox" id="allowRegistrations" name="allowRegistrations" ng-model="settings.allowRegistrations" />
name="allowRegistrations" ng-model="settings.allowRegistrations" /> </div>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="feedbackButton">Feedback <label class="control-label col-sm-3" for="feedbackButton">Feedback button</label>
button</label> <div class="col-sm-9">
<div class="controls"> <div class="checkbox">
<input type="checkbox" id="feedbackButton" name="feedbackButton" <input type="checkbox" id="feedbackButton" name="feedbackButton" ng-model="settings.feedbackButton" />
class="input-block-level" ng-model="settings.feedbackButton" /> </div>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="googleClientId">Google <label class="control-label col-sm-3" for="googleClientId">Google client ID</label>
client ID</label> <div class="col-sm-9">
<div class="controls"> <input type="text" name="googleClientId" class="form-control" ng-model="settings.googleClientId" />
<input type="text" name="googleClientId" class="input-block-level"
ng-model="settings.googleClientId" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="googleClientSecret">Google <label class="control-label col-sm-3" for="googleClientSecret">Google client secret</label>
client secret</label> <div class="col-sm-9">
<div class="controls"> <input type="text" name="googleClientSecret" class="form-control" ng-model="settings.googleClientSecret" />
<input type="text" name="googleClientSecret" class="input-block-level"
ng-model="settings.googleClientSecret" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="googleAnalyticsTrackingCode">Google <label class="control-label col-sm-3" for="googleAnalyticsTrackingCode">Google Analytics tracking code</label>
Analytics tracking code</label> <div class="col-sm-9">
<div class="controls"> <input type="text" name="googleAnalyticsTrackingCode" class="form-control" ng-model="settings.googleAnalyticsTrackingCode" />
<input type="text" name="googleAnalyticsTrackingCode" class="input-block-level"
ng-model="settings.googleAnalyticsTrackingCode" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="googleClientSecret">Background HTTP <label class="control-label col-sm-3" for="googleClientSecret">Background HTTP threads</label>
threads</label> <div class="col-sm-9">
<div class="controls"> <input type="number" name="backgroundThreads" class="form-control" ng-model="settings.backgroundThreads" />
<input type="number" name="backgroundThreads" class="input-block-level"
ng-model="settings.backgroundThreads" />
<span class="help-inline">Requires restart</span> <span class="help-inline">Requires restart</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="databaseUpdateThreads">Database update <label class="control-label col-sm-3" for="databaseUpdateThreads">Database update threads</label>
threads</label> <div class="col-sm-9">
<div class="controls"> <input type="number" name="databaseUpdateThreads" class="form-control" ng-model="settings.databaseUpdateThreads" />
<input type="number" name="databaseUpdateThreads" class="input-block-level"
ng-model="settings.databaseUpdateThreads" />
<span class="help-inline">Requires restart</span> <span class="help-inline">Requires restart</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="announcement">Announcement</label> <label class="control-label col-sm-3" for="announcement">Announcement</label>
<div class="controls"> <div class="col-sm-9">
<textarea name="announcement" rows="10" class="input-block-level" <textarea name="announcement" rows="10" class="form-control" ng-model="settings.announcement">
ng-model="settings.announcement">
</textarea> </textarea>
</div> </div>
</div> </div>
</div> </div>
<div class="span6"> <div class="col-md-6">
<div class="control-group"> <div class="form-group">
<label class="control-label" for="announcement">SMTP Host</label> <label class="control-label col-sm-3" for="announcement">SMTP Host</label>
<div class="controls"> <div class="col-sm-9">
<input type="text" name="smtpHost" class="input-block-level" <input type="text" name="smtpHost" class="form-control" ng-model="settings.smtpHost" />
ng-model="settings.smtpHost" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="announcement">SMTP Port</label> <label class="control-label col-sm-3" for="announcement">SMTP Port</label>
<div class="controls"> <div class="col-sm-9">
<input type="text" name="smtpPort" class="input-block-level" <input type="text" name="smtpPort" class="form-control" ng-model="settings.smtpPort" />
ng-model="settings.smtpPort" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="smtpTls">SMTP TLS </label> <label class="control-label col-sm-3" for="smtpTls">SMTP TLS </label>
<div class="controls"> <div class="col-sm-9">
<input type="checkbox" name="smtpTls" class="input-block-level" <div class="checkbox">
ng-model="settings.smtpTls" /> <input type="checkbox" name="smtpTls" ng-model="settings.smtpTls" />
</div>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="smtpUserName">SMTP <label class="control-label col-sm-3" for="smtpUserName">SMTP Username</label>
Username</label> <div class="col-sm-9">
<div class="controls"> <input type="text" name="smtpUserName" class="form-control" ng-model="settings.smtpUserName" />
<input type="text" name="smtpUserName" class="input-block-level"
ng-model="settings.smtpUserName" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="smtpPassword">SMTP <label class="control-label col-sm-3" for="smtpPassword">SMTP Password</label>
Password</label> <div class="col-sm-9">
<div class="controls"> <input type="password" name="smtpPassword" class="form-control" ng-model="settings.smtpPassword" />
<input type="password" name="smtpPassword" class="input-block-level"
ng-model="settings.smtpPassword" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="heavyLoad">Heavy load</label> <label class="control-label col-sm-3" for="heavyLoad">Heavy load</label>
<div class="controls"> <div class="col-sm-9">
<input type="checkbox" name="heavyLoad" ng-model="settings.heavyLoad" /> <div class="checkbox">
<span class="help-block">Don't use this unless you know what you're doing!</span> <input type="checkbox" name="heavyLoad" ng-model="settings.heavyLoad" />
<span class="help-block">Don't use this unless you know what you're doing!</span>
</div>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="pubsubhubbub">PubSubHubbub</label> <label class="control-label col-sm-3" for="pubsubhubbub">PubSubHubbub</label>
<div class="controls"> <div class="col-sm-9">
<input type="checkbox" name="pubsubhubbub" ng-model="settings.pubsubhubbub" /> <div class="checkbox">
<input type="checkbox" name="pubsubhubbub" ng-model="settings.pubsubhubbub" />
</div>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="imageProxyEnabled">Proxy entry images</label> <label class="control-label col-sm-3" for="imageProxyEnabled">Proxy entry images</label>
<div class="controls"> <div class="col-sm-9">
<input type="checkbox" name="imageProxyEnabled" ng-model="settings.imageProxyEnabled" /> <div class="checkbox">
<input type="checkbox" name="imageProxyEnabled" ng-model="settings.imageProxyEnabled" />
</div>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="logLevel">Logging level</label> <label class="control-label col-sm-3" for="logLevel">Logging level</label>
<div class="controls"> <div class="col-sm-9">
<select name="logLevel" ng-model="settings.logLevel" class="input-block-level" <select name="logLevel" ng-model="settings.logLevel" class="form-control"
ng-options="level for level in ['DEBUG', 'INFO', 'WARN', 'ERROR']"> ng-options="level for level in ['DEBUG', 'INFO', 'WARN', 'ERROR']">
</select> </select>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="logLevel">Database query timeout (ms)</label> <label class="control-label col-sm-3" for="logLevel">Database query timeout (ms)</label>
<div class="controls"> <div class="col-sm-9">
<input type="number" name="queryTimeout" class="input-block-level" <input type="number" name="queryTimeout" class="form-control" ng-model="settings.queryTimeout" />
ng-model="settings.queryTimeout" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="keepStatusDays">Keep read status for (days)</label> <label class="control-label col-sm-3" for="keepStatusDays">Keep read status for (days)</label>
<div class="controls"> <div class="col-sm-9">
<input type="number" name="keepStatusDays" class="input-block-level" <input type="number" name="keepStatusDays" class="form-control" ng-model="settings.keepStatusDays" />
ng-model="settings.keepStatusDays" />
<span class="help-inline">0 = keep forever</span> <span class="help-inline">0 = keep forever</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="refreshIntervalMinutes">Refresh feeds every (minutes)</label> <label class="control-label col-sm-3" for="refreshIntervalMinutes">Refresh feeds every (minutes)</label>
<div class="controls"> <div class="col-sm-9">
<input type="number" name="refreshIntervalMinutes" class="input-block-level" min="1" <input type="number" name="refreshIntervalMinutes" class="form-control" min="1" ng-model="settings.refreshIntervalMinutes" />
ng-model="settings.refreshIntervalMinutes" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="crawlingPaused">Pause crawling</label> <label class="control-label col-sm-3" for="crawlingPaused">Pause crawling</label>
<div class="controls"> <div class="col-sm-9">
<input type="checkbox" name="crawlingPaused" ng-model="settings.crawlingPaused" /> <div class="checkbox">
<input type="checkbox" name="crawlingPaused" ng-model="settings.crawlingPaused" />
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="control-group"> <div class="row">
<div class="controls"> <div class="text-center form-group">
<button type="button" class="btn" ng-click="cancel()">Cancel</button>
<button type="submit" class="btn btn-primary">Save</button> <button type="submit" class="btn btn-primary">Save</button>
<button type="button" class="btn btn-default" ng-click="cancel()">Cancel</button>
</div> </div>
</div> </div>
</form> </form>

View File

@@ -3,42 +3,37 @@
<h1>Add user</h1> <h1>Add user</h1>
</div> </div>
<alert ng-repeat="alert in alerts" type="alert.type" <alert ng-repeat="alert in alerts" type="alert.type" close="closeAlert($index)">{{alert.msg}}</alert>
close="closeAlert($index)">{{alert.msg}}</alert>
<form name="userAddForm" class="form-horizontal" ng-submit="save()"> <form name="userAddForm" class="form-horizontal" ng-submit="save()">
<div class="control-group" <div class="form-group" ng-class="{error : !userAddForm.name.$valid}">
ng-class="{error : !userAddForm.name.$valid}"> <label class="col-sm-2 control-label" for="name">User name</label>
<label class="control-label" for="name">User name</label> <div class="col-sm-10">
<div class="controls"> <input type="text" id="name" name="name" ng-model="user.name" required class="form-control" />
<input type="text" id="name" name="name" ng-model="user.name"
required />
</div> </div>
</div> </div>
<div class="control-group" <div class="form-group" ng-class="{error : !userAddForm.password.$valid}">
ng-class="{error : !userAddForm.password.$valid}"> <label class="col-sm-2 control-label" for="password">Password</label>
<label class="control-label" for="password">Password</label> <div class="col-sm-10">
<div class="controls"> <input type="password" id="password" name="password" class="form-control" ng-model="user.password" required />
<input type="password" id="password" name="password"
ng-model="user.password" required />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="admin">Admin</label> <label class="col-sm-2 control-label" for="admin">Admin</label>
<div class="controls"> <div class="col-sm-10">
<input type="checkbox" name="admin" ng-model="user.admin" /> <input type="checkbox" name="admin" ng-model="user.admin" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="enabled">Enabled</label> <label class="col-sm-2 control-label" for="enabled">Enabled</label>
<div class="controls"> <div class="col-sm-10">
<input type="checkbox" name="enabled" ng-model="user.enabled" /> <input type="checkbox" name="enabled" ng-model="user.enabled" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<div class="controls"> <div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn" ng-click="cancel()">Cancel</button>
<button type="submit" class="btn btn-primary">Save</button> <button type="submit" class="btn btn-primary">Save</button>
<button type="button" class="btn btn-default" ng-click="cancel()">Cancel</button>
</div> </div>
</div> </div>
</form> </form>

View File

@@ -3,51 +3,45 @@
<h1>Edit user</h1> <h1>Edit user</h1>
</div> </div>
<alert ng-repeat="alert in alerts" type="alert.type" <alert ng-repeat="alert in alerts" type="alert.type" close="closeAlert($index)">{{alert.msg}}</alert>
close="closeAlert($index)">{{alert.msg}}</alert>
<form name="userAddForm" class="form-horizontal" ng-submit="save()"> <form name="userAddForm" class="form-horizontal" ng-submit="save()">
<div class="control-group" <div class="form-group" ng-class="{error : !userAddForm.name.$valid}">
ng-class="{error : !userAddForm.name.$valid}"> <label class="col-sm-2 control-label" for="name">User name</label>
<label class="control-label" for="name">User name</label> <div class="col-sm-10">
<div class="controls"> <input type="text" id="name" name="name" ng-model="user.name" class="form-control" required />
<input type="text" id="name" name="name" ng-model="user.name"
required />
</div> </div>
</div> </div>
<div class="control-group" <div class="form-group" ng-class="{error : !userAddForm.password.$valid}">
ng-class="{error : !userAddForm.password.$valid}"> <label class="col-sm-2 control-label" for="password">Password</label>
<label class="control-label" for="password">Password</label> <div class="col-sm-10">
<div class="controls"> <input type="password" id="password" name="password" class="form-control" ng-model="user.password" />
<input type="password" id="password" name="password" <span class="help-block">Leave blank if you don't want to change the password.</span>
ng-model="user.password" />
<span class="help-block">Leave blank if you don't want to change the password.</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="email">Email</label> <label class="col-sm-2 control-label" for="email">Email</label>
<div class="controls"> <div class="col-sm-10">
<input type="text" id="email" name="email" ng-model="user.email" <input type="text" id="email" name="email" ng-model="user.email" class="form-control" required />
required />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="admin">Admin</label> <label class="col-sm-2 control-label" for="admin">Admin</label>
<div class="controls"> <div class="col-sm-10">
<input type="checkbox" name="admin" ng-model="user.admin" /> <input type="checkbox" name="admin" ng-model="user.admin" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="enabled">Enabled</label> <label class="col-sm-2 control-label" for="enabled">Enabled</label>
<div class="controls"> <div class="col-sm-10">
<input type="checkbox" name="enabled" ng-model="user.enabled" /> <input type="checkbox" name="enabled" ng-model="user.enabled" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<div class="controls"> <div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn" ng-click="cancel()">Cancel</button>
<button type="button" class="btn btn-danger" ng-click="remove()">Delete</button>
<button type="submit" class="btn btn-primary">Save</button> <button type="submit" class="btn btn-primary">Save</button>
<button type="button" class="btn btn-danger" ng-click="remove()">Delete</button>
<button type="button" class="btn btn-default" ng-click="cancel()">Cancel</button>
</div> </div>
</div> </div>
</form> </form>

View File

@@ -5,8 +5,8 @@
<div> <div>
<div class="button-bar"> <div class="button-bar">
<button class="btn" ng-click="addUser()">Add user</button> <button class="btn btn-default" ng-click="addUser()">Add user</button>
<button class="btn" ng-click="back()">Back</button> <button class="btn btn-default" ng-click="back()">Back</button>
</div> </div>
<div class="users-table" ng-grid="gridOptions"></div> <div class="users-table" ng-grid="gridOptions"></div>
</div> </div>

View File

@@ -3,43 +3,45 @@
<h3>${details.category_details}</h3> <h3>${details.category_details}</h3>
</div> </div>
<form name="form" class="form-horizontal" ng-submit="save()"> <form name="form" class="form-horizontal" ng-submit="save()">
<div class="control-group" ng-class="{error : !form.name.$valid}" ng-if="!isMeta()"> <div class="form-group" ng-class="{error : !form.name.$valid}" ng-if="!isMeta()">
<label class="control-label">${details.name}</label> <label class="col-sm-2 control-label">${details.name}</label>
<div class="controls"> <div class="col-sm-10">
<input type="text" name="name" ng-model="category.name" class="input-block-level" required></input> <input type="text" name="name" ng-model="category.name" class="form-control" required></input>
<span class="help-block" ng-show="!form.name.$valid">${global.required}</span> <span class="help-block" ng-show="!form.name.$valid">${global.required}</span>
</div> </div>
</div> </div>
<div class="control-group" ng-class="{error : !form.category.$valid}" ng-if="!isMeta()"> <div class="form-group" ng-class="{error : !form.category.$valid}" ng-if="!isMeta()">
<label class="control-label">${details.parent_category}</label> <label class="col-sm-2 control-label">${details.parent_category}</label>
<div class="controls"> <div class="col-sm-10">
<select name="category" class="input-block-level" ng-model="category.parentId" <select name="category" class="form-control" ng-model="category.parentId"
ng-options="cat.id as cat.name for cat in CategoryService.flatCategories | filter: filterCurrent"> ng-options="cat.id as cat.name for cat in CategoryService.flatCategories | filter: filterCurrent">
</select> </select>
<span class="help-block" ng-show="!form.category.$valid">${global.required}</span> <span class="help-block" ng-show="!form.category.$valid">${global.required}</span>
</div> </div>
</div> </div>
<div class="control-group" ng-if="!isMeta()"> <div class="form-group" ng-if="!isMeta()">
<label class="control-label">${details.position}</label> <label class="col-sm-2 control-label">${details.position}</label>
<div class="controls"> <div class="col-sm-10">
<input type="number" min="0" ng-model="category.position" /> <input type="number" min="0" ng-model="category.position" class="form-control" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label">${details.feed_url}</label> <label class="col-sm-2 control-label">${details.feed_url}</label>
<div class="controls horizontal-align"> <div class="col-sm-10 checkbox">
<a ng-show="user.apiKey" href="{{'rest/category/entriesAsFeed?id=' + category.id + '&apiKey=' + user.apiKey}}" target="_blank">${global.link}</a> <a ng-show="user.apiKey" href="{{'rest/category/entriesAsFeed?id=' + category.id + '&apiKey=' + user.apiKey}}" target="_blank">${global.link}</a>
<span ng-show="!user.apiKey">${details.generate_api_key_first}</span> <span ng-show="!user.apiKey">${details.generate_api_key_first}</span>
</div> </div>
</div> </div>
<div class="form-actions"> <div class="form-group">
<button type="submit" class="btn btn-primary" ng-if="!isMeta()">${global.save}</button> <div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn" ng-click="back()">${global.cancel}</button> <button type="submit" class="btn btn-primary" ng-if="!isMeta()">${global.save}</button>
<button type="button" class="btn btn-danger" ng-click="deleteCategory()" ng-if="!isMeta()">${global.delete}</button> <button type="button" class="btn btn-danger" ng-click="deleteCategory()" ng-if="!isMeta()">${global.delete}</button>
<button type="button" class="btn btn-default" ng-click="back()">${global.cancel}</button>
</div>
</div> </div>
</form> </form>

View File

@@ -3,76 +3,77 @@
<h3>${details.feed_details}</h3> <h3>${details.feed_details}</h3>
</div> </div>
<form name="form" class="form-horizontal" ng-submit="save()"> <form name="form" class="form-horizontal" ng-submit="save()">
<div class="control-group"> <div class="form-group">
<label class="control-label">${details.url}</label> <label class="col-sm-2 control-label">${details.url}</label>
<div class="controls horizontal-align"> <div class="col-sm-10 checkbox">
<a href="{{sub.feedUrl}}" target="_blank">{{sub.feedUrl}}</a> <a href="{{sub.feedUrl}}" target="_blank">{{sub.feedUrl}}</a>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label">${details.website}</label> <label class="col-sm-2 control-label">${details.website}</label>
<div class="controls horizontal-align"> <div class="col-sm-10 checkbox">
<a href="{{sub.feedLink}}" target="_blank">{{sub.feedLink}}</a> <a href="{{sub.feedLink}}" target="_blank">{{sub.feedLink}}</a>
</div> </div>
</div> </div>
<div class="control-group" ng-class="{error : !form.name.$valid}"> <div class="form-group" ng-class="{error : !form.name.$valid}">
<label class="control-label">${details.name}</label> <label class="col-sm-2 control-label">${details.name}</label>
<div class="controls"> <div class="col-sm-10">
<input type="text" name="name" ng-model="sub.name" class="input-block-level" required></input> <input type="text" name="name" ng-model="sub.name" class="form-control" required></input> <span class="help-block"
<span class="help-block" ng-show="!form.name.$valid">${global.required}</span> ng-show="!form.name.$valid">${global.required}</span>
</div> </div>
</div> </div>
<div class="control-group" ng-class="{error : !form.category.$valid}"> <div class="form-group" ng-class="{error : !form.category.$valid}">
<label class="control-label">${details.category}</label> <label class="col-sm-2 control-label">${details.category}</label>
<div class="controls"> <div class="col-sm-10">
<select name="category" class="input-block-level" ng-model="sub.categoryId" <select name="category" class="form-control" ng-model="sub.categoryId"
ng-options="cat.id as cat.name for cat in CategoryService.flatCategories"> ng-options="cat.id as cat.name for cat in CategoryService.flatCategories">
</select> </select> <span class="help-block" ng-show="!form.category.$valid">${global.required}</span>
<span class="help-block" ng-show="!form.category.$valid">${global.required}</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label">${details.position}</label> <label class="col-sm-2 control-label">${details.position}</label>
<div class="controls"> <div class="col-sm-10">
<input type="number" min="0" ng-model="sub.position" /> <input type="number" min="0" ng-model="sub.position" class="form-control" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label">${details.last_refresh}</label> <label class="col-sm-2 control-label">${details.last_refresh}</label>
<div class="controls horizontal-align"> <div class="col-sm-10 checkbox">
<span>{{sub.lastRefresh|entryDate}}</span> <span>{{sub.lastRefresh|entryDate}}</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label">${details.next_refresh}</label> <label class="col-sm-2 control-label">${details.next_refresh}</label>
<div class="controls horizontal-align"> <div class="col-sm-10 checkbox">
<span>{{sub.nextRefresh|entryDate:"${details.queued_for_refresh}" }}</span> <span>{{sub.nextRefresh|entryDate:"${details.queued_for_refresh}" }}</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label">${details.message}</label> <label class="col-sm-2 control-label">${details.message}</label>
<div class="controls horizontal-align"> <div class="col-sm-10 checkbox">
<span>{{sub.message}}</span> <span>{{sub.message}}</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label">${details.feed_url}</label> <label class="col-sm-2 control-label">${details.feed_url}</label>
<div class="controls horizontal-align"> <div class="col-sm-10 checkbox">
<a ng-show="user.apiKey" href="{{'rest/feed/entriesAsFeed?id=' + sub.id + '&apiKey=' + user.apiKey}}" target="_blank">${global.link}</a> <a ng-show="user.apiKey" href="{{'rest/feed/entriesAsFeed?id=' + sub.id + '&apiKey=' + user.apiKey}}" target="_blank">${global.link}</a>
<span ng-show="!user.apiKey">${details.generate_api_key_first}</span> <span ng-show="!user.apiKey">${details.generate_api_key_first}</span>
</div> </div>
</div> </div>
<div class="form-actions"> <div class="form-group">
<button type="submit" class="btn btn-primary">${global.save}</button> <div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn" ng-click="back()">${global.cancel}</button> <button type="submit" class="btn btn-primary">${global.save}</button>
<button type="button" class="btn btn-danger" ng-click="unsubscribe()">${details.unsubscribe}</button> <button type="button" class="btn btn-danger" ng-click="unsubscribe()">${details.unsubscribe}</button>
<button type="button" class="btn btn-default" ng-click="back()">${global.cancel}</button>
</div>
</div> </div>
</form> </form>

View File

@@ -1,29 +1,38 @@
<div class="row-fluid help"> <div class="row help">
<div class="span6"> <div class="col-md-6">
<div class="about-module"> <div class="about-module">
<h4><i class="icon-question-sign"></i> ${toolbar.about}</h4> <h4>
<i class="icon-question-sign"></i>
${toolbar.about}
</h4>
<p> <p>
${about.line1_prefix}<a href="https://github.com/Athou/commafeed" target="_blank">GitHub</a>${about.line1_suffix} ${about.line1_prefix}
<a href="https://github.com/Athou/commafeed" target="_blank">GitHub</a>
${about.line1_suffix}
</p> </p>
<p> <p>
${about.line2_prefix}<a href="https://github.com/Athou/commafeed/issues" target="_blank">GitHub</a>${about.line2_suffix} ${about.line2_prefix}
<a href="https://github.com/Athou/commafeed/issues" target="_blank">GitHub</a>
${about.line2_suffix}
</p> </p>
${about.version} {{infos.version}} ({{infos.gitCommit}}) ${about.version} {{infos.version}} ({{infos.gitCommit}})
</div> </div>
<div class="about-module"> <div class="about-module">
<h4><i class="icon-money"></i> ${toolbar.donate}</h4> <h4>
<p> <i class="icon-money"></i>
${about.line3} ${toolbar.donate}
</p> </h4>
<form class="donate-action" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> <p>${about.line3}</p>
<form class="donate-action" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_donations"> <input type="hidden" name="cmd" value="_donations">
<input type="hidden" name="business" value="9CNQHMJG2ZJVY"> <input type="hidden" name="business" value="9CNQHMJG2ZJVY">
<input type="hidden" name="lc" value="US"> <input type="hidden" name="lc" value="US">
<input type="hidden" name="item_name" value="CommaFeed"> <input type="hidden" name="item_name" value="CommaFeed">
<input type="hidden" name="bn" value="PP-DonationsBF:btn_donateCC_LG.gif:NonHosted"> <input type="hidden" name="bn" value="PP-DonationsBF:btn_donateCC_LG.gif:NonHosted">
<input type="image" class="donate-image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> <input type="image" class="donate-image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit"
alt="PayPal - The safer, easier way to pay online!">
<input type="hidden" name="currency_code" value="USD"> <input type="hidden" name="currency_code" value="USD">
<select name="currency_code"> <select name="currency_code">
<option value="EUR">Euro</option> <option value="EUR">Euro</option>
@@ -33,13 +42,18 @@
${about.line4} ${about.line4}
<code class="bitcoin-code">1dymfUxqCWpyD7a6rQSqNy4rLVDBsAr5e</code> <code class="bitcoin-code">1dymfUxqCWpyD7a6rQSqNy4rLVDBsAr5e</code>
</div> </div>
<div class="about-module"> <div class="about-module">
<h4><i class="icon-puzzle-piece"></i> ${about.goodies}</h4> <h4>
<i class="icon-puzzle-piece"></i>
${about.goodies}
</h4>
<p> <p>
${about.goodies.android_app}: ${about.goodies.android_app}:
<a href="https://github.com/Athou/commafeed-newsplus" target="_blank">News+ extension</a>, <a href="https://github.com/Athou/commafeed-newsplus" target="_blank">News+ extension</a>
<a href="https://play.google.com/store/apps/details?id=com.commafeed.commafeedreader" target="_blank">CommaFeed Reader</a>, ,
<a href="https://play.google.com/store/apps/details?id=com.commafeed.commafeedreader" target="_blank">CommaFeed Reader</a>
,
<a href="https://play.google.com/store/apps/details?id=com.mv.cloudfeedlr" target="_blank">Cloudfeedlr</a> <a href="https://play.google.com/store/apps/details?id=com.mv.cloudfeedlr" target="_blank">Cloudfeedlr</a>
</p> </p>
<p> <p>
@@ -51,62 +65,80 @@
<p> <p>
<a href="https://addons.opera.com/en/extensions/details/commafeed-extension-for-opera/" target="_blank">${about.goodies.opera_extension}</a> <a href="https://addons.opera.com/en/extensions/details/commafeed-extension-for-opera/" target="_blank">${about.goodies.opera_extension}</a>
</p> </p>
<p> <p>
${about.goodies.subscribe_url}: <a href="rest/feed/subscribe?url=FEED_URL_HERE" target="_blank">rest/feed/subscribe?url=FEED_URL_HERE</a> ${about.goodies.subscribe_url}:
<a href="rest/feed/subscribe?url=FEED_URL_HERE" target="_blank">rest/feed/subscribe?url=FEED_URL_HERE</a>
</p> </p>
<p> <p>
${about.goodies.subscribe_bookmarklet}: <a href="https://www.subtome.com/settings.html" target="_blank">SubToMe</a> ${about.goodies.subscribe_bookmarklet}:
<a href="https://www.subtome.com/settings.html" target="_blank">SubToMe</a>
</p> </p>
<p> <p>
${about.goodies.next_unread_bookmarklet}: ${about.goodies.next_unread_bookmarklet}:
<br /> <br />
<br /> <br />
${subscribe.category} ${subscribe.category}
<select ng-model="categoryId" ng-options="cat.id as cat.name for cat in CategoryService.flatCategories" <select ng-model="categoryId" ng-options="cat.id as cat.name for cat in CategoryService.flatCategories" class="bookmarklet-select">
class="bookmarklet-select"> </select>
</select>
<select ng-model="order" class="bookmarklet-select"> <select ng-model="order" class="bookmarklet-select">
<option value="desc">${about.goodies.subscribe_bookmarklet_desc}</option> <option value="desc">${about.goodies.subscribe_bookmarklet_desc}</option>
<option value="asc">${about.goodies.subscribe_bookmarklet_asc}</option> <option value="asc">${about.goodies.subscribe_bookmarklet_asc}</option>
</select> </select>
<a href="javascript:window.location.href='{{baseUrl}}next?category={{categoryId}}&order={{order}}&t='+new Date().getTime();" target="_blank">${global.link}</a> <a href="javascript:window.location.href='{{baseUrl}}next?category={{categoryId}}&order={{order}}&t='+new Date().getTime();"
target="_blank">${global.link}</a>
</p> </p>
</div> </div>
<div class="about-module"> <div class="about-module">
<h4><i class="icon-globe"></i> ${about.translation}</h4> <h4>
<i class="icon-globe"></i>
${about.translation}
</h4>
<p>${about.translation.message}</p>
<p> <p>
${about.translation.message} <a href="https://github.com/Athou/commafeed#translate-commafeed-into-your-language" target="_blank"> ${about.translation.link} </a>
</p>
<p>
<a href="https://github.com/Athou/commafeed#translate-commafeed-into-your-language" target="_blank">
${about.translation.link}
</a>
</p> </p>
</div> </div>
<div class="about-module"> <div class="about-module">
<h4><i class="icon-rocket"></i> ${about.rest_api}</h4> <h4>
<p> <i class="icon-rocket"></i>
${about.rest_api.line1} ${about.rest_api}
</p> </h4>
<p>${about.rest_api.line1}</p>
<p> <p>
<a href="api" target="_blank">${about.rest_api.link_to_documentation}</a> <a href="api" target="_blank">${about.rest_api.link_to_documentation}</a>
</p> </p>
</div> </div>
</div> </div>
<div class="span6"> <div class="col-md-6">
<div class="about-module"> <div class="about-module">
<h4><i class="icon-keyboard"></i> ${about.keyboard_shortcuts}</h4> <h4>
<i class="icon-keyboard"></i>
${about.keyboard_shortcuts}
</h4>
<div ng-include="'templates/_shortcuts.html'"></div> <div ng-include="'templates/_shortcuts.html'"></div>
</div> </div>
<div class="about-module"> <div class="about-module">
<h4><i class="icon-info-sign"></i> ${about.announcements}</h4> <h4>
<i class="icon-info-sign"></i>
${about.announcements}
</h4>
<a class="twitter-timeline" href="https://twitter.com/CommaFeed" data-widget-id="333897786657480704">Tweets by @CommaFeed</a> <a class="twitter-timeline" href="https://twitter.com/CommaFeed" data-widget-id="333897786657480704">Tweets by @CommaFeed</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> <script>
!function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
if (!d.getElementById(id)) {
js = d.createElement(s);
js.id = id;
js.src = p + "://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
}
}(document, "script", "twitter-wjs");
</script>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,13 +1,12 @@
<div class="container-fluid"> <div class="container-full">
<div class="row-fluid"> <div class="row">
<div class="span2 left-menu"> <div class="col-xs-2 left-menu">
<div class="sidebar-nav-fixed" mousewheel-scrolling> <div class="sidebar-nav-fixed" mousewheel-scrolling>
<div ng-include="'templates/_subscribe.html'"></div>
<div ng-include="'templates/_tree.html'"></div> <div ng-include="'templates/_tree.html'"></div>
<div ng-include="'templates/_feedsearch.html'"></div> <div ng-include="'templates/_feedsearch.html'"></div>
</div> </div>
</div> </div>
<div class="span10 main-content"> <div class="col-xs-10 main-content">
<div id="toolbar" class="toolbar" ng-include="'templates/_toolbar.html'"></div> <div id="toolbar" class="toolbar" ng-include="'templates/_toolbar.html'"></div>
<div class="entryList"> <div class="entryList">
<div ui-view></div> <div ui-view></div>

View File

@@ -0,0 +1,19 @@
<div>
<div class="page-header">
<h3>${tree.import}</h3>
</div>
<form class="form-horizontal" action="rest/feed/import" method="post" enctype="multipart/form-data">
<div class="form-group">
<label class="col-sm-2 control-label">${import.xml_file}</label>
<div class="col-sm-10 ">
<input type="file" name="file" class="form-control"></input>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-primary ok" type="submit">${tree.import}</button>
<button type="button" class="btn btn-default cancel" ng-click="back()">${global.cancel}</button>
</div>
</div>
</form>
</div>

View File

@@ -0,0 +1,29 @@
<div>
<div class="page-header">
<h3>${tree.new_category}</h3>
</div>
<form name="categoryForm" class="form-horizontal" ng-submit="saveCategory()">
<div class="form-group" ng-class="{error : !categoryForm.name.$valid}">
<label class="col-sm-2 control-label">${new_category.name}</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="name" ng-model="cat.name" required></input>
<span class="help-block" ng-show="!categoryForm.name.$valid">${global.required}</span>
</div>
</div>
<div class="form-group" ng-class="{error : !categoryForm.category.$valid}">
<label class="col-sm-2 control-label">${new_category.parent}</label>
<div class="col-sm-10">
<select name="category" ng-model="cat.parentId" class="form-control"
ng-options="cat.id as cat.name for cat in CategoryService.flatCategories" required>
</select>
<span class="help-block" ng-show="!categoryForm.category.$valid">${global.required}</span>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-primary ok" type="submit">${global.save}</button>
<button type="button" class="btn btn-default cancel" ng-click="back()">${global.cancel}</button>
</div>
</div>
</form>
</div>

View File

@@ -0,0 +1,37 @@
<div>
<div class="page-header">
<h3>${tree.subscribe}</h3>
</div>
<form name="subscribeForm" class="form-horizontal" ng-submit="save()">
<div class="form-group" ng-class="{error : !subscribeForm.url.$valid}">
<label class="col-sm-2 control-label">${subscribe.feed_url}</label>
<div class="col-sm-10">
<input type="text" name="url" ng-model="sub.url" ng-blur="urlChanged()" placeholder="http://example.com/feed" class="form-control"
required ng-disabled="state=='loading'" focus="isOpen"></input>
<span class="help-block" ng-show="!subscribeForm.url.$valid">${global.required}</span>
</div>
</div>
<div class="form-group" ng-class="{error : !subscribeForm.title.$valid}">
<label class="col-sm-2 control-label">${subscribe.feed_name}</label>
<div class="col-sm-10">
<input type="text" name="title" ng-model="sub.title" class="form-control" required ng-disabled="state=='loading'"></input>
<span class="help-block" ng-show="!subscribeForm.title.$valid">${global.required}</span>
</div>
</div>
<div class="form-group" ng-class="{error : !subscribeForm.category.$valid}">
<label class="col-sm-2 control-label">${subscribe.category}</label>
<div class="col-sm-10">
<select name="category" ng-model="sub.categoryId" class="form-control"
ng-options="cat.id as cat.name for cat in CategoryService.flatCategories" required>
</select>
<span class="help-block" ng-show="!subscribeForm.category.$valid">${global.required}</span>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-primary ok" type="submit" ng-disabled="state!='ok'">${global.save}</button>
<button class="btn btn-default cancel" ng-click="back()" type="button">${global.cancel}</button>
</div>
</div>
</form>
</div>

View File

@@ -3,16 +3,20 @@
<h3>${details.tag_details}</h3> <h3>${details.tag_details}</h3>
</div> </div>
<form name="form" class="form-horizontal" ng-submit="save()"> <form name="form" class="form-horizontal" ng-submit="save()">
<div class="control-group"> <div class="form-group">
<label class="control-label">${details.feed_url}</label> <label class="col-sm-2 control-label">${details.feed_url}</label>
<div class="controls horizontal-align"> <div class="col-sm-10">
<a ng-show="user.apiKey" href="{{'rest/category/entriesAsFeed?id=all&tag=' + tag + '&apiKey=' + user.apiKey}}" target="_blank">${global.link}</a> <div class="checkbox">
<span ng-show="!user.apiKey">${details.generate_api_key_first}</span> <a ng-show="user.apiKey" href="{{'rest/category/entriesAsFeed?id=all&tag=' + tag + '&apiKey=' + user.apiKey}}" target="_blank">${global.link}</a>
<span ng-show="!user.apiKey">${details.generate_api_key_first}</span>
</div>
</div> </div>
</div> </div>
<div class="form-actions"> <div class="form-group">
<button type="button" class="btn" ng-click="back()">${global.cancel}</button> <div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn btn-default" ng-click="back()">${global.cancel}</button>
</div>
</div> </div>
</form> </form>

View File

@@ -70,15 +70,16 @@
<a ng-href="{{entry.enclosureUrl | trustUrl}}" target="_blank" ng-if="entry.enclosureType" download> ${global.download} </a> <a ng-href="{{entry.enclosureUrl | trustUrl}}" target="_blank" ng-if="entry.enclosureType" download> ${global.download} </a>
</div> </div>
</div> </div>
<div class="entry-buttons form-horizontal"> <div class="entry-buttons form-inline">
<div class="form-group star" ng-mouseup="star(entry, !entry.starred, $event)">
<span class="star" ng-mouseup="star(entry, !entry.starred, $event)">
<i ng-class="{'icon-star icon-star-yellow': entry.starred, 'icon-star-empty': !entry.starred}" class="pointer"></i> <i ng-class="{'icon-star icon-star-yellow': entry.starred, 'icon-star-empty': !entry.starred}" class="pointer"></i>
</span> </div>
<label class="checkbox inline" ng-if="entry.markable"> <div class="checkbox">
<input type="checkbox" ng-checked="!entry.read" ng-click="mark(entry, !entry.read)" class="mousetrap"></input> <label ng-if="entry.markable">
${view.keep_unread} <input type="checkbox" ng-checked="!entry.read" ng-click="mark(entry, !entry.read)" class="mousetrap"></input>
</label> ${view.keep_unread}
</label>
</div>
<span class="share-buttons" ng-if="settingsService.settings.socialButtons"> <span class="share-buttons" ng-if="settingsService.settings.socialButtons">
<a href="mailto:?subject={{entry.title|escape}}&body={{entry.url|escape}}" title="E-mail" popup> <a href="mailto:?subject={{entry.title|escape}}&body={{entry.url|escape}}" title="E-mail" popup>

View File

@@ -1,62 +1,65 @@
<div class="container-fluid profile"> <div class="profile">
<div class="page-header"> <div class="page-header">
<h1>${toolbar.profile}</h1> <h1>${toolbar.profile}</h1>
</div> </div>
<form name="profileForm" ng-submit="save()" class="form-horizontal"> <form name="profileForm" ng-submit="save()" class="form-horizontal">
<div class="control-group"> <div class="form-group">
<label class="control-label" for="email">${profile.user_name}</label> <label class="col-sm-2 control-label" for="email">${profile.user_name}</label>
<div class="controls horizontal-align"> <div class="col-sm-10 checkbox">
<span>{{user.name}}</span> <span>{{user.name}}</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="email">${profile.email}</label> <label class="col-sm-2 control-label" for="email">${profile.email}</label>
<div class="controls"> <div class="col-sm-10">
<input type="email" id="email" ng-model="user.email" /> <input type="email" id="email" ng-model="user.email" class="form-control" />
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="password">${profile.change_password}</label> <label class="col-sm-2 control-label" for="password">${profile.change_password}</label>
<div class="controls"> <div class="col-sm-10">
<input type="password" name="password" id="password" ng-model="user.password" <input type="password" name="password" id="password" ng-model="user.password" class="form-control" ng-minlength="6" />
ng-minlength="6" />
<span class="help-inline" ng-show="profileForm.password.$error.minlength">${profile.minimum_6_chars}</span> <span class="help-inline" ng-show="profileForm.password.$error.minlength">${profile.minimum_6_chars}</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="password">${profile.confirm_password}</label> <label class="col-sm-2 control-label" for="password">${profile.confirm_password}</label>
<div class="controls"> <div class="col-sm-10">
<input type="password" name="password_c" id="password_c" ng-model="password_c" <input type="password" class="form-control" name="password_c" id="password_c" ng-model="password_c"
ui-validate="'$value==user.password'" ui-validate-watch="'user.password'"> ui-validate="'$value==user.password'" ui-validate-watch="'user.password'">
<span class="help-inline" ng-show="profileForm.password_c.$error.validator">${profile.passwords_do_not_match}</span> <span class="help-inline" ng-show="profileForm.password_c.$error.validator">${profile.passwords_do_not_match}</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="password">${profile.api_key}</label> <label class="col-sm-2 control-label" for="password">${profile.api_key}</label>
<div class="controls horizontal-align"> <div class="col-sm-10">
<span ng-show="user.apiKey">{{user.apiKey}}</span> <pre ng-show="user.apiKey">{{user.apiKey}}</pre>
<span ng-show="!user.apiKey">${profile.api_key_not_generated}</span> <span class="help-block" ng-show="!user.apiKey">${profile.api_key_not_generated}</span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="password">${profile.generate_new_api_key}</label> <label class="col-sm-2 control-label" for="password">${profile.generate_new_api_key}</label>
<div class="controls"> <div class="col-sm-10">
<input type="checkbox" name="newApiKey" id="newApiKey" ng-model="newApiKey"> <div class="checkbox">
<span class="help-block">${profile.generate_new_api_key_info}</span> <input type="checkbox" name="newApiKey" id="newApiKey" ng-model="newApiKey">
<span class="help-inline">${profile.generate_new_api_key_info}</span>
</div>
</div> </div>
</div> </div>
<div class="control-group"> <div class="form-group">
<label class="control-label" for="password">${profile.opml_export}</label> <label class="col-sm-2 control-label" for="password">${profile.opml_export}</label>
<div class="controls horizontal-align"> <div class="col-sm-10 checkbox">
<a href="rest/feed/export" download="commafeed_opml.xml">${global.download}</a> <a href="rest/feed/export" download="commafeed_opml.xml">${global.download}</a>
</div> </div>
</div> </div>
<div class="form-actions"> <div class="form-group">
<button type="submit" class="btn btn-primary">${global.save}</button> <div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn" ng-click="cancel()">${global.cancel}</button> <button type="submit" class="btn btn-primary">${global.save}</button>
<button type="button" class="btn btn-danger" ng-click="deleteAccount()">${profile.delete_account}</button> <button type="button" class="btn btn-danger" ng-click="deleteAccount()">${profile.delete_account}</button>
<button type="button" class="btn btn-default" ng-click="cancel()">${global.cancel}</button>
</div>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -1,10 +1,10 @@
<div class="container-fluid settings"> <div class="settings">
<div class="page-header"> <div class="page-header">
<h1>${toolbar.settings}</h1> <h1>${toolbar.settings}</h1>
</div> </div>
<form name="settingsForm" ng-submit="save()"> <form name="settingsForm" ng-submit="save()">
<div class="row"> <div class="row">
<div class="span2"> <div class="col-md-2">
<ul class="nav nav-pills nav-stacked"> <ul class="nav nav-pills nav-stacked">
<li ng-class="{active: !tab || tab == 'general'}" class="pointer"> <li ng-class="{active: !tab || tab == 'general'}" class="pointer">
<a ng-click="tab = 'general'">${settings.general}</a> <a ng-click="tab = 'general'">${settings.general}</a>
@@ -14,64 +14,56 @@
</li> </li>
</ul> </ul>
</div> </div>
<div class="span10"> <div class="col-md-10">
<div class="tab-content"> <div class="tab-content">
<div class="tab-pane" ng-class="{active: !tab || tab == 'general'}"> <div class="tab-pane" ng-class="{active: !tab || tab == 'general'}">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="control-group"> <div class="form-group">
<label class="control-label">${settings.general.language}</label> <label>${settings.general.language}</label>
<div class="controls"> <select name="language" ng-model="settings.language" class="form-control"
<select name="language" ng-model="settings.language" class="input-block-level" ng-options="id as label for (id,label) in ServerService.supportedLanguages" required>
ng-options="id as label for (id,label) in ServerService.supportedLanguages" required> </select>
</select> <span class="help-block">
<span class="help-block"> <a href="https://github.com/Athou/commafeed#translate-commafeed-into-your-language" target="_blank">
<a href="https://github.com/Athou/commafeed#translate-commafeed-into-your-language" target="_blank"> ${settings.general.language.contribute} </a>
${settings.general.language.contribute} </span>
</a>
</span>
</div>
</div> </div>
<div class="control-group"> <div class="checkbox">
<label class="checkbox"> <label>
<input type="checkbox" name="showRead" <input type="checkbox" name="showRead" ng-model="settings.showRead" />
ng-model="settings.showRead" />
${settings.general.show_unread} ${settings.general.show_unread}
</label> </label>
</div> </div>
<div class="control-group"> <div class="checkbox">
<label class="checkbox"> <label>
<input type="checkbox" name="socialButtons" <input type="checkbox" name="socialButtons" ng-model="settings.socialButtons" />
ng-model="settings.socialButtons" />
${settings.general.social_buttons} ${settings.general.social_buttons}
</label> </label>
</div> </div>
<div class="control-group"> <div class="checkbox">
<label class="checkbox"> <label>
<input type="checkbox" name="scrollMarks" <input type="checkbox" name="scrollMarks" ng-model="settings.scrollMarks" />
ng-model="settings.scrollMarks" />
${settings.general.scroll_marks} ${settings.general.scroll_marks}
</label> </label>
</div> </div>
</div> </div>
</div> </div>
<div class="tab-pane" ng-class="{active: tab == 'css'}"> <div class="tab-pane" ng-class="{active: tab == 'css'}">
<div> <div class="form-group">
<label>${settings.scroll_speed}</label> <label>${settings.scroll_speed}</label>
<input type="number" ng-model="settings.scrollSpeed" min="0" max="1000" /> <input type="number" ng-model="settings.scrollSpeed" min="0" max="1000" class="form-control" />
<span class="help-inline">${settings.scroll_speed.help}</span> <span class="help-inline">${settings.scroll_speed.help}</span>
</div> </div>
<div> <div class="form-group">
<label>${settings.theme}</label> <label>${settings.theme}</label>
<select ng-model="settings.theme" ng-options="theme for theme in themes"></select> <select ng-model="settings.theme" ng-options="theme for theme in themes" class="form-control"></select>
<span class="help-block"> <span class="help-block">
<a href="https://github.com/Athou/commafeed#themes" target="_blank"> <a href="https://github.com/Athou/commafeed#themes" target="_blank"> ${settings.submit_your_theme} </a>
${settings.submit_your_theme}
</a>
</span> </span>
</div> </div>
<div> <div class="form-group">
<label>${settings.custom_css}</label> <label>${settings.custom_css}</label>
<textarea ng-model="settings.customCss" class="input-block-level" rows="20"> <textarea ng-model="settings.customCss" class="form-control" rows="20">
</textarea> </textarea>
</div> </div>
</div> </div>
@@ -80,7 +72,7 @@
</div> </div>
<div class="form-actions"> <div class="form-actions">
<button type="submit" class="btn btn-primary">${global.save}</button> <button type="submit" class="btn btn-primary">${global.save}</button>
<button type="button" class="btn" ng-click="cancel()">${global.cancel}</button> <button type="button" class="btn btn-default" ng-click="cancel()">${global.cancel}</button>
</div> </div>
</form> </form>
</div> </div>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,724 +0,0 @@
/*!
* Bootstrap v2.3.0
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Designed and built with all the love in the world @twitter by @mdo and @fat.
*/
.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
.clearfix:after{clear:both;}
.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
audio:not([controls]){display:none;}
html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
a:hover,a:active{outline:0;}
sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
sup{top:-0.5em;}
sub{bottom:-0.25em;}
img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;}
#map_canvas img,.google-maps img{max-width:none;}
button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
button,input{*overflow:visible;line-height:normal;}
button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}
label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer;}
input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;}
input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
textarea{overflow:auto;vertical-align:top;}
@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important;} a,a:visited{text-decoration:underline;} a[href]:after{content:" (" attr(href) ")";} abbr[title]:after{content:" (" attr(title) ")";} .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} pre,blockquote{border:1px solid #999;page-break-inside:avoid;} thead{display:table-header-group;} tr,img{page-break-inside:avoid;} img{max-width:100% !important;} @page {margin:0.5cm;}p,h2,h3{orphans:3;widows:3;} h2,h3{page-break-after:avoid;}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333333;background-color:#ffffff;}
a{color:#0088cc;text-decoration:none;}
a:hover,a:focus{color:#005580;text-decoration:underline;}
.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);}
.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;}
.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;}
.row:after{clear:both;}
[class*="span"]{float:left;min-height:1px;margin-left:20px;}
.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
.span12{width:940px;}
.span11{width:860px;}
.span10{width:780px;}
.span9{width:700px;}
.span8{width:620px;}
.span7{width:540px;}
.span6{width:460px;}
.span5{width:380px;}
.span4{width:300px;}
.span3{width:220px;}
.span2{width:140px;}
.span1{width:60px;}
.offset12{margin-left:980px;}
.offset11{margin-left:900px;}
.offset10{margin-left:820px;}
.offset9{margin-left:740px;}
.offset8{margin-left:660px;}
.offset7{margin-left:580px;}
.offset6{margin-left:500px;}
.offset5{margin-left:420px;}
.offset4{margin-left:340px;}
.offset3{margin-left:260px;}
.offset2{margin-left:180px;}
.offset1{margin-left:100px;}
.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
.row-fluid:after{clear:both;}
.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;}
.row-fluid [class*="span"]:first-child{margin-left:0;}
.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;}
.row-fluid .span12{width:100%;*width:99.94680851063829%;}
.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;}
.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}
.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;}
.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}
.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;}
.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}
.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;}
.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}
.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;}
.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}
.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;}
.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}
.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}
.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}
.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}
.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}
.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}
.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}
.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}
.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}
.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}
.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}
.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}
.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}
.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}
.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}
.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}
.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}
.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}
.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}
.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}
.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}
.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}
.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}
.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}
[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;}
[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;}
.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;}
.container:after{clear:both;}
.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;}
.container-fluid:after{clear:both;}
p{margin:0 0 10px;}
.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px;}
small{font-size:85%;}
strong{font-weight:bold;}
em{font-style:italic;}
cite{font-style:normal;}
.muted{color:#999999;}
a.muted:hover,a.muted:focus{color:#808080;}
.text-warning{color:#c09853;}
a.text-warning:hover,a.text-warning:focus{color:#a47e3c;}
.text-error{color:#b94a48;}
a.text-error:hover,a.text-error:focus{color:#953b39;}
.text-info{color:#3a87ad;}
a.text-info:hover,a.text-info:focus{color:#2d6987;}
.text-success{color:#468847;}
a.text-success:hover,a.text-success:focus{color:#356635;}
.text-left{text-align:left;}
.text-right{text-align:right;}
.text-center{text-align:center;}
h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;}
h1,h2,h3{line-height:40px;}
h1{font-size:38.5px;}
h2{font-size:31.5px;}
h3{font-size:24.5px;}
h4{font-size:17.5px;}
h5{font-size:14px;}
h6{font-size:11.9px;}
h1 small{font-size:24.5px;}
h2 small{font-size:17.5px;}
h3 small{font-size:14px;}
h4 small{font-size:14px;}
.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;}
ul,ol{padding:0;margin:0 0 10px 25px;}
ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
li{line-height:20px;}
ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
ul.inline,ol.inline{margin-left:0;list-style:none;}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;*zoom:1;padding-left:5px;padding-right:5px;}
dl{margin-bottom:20px;}
dt,dd{line-height:20px;}
dt{font-weight:bold;}
dd{margin-left:10px;}
.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;}
.dl-horizontal:after{clear:both;}
.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dl-horizontal dd{margin-left:180px;}
hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999;}
abbr.initialism{font-size:90%;text-transform:uppercase;}
blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25;}
blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
blockquote.pull-right small:before{content:'';}
blockquote.pull-right small:after{content:'\00A0 \2014';}
q:before,q:after,blockquote:before,blockquote:after{content:"";}
address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;}
code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap;}
pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:20px;}
pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0;}
.pre-scrollable{max-height:340px;overflow-y:scroll;}
.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;}
.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.badge{padding-left:9px;padding-right:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
.label:empty,.badge:empty{display:none;}
a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer;}
.label-important,.badge-important{background-color:#b94a48;}
.label-important[href],.badge-important[href]{background-color:#953b39;}
.label-warning,.badge-warning{background-color:#f89406;}
.label-warning[href],.badge-warning[href]{background-color:#c67605;}
.label-success,.badge-success{background-color:#468847;}
.label-success[href],.badge-success[href]{background-color:#356635;}
.label-info,.badge-info{background-color:#3a87ad;}
.label-info[href],.badge-info[href]{background-color:#2d6987;}
.label-inverse,.badge-inverse{background-color:#333333;}
.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;}
.btn .label,.btn .badge{position:relative;top:-1px;}
.btn-mini .label,.btn-mini .badge{top:0;}
table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
.table th{font-weight:bold;}
.table thead th{vertical-align:bottom;}
.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
.table tbody+tbody{border-top:2px solid #dddddd;}
.table .table{background-color:#ffffff;}
.table-condensed th,.table-condensed td{padding:4px 5px;}
.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;}
.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;}
.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9;}
.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5;}
table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0;}
.table td.span1,.table th.span1{float:none;width:44px;margin-left:0;}
.table td.span2,.table th.span2{float:none;width:124px;margin-left:0;}
.table td.span3,.table th.span3{float:none;width:204px;margin-left:0;}
.table td.span4,.table th.span4{float:none;width:284px;margin-left:0;}
.table td.span5,.table th.span5{float:none;width:364px;margin-left:0;}
.table td.span6,.table th.span6{float:none;width:444px;margin-left:0;}
.table td.span7,.table th.span7{float:none;width:524px;margin-left:0;}
.table td.span8,.table th.span8{float:none;width:604px;margin-left:0;}
.table td.span9,.table th.span9{float:none;width:684px;margin-left:0;}
.table td.span10,.table th.span10{float:none;width:764px;margin-left:0;}
.table td.span11,.table th.span11{float:none;width:844px;margin-left:0;}
.table td.span12,.table th.span12{float:none;width:924px;margin-left:0;}
.table tbody tr.success>td{background-color:#dff0d8;}
.table tbody tr.error>td{background-color:#f2dede;}
.table tbody tr.warning>td{background-color:#fcf8e3;}
.table tbody tr.info>td{background-color:#d9edf7;}
.table-hover tbody tr.success:hover>td{background-color:#d0e9c6;}
.table-hover tbody tr.error:hover>td{background-color:#ebcccc;}
.table-hover tbody tr.warning:hover>td{background-color:#faf2cc;}
.table-hover tbody tr.info:hover>td{background-color:#c4e3f3;}
form{margin:0 0 20px;}
fieldset{padding:0;margin:0;border:0;}
legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;}
label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px;}
input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
label{display:block;margin-bottom:5px;}
select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle;}
input,textarea,.uneditable-input{width:206px;}
textarea{height:auto;}
textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);}
input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;}
input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;}
select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;}
select{width:220px;border:1px solid #cccccc;background-color:#ffffff;}
select[multiple],select[size]{height:auto;}
select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
.uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
.uneditable-input{overflow:hidden;white-space:nowrap;}
.uneditable-textarea{width:auto;height:auto;}
input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;}
input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;}
input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;}
.radio,.checkbox{min-height:20px;padding-left:20px;}
.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px;}
.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
.input-mini{width:60px;}
.input-small{width:90px;}
.input-medium{width:150px;}
.input-large{width:210px;}
.input-xlarge{width:270px;}
.input-xxlarge{width:530px;}
input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;}
.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;}
input,textarea,.uneditable-input{margin-left:0;}
.controls-row [class*="span"]+[class*="span"]{margin-left:20px;}
input.span12,textarea.span12,.uneditable-input.span12{width:926px;}
input.span11,textarea.span11,.uneditable-input.span11{width:846px;}
input.span10,textarea.span10,.uneditable-input.span10{width:766px;}
input.span9,textarea.span9,.uneditable-input.span9{width:686px;}
input.span8,textarea.span8,.uneditable-input.span8{width:606px;}
input.span7,textarea.span7,.uneditable-input.span7{width:526px;}
input.span6,textarea.span6,.uneditable-input.span6{width:446px;}
input.span5,textarea.span5,.uneditable-input.span5{width:366px;}
input.span4,textarea.span4,.uneditable-input.span4{width:286px;}
input.span3,textarea.span3,.uneditable-input.span3{width:206px;}
input.span2,textarea.span2,.uneditable-input.span2{width:126px;}
input.span1,textarea.span1,.uneditable-input.span1{width:46px;}
.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;}
.controls-row:after{clear:both;}
.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left;}
.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px;}
input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;}
input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;}
.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;}
.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;}
.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;}
.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;}
.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;}
.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;}
.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;}
.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;}
.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;}
.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;}
input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;}
.form-actions:after{clear:both;}
.help-block,.help-inline{color:#595959;}
.help-block{display:block;margin-bottom:10px;}
.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}
.input-append,.input-prepend{display:inline-block;margin-bottom:10px;vertical-align:middle;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px;}
.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;}
.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;}
.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;}
.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}
.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px;}
.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-prepend.input-append .btn-group:first-child{margin-left:0;}
input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;}
.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}
.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;}
.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}
.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}
.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;}
.control-group{margin-bottom:10px;}
legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;}
.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;}
.form-horizontal .control-group:after{clear:both;}
.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;}
.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;}
.form-horizontal .help-block{margin-bottom:0;}
.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px;}
.form-horizontal .form-actions{padding-left:180px;}
.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:14px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #cccccc;*border:0;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}
.btn:active,.btn.active{background-color:#cccccc \9;}
.btn:first-child{*margin-left:0;}
.btn:hover,.btn:focus{color:#333333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px;}
.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0;}
.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px;}
.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
.btn-block+.btn-block{margin-top:5px;}
input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;}
.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}
.btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(to bottom, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0044cc;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;}
.btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
.btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;}
.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
.btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;}
.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
.btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;}
.btn-success:active,.btn-success.active{background-color:#408140 \9;}
.btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;}
.btn-info:active,.btn-info.active{background-color:#24748c \9;}
.btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;}
.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}
button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}
button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}
.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.btn-link{border-color:transparent;cursor:pointer;color:#0088cc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent;}
.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333333;text-decoration:none;}
.btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;}
.btn-group+.btn-group{margin-left:5px;}
.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px;}
.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.btn-group>.btn+.btn{margin-left:-1px;}
.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px;}
.btn-group>.btn-mini{font-size:10.5px;}
.btn-group>.btn-small{font-size:11.9px;}
.btn-group>.btn-large{font-size:17.5px;}
.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;}
.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;}
.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;}
.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;}
.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;}
.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;}
.btn-group.open .btn-primary.dropdown-toggle{background-color:#0044cc;}
.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;}
.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;}
.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;}
.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;}
.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;}
.btn .caret{margin-top:8px;margin-left:0;}
.btn-large .caret{margin-top:6px;}
.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;}
.btn-mini .caret,.btn-small .caret{margin-top:8px;}
.dropup .btn-large .caret{border-bottom-width:5px;}
.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;}
.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px;}
.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;}
.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
.nav{margin-left:0;margin-bottom:20px;list-style:none;}
.nav>li>a{display:block;}
.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee;}
.nav>li>a>img{max-width:none;}
.nav>.pull-right{float:right;}
.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;}
.nav li+.nav-header{margin-top:9px;}
.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;}
.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
.nav-list>li>a{padding:3px 15px;}
.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;}
.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px;}
.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;}
.nav-tabs:after,.nav-pills:after{clear:both;}
.nav-tabs>li,.nav-pills>li{float:left;}
.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
.nav-tabs{border-bottom:1px solid #ddd;}
.nav-tabs>li{margin-bottom:-1px;}
.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #dddddd;}
.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#ffffff;background-color:#0088cc;}
.nav-stacked>li{float:none;}
.nav-stacked>li>a{margin-right:0;}
.nav-tabs.nav-stacked{border-bottom:0;}
.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{border-color:#ddd;z-index:2;}
.nav-pills.nav-stacked>li>a{margin-bottom:3px;}
.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.nav .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;}
.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580;}
.nav-tabs .dropdown-toggle .caret{margin-top:8px;}
.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;}
.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer;}
.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#ffffff;background-color:#999999;border-color:#999999;}
.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999999;}
.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}
.tabbable:after{clear:both;}
.tab-content{overflow:auto;}
.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;}
.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
.tab-content>.active,.pill-content>.active{display:block;}
.tabs-below>.nav-tabs{border-top:1px solid #ddd;}
.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;}
.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-bottom-color:transparent;border-top-color:#ddd;}
.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd;}
.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;}
.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
.nav>.disabled>a{color:#999999;}
.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;background-color:transparent;cursor:default;}
.navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2;}
.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #ffffff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #ffffff, #f2f2f2);background-image:-o-linear-gradient(top, #ffffff, #f2f2f2);background-image:linear-gradient(to bottom, #ffffff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;}
.navbar-inner:after{clear:both;}
.navbar .container{width:auto;}
.nav-collapse.collapse{height:auto;overflow:visible;}
.navbar .brand{float:left;display:block;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none;}
.navbar-text{margin-bottom:0;line-height:40px;color:#777777;}
.navbar-link{color:#777777;}.navbar-link:hover,.navbar-link:focus{color:#333333;}
.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #ffffff;}
.navbar .btn,.navbar .btn-group{margin-top:5px;}
.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0;}
.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;}
.navbar-form:after{clear:both;}
.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;}
.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;}
.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;}
.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
.navbar-static-top{position:static;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;}
.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;}
.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;}
.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
.navbar-fixed-top{top:0;}
.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1);}
.navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1);}
.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}
.navbar .nav.pull-right{float:right;margin-right:0;}
.navbar .nav>li{float:left;}
.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777777;text-decoration:none;text-shadow:0 1px 0 #ffffff;}
.navbar .nav .dropdown-toggle .caret{margin-top:8px;}
.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;}
.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);-moz-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);}
.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;}
.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;}
.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
.btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;}
.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;}
.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333333;border-bottom-color:#333333;}
.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;}
.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;}
.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;}
.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;}
.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;}
.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#ffffff;}
.navbar-inverse .brand{color:#999999;}
.navbar-inverse .navbar-text{color:#999999;}
.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;}
.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;}
.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#ffffff;}
.navbar-inverse .divider-vertical{border-left-color:#111111;border-right-color:#222222;}
.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;}
.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;}
.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
.navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
.navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;}
.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;}
.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}.breadcrumb>li>.divider{padding:0 5px;color:#ccc;}
.breadcrumb>.active{color:#999999;}
.pagination{margin:20px 0;}
.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
.pagination ul>li{display:inline;}
.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;}
.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;}
.pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;}
.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999999;background-color:transparent;cursor:default;}
.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
.pagination-centered{text-align:center;}
.pagination-right{text-align:right;}
.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px;}
.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px;}
.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;}
.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px;}
.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px;}
.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;}
.pager:after{clear:both;}
.pager li{display:inline;}
.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5;}
.pager .next>a,.pager .next>span{float:right;}
.pager .previous>a,.pager .previous>span{float:left;}
.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#fff;cursor:default;}
.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;}
.thumbnails:after{clear:both;}
.row-fluid .thumbnails{margin-left:0;}
.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;}
.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;}
a.thumbnail:hover,a.thumbnail:focus{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}
.thumbnail .caption{padding:9px;color:#555555;}
.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.alert,.alert h4{color:#c09853;}
.alert h4{margin:0;}
.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;}
.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}
.alert-success h4{color:#468847;}
.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;}
.alert-danger h4,.alert-error h4{color:#b94a48;}
.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;}
.alert-info h4{color:#3a87ad;}
.alert-block{padding-top:14px;padding-bottom:14px;}
.alert-block>p,.alert-block>ul{margin-bottom:0;}
.alert-block p+p{margin-top:5px;}
@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}
.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);}
.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}
.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}
.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);}
.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);}
.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);}
.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);}
.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;}
.hero-unit li{line-height:30px;}
.media,.media-body{overflow:hidden;*overflow:visible;zoom:1;}
.media,.media .media{margin-top:15px;}
.media:first-child{margin-top:0;}
.media-object{display:block;}
.media-heading{margin:0 0 5px;}
.media>.pull-left{margin-right:10px;}
.media>.pull-right{margin-left:10px;}
.media-list{margin-left:0;list-style:none;}
.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);}
.tooltip.top{margin-top:-3px;padding:5px 0;}
.tooltip.right{margin-left:3px;padding:0 5px;}
.tooltip.bottom{margin-top:3px;padding:5px 0;}
.tooltip.left{margin-left:-3px;padding:0 5px;}
.tooltip-inner{max-width:200px;padding:8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;}
.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;}
.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;}
.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;}
.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;}
.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);white-space:normal;}.popover.top{margin-top:-10px;}
.popover.right{margin-left:10px;}
.popover.bottom{margin-top:10px;}
.popover.left{margin-left:-10px;}
.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}.popover-title:empty{display:none;}
.popover-content{padding:9px 14px;}
.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;}
.popover .arrow{border-width:11px;}
.popover .arrow:after{border-width:10px;content:"";}
.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0, 0, 0, 0.25);bottom:-11px;}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff;}
.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0, 0, 0, 0.25);}.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff;}
.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);top:-11px;}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff;}
.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0, 0, 0, 0.25);}.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px;}
.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;}
.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);}
.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
.modal.fade.in{top:10%;}
.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;}
.modal-header h3{margin:0;line-height:30px;}
.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;}
.modal-form{margin-bottom:0;}
.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;}
.modal-footer:after{clear:both;}
.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;}
.modal-footer .btn-group .btn+.btn{margin-left:-1px;}
.modal-footer .btn-block+.btn-block{margin-left:0;}
.dropup,.dropdown{position:relative;}
.dropdown-toggle{*margin-bottom:-3px;}
.dropdown-toggle:active,.open .dropdown-toggle{outline:0;}
.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}
.dropdown .caret{margin-top:8px;margin-left:2px;}
.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}
.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;}
.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{text-decoration:none;color:#ffffff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);}
.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);}
.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999;}
.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:default;}
.open{*z-index:1000;}.open>.dropdown-menu{display:block;}
.pull-right>.dropdown-menu{right:0;left:auto;}
.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";}
.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;}
.dropdown-submenu{position:relative;}
.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}
.dropdown-submenu:hover>.dropdown-menu{display:block;}
.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0;}
.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;}
.dropdown-submenu:hover>a:after{border-left-color:#ffffff;}
.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;}
.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.accordion{margin-bottom:20px;}
.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.accordion-heading{border-bottom:0;}
.accordion-heading .accordion-toggle{display:block;padding:8px 15px;}
.accordion-toggle{cursor:pointer;}
.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;}
.carousel{position:relative;margin-bottom:20px;line-height:1;}
.carousel-inner{overflow:hidden;width:100%;position:relative;}
.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1;}
.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block;}
.carousel-inner>.active{left:0;}
.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%;}
.carousel-inner>.next{left:100%;}
.carousel-inner>.prev{left:-100%;}
.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0;}
.carousel-inner>.active.left{left:-100%;}
.carousel-inner>.active.right{left:100%;}
.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;}
.carousel-control:hover,.carousel-control:focus{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}
.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none;}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255, 255, 255, 0.25);border-radius:5px;}
.carousel-indicators .active{background-color:#fff;}
.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);}
.carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;}
.carousel-caption h4{margin:0 0 5px;}
.carousel-caption p{margin-bottom:0;}
.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);}
button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}
.pull-right{float:right;}
.pull-left{float:left;}
.hide{display:none;}
.show{display:block;}
.invisible{visibility:hidden;}
.affix{position:fixed;}
.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;}
.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;}