From 84096b8724b468a5e26329cb009d49a1914474c1 Mon Sep 17 00:00:00 2001 From: Jordan Wright Date: Fri, 31 May 2019 13:58:18 -0500 Subject: [PATCH] Implement User Management API (#1473) This implements the first pass for a user management API allowing users with the `ModifySystem` permission to create, modify, and delete users. In addition to this, any user is able to use the API to view or modify their own account information. --- .babelrc | 3 + auth/auth.go | 83 +- controllers/api/api_test.go | 11 + controllers/api/reset.go | 4 +- controllers/api/server.go | 3 + controllers/api/user.go | 218 +++ controllers/api/user_test.go | 188 +++ controllers/route.go | 83 +- gophish.go | 4 +- gulpfile.js | 18 +- middleware/middleware.go | 21 +- middleware/session.go | 23 + models/rbac.go | 2 +- models/user.go | 119 +- models/user_test.go | 41 + package.json | 8 +- static/css/dist/gophish.css | 2 +- static/css/main.css | 4 + static/js/dist/app/gophish.min.js | 2 +- static/js/dist/app/groups.min.js | 1 + static/js/dist/app/users.min.js | 2 +- static/js/src/app/gophish.js | 28 + static/js/src/app/groups.js | 284 ++++ static/js/src/app/users.js | 300 ++-- templates/groups.html | 106 ++ templates/nav.html | 9 +- templates/register.html | 62 - templates/settings.html | 26 +- templates/users.html | 80 +- util/util.go | 19 + webpack.config.js | 21 + yarn.lock | 2352 ++++++++++++++++++++++++++++- 32 files changed, 3595 insertions(+), 532 deletions(-) create mode 100644 .babelrc create mode 100644 controllers/api/user.go create mode 100644 controllers/api/user_test.go create mode 100644 middleware/session.go create mode 100644 static/js/dist/app/groups.min.js create mode 100644 static/js/src/app/groups.js create mode 100644 templates/groups.html delete mode 100644 templates/register.html create mode 100644 webpack.config.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 00000000..ff3059c3 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/preset-env"] +} \ No newline at end of file diff --git a/auth/auth.go b/auth/auth.go index 595ed732..3cdc07d0 100644 --- a/auth/auth.go +++ b/auth/auth.go @@ -1,49 +1,24 @@ package auth import ( - "encoding/gob" "errors" - "fmt" - "io" "net/http" - "crypto/rand" - ctx "github.com/gophish/gophish/context" - log "github.com/gophish/gophish/logger" "github.com/gophish/gophish/models" - "github.com/gorilla/securecookie" - "github.com/gorilla/sessions" - "github.com/jinzhu/gorm" "golang.org/x/crypto/bcrypt" ) -//init registers the necessary models to be saved in the session later -func init() { - gob.Register(&models.User{}) - gob.Register(&models.Flash{}) - Store.Options.HttpOnly = true - // This sets the maxAge to 5 days for all cookies - Store.MaxAge(86400 * 5) -} - -// Store contains the session information for the request -var Store = sessions.NewCookieStore( - []byte(securecookie.GenerateRandomKey(64)), //Signing key - []byte(securecookie.GenerateRandomKey(32))) - // ErrInvalidPassword is thrown when a user provides an incorrect password. var ErrInvalidPassword = errors.New("Invalid Password") +// ErrPasswordMismatch is thrown when a user provides a blank password to the register +// or change password functions +var ErrPasswordMismatch = errors.New("Password cannot be blank") + // ErrEmptyPassword is thrown when a user provides a blank password to the register // or change password functions -var ErrEmptyPassword = errors.New("Password cannot be blank") - -// ErrPasswordMismatch is thrown when a user provides passwords that do not match -var ErrPasswordMismatch = errors.New("Passwords must match") - -// ErrUsernameTaken is thrown when a user attempts to register a username that is taken. -var ErrUsernameTaken = errors.New("Username already taken") +var ErrEmptyPassword = errors.New("No password provided") // Login attempts to login the user given a request. func Login(r *http.Request) (bool, models.User, error) { @@ -61,54 +36,6 @@ func Login(r *http.Request) (bool, models.User, error) { return true, u, nil } -// Register attempts to register the user given a request. -func Register(r *http.Request) (bool, error) { - username := r.FormValue("username") - newPassword := r.FormValue("password") - confirmPassword := r.FormValue("confirm_password") - u, err := models.GetUserByUsername(username) - // If the given username already exists, throw an error and return false - if err == nil { - return false, ErrUsernameTaken - } - - // If we have an error which is not simply indicating that no user was found, report it - if err != nil && err != gorm.ErrRecordNotFound { - log.Warn(err) - return false, err - } - - u = models.User{} - // If we've made it here, we should have a valid username given - // Check that the passsword isn't blank - if newPassword == "" { - return false, ErrEmptyPassword - } - // Make sure passwords match - if newPassword != confirmPassword { - return false, ErrPasswordMismatch - } - // Let's create the password hash - h, err := bcrypt.GenerateFromPassword([]byte(newPassword), bcrypt.DefaultCost) - if err != nil { - return false, err - } - u.Username = username - u.Hash = string(h) - u.ApiKey = GenerateSecureKey() - err = models.PutUser(&u) - return true, nil -} - -// GenerateSecureKey creates a secure key to use -// as an API key -func GenerateSecureKey() string { - // Inspired from gorilla/securecookie - k := make([]byte, 32) - io.ReadFull(rand.Reader, k) - return fmt.Sprintf("%x", k) -} - // ChangePassword verifies the current password provided in the request and, // if it's valid, changes the password for the authenticated user. func ChangePassword(r *http.Request) error { diff --git a/controllers/api/api_test.go b/controllers/api/api_test.go index c4a4a8b7..09339799 100644 --- a/controllers/api/api_test.go +++ b/controllers/api/api_test.go @@ -19,6 +19,7 @@ type APISuite struct { apiKey string config *config.Config apiServer *Server + admin models.User } func (s *APISuite) SetupSuite() { @@ -37,6 +38,7 @@ func (s *APISuite) SetupSuite() { u, err := models.GetUser(1) s.Nil(err) s.apiKey = u.ApiKey + s.admin = u // Move our cwd up to the project root for help with resolving // static assets err = os.Chdir("../") @@ -49,6 +51,15 @@ func (s *APISuite) TearDownTest() { for _, campaign := range campaigns { models.DeleteCampaign(campaign.Id) } + // Cleanup all users except the original admin + users, _ := models.GetUsers() + for _, user := range users { + if user.Id == 1 { + continue + } + err := models.DeleteUser(user.Id) + s.Nil(err) + } } func (s *APISuite) SetupTest() { diff --git a/controllers/api/reset.go b/controllers/api/reset.go index 1baf950d..c7853ad9 100644 --- a/controllers/api/reset.go +++ b/controllers/api/reset.go @@ -3,9 +3,9 @@ package api import ( "net/http" - "github.com/gophish/gophish/auth" ctx "github.com/gophish/gophish/context" "github.com/gophish/gophish/models" + "github.com/gophish/gophish/util" ) // Reset (/api/reset) resets the currently authenticated user's API key @@ -13,7 +13,7 @@ func (as *Server) Reset(w http.ResponseWriter, r *http.Request) { switch { case r.Method == "POST": u := ctx.Get(r, "user").(models.User) - u.ApiKey = auth.GenerateSecureKey() + u.ApiKey = util.GenerateSecureKey() err := models.PutUser(&u) if err != nil { http.Error(w, "Error setting API Key", http.StatusInternalServerError) diff --git a/controllers/api/server.go b/controllers/api/server.go index ba605424..9f2bec65 100644 --- a/controllers/api/server.go +++ b/controllers/api/server.go @@ -4,6 +4,7 @@ import ( "net/http" mid "github.com/gophish/gophish/middleware" + "github.com/gophish/gophish/models" "github.com/gophish/gophish/worker" "github.com/gorilla/mux" ) @@ -64,6 +65,8 @@ func (as *Server) registerRoutes() { router.HandleFunc("/pages/{id:[0-9]+}", as.Page) router.HandleFunc("/smtp/", as.SendingProfiles) router.HandleFunc("/smtp/{id:[0-9]+}", as.SendingProfile) + router.HandleFunc("/users/", mid.Use(as.Users, mid.RequirePermission(models.PermissionModifySystem))) + router.HandleFunc("/users/{id:[0-9]+}", mid.Use(as.User)) router.HandleFunc("/util/send_test_email", as.SendTestEmail) router.HandleFunc("/import/group", as.ImportGroup) router.HandleFunc("/import/email", as.ImportEmail) diff --git a/controllers/api/user.go b/controllers/api/user.go new file mode 100644 index 00000000..484db16f --- /dev/null +++ b/controllers/api/user.go @@ -0,0 +1,218 @@ +package api + +import ( + "encoding/json" + "errors" + "net/http" + "strconv" + + ctx "github.com/gophish/gophish/context" + log "github.com/gophish/gophish/logger" + "github.com/gophish/gophish/models" + "github.com/gophish/gophish/util" + "github.com/gorilla/mux" + "github.com/jinzhu/gorm" +) + +// ErrEmptyPassword is thrown when a user provides a blank password to the register +// or change password functions +var ErrEmptyPassword = errors.New("No password provided") + +// ErrUsernameTaken is thrown when a user attempts to register a username that is taken. +var ErrUsernameTaken = errors.New("Username already taken") + +// ErrEmptyUsername is thrown when a user attempts to register a username that is taken. +var ErrEmptyUsername = errors.New("No username provided") + +// ErrEmptyRole is throws when no role is provided when creating or modifying a user. +var ErrEmptyRole = errors.New("No role specified") + +// ErrInsufficientPermission is thrown when a user attempts to change an +// attribute (such as the role) for which they don't have permission. +var ErrInsufficientPermission = errors.New("Permission denied") + +// userRequest is the payload which represents the creation of a new user. +type userRequest struct { + Username string `json:"username"` + Password string `json:"password"` + Role string `json:"role"` +} + +func (ur *userRequest) Validate(existingUser *models.User) error { + switch { + case ur.Username == "": + return ErrEmptyUsername + case ur.Role == "": + return ErrEmptyRole + } + // Verify that the username isn't already taken. We consider two cases: + // * We're creating a new user, in which case any match is a conflict + // * We're modifying a user, in which case any match with a different ID is + // a conflict. + possibleConflict, err := models.GetUserByUsername(ur.Username) + if err == nil { + if existingUser == nil { + return ErrUsernameTaken + } + if possibleConflict.Id != existingUser.Id { + return ErrUsernameTaken + } + } + // If we have an error which is not simply indicating that no user was found, report it + if err != nil && err != gorm.ErrRecordNotFound { + return err + } + return nil +} + +// Users contains functions to retrieve a list of existing users or create a +// new user. Users with the ModifySystem permissions can view and create users. +func (as *Server) Users(w http.ResponseWriter, r *http.Request) { + switch { + case r.Method == "GET": + us, err := models.GetUsers() + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusInternalServerError) + return + } + JSONResponse(w, us, http.StatusOK) + return + case r.Method == "POST": + ur := &userRequest{} + err := json.NewDecoder(r.Body).Decode(ur) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusBadRequest) + return + } + err = ur.Validate(nil) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusBadRequest) + return + } + if ur.Password == "" { + JSONResponse(w, models.Response{Success: false, Message: ErrEmptyPassword.Error()}, http.StatusBadRequest) + return + } + hash, err := util.NewHash(ur.Password) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusInternalServerError) + return + } + role, err := models.GetRoleBySlug(ur.Role) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusInternalServerError) + return + } + user := models.User{ + Username: ur.Username, + Hash: hash, + ApiKey: util.GenerateSecureKey(), + Role: role, + RoleID: role.ID, + } + err = models.PutUser(&user) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusInternalServerError) + return + } + JSONResponse(w, user, http.StatusOK) + return + } +} + +// User contains functions to retrieve or delete a single user. Users with +// the ModifySystem permission can view and modify any user. Otherwise, users +// may only view or delete their own account. +func (as *Server) User(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + id, _ := strconv.ParseInt(vars["id"], 0, 64) + // If the user doesn't have ModifySystem permissions, we need to verify + // that they're only taking action on their account. + currentUser := ctx.Get(r, "user").(models.User) + hasSystem, err := currentUser.HasPermission(models.PermissionModifySystem) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusInternalServerError) + return + } + if !hasSystem && currentUser.Id != id { + JSONResponse(w, models.Response{Success: false, Message: http.StatusText(http.StatusForbidden)}, http.StatusForbidden) + return + } + existingUser, err := models.GetUser(id) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: "User not found"}, http.StatusNotFound) + return + } + switch { + case r.Method == "GET": + JSONResponse(w, existingUser, http.StatusOK) + case r.Method == "DELETE": + err = models.DeleteUser(id) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusInternalServerError) + return + } + log.Infof("Deleted user account for %s", existingUser.Username) + JSONResponse(w, models.Response{Success: true, Message: "User deleted Successfully!"}, http.StatusOK) + case r.Method == "PUT": + ur := &userRequest{} + err = json.NewDecoder(r.Body).Decode(ur) + if err != nil { + log.Errorf("error decoding user request: %v", err) + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusBadRequest) + return + } + err = ur.Validate(&existingUser) + if err != nil { + log.Errorf("invalid user request received: %v", err) + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusBadRequest) + return + } + existingUser.Username = ur.Username + // Only users with the ModifySystem permission are able to update a + // user's role. This prevents a privilege escalation letting users + // upgrade their own account. + if !hasSystem && ur.Role != existingUser.Role.Slug { + JSONResponse(w, models.Response{Success: false, Message: ErrInsufficientPermission.Error()}, http.StatusBadRequest) + return + } + role, err := models.GetRoleBySlug(ur.Role) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusInternalServerError) + return + } + // If our user is trying to change the role of an admin, we need to + // ensure that it isn't the last user account with the Admin role. + if existingUser.Role.Slug == models.RoleAdmin && existingUser.Role.ID != role.ID { + err = models.EnsureEnoughAdmins() + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusInternalServerError) + return + } + } + existingUser.Role = role + existingUser.RoleID = role.ID + // We don't force the password to be provided, since it may be an admin + // managing the user's account, and making a simple change like + // updating the username or role. However, if it _is_ provided, we'll + // update the stored hash. + // + // Note that we don't force the current password to be provided. The + // assumption here is that the API key is a proper bearer token proving + // authenticated access to the account. + if ur.Password != "" { + hash, err := util.NewHash(ur.Password) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusInternalServerError) + return + } + existingUser.Hash = hash + } + err = models.PutUser(&existingUser) + if err != nil { + JSONResponse(w, models.Response{Success: false, Message: err.Error()}, http.StatusInternalServerError) + return + } + JSONResponse(w, existingUser, http.StatusOK) + } +} diff --git a/controllers/api/user_test.go b/controllers/api/user_test.go new file mode 100644 index 00000000..65dc0255 --- /dev/null +++ b/controllers/api/user_test.go @@ -0,0 +1,188 @@ +package api + +import ( + "bytes" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + + "golang.org/x/crypto/bcrypt" + + ctx "github.com/gophish/gophish/context" + "github.com/gophish/gophish/models" +) + +func (s *APISuite) createUnpriviledgedUser(slug string) *models.User { + role, err := models.GetRoleBySlug(slug) + s.Nil(err) + unauthorizedUser := &models.User{ + Username: "foo", + Hash: "bar", + ApiKey: "12345", + Role: role, + RoleID: role.ID, + } + err = models.PutUser(unauthorizedUser) + s.Nil(err) + return unauthorizedUser +} + +func (s *APISuite) TestGetUsers() { + r := httptest.NewRequest(http.MethodGet, "/api/users", nil) + r = ctx.Set(r, "user", s.admin) + w := httptest.NewRecorder() + + s.apiServer.Users(w, r) + s.Equal(w.Code, http.StatusOK) + + got := []models.User{} + err := json.NewDecoder(w.Body).Decode(&got) + s.Nil(err) + + // We only expect one user + s.Equal(1, len(got)) + // And it should be the admin user + s.Equal(s.admin.Id, got[0].Id) +} + +func (s *APISuite) TestCreateUser() { + payload := &userRequest{ + Username: "foo", + Password: "bar", + Role: models.RoleUser, + } + body, err := json.Marshal(payload) + s.Nil(err) + + r := httptest.NewRequest(http.MethodPost, "/api/users", bytes.NewBuffer(body)) + r.Header.Set("Content-Type", "application/json") + r = ctx.Set(r, "user", s.admin) + w := httptest.NewRecorder() + + s.apiServer.Users(w, r) + s.Equal(w.Code, http.StatusOK) + + got := &models.User{} + err = json.NewDecoder(w.Body).Decode(got) + s.Nil(err) + s.Equal(got.Username, payload.Username) + s.Equal(got.Role.Slug, payload.Role) +} + +// TestModifyUser tests that a user with the appropriate access is able to +// modify their username and password. +func (s *APISuite) TestModifyUser() { + unpriviledgedUser := s.createUnpriviledgedUser(models.RoleUser) + newPassword := "new-password" + newUsername := "new-username" + payload := userRequest{ + Username: newUsername, + Password: newPassword, + Role: unpriviledgedUser.Role.Slug, + } + body, err := json.Marshal(payload) + s.Nil(err) + url := fmt.Sprintf("/api/users/%d", unpriviledgedUser.Id) + r := httptest.NewRequest(http.MethodPut, url, bytes.NewBuffer(body)) + r.Header.Set("Content-Type", "application/json") + r.Header.Set("Authorization", fmt.Sprintf("Bearer %s", unpriviledgedUser.ApiKey)) + w := httptest.NewRecorder() + + s.apiServer.ServeHTTP(w, r) + response := &models.User{} + err = json.NewDecoder(w.Body).Decode(response) + s.Nil(err) + s.Equal(w.Code, http.StatusOK) + s.Equal(response.Username, newUsername) + got, err := models.GetUser(unpriviledgedUser.Id) + s.Nil(err) + s.Equal(response.Username, got.Username) + s.Equal(newUsername, got.Username) + err = bcrypt.CompareHashAndPassword([]byte(got.Hash), []byte(newPassword)) + s.Nil(err) +} + +// TestUnauthorizedListUsers ensures that users without the ModifySystem +// permission are unable to list the users registered in Gophish. +func (s *APISuite) TestUnauthorizedListUsers() { + // First, let's create a standard user which doesn't + // have ModifySystem permissions. + unauthorizedUser := s.createUnpriviledgedUser(models.RoleUser) + // We'll try to make a request to the various users API endpoints to + // ensure that they fail. Previously, we could hit the handlers directly + // but we need to go through the router for this test to ensure the + // middleware gets applied. + r := httptest.NewRequest(http.MethodGet, "/api/users/", nil) + r.Header.Set("Authorization", fmt.Sprintf("Bearer %s", unauthorizedUser.ApiKey)) + w := httptest.NewRecorder() + + s.apiServer.ServeHTTP(w, r) + s.Equal(w.Code, http.StatusForbidden) +} + +// TestUnauthorizedModifyUsers verifies that users without ModifySystem +// permission (a "standard" user) can only get or modify their own information. +func (s *APISuite) TestUnauthorizedGetUser() { + // First, we'll make sure that a user with the "user" role is unable to + // get the information of another user (in this case, the main admin). + unauthorizedUser := s.createUnpriviledgedUser(models.RoleUser) + url := fmt.Sprintf("/api/users/%d", s.admin.Id) + r := httptest.NewRequest(http.MethodGet, url, nil) + r.Header.Set("Authorization", fmt.Sprintf("Bearer %s", unauthorizedUser.ApiKey)) + w := httptest.NewRecorder() + + s.apiServer.ServeHTTP(w, r) + s.Equal(w.Code, http.StatusForbidden) +} + +// TestUnauthorizedModifyRole ensures that users without the ModifySystem +// privilege are unable to modify their own role, preventing a potential +// privilege escalation issue. +func (s *APISuite) TestUnauthorizedSetRole() { + unauthorizedUser := s.createUnpriviledgedUser(models.RoleUser) + url := fmt.Sprintf("/api/users/%d", unauthorizedUser.Id) + payload := &userRequest{ + Username: unauthorizedUser.Username, + Role: models.RoleAdmin, + } + body, err := json.Marshal(payload) + s.Nil(err) + r := httptest.NewRequest(http.MethodPut, url, bytes.NewBuffer(body)) + r.Header.Set("Authorization", fmt.Sprintf("Bearer %s", unauthorizedUser.ApiKey)) + w := httptest.NewRecorder() + + s.apiServer.ServeHTTP(w, r) + s.Equal(w.Code, http.StatusBadRequest) + response := &models.Response{} + err = json.NewDecoder(w.Body).Decode(response) + s.Nil(err) + s.Equal(response.Message, ErrInsufficientPermission.Error()) +} + +// TestModifyWithExistingUsername verifies that it's not possible to modify +// an user's username to one which already exists. +func (s *APISuite) TestModifyWithExistingUsername() { + unauthorizedUser := s.createUnpriviledgedUser(models.RoleUser) + payload := &userRequest{ + Username: s.admin.Username, + Role: unauthorizedUser.Role.Slug, + } + body, err := json.Marshal(payload) + s.Nil(err) + url := fmt.Sprintf("/api/users/%d", unauthorizedUser.Id) + r := httptest.NewRequest(http.MethodPut, url, bytes.NewReader(body)) + r.Header.Set("Authorization", fmt.Sprintf("Bearer %s", unauthorizedUser.ApiKey)) + w := httptest.NewRecorder() + + s.apiServer.ServeHTTP(w, r) + s.Equal(w.Code, http.StatusBadRequest) + expected := &models.Response{ + Message: ErrUsernameTaken.Error(), + Success: false, + } + got := &models.Response{} + err = json.NewDecoder(w.Body).Decode(got) + s.Nil(err) + s.Equal(got.Message, expected.Message) +} diff --git a/controllers/route.go b/controllers/route.go index fd8beaa2..2b01e058 100644 --- a/controllers/route.go +++ b/controllers/route.go @@ -95,17 +95,17 @@ func (as *AdminServer) Shutdown() error { func (as *AdminServer) registerRoutes() { router := mux.NewRouter() // Base Front-end routes - router.HandleFunc("/", Use(as.Base, mid.RequireLogin)) + router.HandleFunc("/", mid.Use(as.Base, mid.RequireLogin)) router.HandleFunc("/login", as.Login) - router.HandleFunc("/logout", Use(as.Logout, mid.RequireLogin)) - router.HandleFunc("/campaigns", Use(as.Campaigns, mid.RequireLogin)) - router.HandleFunc("/campaigns/{id:[0-9]+}", Use(as.CampaignID, mid.RequireLogin)) - router.HandleFunc("/templates", Use(as.Templates, mid.RequireLogin)) - router.HandleFunc("/users", Use(as.Users, mid.RequireLogin)) - router.HandleFunc("/landing_pages", Use(as.LandingPages, mid.RequireLogin)) - router.HandleFunc("/sending_profiles", Use(as.SendingProfiles, mid.RequireLogin)) - router.HandleFunc("/settings", Use(as.Settings, mid.RequireLogin)) - router.HandleFunc("/register", Use(as.Register, mid.RequireLogin, mid.RequirePermission(models.PermissionModifySystem))) + router.HandleFunc("/logout", mid.Use(as.Logout, mid.RequireLogin)) + router.HandleFunc("/campaigns", mid.Use(as.Campaigns, mid.RequireLogin)) + router.HandleFunc("/campaigns/{id:[0-9]+}", mid.Use(as.CampaignID, mid.RequireLogin)) + router.HandleFunc("/templates", mid.Use(as.Templates, mid.RequireLogin)) + router.HandleFunc("/groups", mid.Use(as.Groups, mid.RequireLogin)) + router.HandleFunc("/landing_pages", mid.Use(as.LandingPages, mid.RequireLogin)) + router.HandleFunc("/sending_profiles", mid.Use(as.SendingProfiles, mid.RequireLogin)) + router.HandleFunc("/settings", mid.Use(as.Settings, mid.RequireLogin)) + router.HandleFunc("/users", mid.Use(as.UserManagement, mid.RequirePermission(models.PermissionModifySystem), mid.RequireLogin)) // Create the API routes api := api.NewServer(api.WithWorker(as.worker)) router.PathPrefix("/api/").Handler(api) @@ -114,11 +114,11 @@ func (as *AdminServer) registerRoutes() { router.PathPrefix("/").Handler(http.FileServer(unindexed.Dir("./static/"))) // Setup CSRF Protection - csrfHandler := csrf.Protect([]byte(auth.GenerateSecureKey()), + csrfHandler := csrf.Protect([]byte(util.GenerateSecureKey()), csrf.FieldName("csrf_token"), csrf.Secure(as.config.UseTLS)) adminHandler := csrfHandler(router) - adminHandler = Use(adminHandler.ServeHTTP, mid.CSRFExceptions, mid.GetContext) + adminHandler = mid.Use(adminHandler.ServeHTTP, mid.CSRFExceptions, mid.GetContext) // Setup GZIP compression gzipWrapper, _ := gziphandler.NewGzipLevelHandler(gzip.BestCompression) @@ -129,15 +129,6 @@ func (as *AdminServer) registerRoutes() { as.server.Handler = adminHandler } -// Use allows us to stack middleware to process the request -// Example taken from https://github.com/gorilla/mux/pull/36#issuecomment-25849172 -func Use(handler http.HandlerFunc, mid ...func(http.Handler) http.HandlerFunc) http.HandlerFunc { - for _, m := range mid { - handler = m(handler) - } - return handler -} - type templateParams struct { Title string Flashes []interface{} @@ -160,42 +151,6 @@ func newTemplateParams(r *http.Request) templateParams { } } -// Register creates a new user -func (as *AdminServer) Register(w http.ResponseWriter, r *http.Request) { - // If it is a post request, attempt to register the account - // Now that we are all registered, we can log the user in - params := templateParams{Title: "Register", Token: csrf.Token(r)} - session := ctx.Get(r, "session").(*sessions.Session) - switch { - case r.Method == "GET": - params.Flashes = session.Flashes() - session.Save(r, w) - templates := template.New("template") - _, err := templates.ParseFiles("templates/register.html", "templates/flashes.html") - if err != nil { - log.Error(err) - } - template.Must(templates, err).ExecuteTemplate(w, "base", params) - case r.Method == "POST": - //Attempt to register - succ, err := auth.Register(r) - //If we've registered, redirect to the login page - if succ { - Flash(w, r, "success", "Registration successful!") - session.Save(r, w) - http.Redirect(w, r, "/login", 302) - return - } - // Check the error - m := err.Error() - log.Error(err) - Flash(w, r, "danger", m) - session.Save(r, w) - http.Redirect(w, r, "/register", 302) - return - } -} - // Base handles the default path and template execution func (as *AdminServer) Base(w http.ResponseWriter, r *http.Request) { params := newTemplateParams(r) @@ -224,11 +179,11 @@ func (as *AdminServer) Templates(w http.ResponseWriter, r *http.Request) { getTemplate(w, "templates").ExecuteTemplate(w, "base", params) } -// Users handles the default path and template execution -func (as *AdminServer) Users(w http.ResponseWriter, r *http.Request) { +// Groups handles the default path and template execution +func (as *AdminServer) Groups(w http.ResponseWriter, r *http.Request) { params := newTemplateParams(r) params.Title = "Users & Groups" - getTemplate(w, "users").ExecuteTemplate(w, "base", params) + getTemplate(w, "groups").ExecuteTemplate(w, "base", params) } // LandingPages handles the default path and template execution @@ -271,6 +226,14 @@ func (as *AdminServer) Settings(w http.ResponseWriter, r *http.Request) { } } +// UserManagement is an admin-only handler that allows for the registration +// and management of user accounts within Gophish. +func (as *AdminServer) UserManagement(w http.ResponseWriter, r *http.Request) { + params := newTemplateParams(r) + params.Title = "User Management" + getTemplate(w, "users").ExecuteTemplate(w, "base", params) +} + // Login handles the authentication flow for a user. If credentials are valid, // a session is created func (as *AdminServer) Login(w http.ResponseWriter, r *http.Request) { diff --git a/gophish.go b/gophish.go index 6c6fbd9f..e86393d7 100644 --- a/gophish.go +++ b/gophish.go @@ -32,10 +32,10 @@ import ( "gopkg.in/alecthomas/kingpin.v2" - "github.com/gophish/gophish/auth" "github.com/gophish/gophish/config" "github.com/gophish/gophish/controllers" log "github.com/gophish/gophish/logger" + "github.com/gophish/gophish/middleware" "github.com/gophish/gophish/models" ) @@ -94,7 +94,7 @@ func main() { } adminConfig := conf.AdminConf adminServer := controllers.NewAdminServer(adminConfig, adminOptions...) - auth.Store.Options.Secure = adminConfig.UseTLS + middleware.Store.Options.Secure = adminConfig.UseTLS phishConfig := conf.PhishConf phishServer := controllers.NewPhishingServer(phishConfig) diff --git a/gulpfile.js b/gulpfile.js index f89ed36e..809c28f0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -9,11 +9,12 @@ var gulp = require('gulp'), concat = require('gulp-concat'), uglify = require('gulp-uglify'), cleanCSS = require('gulp-clean-css'), + babel = require('gulp-babel'), js_directory = 'static/js/src/', css_directory = 'static/css/', vendor_directory = js_directory + 'vendor/', - app_directory = js_directory + 'app/**/*.js', + app_directory = js_directory + 'app/', dest_js_directory = 'static/js/dist/', dest_css_directory = 'static/css/dist/'; @@ -48,8 +49,19 @@ vendorjs = function () { } scripts = function () { - // Gophish app files - return gulp.src(app_directory) + // Gophish app files - non-ES6 + return gulp.src([ + app_directory + 'autocomplete.js', + app_directory + 'campaign_results.js', + app_directory + 'campaigns.js', + app_directory + 'dashboard.js', + app_directory + 'groups.js', + app_directory + 'landing_pages.js', + app_directory + 'sending_profiles.js', + app_directory + 'settings.js', + app_directory + 'templates.js', + app_directory + 'gophish.js', + ]) .pipe(rename({ suffix: '.min' })) diff --git a/middleware/middleware.go b/middleware/middleware.go index 281aa6be..628763cc 100644 --- a/middleware/middleware.go +++ b/middleware/middleware.go @@ -6,7 +6,6 @@ import ( "net/http" "strings" - "github.com/gophish/gophish/auth" ctx "github.com/gophish/gophish/context" "github.com/gophish/gophish/models" "github.com/gorilla/csrf" @@ -31,6 +30,15 @@ func CSRFExceptions(handler http.Handler) http.HandlerFunc { } } +// Use allows us to stack middleware to process the request +// Example taken from https://github.com/gorilla/mux/pull/36#issuecomment-25849172 +func Use(handler http.HandlerFunc, mid ...func(http.Handler) http.HandlerFunc) http.HandlerFunc { + for _, m := range mid { + handler = m(handler) + } + return handler +} + // GetContext wraps each request in a function which fills in the context for a given request. // This includes setting the User and Session keys and values as necessary for use in later functions. func GetContext(handler http.Handler) http.HandlerFunc { @@ -43,7 +51,7 @@ func GetContext(handler http.Handler) http.HandlerFunc { } // Set the context appropriately here. // Set the session - session, _ := auth.Store.Get(r, "gophish") + session, _ := Store.Get(r, "gophish") // Put the session in the context so that we can // reuse the values in different handlers r = ctx.Set(r, "session", session) @@ -107,11 +115,12 @@ func RequireLogin(handler http.Handler) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if u := ctx.Get(r, "user"); u != nil { handler.ServeHTTP(w, r) - } else { - q := r.URL.Query() - q.Set("next", r.URL.Path) - http.Redirect(w, r, fmt.Sprintf("/login?%s", q.Encode()), http.StatusTemporaryRedirect) + return } + q := r.URL.Query() + q.Set("next", r.URL.Path) + http.Redirect(w, r, fmt.Sprintf("/login?%s", q.Encode()), http.StatusTemporaryRedirect) + return } } diff --git a/middleware/session.go b/middleware/session.go new file mode 100644 index 00000000..fe96701b --- /dev/null +++ b/middleware/session.go @@ -0,0 +1,23 @@ +package middleware + +import ( + "encoding/gob" + + "github.com/gophish/gophish/models" + "github.com/gorilla/securecookie" + "github.com/gorilla/sessions" +) + +// init registers the necessary models to be saved in the session later +func init() { + gob.Register(&models.User{}) + gob.Register(&models.Flash{}) + Store.Options.HttpOnly = true + // This sets the maxAge to 5 days for all cookies + Store.MaxAge(86400 * 5) +} + +// Store contains the session information for the request +var Store = sessions.NewCookieStore( + []byte(securecookie.GenerateRandomKey(64)), //Signing key + []byte(securecookie.GenerateRandomKey(32))) diff --git a/models/rbac.go b/models/rbac.go index fc1139fd..00f1346a 100644 --- a/models/rbac.go +++ b/models/rbac.go @@ -48,7 +48,7 @@ const ( // Role represents a user role within Gophish. Each user has a single role // which maps to a set of permissions. type Role struct { - ID int64 `json:"id"` + ID int64 `json:"-"` Slug string `json:"slug"` Name string `json:"name"` Description string `json:"description"` diff --git a/models/user.go b/models/user.go index 9ce92bbc..2487f784 100644 --- a/models/user.go +++ b/models/user.go @@ -1,11 +1,22 @@ package models +import ( + "errors" + + log "github.com/gophish/gophish/logger" +) + +// ErrModifyingOnlyAdmin occurs when there is an attempt to modify the only +// user account with the Admin role in such a way that there will be no user +// accounts left in Gophish with that role. +var ErrModifyingOnlyAdmin = errors.New("Cannot remove the only administrator") + // User represents the user model for gophish. type User struct { Id int64 `json:"id"` Username string `json:"username" sql:"not null;unique"` Hash string `json:"-"` - ApiKey string `json:"api_key" sql:"not null;unique"` + ApiKey string `json:"-" sql:"not null;unique"` Role Role `json:"role" gorm:"association_autoupdate:false;association_autocreate:false"` RoleID int64 `json:"-"` } @@ -18,6 +29,13 @@ func GetUser(id int64) (User, error) { return u, err } +// GetUsers returns the users registered in Gophish +func GetUsers() ([]User, error) { + us := []User{} + err := db.Preload("Role").Find(&us).Error + return us, err +} + // GetUserByAPIKey returns the user that the given API Key corresponds to. If no user is found, an // error is thrown. func GetUserByAPIKey(key string) (User, error) { @@ -39,3 +57,102 @@ func PutUser(u *User) error { err := db.Save(u).Error return err } + +// EnsureEnoughAdmins ensures that there is more than one user account in +// Gophish with the Admin role. This function is meant to be called before +// modifying a user account with the Admin role in a non-revokable way. +func EnsureEnoughAdmins() error { + role, err := GetRoleBySlug(RoleAdmin) + if err != nil { + return err + } + var adminCount int + err = db.Model(&User{}).Where("role_id=?", role.ID).Count(&adminCount).Error + if err != nil { + return err + } + if adminCount == 1 { + return ErrModifyingOnlyAdmin + } + return nil +} + +// DeleteUser deletes the given user. To ensure that there is always at least +// one user account with the Admin role, this function will refuse to delete +// the last Admin. +func DeleteUser(id int64) error { + existing, err := GetUser(id) + if err != nil { + return err + } + // If the user is an admin, we need to verify that it's not the last one. + if existing.Role.Slug == RoleAdmin { + err = EnsureEnoughAdmins() + if err != nil { + return err + } + } + campaigns, err := GetCampaigns(id) + if err != nil { + return err + } + // Delete the campaigns + log.Infof("Deleting campaigns for user ID %d", id) + for _, campaign := range campaigns { + err = DeleteCampaign(campaign.Id) + if err != nil { + return err + } + } + log.Infof("Deleting pages for user ID %d", id) + // Delete the landing pages + pages, err := GetPages(id) + if err != nil { + return err + } + for _, page := range pages { + err = DeletePage(page.Id, id) + if err != nil { + return err + } + } + // Delete the templates + log.Infof("Deleting templates for user ID %d", id) + templates, err := GetTemplates(id) + if err != nil { + return err + } + for _, template := range templates { + err = DeleteTemplate(template.Id, id) + if err != nil { + return err + } + } + // Delete the groups + log.Infof("Deleting groups for user ID %d", id) + groups, err := GetGroups(id) + if err != nil { + return err + } + for _, group := range groups { + err = DeleteGroup(&group) + if err != nil { + return err + } + } + // Delete the sending profiles + log.Infof("Deleting sending profiles for user ID %d", id) + profiles, err := GetSMTPs(id) + if err != nil { + return err + } + for _, profile := range profiles { + err = DeleteSMTP(profile.Id, id) + if err != nil { + return err + } + } + // Finally, delete the user + err = db.Where("id=?", id).Delete(&User{}).Error + return err +} diff --git a/models/user_test.go b/models/user_test.go index 7e86eecb..c869d82e 100644 --- a/models/user_test.go +++ b/models/user_test.go @@ -59,3 +59,44 @@ func (s *ModelsSuite) TestGeneratedAPIKey(c *check.C) { c.Assert(err, check.Equals, nil) c.Assert(u.ApiKey, check.Not(check.Equals), "12345678901234567890123456789012") } + +func (s *ModelsSuite) verifyRoleCount(c *check.C, roleID, expected int64) { + var adminCount int64 + err := db.Model(&User{}).Where("role_id=?", roleID).Count(&adminCount).Error + c.Assert(err, check.Equals, nil) + c.Assert(adminCount, check.Equals, expected) +} + +func (s *ModelsSuite) TestDeleteLastAdmin(c *check.C) { + // Create a new admin user + role, err := GetRoleBySlug(RoleAdmin) + c.Assert(err, check.Equals, nil) + newAdmin := User{ + Username: "new-admin", + Hash: "123456", + ApiKey: "123456", + Role: role, + RoleID: role.ID, + } + err = PutUser(&newAdmin) + c.Assert(err, check.Equals, nil) + + // Ensure that there are two admins + s.verifyRoleCount(c, role.ID, 2) + + // Delete the newly created admin - this should work since we have more + // than one current admin. + err = DeleteUser(newAdmin.Id) + c.Assert(err, check.Equals, nil) + + // Verify that we now have one admin + s.verifyRoleCount(c, role.ID, 1) + + // Try to delete the last admin - this should fail since we always want at + // least one admin active in Gophish. + err = DeleteUser(1) + c.Assert(err, check.Equals, ErrModifyingOnlyAdmin) + + // Verify that the admin wasn't deleted + s.verifyRoleCount(c, role.ID, 1) +} diff --git a/package.json b/package.json index 1f17d851..10a1cdad 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,12 @@ }, "homepage": "https://getgophish.com", "devDependencies": { + "@babel/core": "^7.4.5", + "@babel/preset-env": "^7.4.5", + "babel-loader": "^8.0.6", "clean-css": "^4.2.1", "gulp": "^4.0.0", + "gulp-babel": "^8.0.0", "gulp-clean-css": "^4.0.0", "gulp-cli": "^2.2.0", "gulp-concat": "^2.6.1", @@ -22,6 +26,8 @@ "gulp-uglify": "^3.0.2", "gulp-wrap": "^0.15.0", "jshint": "^2.10.2", - "jshint-stylish": "^2.2.1" + "jshint-stylish": "^2.2.1", + "webpack": "^4.32.2", + "webpack-cli": "^3.3.2" } } diff --git a/static/css/dist/gophish.css b/static/css/dist/gophish.css index f80dfc2f..89ae202a 100644 --- a/static/css/dist/gophish.css +++ b/static/css/dist/gophish.css @@ -3,7 +3,7 @@ * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}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-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(/font/glyphicons-halflings-regular.eot);src:url(/font/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(/font/glyphicons-halflings-regular.woff2) format('woff2'),url(/font/glyphicons-halflings-regular.woff) format('woff'),url(/font/glyphicons-halflings-regular.ttf) format('truetype'),url(/font/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;opacity:0;line-break:auto}.tooltip.in{opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;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:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.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{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.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,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.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:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} -.nav-tabs{cursor:pointer}.datatable_hidden{display:none}.navbar-logo{margin:4px 0;float:left}#navbar-login{padding-top:8px;padding-bottom:0}#navbar-dropdown{margin-top:6px;margin-right:15px}.sans{font-family:'Open Sans',sans-serif!important}.label{font-family:Roboto,sans-serif!important}.form-signin{max-width:400px;padding:15px;margin:40px auto 0 auto}ul .dropdown-menu .ng-isolate-scope{visibility:visible;display:block;opacity:1}#login-button{padding:10px 15px}.form-signin-heading{text-align:center}.form-signin .checkbox,.form-signin .form-signin-heading{margin-bottom:10px}.form-signin .checkbox{font-weight:400}.form-signin .form-control{font-family:'Open Sans',sans-serif;position:relative;font-size:16px;height:auto;padding:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-signin .form-control:focus{z-index:2}.form-signin .top-input{margin-bottom:-1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.form-signin .middle-input{margin-bottom:-1px;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.form-signin .bottom-input{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}#logo{display:block;margin-left:auto;margin-right:auto}footer>p{color:#444;font-family:'Open Sans',sans-serif}.header{margin-top:10px}.sidebar{padding-left:0}.sidebar a{color:#201e1c}.sidebar a:hover{color:#201e1c}.api_heading{font-family:'Open Sans',sans-serif;background-color:#201e1c;border-radius:5px;padding:10px;color:#e2e2e2;width:100%}p{font-size:1.2em}.form-label{padding-top:7px}.hover{visibility:visible}.edit-button{display:none}.editable-row:hover .edit-button{display:inline-block;padding:3px 6px;font-size:9px}.remove-row{float:right;cursor:pointer}.pagination{margin:0}@media (min-width:992px){.modal-dialog{width:700px}}.dropdown-menu>li>a{cursor:pointer}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;text-align:right;opacity:0;outline:0;background:#fff;cursor:inherit;display:block}.typeahead{border-left-radius:6px!important;float:none!important}.tt-query{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.tt-hint{color:#999}.tt-menu{width:422px;margin-top:4px;padding:4px 0;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.tt-suggestion{padding:3px 20px;line-height:24px}.tt-suggestion.tt-cursor{color:#fff;background-color:#0097cf}.tt-suggestion p{margin:0}.typeahead-button{line-height:1.39!important}.ct-point{cursor:pointer}.ct-timeline-point{cursor:pointer;stroke:#fff;stroke-width:1px}.ct-point-sending{fill:#428bca!important}.ct-point-error{fill:#6c7a89!important}.ct-point-clicked{fill:#f39c12!important}.ct-point-opened{fill:#f9bf3b!important}.ct-point-sent{fill:#1abc9c!important}.ct-point-success{fill:#f05b4f!important}.chartist-tooltip{position:absolute;display:inline-block;min-width:5em;padding:.5em;background:#283f50;color:#fff;font-weight:700;text-align:center;pointer-events:none;z-index:1;margin-left:1.25em;font-size:.75em;border-radius:4px}.chartist-pie-tooltip{position:absolute;display:inline-block;min-width:5em;padding:.5em;background:#283f50;color:#fff;font-weight:700;text-align:center;pointer-events:none;z-index:1;margin-left:1.25em;font-size:.75em;border-radius:4px}.chartist-tooltip:after{content:"";position:absolute;top:100%;left:50%;width:0;height:0;margin-left:-15px;border:15px solid transparent;border-top-color:#283f50}.chartist-chart{height:175px}.chartist-legend{list-style:none;position:absolute;padding-left:0;top:0}.chartist-legend li{display:block;position:relative;margin-bottom:4px;border-radius:5px;padding:2px 8px 2px 8px;font-size:14px;cursor:default;-webkit-transition:background-color .2s ease-in-out;-moz-transition:background-color .2s ease-in-out;-o-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.chartist-legend li span{display:inline-block;vertical-align:middle;width:20px;height:20px;margin-right:10px;border-radius:50%}.ct-series-a .ct-slice-donut{stroke:#1abc9c!important}.ct-slice-donut.ct-slice-donut-error{stroke:#6c7a89!important}.ct-slice-donut.ct-slice-donut-sent{stroke:#1abc9c!important}.ct-slice-donut.ct-slice-donut-opened{stroke:#f9bf3b!important}.ct-slice-donut.ct-slice-donut-success{stroke:#f05b4f!important}.ct-slice-donut.ct-slice-donut-clicked{stroke:#f39c12!important}.ct-slice-donut.ct-slice-donut-sending{stroke:#428bca!important}.ct-legend-error{background-color:#6c7a89!important}.ct-legend-sent{background-color:#1abc9c!important}.ct-legend-opened{background-color:#f9bf3b!important}.ct-legend-success{background-color:#f05b4f!important}.ct-legend-clicked{background-color:#f39c12!important}.ct-legend-sending{background-color:#428bca!important}.label-clicked{background-color:#f39c12!important}.gophish-editor{font-family:'Courier New',Monospace!important;font-size:small!important}#resultsMap{margin-top:-30px}@media (min-width:768px) and (max-width:1300px){.navbar-collapse.collapse{display:none!important}.navbar-collapse.collapse.in{display:block!important}.navbar-header .collapse,.navbar-toggle{display:block!important}.navbar-header{float:none!important}}.modal-content table{table-layout:fixed}.modal-content .dataTable tbody td{font-size:16px;overflow:hidden;text-overflow:ellipsis}.dataTables_info{font-size:15px}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after{font-family:FontAwesome!important;position:relative!important;display:initial!important;top:initial!important;right:initial!important;left:6px;color:#1abc9c}table.dataTable thead .sorting:after{content:"\f0dc"!important;color:initial}table.dataTable thead .sorting_asc:after{content:"\f0de"!important;opacity:.8!important}table.dataTable thead .sorting_desc:after{content:"\f0dd"!important;opacity:.8!important}td.details-control{cursor:pointer}.timeline{text-align:left;background-color:#fff}.timeline-graph{margin-left:30px}.timeline>h6{margin-top:0;margin-bottom:5px}.timeline>.subtitle{color:#999;font-style:italic;margin-bottom:15px;display:block}.timeline-entry{position:relative;padding-bottom:36px}.timeline-bar{display:block;content:"";position:absolute;top:5px;bottom:0;width:1px;left:-6px;background:#aaa}.timeline-entry:last-child .timeline-bar{display:none}.timeline-entry:last-child{padding-bottom:0}.timeline-icon{position:relative;float:left;margin-left:-24px;width:36px;top:-5px;height:36px;text-align:center;border-radius:50%}.timeline-icon>i{margin-top:10px;color:#fff}.timeline-message{padding-left:30px}.timeline-date{float:right;color:#999;font-style:italic}.timeline-event-details{font-size:16px;margin-top:5px;cursor:pointer}.timeline-replay-button{margin-top:10px}.timeline-event-details>.table-responsive{display:none}.timeline-event-details{margin-top:10px;margin-bottom:10px}.timeline-event-results{font-size:16px;display:none}.timeline-device-details{font-size:.8em;margin-top:10px}.timeline-device-os>span.fa-stack{font-size:.8em}.timeline-device-browser>span.fa-stack{font-size:.8em}.timeline-device-browser>span.fa-stack>i.fa-stack-1x{font-size:1.5em}i.fa-vendor-icon{font-size:.6em}i.fa-tablet+i.fa-vendor-icon{top:-2px}i.fa-tablet+i.fa-vendor-icon{top:-2px}i.fa-laptop+i.fa-vendor-icon{top:-2px}.tooltip-inner{width:300px!important}#refresh_message{display:none}#capture_passwords{display:none}#redirect_url{display:none}@media (max-width:767px){.navbar-header{margin-left:10px!important}}table.dataTable{width:100%!important}.btn-blue{color:#fff;background-color:#428bca;border-color:#428bca}.btn-blue:hover{background-color:#64a1d6}.select2-container--bootstrap .select2-selection--single .select2-selection__rendered{font-size:15px!important}.select2-container--bootstrap .select2-selection--single{height:42px!important;padding:8px 12px!important}.input-group-btn .btn{line-height:20px!important}.highcharts-title{font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;font-size:16px!important}.color-success{font-weight:700;color:#f05b4f}.color-sent{font-weight:700;color:#1abc9c}.color-opened{font-weight:700;color:#f9bf3b}.color-clicked{font-weight:700;color:#f39c12}.color-reported{font-weight:700;color:#45d6ef}.color-success{color:#f05b4f}.nav-sidebar>li.active>a:focus,.nav-sidebar>li.active>a:hover{background-color:#37485a}#resultsMapContainer{display:none}#csv-template{margin-left:15px;cursor:pointer}.cke_chrome{border-top:0!important}.cke_autocomplete_panel{width:400px!important}.cke_autocomplete_panel>li{padding:10px 5px!important} +.nav-tabs{cursor:pointer}.datatable_hidden{display:none}.navbar-logo{margin:4px 0;float:left}#navbar-login{padding-top:8px;padding-bottom:0}#navbar-dropdown{margin-top:6px;margin-right:15px}.sans{font-family:'Open Sans',sans-serif!important}.label{font-family:Roboto,sans-serif!important}.form-signin{max-width:400px;padding:15px;margin:40px auto 0 auto}ul .dropdown-menu .ng-isolate-scope{visibility:visible;display:block;opacity:1}#login-button{padding:10px 15px}.form-signin-heading{text-align:center}.form-signin .checkbox,.form-signin .form-signin-heading{margin-bottom:10px}.form-signin .checkbox{font-weight:400}.form-signin .form-control{font-family:'Open Sans',sans-serif;position:relative;font-size:16px;height:auto;padding:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-signin .form-control:focus{z-index:2}.form-signin .top-input{margin-bottom:-1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.form-signin .middle-input{margin-bottom:-1px;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.form-signin .bottom-input{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}#logo{display:block;margin-left:auto;margin-right:auto}footer>p{color:#444;font-family:'Open Sans',sans-serif}.header{margin-top:10px}.sidebar{padding-left:0}.sidebar a{color:#201e1c}.sidebar a:hover{color:#201e1c}.api_heading{font-family:'Open Sans',sans-serif;background-color:#201e1c;border-radius:5px;padding:10px;color:#e2e2e2;width:100%}p{font-size:1.2em}.form-label{padding-top:7px}.hover{visibility:visible}.edit-button{display:none}.editable-row:hover .edit-button{display:inline-block;padding:3px 6px;font-size:9px}.remove-row{float:right;cursor:pointer}.pagination{margin:0}@media (min-width:992px){.modal-dialog{width:700px}}.dropdown-menu>li>a{cursor:pointer}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;text-align:right;opacity:0;outline:0;background:#fff;cursor:inherit;display:block}.typeahead{border-left-radius:6px!important;float:none!important}.tt-query{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.tt-hint{color:#999}.tt-menu{width:422px;margin-top:4px;padding:4px 0;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.tt-suggestion{padding:3px 20px;line-height:24px}.tt-suggestion.tt-cursor{color:#fff;background-color:#0097cf}.tt-suggestion p{margin:0}.typeahead-button{line-height:1.39!important}.ct-point{cursor:pointer}.ct-timeline-point{cursor:pointer;stroke:#fff;stroke-width:1px}.ct-point-sending{fill:#428bca!important}.ct-point-error{fill:#6c7a89!important}.ct-point-clicked{fill:#f39c12!important}.ct-point-opened{fill:#f9bf3b!important}.ct-point-sent{fill:#1abc9c!important}.ct-point-success{fill:#f05b4f!important}.chartist-tooltip{position:absolute;display:inline-block;min-width:5em;padding:.5em;background:#283f50;color:#fff;font-weight:700;text-align:center;pointer-events:none;z-index:1;margin-left:1.25em;font-size:.75em;border-radius:4px}.chartist-pie-tooltip{position:absolute;display:inline-block;min-width:5em;padding:.5em;background:#283f50;color:#fff;font-weight:700;text-align:center;pointer-events:none;z-index:1;margin-left:1.25em;font-size:.75em;border-radius:4px}.chartist-tooltip:after{content:"";position:absolute;top:100%;left:50%;width:0;height:0;margin-left:-15px;border:15px solid transparent;border-top-color:#283f50}.chartist-chart{height:175px}.chartist-legend{list-style:none;position:absolute;padding-left:0;top:0}.chartist-legend li{display:block;position:relative;margin-bottom:4px;border-radius:5px;padding:2px 8px 2px 8px;font-size:14px;cursor:default;-webkit-transition:background-color .2s ease-in-out;-moz-transition:background-color .2s ease-in-out;-o-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.chartist-legend li span{display:inline-block;vertical-align:middle;width:20px;height:20px;margin-right:10px;border-radius:50%}.ct-series-a .ct-slice-donut{stroke:#1abc9c!important}.ct-slice-donut.ct-slice-donut-error{stroke:#6c7a89!important}.ct-slice-donut.ct-slice-donut-sent{stroke:#1abc9c!important}.ct-slice-donut.ct-slice-donut-opened{stroke:#f9bf3b!important}.ct-slice-donut.ct-slice-donut-success{stroke:#f05b4f!important}.ct-slice-donut.ct-slice-donut-clicked{stroke:#f39c12!important}.ct-slice-donut.ct-slice-donut-sending{stroke:#428bca!important}.ct-legend-error{background-color:#6c7a89!important}.ct-legend-sent{background-color:#1abc9c!important}.ct-legend-opened{background-color:#f9bf3b!important}.ct-legend-success{background-color:#f05b4f!important}.ct-legend-clicked{background-color:#f39c12!important}.ct-legend-sending{background-color:#428bca!important}.label-clicked{background-color:#f39c12!important}.gophish-editor{font-family:'Courier New',Monospace!important;font-size:small!important}#resultsMap{margin-top:-30px}@media (min-width:768px) and (max-width:1300px){.navbar-collapse.collapse{display:none!important}.navbar-collapse.collapse.in{display:block!important}.navbar-header .collapse,.navbar-toggle{display:block!important}.navbar-header{float:none!important}}.modal-content table{table-layout:fixed}.modal-content .dataTable tbody td{font-size:16px;overflow:hidden;text-overflow:ellipsis}.dataTables_info{font-size:15px}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after{font-family:FontAwesome!important;position:relative!important;display:initial!important;top:initial!important;right:initial!important;left:6px;color:#1abc9c}table.dataTable thead .sorting:after{content:"\f0dc"!important;color:initial}table.dataTable thead .sorting_asc:after{content:"\f0de"!important;opacity:.8!important}table.dataTable thead .sorting_desc:after{content:"\f0dd"!important;opacity:.8!important}td.details-control{cursor:pointer}.timeline{text-align:left;background-color:#fff}.timeline-graph{margin-left:30px}.timeline>h6{margin-top:0;margin-bottom:5px}.timeline>.subtitle{color:#999;font-style:italic;margin-bottom:15px;display:block}.timeline-entry{position:relative;padding-bottom:36px}.timeline-bar{display:block;content:"";position:absolute;top:5px;bottom:0;width:1px;left:-6px;background:#aaa}.timeline-entry:last-child .timeline-bar{display:none}.timeline-entry:last-child{padding-bottom:0}.timeline-icon{position:relative;float:left;margin-left:-24px;width:36px;top:-5px;height:36px;text-align:center;border-radius:50%}.timeline-icon>i{margin-top:10px;color:#fff}.timeline-message{padding-left:30px}.timeline-date{float:right;color:#999;font-style:italic}.timeline-event-details{font-size:16px;margin-top:5px;cursor:pointer}.timeline-replay-button{margin-top:10px}.timeline-event-details>.table-responsive{display:none}.timeline-event-details{margin-top:10px;margin-bottom:10px}.timeline-event-results{font-size:16px;display:none}.timeline-device-details{font-size:.8em;margin-top:10px}.timeline-device-os>span.fa-stack{font-size:.8em}.timeline-device-browser>span.fa-stack{font-size:.8em}.timeline-device-browser>span.fa-stack>i.fa-stack-1x{font-size:1.5em}i.fa-vendor-icon{font-size:.6em}i.fa-tablet+i.fa-vendor-icon{top:-2px}i.fa-tablet+i.fa-vendor-icon{top:-2px}i.fa-laptop+i.fa-vendor-icon{top:-2px}.tooltip-inner{width:300px!important}#refresh_message{display:none}#capture_passwords{display:none}#redirect_url{display:none}@media (max-width:767px){.navbar-header{margin-left:10px!important}}table.dataTable{width:100%!important}.btn-blue{color:#fff;background-color:#428bca;border-color:#428bca}.btn-blue:hover{background-color:#64a1d6}.select2-container--bootstrap .select2-selection--single .select2-selection__rendered{font-size:15px!important}.select2-container--bootstrap .select2-selection--single{height:42px!important;padding:8px 12px!important}.input-group-btn .btn{line-height:20px!important}.highcharts-title{font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;font-size:16px!important}.color-success{font-weight:700;color:#f05b4f}.color-sent{font-weight:700;color:#1abc9c}.color-opened{font-weight:700;color:#f9bf3b}.color-clicked{font-weight:700;color:#f39c12}.color-reported{font-weight:700;color:#45d6ef}.color-success{color:#f05b4f}.nav-sidebar>li.active>a:focus,.nav-sidebar>li.active>a:hover{background-color:#37485a}.nav-badge{margin-top:5px}#resultsMapContainer{display:none}#csv-template{margin-left:15px;cursor:pointer}.cke_chrome{border-top:0!important}.cke_autocomplete_panel{width:400px!important}.cke_autocomplete_panel>li{padding:10px 5px!important} body{padding-top:50px}.sub-header{padding-bottom:10px;border-bottom:1px solid #eee}.sidebar{display:none}@media (min-width:768px){.sidebar{position:fixed;top:51px;bottom:0;left:0;display:block;padding:20px;overflow-x:hidden;overflow-y:auto;background-color:#f5f5f5;border-right:1px solid #eee}}.nav-sidebar{margin-right:-21px;margin-bottom:20px;margin-left:-20px}.nav-sidebar>li>a{padding-right:20px;padding-left:20px}.nav-sidebar>.active>a{color:#fff;background-color:#283f50}.main{padding:20px}@media (min-width:768px){.main{padding-right:40px;padding-left:40px}}.main .page-header{margin-top:0}.placeholders{margin-bottom:30px;text-align:center}.placeholders h4{margin-bottom:0}.placeholder{margin-bottom:20px}.placeholder img{display:inline-block;border-radius:50%} @font-face{font-family:Flat-UI-Icons;src:url(../font/flat-ui-icons-regular.eot);src:url(../font/flat-ui-icons-regular.eot?#iefix) format('embedded-opentype'),url(../font/flat-ui-icons-regular.woff) format('woff'),url(../font/flat-ui-icons-regular.ttf) format('truetype'),url(../font/flat-ui-icons-regular.svg#flat-ui-icons-regular) format('svg');font-weight:400;font-style:normal}[data-icon]:before{font-family:Flat-UI-Icons;content:attr(data-icon);speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fui-arrow-left,.fui-arrow-right,.fui-calendar-solid,.fui-chat,.fui-check,.fui-check-inverted,.fui-check-inverted-2,.fui-checkbox-checked,.fui-checkbox-unchecked,.fui-cmd,.fui-cross,.fui-eye,.fui-gear,.fui-heart,.fui-list,.fui-location,.fui-lock,.fui-mail,.fui-new,.fui-pause,.fui-photo,.fui-play,.fui-plus,.fui-radio-checked,.fui-radio-unchecked,.fui-search,.fui-time,.fui-user,.fui-video,.fui-volume{display:inline-block;font-family:Flat-UI-Icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fui-arrow-right:before{content:"\e02c"}.fui-arrow-left:before{content:"\e02d"}.fui-cmd:before{content:"\e02f"}.fui-check-inverted:before{content:"\e006"}.fui-heart:before{content:"\e007"}.fui-location:before{content:"\e008"}.fui-plus:before{content:"\e009"}.fui-check:before{content:"\e00a"}.fui-cross:before{content:"\e00b"}.fui-list:before{content:"\e00c"}.fui-new:before{content:"\e00d"}.fui-video:before{content:"\e00e"}.fui-photo:before{content:"\e00f"}.fui-volume:before{content:"\e010"}.fui-time:before{content:"\e011"}.fui-eye:before{content:"\e012"}.fui-chat:before{content:"\e013"}.fui-search:before{content:"\e01c"}.fui-user:before{content:"\e01d"}.fui-mail:before{content:"\e01e"}.fui-lock:before{content:"\e01f"}.fui-gear:before{content:"\e024"}.fui-radio-unchecked:before{content:"\e02b"}.fui-radio-checked:before{content:"\e032"}.fui-checkbox-unchecked:before{content:"\e033"}.fui-checkbox-checked:before{content:"\e034"}.fui-calendar-solid:before{content:"\e022"}.fui-pause:before{content:"\e03b"}.fui-play:before{content:"\e03c"}.fui-check-inverted-2:before{content:"\e000"}.dropdown-arrow-inverse{border-bottom-color:#283f50!important;border-top-color:#283f50!important}body{font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;font-size:16px;line-height:1.72222;color:#283f50;background-color:#fff}a{color:#16a085;text-decoration:none;-webkit-transition:.25s;transition:.25s}a:focus,a:hover{color:#1abc9c;text-decoration:none}a:focus{outline:0}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.72222;background-color:#fff;border:2px solid #bdc3c7;border-radius:6px;-webkit-transition:all .25s ease-in-out;transition:all .25s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-comment{font-size:15px;line-height:1.2;font-style:italic;margin:24px 0}h1,h2,h3,h4,h5,h6{font-family:Roboto,sans-serif}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.1;color:inherit}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#e7e9ec}h1,h2,h3{margin-top:30px;margin-bottom:15px}h4,h5,h6{margin-top:15px;margin-bottom:15px}h6{font-weight:400}.h1,h1{font-size:61px}.h2,h2{font-size:53px}.h3,h3{font-size:40px}.h4,h4{font-size:29px}.h5,h5{font-size:28px}.h6,h6{font-size:24px}p{font-size:16px;line-height:1.72222;margin:0 0 15px}.lead{margin-bottom:30px;font-size:28px;line-height:1.46428571;font-weight:300}@media (min-width:768px){.lead{font-size:30.006px}}.small,small{font-size:83%;line-height:2.067}.text-muted{color:#bdc3c7}.text-inverse{color:#fff}.text-primary{color:#1abc9c}a.text-primary:hover{color:#15967d}.text-warning{color:#f1c40f}a.text-warning:hover{color:#c19d0c}.text-danger{color:#e74c3c}a.text-danger:hover{color:#b93d30}.text-success{color:#2ecc71}a.text-success:hover{color:#25a35a}.text-info{color:#3498db}a.text-info:hover{color:#2a7aaf}.bg-primary{color:#fff;background-color:#283f50}a.bg-primary:hover{background-color:#222f3d}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:14px;margin:60px 0 30px;border-bottom:1px solid #e7e9ec}ol,ul{margin-bottom:15px}dl{margin-bottom:30px}dd,dt{line-height:1.72222}@media (min-width:768px){.dl-horizontal dt{width:160px}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{border-bottom:1px dotted #bdc3c7}blockquote{border-left:3px solid #e7e9ec;padding:0 0 0 16px;margin:0 0 30px}blockquote p{font-size:20px;line-height:1.55;font-weight:400;margin-bottom:.4em}blockquote .small,blockquote small{font-size:16px;line-height:1.72222;font-style:italic;color:inherit}blockquote .small:before,blockquote small:before{content:""}blockquote.pull-right{padding-right:16px;padding-left:0;border-right:3px solid #e7e9ec;border-left:0}blockquote.pull-right small:after{content:""}address{margin-bottom:30px;line-height:1.72222}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 6px;font-size:85%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 6px;font-size:85%;color:#fff;background-color:#283f50;border-radius:4px;box-shadow:none}pre{padding:8px;margin:0 0 15px;font-size:13px;line-height:1.72222;color:inherit;background-color:#fff;border:2px solid #e7e9ec;border-radius:6px;white-space:pre}.pre-scrollable{max-height:340px}.thumbnail{display:block;padding:4px;margin-bottom:5px;line-height:1.72222;background-color:#fff;border:2px solid #bdc3c7;border-radius:6px;-webkit-transition:all .25s ease-in-out;transition:all .25s ease-in-out}.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#16a085}.thumbnail .caption{padding:9px;color:#283f50}.btn{border:none;font-size:15px;font-weight:400;line-height:1.4;border-radius:4px;padding:10px 15px;-webkit-font-smoothing:subpixel-antialiased;-webkit-transition:border .25s linear,color .25s linear,background-color .25s linear;transition:border .25s linear,color .25s linear,background-color .25s linear}.btn:focus,.btn:hover{outline:0;color:#fff}.btn.active,.btn:active{outline:0;-webkit-box-shadow:none;box-shadow:none}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#bdc3c7;color:rgba(255,255,255,.75);opacity:.7}.btn>[class^=fui-]{margin:0 1px;position:relative;line-height:1;top:1px}.btn-xs.btn>[class^=fui-]{font-size:11px;top:0}.btn-hg.btn>[class^=fui-]{top:2px}.btn-default{color:#fff;background-color:#bdc3c7}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{color:#fff;background-color:#cacfd2;border-color:#cacfd2}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background:#a1a6a9;border-color:#a1a6a9}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#bdc3c7;border-color:#bdc3c7}.btn-primary{color:#fff;background-color:#1abc9c}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#48c9b0;border-color:#48c9b0}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background:#16a085;border-color:#16a085}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#1abc9c;border-color:#1abc9c}.btn-info{color:#fff;background-color:#3498db}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#5dade2;border-color:#5dade2}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background:#2c81ba;border-color:#2c81ba}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#3498db;border-color:#3498db}.btn-danger{color:#fff;background-color:#e74c3c}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#ec7063;border-color:#ec7063}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background:#c44133;border-color:#c44133}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#e74c3c;border-color:#e74c3c}.btn-success{color:#fff;background-color:#2ecc71}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#58d68d;border-color:#58d68d}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background:#27ad60;border-color:#27ad60}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#2ecc71;border-color:#2ecc71}.btn-warning{color:#fff;background-color:#f1c40f}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#f5d313;border-color:#f5d313}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background:#cda70d;border-color:#cda70d}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f1c40f;border-color:#f1c40f}.btn-inverse{color:#fff;background-color:#283f50}.btn-inverse.active,.btn-inverse:active,.btn-inverse:focus,.btn-inverse:hover,.open .dropdown-toggle.btn-inverse{color:#fff;background-color:#415b76;border-color:#415b76}.btn-inverse.active,.btn-inverse:active,.open .dropdown-toggle.btn-inverse{background:#2c3e50;border-color:#2c3e50}.btn-inverse.disabled,.btn-inverse.disabled.active,.btn-inverse.disabled:active,.btn-inverse.disabled:focus,.btn-inverse.disabled:hover,.btn-inverse[disabled],.btn-inverse[disabled].active,.btn-inverse[disabled]:active,.btn-inverse[disabled]:focus,.btn-inverse[disabled]:hover,fieldset[disabled] .btn-inverse,fieldset[disabled] .btn-inverse.active,fieldset[disabled] .btn-inverse:active,fieldset[disabled] .btn-inverse:focus,fieldset[disabled] .btn-inverse:hover{background-color:#283f50;border-color:#283f50}.btn-embossed{-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.15);box-shadow:inset 0 -2px 0 rgba(0,0,0,.15)}.btn-embossed.active,.btn-embossed:active{-webkit-box-shadow:inset 0 2px 0 rgba(0,0,0,.15);box-shadow:inset 0 2px 0 rgba(0,0,0,.15)}.btn-wide{min-width:140px;padding-left:30px;padding-right:30px}.btn-link{color:#16a085}.btn-link:focus,.btn-link:hover{color:#1abc9c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#bdc3c7;text-decoration:none}.btn-hg{padding:13px 20px;font-size:22px;line-height:1.227;border-radius:6px}.btn-lg{padding:10px 19px;font-size:17px;line-height:1.471;border-radius:6px}.btn-sm{padding:9px 13px;font-size:13px;line-height:1.385;border-radius:4px}.btn-xs{padding:6px 9px;font-size:12px;line-height:1.083;border-radius:3px}.btn-tip{font-weight:300;padding-left:10px;font-size:92%}.btn-block{white-space:normal}.btn-default .caret{border-top-color:#fff}.btn-danger .caret,.btn-info .caret,.btn-primary .caret,.btn-success .caret,.btn-warning .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#fff}.dropup .btn-danger .caret,.dropup .btn-info .caret,.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret{border-bottom-color:#fff}.btn-group-xs>.btn{padding:6px 9px;font-size:12px;line-height:1.083;border-radius:3px}.btn-group-sm>.btn{padding:9px 13px;font-size:13px;line-height:1.385;border-radius:4px}.btn-group-lg>.btn{padding:10px 19px;font-size:17px;line-height:1.471;border-radius:6px}.btn-group-gh>.btn{padding:13px 20px;font-size:22px;line-height:1.227;border-radius:6px}.btn-group>.btn+.btn{margin-left:0}.btn-group>.btn+.dropdown-toggle{border-left:2px solid rgba(52,73,94,.15);padding-left:12px;padding-right:12px}.btn-group>.btn+.dropdown-toggle .caret{margin-left:3px;margin-right:3px}.btn-group>.btn.btn-gh+.dropdown-toggle .caret{margin-left:7px;margin-right:7px}.btn-group>.btn.btn-sm+.dropdown-toggle .caret{margin-left:0;margin-right:0}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-weight:400}.btn-group:focus .dropdown-toggle{outline:0;-webkit-transition:.25s;transition:.25s}.btn-group.open .dropdown-toggle{color:rgba(255,255,255,.75);-webkit-box-shadow:none;box-shadow:none}.btn-toolbar .btn.active{color:#fff}.btn-toolbar .btn>[class^=fui-]{font-size:16px;margin:0 1px}.caret{border-width:8px 6px;border-bottom-color:#283f50;border-top-color:#283f50;border-style:solid;border-bottom-style:none;-webkit-transition:.25s;transition:.25s;-webkit-transform:scale(1.001);-ms-transform:scale(1.001);transform:scale(1.001)}.dropup .btn-lg .caret,.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-bottom-width:8px}.btn-lg .caret{border-top-width:8px;border-right-width:6px;border-left-width:6px}.select{display:inline-block;margin-bottom:10px}[class*=span]>.select[class*=span]{margin-left:0}.select[class*=span] .btn{width:100%}.select.select-block{display:block;float:none;margin-left:0;width:auto}.select.select-block:after,.select.select-block:before{content:" ";display:table}.select.select-block:after{clear:both}.select.select-block .btn{width:100%}.select.select-block .dropdown-menu{width:100%}.select .btn{width:220px}.select .btn.btn-hg .filter-option{left:20px;right:40px;top:13px}.select .btn.btn-hg .caret{right:20px}.select .btn.btn-lg .filter-option{left:16px;right:38px}.select .btn.btn-sm .filter-option{left:13px;right:33px}.select .btn.btn-sm .caret{right:13px}.select .btn.btn-xs .filter-option{left:13px;right:33px;top:5px}.select .btn.btn-xs .caret{right:13px}.select .btn .filter-option{height:26px;left:13px;overflow:hidden;position:absolute;right:33px;text-align:left;top:10px}.select .btn .caret{position:absolute;right:16px;top:50%;margin-top:-3px}.select .btn .dropdown-toggle{border-radius:6px}.select .btn .dropdown-menu{min-width:100%}.select .btn .dropdown-menu dt{cursor:default;display:block;padding:3px 20px}.select .btn .dropdown-menu li:not(.disabled)>a:hover small{color:rgba(255,255,255,.004)}.select .btn .dropdown-menu li>a{min-height:20px}.select .btn .dropdown-menu li>a.opt{padding-left:35px}.select .btn .dropdown-menu li small{padding-left:.5em}.select .btn .dropdown-menu li>dt small{font-weight:400}.select .btn .dropdown-menu li.disabled>a,.select .btn>.disabled{cursor:default}.select .caret{border-bottom-color:#fff;border-top-color:#fff}legend{display:block;width:100%;padding:0;margin-bottom:15px;font-size:24px;line-height:inherit;color:inherit;border-bottom:none}textarea{font-size:20px;line-height:24px;padding:5px 11px}input[type=search]{-webkit-appearance:none!important}label{font-weight:400;font-size:15px;line-height:2.4}.form-control:-moz-placeholder{color:#b2bcc5}.form-control::-moz-placeholder{color:#b2bcc5;opacity:1}.form-control:-ms-input-placeholder{color:#b2bcc5}.form-control::-webkit-input-placeholder{color:#b2bcc5}.form-control.placeholder{color:#b2bcc5}.form-control{border:1px solid #bdc3c7;color:#283f50;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.467;padding:8px 12px;height:42px;-webkit-appearance:none;border-radius:6px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border .25s linear,color .25s linear,background-color .25s linear;transition:border .25s linear,color .25s linear,background-color .25s linear}.form-control:focus,.form-group.focus .form-control{border-color:#1abc9c;outline:0;-webkit-box-shadow:none;box-shadow:none}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#f4f6f6;border-color:#d5dbdb;color:#555;cursor:default;opacity:.7}.form-control.flat{border-color:transparent}.form-control.flat:hover{border-color:#bdc3c7}.form-control.flat:focus{border-color:#1abc9c}.input-sm{height:35px;padding:6px 10px;font-size:13px;line-height:1.462;border-radius:6px}select.input-sm{height:35px}select[multiple].input-sm,textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 15px;font-size:17px;line-height:1.235;border-radius:6px}select.input-lg{height:45px;line-height:45px}select[multiple].input-lg,textarea.input-lg{height:auto}.input-hg{height:53px;padding:10px 16px;font-size:22px;line-height:1.318;border-radius:6px}select.input-hg{height:53px;line-height:53px}select[multiple].input-hg,textarea.input-hg{height:auto}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline{color:#f1c40f}.has-warning .form-control{color:#f1c40f;border-color:#f1c40f;-webkit-box-shadow:none;box-shadow:none}.has-warning .form-control:-moz-placeholder{color:#f1c40f}.has-warning .form-control::-moz-placeholder{color:#f1c40f;opacity:1}.has-warning .form-control:-ms-input-placeholder{color:#f1c40f}.has-warning .form-control::-webkit-input-placeholder{color:#f1c40f}.has-warning .form-control.placeholder{color:#f1c40f}.has-warning .form-control:focus{border-color:#f1c40f;-webkit-box-shadow:none;box-shadow:none}.has-warning .input-group-addon{color:#f1c40f;border-color:#f1c40f;background-color:#fff}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline{color:#e74c3c}.has-error .form-control{color:#e74c3c;border-color:#e74c3c;-webkit-box-shadow:none;box-shadow:none}.has-error .form-control:-moz-placeholder{color:#e74c3c}.has-error .form-control::-moz-placeholder{color:#e74c3c;opacity:1}.has-error .form-control:-ms-input-placeholder{color:#e74c3c}.has-error .form-control::-webkit-input-placeholder{color:#e74c3c}.has-error .form-control.placeholder{color:#e74c3c}.has-error .form-control:focus{border-color:#e74c3c;-webkit-box-shadow:none;box-shadow:none}.has-error .input-group-addon{color:#e74c3c;border-color:#e74c3c;background-color:#fff}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline{color:#2ecc71}.has-success .form-control{color:#2ecc71;border-color:#2ecc71;-webkit-box-shadow:none;box-shadow:none}.has-success .form-control:-moz-placeholder{color:#2ecc71}.has-success .form-control::-moz-placeholder{color:#2ecc71;opacity:1}.has-success .form-control:-ms-input-placeholder{color:#2ecc71}.has-success .form-control::-webkit-input-placeholder{color:#2ecc71}.has-success .form-control.placeholder{color:#2ecc71}.has-success .form-control:focus{border-color:#2ecc71;-webkit-box-shadow:none;box-shadow:none}.has-success .input-group-addon{color:#2ecc71;border-color:#2ecc71;background-color:#fff}.help-block{font-size:15px;margin-bottom:5px;color:inherit}.form-group{position:relative;margin-bottom:20px}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:6px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:after,.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-control-static{padding-top:6px}.form-group{position:relative}.form-control+.input-icon{position:absolute;top:2px;right:2px;line-height:37px;vertical-align:middle;font-size:20px;color:#b2bcc5;background-color:#fff;padding:0 12px 0 0;border-radius:6px}.input-hg+.input-icon{line-height:49px;padding:0 16px 0 0}.input-lg+.input-icon{line-height:41px;padding:0 15px 0 0}.input-sm+.input-icon{font-size:16px;line-height:30px;padding:0 10px 0 0}.has-success .input-icon{color:#2ecc71}.has-warning .input-icon{color:#f1c40f}.has-error .input-icon{color:#e74c3c}.form-control.disabled+.input-icon,.form-control[disabled]+.input-icon,.form-control[readonly]+.input-icon,fieldset[disabled] .form-control+.input-icon{color:#d5dbdb;background-color:transparent;opacity:.7}.input-group-hg>.form-control,.input-group-hg>.input-group-addon,.input-group-hg>.input-group-btn>.btn{height:53px;padding:10px 16px;font-size:22px;line-height:1.318;border-radius:6px}select.input-group-hg>.form-control,select.input-group-hg>.input-group-addon,select.input-group-hg>.input-group-btn>.btn{height:53px;line-height:53px}select[multiple].input-group-hg>.form-control,select[multiple].input-group-hg>.input-group-addon,select[multiple].input-group-hg>.input-group-btn>.btn,textarea.input-group-hg>.form-control,textarea.input-group-hg>.input-group-addon,textarea.input-group-hg>.input-group-btn>.btn{height:auto}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 15px;font-size:17px;line-height:1.235;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:35px;padding:6px 10px;font-size:13px;line-height:1.462;border-radius:6px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:35px;line-height:35px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon{padding:10px 12px;font-size:15px;color:#fff;text-align:center;background-color:#bdc3c7;border:1px solid #bdc3c7;border-radius:6px;-webkit-transition:border .25s linear,color .25s linear,background-color .25s linear;transition:border .25s linear,color .25s linear,background-color .25s linear}.input-group-hg .input-group-addon,.input-group-lg .input-group-addon,.input-group-sm .input-group-addon{line-height:1}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.form-group.focus .input-group-addon,.input-group.focus .input-group-addon{background-color:#1abc9c;border-color:#1abc9c}.form-group.focus .input-group-btn>.btn-default+.btn-default,.input-group.focus .input-group-btn>.btn-default+.btn-default{border-left-color:#16a085}.form-group.focus .input-group-btn .btn,.input-group.focus .input-group-btn .btn{border-color:#1abc9c;background-color:#fff;color:#1abc9c}.form-group.focus .input-group-btn .btn-default,.input-group.focus .input-group-btn .btn-default{color:#fff;background-color:#1abc9c}.form-group.focus .input-group-btn .btn-default.active,.form-group.focus .input-group-btn .btn-default:active,.form-group.focus .input-group-btn .btn-default:focus,.form-group.focus .input-group-btn .btn-default:hover,.input-group.focus .input-group-btn .btn-default.active,.input-group.focus .input-group-btn .btn-default:active,.input-group.focus .input-group-btn .btn-default:focus,.input-group.focus .input-group-btn .btn-default:hover,.open .dropdown-toggle.form-group.focus .input-group-btn .btn-default,.open .dropdown-toggle.input-group.focus .input-group-btn .btn-default{color:#fff;background-color:#48c9b0;border-color:#48c9b0}.form-group.focus .input-group-btn .btn-default.active,.form-group.focus .input-group-btn .btn-default:active,.input-group.focus .input-group-btn .btn-default.active,.input-group.focus .input-group-btn .btn-default:active,.open .dropdown-toggle.form-group.focus .input-group-btn .btn-default,.open .dropdown-toggle.input-group.focus .input-group-btn .btn-default{background:#16a085;border-color:#16a085}.form-group.focus .input-group-btn .btn-default.disabled,.form-group.focus .input-group-btn .btn-default.disabled.active,.form-group.focus .input-group-btn .btn-default.disabled:active,.form-group.focus .input-group-btn .btn-default.disabled:focus,.form-group.focus .input-group-btn .btn-default.disabled:hover,.form-group.focus .input-group-btn .btn-default[disabled],.form-group.focus .input-group-btn .btn-default[disabled].active,.form-group.focus .input-group-btn .btn-default[disabled]:active,.form-group.focus .input-group-btn .btn-default[disabled]:focus,.form-group.focus .input-group-btn .btn-default[disabled]:hover,.input-group.focus .input-group-btn .btn-default.disabled,.input-group.focus .input-group-btn .btn-default.disabled.active,.input-group.focus .input-group-btn .btn-default.disabled:active,.input-group.focus .input-group-btn .btn-default.disabled:focus,.input-group.focus .input-group-btn .btn-default.disabled:hover,.input-group.focus .input-group-btn .btn-default[disabled],.input-group.focus .input-group-btn .btn-default[disabled].active,.input-group.focus .input-group-btn .btn-default[disabled]:active,.input-group.focus .input-group-btn .btn-default[disabled]:focus,.input-group.focus .input-group-btn .btn-default[disabled]:hover,fieldset[disabled] .form-group.focus .input-group-btn .btn-default,fieldset[disabled] .form-group.focus .input-group-btn .btn-default.active,fieldset[disabled] .form-group.focus .input-group-btn .btn-default:active,fieldset[disabled] .form-group.focus .input-group-btn .btn-default:focus,fieldset[disabled] .form-group.focus .input-group-btn .btn-default:hover,fieldset[disabled] .input-group.focus .input-group-btn .btn-default,fieldset[disabled] .input-group.focus .input-group-btn .btn-default.active,fieldset[disabled] .input-group.focus .input-group-btn .btn-default:active,fieldset[disabled] .input-group.focus .input-group-btn .btn-default:focus,fieldset[disabled] .input-group.focus .input-group-btn .btn-default:hover{background-color:#1abc9c;border-color:#1abc9c}.input-group-btn .btn{background-color:#fff;border:1px solid #bdc3c7;color:#bdc3c7;line-height:18px}.input-group-btn .btn-default{color:#fff;background-color:#bdc3c7}.input-group-btn .btn-default.active,.input-group-btn .btn-default:active,.input-group-btn .btn-default:focus,.input-group-btn .btn-default:hover,.open .dropdown-toggle.input-group-btn .btn-default{color:#fff;background-color:#cacfd2;border-color:#cacfd2}.input-group-btn .btn-default.active,.input-group-btn .btn-default:active,.open .dropdown-toggle.input-group-btn .btn-default{background:#a1a6a9;border-color:#a1a6a9}.input-group-btn .btn-default.disabled,.input-group-btn .btn-default.disabled.active,.input-group-btn .btn-default.disabled:active,.input-group-btn .btn-default.disabled:focus,.input-group-btn .btn-default.disabled:hover,.input-group-btn .btn-default[disabled],.input-group-btn .btn-default[disabled].active,.input-group-btn .btn-default[disabled]:active,.input-group-btn .btn-default[disabled]:focus,.input-group-btn .btn-default[disabled]:hover,fieldset[disabled] .input-group-btn .btn-default,fieldset[disabled] .input-group-btn .btn-default.active,fieldset[disabled] .input-group-btn .btn-default:active,fieldset[disabled] .input-group-btn .btn-default:focus,fieldset[disabled] .input-group-btn .btn-default:hover{background-color:#bdc3c7;border-color:#bdc3c7}.input-group-hg .input-group-btn .btn{line-height:31px}.input-group-lg .input-group-btn .btn{line-height:21px}.input-group-sm .input-group-btn .btn{line-height:19px}.input-group-btn:first-child>.btn{border-right-width:0;margin-right:-2px}.input-group-btn:last-child>.btn{border-left-width:0;margin-left:-2px}.input-group-btn>.btn-default+.btn-default{border-left:2px solid #bdc3c7}.input-group-btn>.btn:first-child+.btn .caret{margin-left:0}.input-group-rounded .input-group-btn+.form-control,.input-group-rounded .input-group-btn:last-child .btn{border-bottom-right-radius:20px;border-top-right-radius:20px}.input-group-hg.input-group-rounded .input-group-btn+.form-control,.input-group-hg.input-group-rounded .input-group-btn:last-child .btn{border-bottom-right-radius:27px;border-top-right-radius:27px}.input-group-lg.input-group-rounded .input-group-btn+.form-control,.input-group-lg.input-group-rounded .input-group-btn:last-child .btn{border-bottom-right-radius:25px;border-top-right-radius:25px}.input-group-rounded .form-control:first-child,.input-group-rounded .input-group-btn:first-child .btn{border-bottom-left-radius:20px;border-top-left-radius:20px}.input-group-hg.input-group-rounded .form-control:first-child,.input-group-hg.input-group-rounded .input-group-btn:first-child .btn{border-bottom-left-radius:27px;border-top-left-radius:27px}.input-group-lg.input-group-rounded .form-control:first-child,.input-group-lg.input-group-rounded .input-group-btn:first-child .btn{border-bottom-left-radius:25px;border-top-left-radius:25px}.input-group-rounded .input-group-btn+.form-control{padding-left:0}.checkbox,.radio{margin-bottom:12px;padding-left:32px;position:relative;-webkit-transition:color .25s linear;transition:color .25s linear;font-size:14px;line-height:1.5}.checkbox input,.radio input{outline:0!important;display:none}.checkbox .icons,.radio .icons{color:#bdc3c7;display:block;height:20px;left:0;position:absolute;top:0;width:20px;text-align:center;line-height:21px;font-size:20px;cursor:pointer;-webkit-transition:color .25s linear;transition:color .25s linear}.checkbox .icons .first-icon,.checkbox .icons .second-icon,.radio .icons .first-icon,.radio .icons .second-icon{display:inline-table;position:absolute;left:0;top:0;background-color:transparent;margin:0;opacity:1}.checkbox .icons .second-icon,.radio .icons .second-icon{opacity:0}.checkbox:hover,.radio:hover{-webkit-transition:color .25s linear;transition:color .25s linear}.checkbox:hover .first-icon,.radio:hover .first-icon{opacity:0}.checkbox:hover .second-icon,.radio:hover .second-icon{opacity:1}.checkbox.checked,.radio.checked{color:#1abc9c}.checkbox.checked .first-icon,.radio.checked .first-icon{opacity:0}.checkbox.checked .second-icon,.radio.checked .second-icon{opacity:1;color:#1abc9c;-webkit-transition:color .25s linear;transition:color .25s linear}.checkbox.disabled,.radio.disabled{cursor:default;color:#e6e8ea}.checkbox.disabled .icons,.radio.disabled .icons{color:#e6e8ea}.checkbox.disabled .first-icon,.radio.disabled .first-icon{opacity:1}.checkbox.disabled .second-icon,.radio.disabled .second-icon{opacity:0}.checkbox.disabled.checked .icons,.radio.disabled.checked .icons{color:#e6e8ea}.checkbox.disabled.checked .first-icon,.radio.disabled.checked .first-icon{opacity:0}.checkbox.disabled.checked .second-icon,.radio.disabled.checked .second-icon{opacity:1;color:#e6e8ea}.checkbox.primary .icons,.radio.primary .icons{color:#283f50}.checkbox.primary.checked,.radio.primary.checked{color:#1abc9c}.checkbox.primary.checked .icons,.radio.primary.checked .icons{color:#1abc9c}.checkbox.primary.disabled,.radio.primary.disabled{cursor:default;color:#bdc3c7}.checkbox.primary.disabled .icons,.radio.primary.disabled .icons{color:#bdc3c7}.checkbox.primary.disabled.checked .icons,.radio.primary.disabled.checked .icons{color:#bdc3c7}.checkbox+.checkbox,.radio+.radio{margin-top:10px}.navbar{font-size:16px;min-height:53px;margin-bottom:30px;border:none;border-radius:6px}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{box-shadow:none;padding-right:21px;padding-left:21px}@media (min-width:768px){.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-21px}.navbar-collapse .navbar-nav.navbar-left:first-child>li:first-child a{border-bottom-left-radius:6px;border-top-left-radius:6px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-21px}.navbar>.container .navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-36px}.navbar-collapse .navbar-nav.navbar-right:last-child>.dropdown:last-child>a{border-radius:0 6px 6px 0}.navbar-collapse .navbar-form.navbar-right:last-child{margin-right:-17px}.navbar-fixed-bottom .navbar-collapse .navbar-form.navbar-right:last-child,.navbar-fixed-top .navbar-collapse .navbar-form.navbar-right:last-child{margin-right:0}}@media (max-width:767px){.navbar-collapse .navbar-nav.navbar-right:last-child{margin-bottom:3px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-21px;margin-left:-21px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0;border-radius:0}.navbar-fixed-bottom,.navbar-fixed-top{z-index:1030;border-radius:0}.navbar-fixed-top{border-width:0}.navbar-fixed-bottom{margin-bottom:0;border-width:0}.navbar-brand{font-size:24px;line-height:1.042;font-weight:700;padding:14px 21px}.navbar-brand>[class*=fui-]{font-size:19px;line-height:1.263;vertical-align:top}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-21px}}.navbar-toggle{border:none;color:#283f50;margin:0 0 0 21px;padding:0 21px;height:53px;line-height:53px}.navbar-toggle:focus,.navbar-toggle:hover{outline:0}.navbar-toggle:focus:before,.navbar-toggle:hover:before{color:#1abc9c}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:0}.navbar-nav>li>a{font-size:16px;padding:15px 21px;line-height:23px;font-weight:700}.navbar-nav .dropdown-toggle .caret{border-top-color:#16a085;border-bottom-color:#16a085;border-width:8px 6px 0;margin-left:12px}.navbar-nav .open>a:focus,.navbar-nav .open>a:hover,.navbar-nav>li>a:focus,.navbar-nav>li>a:hover{background-color:transparent}.navbar-nav .open>a:focus .caret,.navbar-nav .open>a:hover .caret,.navbar-nav>li>a:focus .caret,.navbar-nav>li>a:hover .caret{border-top-color:#1abc9c;border-bottom-color:#1abc9c}.navbar-nav [class^=fui-]{line-height:20px;position:relative;top:1px}.navbar-nav .visible-sm>[class^=fui-],.navbar-nav .visible-xs>[class^=fui-]{margin-left:12px}@media (max-width:767px){.navbar-nav{margin:0 -21px}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:7px 15px 7px 31px!important}.navbar-nav .open .dropdown-menu>li>a{line-height:23px}.navbar-nav>li>a{padding-top:7px;padding-bottom:7px}}.navbar-input{height:35px;padding:5px 10px;font-size:13px;line-height:1.4;border-radius:6px}select.navbar-input{height:35px;line-height:35px}select[multiple].navbar-input,textarea.navbar-input{height:auto}.navbar-form{-webkit-box-shadow:none;box-shadow:none;margin-top:0;margin-bottom:0;padding-right:19px;padding-left:19px;padding-top:9px;padding-bottom:9px}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (max-width:767px){.navbar-form{margin:3px -21px;width:auto}}@media (min-width:768px){.navbar-form.navbar-right:last-child,.navbar-nav+.navbar-form.navbar-left{width:260px}}.navbar-form .btn,.navbar-form .form-control,.navbar-form .input-group-addon{height:35px;padding:5px 10px;font-size:13px;line-height:1.4;border-radius:6px}select.navbar-form .btn,select.navbar-form .form-control,select.navbar-form .input-group-addon{height:35px;line-height:35px}select[multiple].navbar-form .btn,select[multiple].navbar-form .form-control,select[multiple].navbar-form .input-group-addon,textarea.navbar-form .btn,textarea.navbar-form .form-control,textarea.navbar-form .input-group-addon{height:auto}.navbar-form .input-group .form-control:first-child,.navbar-form .input-group-addon:first-child,.navbar-form .input-group-btn:first-child>.btn,.navbar-form .input-group-btn:first-child>.dropdown-toggle,.navbar-form .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.navbar-form .input-group .form-control:last-child,.navbar-form .input-group-addon:last-child,.navbar-form .input-group-btn:first-child>.btn:not(:first-child),.navbar-form .input-group-btn:last-child>.btn,.navbar-form .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.navbar-form .form-control{font-size:15px;border-radius:5px;display:table-cell}.navbar-form .form-group+.btn{font-size:15px;border-radius:5px;margin-left:4px}@media (max-width:767px){.navbar-form .form-group{margin-bottom:0}.navbar-form .form-group+.btn{margin-top:9px;margin-left:0}}.navbar-nav>li>.dropdown-menu{min-width:100%;border-radius:4px}@media (max-width:767px){.navbar-nav>li>.dropdown-menu{-webkit-transition:all 0s;transition:all 0s;display:none}}@media (max-width:767px){.navbar-nav>li.open>.dropdown-menu{margin-top:0!important;display:block}}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.navbar-nav>.open>.dropdown-toggle,.navbar-nav>.open>.dropdown-toggle:focus,.navbar-nav>.open>.dropdown-toggle:hover{background-color:transparent}.navbar-text{font-size:16px;line-height:1.438;color:#283f50;margin-top:0;margin-bottom:0;padding-top:15px;padding-bottom:15px}@media (min-width:768px){.navbar-text{margin-left:21px;margin-right:21px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-btn{margin-top:6px;margin-bottom:6px}.navbar-btn.btn-sm{margin-top:9px;margin-bottom:8px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-new,.navbar-unread{font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;background-color:#1abc9c;border-radius:50%;color:#fff;font-size:0;font-weight:700;height:6px;line-height:1;position:absolute;right:12px;text-align:center;top:35%;width:6px;z-index:10}@media (max-width:768px){.navbar-new,.navbar-unread{position:static;float:right;margin:0 0 0 10px}}.active .navbar-new,.active .navbar-unread{background-color:#fff;display:none}.navbar-new{background-color:#e74c3c;font-size:12px;height:18px;line-height:17px;margin:-6px -10px;min-width:18px;padding:0 1px;width:auto;-webkit-font-smoothing:subpixel-antialiased}.navbar-default{background-color:#ecf0f1}.navbar-default .navbar-brand{color:#283f50}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#1abc9c;background-color:transparent}.navbar-default .navbar-toggle:before{color:#283f50}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:transparent}.navbar-default .navbar-toggle:focus:before,.navbar-default .navbar-toggle:hover:before{color:#1abc9c}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e5e9ea;border-width:2px}.navbar-default .navbar-nav>li>a{color:#283f50}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#1abc9c;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#1abc9c;background-color:transparent}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#283f50;border-bottom-color:#283f50}.navbar-default .navbar-nav>.active>a .caret{border-top-color:#1abc9c;border-bottom-color:#1abc9c}.navbar-default .navbar-nav>.dropdown>a:focus .caret,.navbar-default .navbar-nav>.dropdown>a:hover .caret{border-top-color:#1abc9c;border-bottom-color:#1abc9c}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:transparent;color:#1abc9c}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:focus .caret,.navbar-default .navbar-nav>.open>a:hover .caret{border-top-color:#1abc9c;border-bottom-color:#1abc9c}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#283f50}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#1abc9c;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#1abc9c;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-form .form-control{border-color:transparent}.navbar-default .navbar-form .form-control:-moz-placeholder{color:#aeb6bf}.navbar-default .navbar-form .form-control::-moz-placeholder{color:#aeb6bf;opacity:1}.navbar-default .navbar-form .form-control:-ms-input-placeholder{color:#aeb6bf}.navbar-default .navbar-form .form-control::-webkit-input-placeholder{color:#aeb6bf}.navbar-default .navbar-form .form-control.placeholder{color:#aeb6bf}.navbar-default .navbar-form .form-control:focus{border-color:#1abc9c;color:#1abc9c}.navbar-default .navbar-form .input-group-btn .btn{border-color:transparent;color:#919ba4}.navbar-default .navbar-form .input-group.focus .form-control,.navbar-default .navbar-form .input-group.focus .input-group-btn .btn{border-color:#1abc9c;color:#1abc9c}.navbar-default .navbar-text{color:#283f50}.navbar-default .navbar-text a{color:#283f50}.navbar-default .navbar-text a:focus,.navbar-default .navbar-text a:hover{color:#1abc9c}.navbar-inverse{background-color:#283f50}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#1abc9c;background-color:transparent}.navbar-inverse .navbar-toggle:before{color:#fff}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:transparent}.navbar-inverse .navbar-toggle:focus:before,.navbar-inverse .navbar-toggle:hover:before{color:#1abc9c}.navbar-inverse .navbar-collapse{border-color:#2f4154;border-width:2px}.navbar-inverse .navbar-nav>li>a{color:#fff}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#1abc9c;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#1abc9c}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.dropdown>a:focus .caret,.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#1abc9c;border-bottom-color:#1abc9c}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#1abc9c;color:#fff;border-left-color:transparent}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#4b6075;border-bottom-color:#4b6075}.navbar-inverse .navbar-nav>.open>.dropdown-arrow{border-top-color:#283f50;border-bottom-color:#283f50}.navbar-inverse .navbar-nav>.open>.dropdown-menu{background-color:#283f50;padding:3px 4px}.navbar-inverse .navbar-nav>.open>.dropdown-menu>li>a{color:#e1e4e7;border-radius:4px;padding:6px 9px}.navbar-inverse .navbar-nav>.open>.dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav>.open>.dropdown-menu>li>a:hover{color:#fff;background-color:#1abc9c}.navbar-inverse .navbar-nav>.open>.dropdown-menu>.divider{background-color:#2f4154;height:2px;margin-left:-4px;margin-right:-4px}@media (max-width:767px){.navbar-inverse .navbar-nav>li>a{border-left-width:0}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#1abc9c;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#1abc9c}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav .dropdown-menu .divider{background-color:#2f4154}}.navbar-inverse .navbar-form .form-control{color:#536a81;border-color:transparent;background-color:#293a4a}.navbar-inverse .navbar-form .form-control:-moz-placeholder{color:#536a81}.navbar-inverse .navbar-form .form-control::-moz-placeholder{color:#536a81;opacity:1}.navbar-inverse .navbar-form .form-control:-ms-input-placeholder{color:#536a81}.navbar-inverse .navbar-form .form-control::-webkit-input-placeholder{color:#536a81}.navbar-inverse .navbar-form .form-control.placeholder{color:#536a81}.navbar-inverse .navbar-form .form-control:focus{border-color:#1abc9c;color:#1abc9c}.navbar-inverse .navbar-form .btn{color:#fff;background-color:#1abc9c}.navbar-inverse .navbar-form .btn.active,.navbar-inverse .navbar-form .btn:active,.navbar-inverse .navbar-form .btn:focus,.navbar-inverse .navbar-form .btn:hover,.open .dropdown-toggle.navbar-inverse .navbar-form .btn{color:#fff;background-color:#48c9b0;border-color:#48c9b0}.navbar-inverse .navbar-form .btn.active,.navbar-inverse .navbar-form .btn:active,.open .dropdown-toggle.navbar-inverse .navbar-form .btn{background:#16a085;border-color:#16a085}.navbar-inverse .navbar-form .btn.disabled,.navbar-inverse .navbar-form .btn.disabled.active,.navbar-inverse .navbar-form .btn.disabled:active,.navbar-inverse .navbar-form .btn.disabled:focus,.navbar-inverse .navbar-form .btn.disabled:hover,.navbar-inverse .navbar-form .btn[disabled],.navbar-inverse .navbar-form .btn[disabled].active,.navbar-inverse .navbar-form .btn[disabled]:active,.navbar-inverse .navbar-form .btn[disabled]:focus,.navbar-inverse .navbar-form .btn[disabled]:hover,fieldset[disabled] .navbar-inverse .navbar-form .btn,fieldset[disabled] .navbar-inverse .navbar-form .btn.active,fieldset[disabled] .navbar-inverse .navbar-form .btn:active,fieldset[disabled] .navbar-inverse .navbar-form .btn:focus,fieldset[disabled] .navbar-inverse .navbar-form .btn:hover{background-color:#1abc9c;border-color:#1abc9c}.navbar-inverse .navbar-form .input-group-btn .btn{border-color:transparent;background-color:#293a4a;color:#526a82}.navbar-inverse .navbar-form .input-group.focus .form-control,.navbar-inverse .navbar-form .input-group.focus .input-group-btn .btn{border-color:#1abc9c;color:#1abc9c}@media (max-width:767px){.navbar-inverse .navbar-form{border-color:#2f4154;border-width:2px 0}}.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .navbar-text a{color:#fff}.navbar-inverse .navbar-text a:focus,.navbar-inverse .navbar-text a:hover{color:#1abc9c}.navbar-inverse .navbar-btn{color:#fff;background-color:#1abc9c}.navbar-inverse .navbar-btn.active,.navbar-inverse .navbar-btn:active,.navbar-inverse .navbar-btn:focus,.navbar-inverse .navbar-btn:hover,.open .dropdown-toggle.navbar-inverse .navbar-btn{color:#fff;background-color:#48c9b0;border-color:#48c9b0}.navbar-inverse .navbar-btn.active,.navbar-inverse .navbar-btn:active,.open .dropdown-toggle.navbar-inverse .navbar-btn{background:#16a085;border-color:#16a085}.navbar-inverse .navbar-btn.disabled,.navbar-inverse .navbar-btn.disabled.active,.navbar-inverse .navbar-btn.disabled:active,.navbar-inverse .navbar-btn.disabled:focus,.navbar-inverse .navbar-btn.disabled:hover,.navbar-inverse .navbar-btn[disabled],.navbar-inverse .navbar-btn[disabled].active,.navbar-inverse .navbar-btn[disabled]:active,.navbar-inverse .navbar-btn[disabled]:focus,.navbar-inverse .navbar-btn[disabled]:hover,fieldset[disabled] .navbar-inverse .navbar-btn,fieldset[disabled] .navbar-inverse .navbar-btn.active,fieldset[disabled] .navbar-inverse .navbar-btn:active,fieldset[disabled] .navbar-inverse .navbar-btn:focus,fieldset[disabled] .navbar-inverse .navbar-btn:hover{background-color:#1abc9c;border-color:#1abc9c}@media (min-width:768px){.navbar-embossed>.navbar-collapse{border-radius:6px;-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.15);box-shadow:inset 0 -2px 0 rgba(0,0,0,.15)}.navbar-embossed.navbar-inverse .navbar-nav .active>a,.navbar-embossed.navbar-inverse .navbar-nav .open>a{-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.15);box-shadow:inset 0 -2px 0 rgba(0,0,0,.15)}}.navbar-lg{min-height:76px}.navbar-lg .navbar-brand{line-height:1;padding-top:26px;padding-bottom:26px}.navbar-lg .navbar-brand>[class*=fui-]{font-size:24px;line-height:1}.navbar-lg .navbar-nav>li>a{font-size:15px;line-height:1.6}@media (min-width:768px){.navbar-lg .navbar-nav>li>a{padding-top:26px;padding-bottom:26px}}.navbar-lg .navbar-toggle{height:76px;line-height:76px}.navbar-lg .navbar-form{padding-top:20.5px;padding-bottom:20.5px}.navbar-lg .navbar-text{padding-top:26.5px;padding-bottom:26.5px}.navbar-lg .navbar-btn{margin-top:17.5px;margin-bottom:17.5px}.navbar-lg .navbar-btn.btn-sm{margin-top:20.5px;margin-bottom:20.5px}.navbar-lg .navbar-btn.btn-xs{margin-top:25.5px;margin-bottom:25.5px}.tagsinput{background:#fff;border:2px solid #1abc9c;border-radius:6px;height:100px;margin-bottom:18px;padding:6px 1px 1px 6px;overflow-y:auto;text-align:left}.tagsinput .tag{border-radius:4px;background-color:#1abc9c;color:#fff;font-size:14px;cursor:pointer;display:inline-block;margin-right:5px;margin-bottom:5px;overflow:hidden;line-height:15px;padding:6px 13px 8px 19px;position:relative;vertical-align:middle;-webkit-transition:.25s linear;transition:.25s linear}.tagsinput .tag:hover{background-color:#16a085;color:#fff;padding-left:12px;padding-right:20px}.tagsinput .tag:hover .tagsinput-remove-link{color:#fff;opacity:1}.tagsinput input{background:0 0;border:none;color:#283f50;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;font-size:14px;margin:0;padding:0 0 0 5px;outline:0!important;margin:6px 5px 0 0;vertical-align:top;width:12px}.tagsinput-remove-link{bottom:0;color:#fff;cursor:pointer;font-size:12px;opacity:0;padding:7px 7px 5px 0;position:absolute;right:0;text-align:right;text-decoration:none;top:0;width:100%;z-index:2}.tagsinput-remove-link:before{color:#fff;content:"\e00b";font-family:Flat-UI-Icons}.tagsinput-add-container{vertical-align:middle;display:inline-block}.tagsinput-add{background-color:#d6dbdf;border-radius:3px;color:#fff;cursor:pointer;display:inline-block;font-size:14px;line-height:1;margin-bottom:5px;padding:7px 9px;vertical-align:top;-webkit-transition:.25s linear;transition:.25s linear}.tagsinput-add:hover{background-color:#1abc9c}.tagsinput-add:before{content:"\e009";font-family:Flat-UI-Icons}.tags_clear{clear:both;width:100%;height:0}.not_valid{background:#fbd8db!important;color:#90111a!important;margin-left:5px!important}.twitter-typeahead{width:100%}.twitter-typeahead .tt-hint,.twitter-typeahead .tt-query{border:2px solid #bdc3c7;color:#283f50;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.467;padding:8px 12px;height:42px;-webkit-appearance:none;border-radius:6px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border .25s linear,color .25s linear,background-color .25s linear;transition:border .25s linear,color .25s linear,background-color .25s linear}.twitter-typeahead .tt-hint:-moz-placeholder,.twitter-typeahead .tt-query:-moz-placeholder{color:#b2bcc5}.twitter-typeahead .tt-hint::-moz-placeholder,.twitter-typeahead .tt-query::-moz-placeholder{color:#b2bcc5;opacity:1}.twitter-typeahead .tt-hint:-ms-input-placeholder,.twitter-typeahead .tt-query:-ms-input-placeholder{color:#b2bcc5}.twitter-typeahead .tt-hint::-webkit-input-placeholder,.twitter-typeahead .tt-query::-webkit-input-placeholder{color:#b2bcc5}.twitter-typeahead .tt-hint.placeholder,.twitter-typeahead .tt-query.placeholder{color:#b2bcc5}.form-group.focus .twitter-typeahead .tt-hint,.form-group.focus .twitter-typeahead .tt-query,.twitter-typeahead .tt-hint:focus,.twitter-typeahead .tt-query:focus{border-color:#1abc9c;outline:0;-webkit-box-shadow:none;box-shadow:none}.twitter-typeahead .tt-hint[disabled],.twitter-typeahead .tt-hint[readonly],.twitter-typeahead .tt-query[disabled],.twitter-typeahead .tt-query[readonly],fieldset[disabled] .twitter-typeahead .tt-hint,fieldset[disabled] .twitter-typeahead .tt-query{background-color:#f4f6f6;border-color:#d5dbdb;color:#d5dbdb;cursor:default;opacity:.7}.twitter-typeahead .tt-hint.flat,.twitter-typeahead .tt-query.flat{border-color:transparent}.twitter-typeahead .tt-hint.flat:hover,.twitter-typeahead .tt-query.flat:hover{border-color:#bdc3c7}.twitter-typeahead .tt-hint.flat:focus,.twitter-typeahead .tt-query.flat:focus{border-color:#1abc9c}.twitter-typeahead .tt-hint+.input-icon,.twitter-typeahead .tt-query+.input-icon{position:absolute;top:2px;right:2px;line-height:37px;vertical-align:middle;font-size:20px;color:#b2bcc5;background-color:#fff;padding:0 12px 0 0;border-radius:6px}.twitter-typeahead .tt-dropdown-menu{width:100%;margin-top:5px;border:2px solid #1abc9c;padding:5px 0;background-color:#fff;border-radius:6px}.twitter-typeahead .tt-suggestion p{padding:6px 14px;font-size:14px;line-height:1.429;margin:0}.twitter-typeahead .tt-suggestion:first-child p,.twitter-typeahead .tt-suggestion:last-child p{padding:6px 14px}.twitter-typeahead .tt-suggestion.tt-is-under-cursor{color:#fff;background-color:#16a085}.progress{background:#ebedef;border-radius:32px;height:12px;-webkit-box-shadow:none;box-shadow:none}.progress-bar{background:#1abc9c;line-height:12px;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#2ecc71}.progress-bar-warning{background-color:#f1c40f}.progress-bar-danger{background-color:#e74c3c}.progress-bar-info{background-color:#3498db}.ui-slider{background:#ebedef;border-radius:32px;height:12px;-webkit-box-shadow:none;box-shadow:none;margin-bottom:20px;position:relative;cursor:pointer}.ui-slider-handle{background-color:#16a085;border-radius:50%;cursor:pointer;height:18px;position:absolute;width:18px;z-index:2;-webkit-transition:background .25s;transition:background .25s}.ui-slider-handle:focus,.ui-slider-handle:hover{background-color:#48c9b0;outline:0}.ui-slider-handle:active{background-color:#16a085}.ui-slider-range{background-color:#1abc9c;display:block;height:100%;position:absolute;z-index:1}.ui-slider-segment{background-color:#d9dbdd;border-radius:50%;height:6px;width:6px}.ui-slider-value{float:right;font-size:13px;margin-top:12px}.ui-slider-value.first{clear:left;float:left}.ui-slider-horizontal .ui-slider-handle{margin-left:-9px;top:-3px}.ui-slider-horizontal .ui-slider-handle[style*="100"]{margin-left:-15px}.ui-slider-horizontal .ui-slider-range{border-radius:30px 0 0 30px}.ui-slider-horizontal .ui-slider-segment{float:left;margin:3px -6px 0 0}.ui-slider-vertical{width:12px}.ui-slider-vertical .ui-slider-handle{margin-left:-3px;margin-bottom:-11px;top:auto}.ui-slider-vertical .ui-slider-range{width:100%;bottom:0;border-radius:0 0 30px 30px}.ui-slider-vertical .ui-slider-segment{position:absolute;right:3px}.pager{background-color:#283f50;border-radius:6px;color:#fff;font-size:16px;font-weight:700;display:inline-block}.pager li:first-child>a,.pager li:first-child>span{border-left:none;border-radius:6px 0 0 6px}.pager li>a,.pager li>span{background:0 0;border:none;border-left:2px solid #2c3e50;color:#fff;padding:9px 15px 10px;text-decoration:none;white-space:nowrap;border-radius:0 6px 6px 0;line-height:1.313}.pager li>a:focus,.pager li>a:hover,.pager li>span:focus,.pager li>span:hover{background-color:#2c3e50}.pager li>a:active,.pager li>span:active{background-color:#2c3e50}.pager li>a [class*=fui-]+span,.pager li>span [class*=fui-]+span{margin-left:8px}.pager li>a span+[class*=fui-],.pager li>span span+[class*=fui-]{margin-left:8px}.pagination{position:relative}.pagination ul{background:#d6dbdf;color:#fff;padding:0;margin:0;display:inline-block;border-radius:6px}.pagination ul li{display:inline-block;margin-right:-3px;vertical-align:middle}.pagination ul li:first-child{border-radius:6px 0 0 6px}.pagination ul li:first-child.previous+li>a,.pagination ul li:first-child.previous+li>span{border-left-width:5px}.pagination ul li:last-child{border-radius:0 6px 6px 0;margin-right:0}.pagination ul li.next>a,.pagination ul li.next>span,.pagination ul li.previous>a,.pagination ul li.previous>span{background:0 0;border:none;border-right:2px solid #e4e7ea;font-size:16px;margin:0 9px 0 0;padding:12px 17px;border-radius:6px 0 0 6px}.pagination ul li.next>a,.pagination ul li.next>a:focus,.pagination ul li.next>a:hover,.pagination ul li.next>span,.pagination ul li.next>span:focus,.pagination ul li.next>span:hover,.pagination ul li.previous>a,.pagination ul li.previous>a:focus,.pagination ul li.previous>a:hover,.pagination ul li.previous>span,.pagination ul li.previous>span:focus,.pagination ul li.previous>span:hover{border-color:#e4e7ea!important}@media (max-width:480px){.pagination ul li.next>a,.pagination ul li.next>span,.pagination ul li.previous>a,.pagination ul li.previous>span{margin-right:0}}.pagination ul li.next{margin-left:9px}.pagination ul li.next>a,.pagination ul li.next>span{border-left:2px solid #e4e7ea;border-right:none;margin:0;border-radius:0 6px 6px 0}.pagination ul li.active>a,.pagination ul li.active>span{background-color:#fff;border-color:#fff;border-width:2px!important;color:#d6dbdf;margin:10px 5px 9px}.pagination ul li.active>a:focus,.pagination ul li.active>a:hover,.pagination ul li.active>span:focus,.pagination ul li.active>span:hover{background-color:#fff;border-color:#fff;color:#d6dbdf}.pagination ul li.active.next,.pagination ul li.active.previous{border-color:#e4e7ea}.pagination ul li.active.next>a,.pagination ul li.active.next>span,.pagination ul li.active.previous>a,.pagination ul li.active.previous>span{margin:0}.pagination ul li.active.next>a,.pagination ul li.active.next>a:focus,.pagination ul li.active.next>a:hover,.pagination ul li.active.next>span,.pagination ul li.active.next>span:focus,.pagination ul li.active.next>span:hover,.pagination ul li.active.previous>a,.pagination ul li.active.previous>a:focus,.pagination ul li.active.previous>a:hover,.pagination ul li.active.previous>span,.pagination ul li.active.previous>span:focus,.pagination ul li.active.previous>span:hover{background-color:#1abc9c;color:#fff}.pagination ul li.active.previous{margin-right:6px}.pagination ul li>a,.pagination ul li>span{display:inline-block;background:#fff;border:5px solid #d6dbdf;color:#fff;font-size:14px;line-height:16px;margin:7px 2px 6px;min-width:0;min-height:16px;padding:0 4px;border-radius:50px;-webkit-transition:background .2s ease-out,border-color 0s ease-out,color .2s ease-out;transition:background .2s ease-out,border-color 0s ease-out,color .2s ease-out}.pagination ul li>a:focus,.pagination ul li>a:hover,.pagination ul li>span:focus,.pagination ul li>span:hover{background-color:#1abc9c;border-color:#1abc9c;color:#fff;-webkit-transition:background .2s ease-out,border-color .2s ease-out,color .2s ease-out;transition:background .2s ease-out,border-color .2s ease-out,color .2s ease-out}.pagination ul li>a:active,.pagination ul li>span:active{background-color:#16a085;border-color:#16a085}.pagination>.btn.next,.pagination>.btn.previous{margin-right:8px;font-size:14px;line-height:1.429;padding-left:23px;padding-right:23px}.pagination>.btn.next [class*=fui-],.pagination>.btn.previous [class*=fui-]{font-size:16px;margin-left:-2px;margin-top:-2px}.pagination>.btn.next{margin-left:8px;margin-right:0}.pagination>.btn.next [class*=fui-]{margin-right:-2px;margin-left:4px}.tooltip{font-size:14px;line-height:1.286}.tooltip.in{opacity:1}.tooltip.top{padding-bottom:9px}.tooltip.top .tooltip-arrow{border-top-color:#283f50;border-width:9px 9px 0;bottom:0;margin-left:-9px}.tooltip.right .tooltip-arrow{border-right-color:#283f50;border-width:9px 9px 9px 0;margin-top:-9px;left:-3px}.tooltip.bottom{padding-top:8px}.tooltip.bottom .tooltip-arrow{border-bottom-color:#283f50;border-width:0 9px 9px;margin-left:-9px;top:-1px}.tooltip.left .tooltip-arrow{border-left-color:#283f50;border-width:9px 0 9px 9px;margin-top:-9px;right:-3px}.tooltip-inner{background-color:#283f50;line-height:1.286;padding:12px 12px;text-align:center;width:183px;border-radius:6px}.dropup .dropdown-arrow,.navbar-fixed-bottom .dropdown .dropdown-arrow{border-bottom:none;border-top:8px outset #f3f4f5;bottom:100%;top:auto}.navbar-fixed-bottom .nav>li>ul:before{border-bottom:none;border-top:9px outset #283f50;bottom:4px;top:auto}.open.dropup>.dropdown-menu{margin-bottom:18px}.open.dropup>.dropdown-arrow{margin-bottom:10px}.open.dropup>.dropdown-arrow.dropdown-arrow-inverse{border-top-color:#283f50}.open>.dropdown-arrow{margin-top:11px;opacity:1}.dropdown-arrow{border-style:solid;border-width:0 8px 7px;border-color:transparent transparent #f3f4f5 transparent;height:0;margin-top:0;opacity:0;position:absolute;right:19px;top:100%;width:0;z-index:10;-webkit-transform:rotate(360deg);-webkit-transition:.25s;transition:.25s}.dropdown-inverse{background-color:#283f50;color:#ccc;padding:4px 0 6px}.dropdown-inverse li{margin:0 4px -2px}.dropdown-inverse li:first-child>a,.dropdown-inverse li:last-child>a{border-radius:2px;padding-bottom:7px;padding-top:5px}.dropdown-inverse li:first-child dt+a,.dropdown-inverse li:last-child dt+a{border-radius:2px}.dropdown-inverse li.active>a,.dropdown-inverse li.selected>a{background:#1abc9c;color:#fff;position:relative;z-index:1}.dropdown-inverse li dt{padding-left:11px;padding-right:11px}.dropdown-inverse li .divider{margin-left:11px;margin-right:11px}.dropdown-inverse li>a{border-radius:2px;color:#fff;padding:5px 11px 7px}.dropdown-inverse li>a:active,.dropdown-inverse li>a:focus,.dropdown-inverse li>a:hover{background:#2c3e50}.dropdown-inverse li>a.highlighted{background:#526476}.dropdown-inverse li>a.highlighted:focus,.dropdown-inverse li>a.highlighted:hover{background:#677786}.dropdown-inverse li .divider{background-color:#526476;border-bottom-color:#526476}.has-switch{border-radius:30px;display:inline-block;cursor:pointer;line-height:1.72222;overflow:hidden;position:relative;text-align:left;width:80px;-webkit-mask:url(../images/switch/mask.png) 0 0 no-repeat;mask:url(../images/switch/mask.png) 0 0 no-repeat;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.has-switch.deactivate{opacity:.5;cursor:default!important}.has-switch.deactivate label,.has-switch.deactivate span{cursor:default!important}.has-switch>div{width:130px;position:relative;top:0}.has-switch>div.switch-animate{-webkit-transition:left .25s ease-out;transition:left .25s ease-out}.has-switch>div.switch-off{left:-50px}.has-switch>div.switch-off label{background-color:#7f8c9a;border-color:#bdc3c7;-webkit-box-shadow:-1px 0 0 rgba(255,255,255,.5);box-shadow:-1px 0 0 rgba(255,255,255,.5)}.has-switch>div.switch-on{left:0}.has-switch>div.switch-on label{background-color:#1abc9c}.has-switch input[type=checkbox]{display:none}.has-switch span{cursor:pointer;font-size:15px;font-weight:700;float:left;height:29px;line-height:19px;margin:0;padding-bottom:6px;padding-top:5px;position:relative;text-align:center;width:50%;z-index:1;-webkit-transition:.25s ease-out;transition:.25s ease-out}.has-switch span.switch-left{border-radius:30px 0 0 30px;background-color:#283f50;color:#1abc9c;border-left:1px solid transparent}.has-switch span.switch-right{border-radius:0 30px 30px 0;background-color:#bdc3c7;color:#fff;text-indent:7px}.has-switch span.switch-right [class*=fui-]{text-indent:0}.has-switch label{border:4px solid #283f50;border-radius:50%;float:left;height:29px;margin:0 -15px;padding:0;position:relative;vertical-align:middle;width:29px;z-index:100;-webkit-transition:.25s ease-out;transition:.25s ease-out}.switch-square{border-radius:6px;-webkit-mask:url(../images/switch/mask.png) 0 0 no-repeat;mask:url(../images/switch/mask.png) 0 0 no-repeat}.switch-square>div.switch-off label{border-color:#7f8c9a;border-radius:6px 0 0 6px}.switch-square span.switch-left{border-radius:6px 0 0 6px}.switch-square span.switch-left [class*=fui-]{text-indent:-10px}.switch-square span.switch-right{border-radius:0 6px 6px 0}.switch-square span.switch-right [class*=fui-]{text-indent:5px}.switch-square label{border-radius:0 6px 6px 0;border-color:#1abc9c}.share{background-color:#eff0f2;position:relative;border-radius:6px}.share:before{content:"";border-style:solid;border-width:0 9px 9px 9px;border-color:transparent transparent #eff0f2 transparent;height:0;position:absolute;left:23px;top:-9px;width:0;-webkit-transform:rotate(360deg)}.share ul{list-style-type:none;margin:0;padding:15px}.share li{font-size:15px;line-height:1.4;padding-top:11px}.share li:after,.share li:before{content:" ";display:table}.share li:after{clear:both}.share li:first-child{padding-top:0}.share .toggle{float:right;margin:0}.share .btn{border-radius:0 0 6px 6px}.share-label{float:left;font-size:15px;line-height:1.4;padding-top:5px;width:50%}.pallete-item{width:140px;float:left;margin:0 0 20px 20px}.palette{font-size:14px;line-height:1.214;color:#fff;margin:0;padding:15px;text-transform:uppercase}.palette dd,.palette dt{line-height:1.429}.palette dt{display:block;font-weight:700;opacity:.8}.palette dd{font-weight:300;margin-left:0;opacity:.8;-webkit-font-smoothing:subpixel-antialiased}.palette-turquoise{background-color:#1abc9c}.palette-green-sea{background-color:#16a085}.palette-emerald{background-color:#2ecc71}.palette-nephritis{background-color:#27ae60}.palette-peter-river{background-color:#3498db}.palette-belize-hole{background-color:#2980b9}.palette-amethyst{background-color:#9b59b6}.palette-wisteria{background-color:#8e44ad}.palette-wet-asphalt{background-color:#283f50}.palette-midnight-blue{background-color:#2c3e50}.palette-sun-flower{background-color:#f1c40f}.palette-orange{background-color:#f39c12}.palette-carrot{background-color:#e67e22}.palette-pumpkin{background-color:#d35400}.palette-alizarin{background-color:#e74c3c}.palette-pomegranate{background-color:#c0392b}.palette-clouds{background-color:#ecf0f1}.palette-silver{background-color:#bdc3c7}.palette-concrete{background-color:#95a5a6}.palette-asbestos{background-color:#7f8c8d}.palette-clouds{color:#bdc3c7}.palette-paragraph{color:#7f8c8d;font-size:12px;line-height:17px}.palette-paragraph span{color:#bdc3c7}.palette-headline{color:#7f8c8d;font-size:13px;font-weight:700;margin-top:-3px}.tile{background-color:#eff0f2;border-radius:6px;padding:14px;position:relative;text-align:center}.tile.tile-hot:before{background:url(../images/tile/ribbon.png) 0 0 no-repeat;background-size:82px 82px;content:'';height:82px;position:absolute;right:-4px;top:-4px;width:82px}.tile p{font-size:15px;margin-bottom:33px}.tile-image{height:100px;margin:31px 0 27px;vertical-align:bottom}.tile-image.big-illustration{height:111px;margin-top:20px;width:112px}.tile-title{font-size:20px;margin:0}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (-moz-min-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:3/2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-moz-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:2){.tile.tile-hot:before{background-image:url(../images/tile/ribbon-2x.png)}}.todo{color:#798795;margin-bottom:20px;border-radius:6px}.todo ul{background-color:#2c3e50;margin:0;padding:0;list-style-type:none;border-radius:0 0 6px 6px}.todo li{background:#283f50 url(../images/todo/todo.png) 92% center no-repeat;background-size:20px 20px;cursor:pointer;font-size:14px;line-height:1.214;margin-top:2px;padding:18px 42px 21px 25px;position:relative;-webkit-transition:.25s;transition:.25s}.todo li:first-child{margin-top:0}.todo li:last-child{border-radius:0 0 6px 6px;padding-bottom:21px}.todo li.todo-done{background:transparent url(../images/todo/done.png) 92% center no-repeat;background-size:20px 20px;color:#1abc9c}.todo li.todo-done .todo-name{color:#1abc9c}.todo-search{position:relative;background:#1abc9c;background-size:16px 16px;border-radius:6px 6px 0 0;color:#283f50;padding:19px 25px 20px}.todo-search:before{position:absolute;font-family:Flat-UI-Icons;content:"\e01c";font-size:16px;line-height:17px;display:inline-block;top:50%;left:92%;margin:-.5em 0 0 -1em}input.todo-search-field{background:0 0;border:none;color:#283f50;font-size:19px;font-weight:700;margin:0;line-height:23px;padding:5px 0;text-indent:0;-webkit-box-shadow:none;box-shadow:none}input.todo-search-field:-moz-placeholder{color:#283f50}input.todo-search-field::-moz-placeholder{color:#283f50;opacity:1}input.todo-search-field:-ms-input-placeholder{color:#283f50}input.todo-search-field::-webkit-input-placeholder{color:#283f50}input.todo-search-field.placeholder{color:#283f50}.todo-icon{float:left;font-size:24px;padding:11px 22px 0 0}.todo-content{padding-top:1px;overflow:hidden}.todo-name{color:#fff;font-size:17px;margin:1px 0 3px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (-moz-min-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:3/2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-moz-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:2){.todo li{background-image:url(../images/todo/todo-2x.png)}.todo li.todo-done{background-image:url(../images/todo/done-2x.png)}}.video-js{background-color:transparent;margin-top:-95px;position:relative;padding:0;font-size:10px;vertical-align:middle;border-radius:6px 6px 0 0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:6px 6px 0 0}.video-js:-moz-full-screen{position:absolute}body.vjs-full-window{padding:0;margin:0;height:100%;overflow-y:auto}.video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0;width:100%!important;height:100%!important}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.vjs-poster{margin:0 auto;padding:0;cursor:pointer;position:relative;width:100%;max-height:100%;border-radius:6px 6px 0 0}.video-js .vjs-text-track-display{text-align:center;position:absolute;bottom:4em;left:1em;right:1em;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif}.video-js .vjs-text-track{display:none;color:#fff;font-size:1.4em;text-align:center;margin-bottom:.1em;background:#000;background:rgba(0,0,0,.5)}.video-js .vjs-subtitles{color:#fff}.video-js .vjs-captions{color:#fc6}.vjs-tt-cue{display:block}.vjs-fade-in{visibility:visible!important;opacity:1!important;-webkit-transition:visibility 0s linear 0s,opacity .3s linear;transition:visibility 0s linear 0s,opacity .3s linear}.vjs-fade-out{visibility:hidden!important;opacity:0!important;-webkit-transition:visibility 0s linear 1.5s,opacity 1.5s linear;transition:visibility 0s linear 1.5s,opacity 1.5s linear}.vjs-control-bar{position:absolute;bottom:-47px;left:0;right:0;margin:0;padding:0;height:47px;color:#fff;background:#273747;border-radius:0 0 6px 6px}.vjs-control-bar.vjs-fade-out{visibility:visible!important;opacity:1!important}.vjs-control{background-position:center center;background-repeat:no-repeat;position:relative;float:left;text-align:center;margin:0;padding:0;height:18px;width:18px}.vjs-control:focus{outline:0}.vjs-control div{background-position:center center;background-repeat:no-repeat}.vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-play-control{cursor:pointer!important;height:47px;left:0;position:absolute;top:0;width:58px}.vjs-play-control div{position:relative;height:47px}.vjs-play-control div:after,.vjs-play-control div:before{position:absolute;font-family:Flat-UI-Icons;color:#1abc9c;font-size:16px;top:50%;left:50%;margin:-.55em 0 0 -.5em;-webkit-transition:color .25s,opacity .25s;transition:color .25s,opacity .25s}.vjs-play-control div:after{content:"\e03b"}.vjs-play-control div:before{content:"\e03c"}.vjs-paused .vjs-play-control:hover div:before{color:#16a085}.vjs-paused .vjs-play-control div:after{opacity:0}.vjs-paused .vjs-play-control div:before{opacity:1}.vjs-playing .vjs-play-control:hover div:after{color:#16a085}.vjs-playing .vjs-play-control div:after{opacity:1}.vjs-playing .vjs-play-control div:before{opacity:0}.vjs-rewind-control{width:5em;cursor:pointer!important}.vjs-rewind-control div{width:19px;height:16px;background:none transparent;margin:.5em auto 0}.vjs-mute-control{background:url(../images/video/volume-full.png) center -48px no-repeat;background-size:16px 64px;cursor:pointer!important;position:absolute;right:51px;top:14px}.vjs-mute-control:focus div,.vjs-mute-control:hover div{opacity:0}.vjs-mute-control.vjs-vol-0,.vjs-mute-control.vjs-vol-0 div{background-image:url(../images/video/volume-off.png)}.vjs-mute-control div{background:#273747 url(../images/video/volume-full.png) no-repeat center 2px;background-size:16px 64px;height:18px;-webkit-transition:opacity .25s;transition:opacity .25s}.vjs-volume-bar,.vjs-volume-control,.vjs-volume-handle,.vjs-volume-level{display:none}.vjs-progress-control{position:absolute;left:60px;right:180px;height:12px;width:auto;top:18px;background:#425669;border-radius:32px}.vjs-progress-holder{position:relative;cursor:pointer!important;padding:0;margin:0;height:12px}.vjs-load-progress,.vjs-play-progress{position:absolute;display:block;height:12px;margin:0;padding:0;left:0;top:0;border-radius:32px}.vjs-play-progress{background:#1abc9c;left:-1px}.vjs-load-progress{background:#d6dbdf;border-radius:32px 0 0 32px}.vjs-load-progress[style*='100%'],.vjs-load-progress[style*='99%']{border-radius:32px}.vjs-seek-handle{background-color:#16a085;position:absolute;width:18px;height:18px;margin:-3px 0 0 1px;left:0;top:0;border-radius:50%;-webkit-transition:background-color .25s;transition:background-color .25s}.vjs-seek-handle[style*='95.']{margin-left:3px}.vjs-seek-handle[style='left: 0%;']{margin-left:-2px}.vjs-seek-handle:focus,.vjs-seek-handle:hover{background-color:#148d75}.vjs-seek-handle:active{background-color:#117a65}.vjs-time-controls{position:absolute;height:20px;width:50px;top:16px;font:300 13px "Source Sans Pro",Helvetica,Arial,sans-serif}.vjs-current-time{right:128px;text-align:right}.vjs-duration{color:#5d6d7e;right:69px;text-align:left}.vjs-remaining-time{display:none}.vjs-time-divider{color:#5d6d7e;font-size:14px;position:absolute;right:121px;top:15px}.vjs-secondary-controls{float:right}.vjs-fullscreen-control{background-image:url(../images/video/fullscreen.png);background-position:center -47px;background-size:15px 64px;cursor:pointer!important;position:absolute;right:17px;top:13px}.vjs-fullscreen-control:focus div,.vjs-fullscreen-control:hover div{opacity:0}.vjs-fullscreen-control div{height:18px;background:url(../images/video/fullscreen.png) no-repeat center 2px;background-size:15px 64px;-webkit-transition:opacity .25s;transition:opacity .25s}.vjs-menu-button{display:none!important}@-webkit-keyframes sharp{0%{background:#e74c3c;border-radius:10px;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}50%{background:#ebedee;border-radius:0;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}100%{background:#e74c3c;border-radius:10px;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes sharp{0%{background:#e74c3c;border-radius:10px;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}50%{background:#ebedee;border-radius:0;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}100%{background:#e74c3c;border-radius:10px;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes sharp{0%{background:#e74c3c;border-radius:10px;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}50%{background:#ebedee;border-radius:0;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}100%{background:#e74c3c;border-radius:10px;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes sharp{0%{background:#e74c3c;border-radius:10px;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}50%{background:#ebedee;border-radius:0;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}100%{background:#e74c3c;border-radius:10px;-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}.vjs-loading-spinner{background:#ebedee;display:none;height:16px;left:50%;margin:-8px 0 0 -8px;position:absolute;top:50%;width:16px;border-radius:10px;-webkit-animation:sharp 2s ease infinite;animation:sharp 2s ease infinite}.login{background:url(../images/login/imac.png) 0 0 no-repeat;background-size:940px 778px;color:#fff;margin-bottom:77px;padding:38px 38px 267px;position:relative}.login-screen{background-color:#1abc9c;min-height:473px;padding:123px 199px 33px 306px}.login-icon{left:200px;position:absolute;top:160px;width:96px}.login-icon>img{display:block;margin-bottom:6px;width:100%}.login-icon>h4{font-size:17px;font-weight:300;line-height:34px;opacity:.95}.login-icon>h4 small{color:inherit;display:block;font-size:inherit;font-weight:700}.login-form{background-color:#edeff1;padding:24px 23px 20px;position:relative;border-radius:6px}.login-form:before{content:'';border-style:solid;border-width:12px 12px 12px 0;border-color:transparent #edeff1 transparent transparent;height:0;position:absolute;left:-12px;top:35px;width:0;-webkit-transform:rotate(360deg)}.login-form .control-group{margin-bottom:6px;position:relative}.login-form .login-field{border-color:transparent;font-size:17px;text-indent:3px}.login-form .login-field:focus{border-color:#1abc9c}.login-form .login-field:focus+.login-field-icon{color:#1abc9c}.login-form .login-field-icon{color:#bfc9ca;font-size:16px;position:absolute;right:15px;top:3px;-webkit-transition:.25s;transition:.25s}.login-link{color:#bfc9ca;display:block;font-size:13px;margin-top:15px;text-align:center}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (-moz-min-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:3/2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-moz-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:2){.login{background-image:url(../images/login/imac-2x.png)}}footer{background-color:#edeff1;color:#bac1c8;font-size:15px;padding:0}footer a{color:#9aa4af;font-weight:700}footer p{font-size:15px;line-height:20px;margin-bottom:10px}.footer-title{margin:0 0 22px;padding-top:21px;font-size:24px;line-height:40px}.footer-brand{display:block;margin-bottom:26px;width:220px}.footer-brand img{width:216px}.footer-banner{background-color:#1abc9c;color:#d1f2eb;margin-left:42px;min-height:316px;padding:0 30px 30px}.footer-banner .footer-title{color:#fff}.footer-banner a{color:#b7f5e9;text-decoration:underline}.footer-banner a:hover{text-decoration:none}.footer-banner ul{list-style-type:none;margin:0 0 26px;padding:0}.footer-banner ul li{border-top:1px solid #1bc5a3;line-height:19px;padding:6px 0}.footer-banner ul li:first-child{border-top:none;padding-top:1px}.last-col{overflow:hidden}.pan,.ptn,.pvn{padding-top:0}.pax,.ptx,.pvx{padding-top:3px}.pas,.pts,.pvs{padding-top:5px}.pam,.ptm,.pvm{padding-top:10px}.pal,.ptl,.pvl{padding-top:20px}.pan,.phn,.prn{padding-right:0}.pax,.phx,.prx{padding-right:3px}.pas,.phs,.prs{padding-right:5px}.pam,.phm,.prm{padding-right:10px}.pal,.phl,.prl{padding-right:20px}.pan,.pbn,.pvn{padding-bottom:0}.pax,.pbx,.pvx{padding-bottom:3px}.pas,.pbs,.pvs{padding-bottom:5px}.pam,.pbm,.pvm{padding-bottom:10px}.pal,.pbl,.pvl{padding-bottom:20px}.pan,.phn,.pln{padding-left:0}.pax,.phx,.plx{padding-left:3px}.pas,.phs,.pls{padding-left:5px}.pam,.phm,.plm{padding-left:10px}.pal,.phl,.pll{padding-left:20px}.man,.mtn,.mvn{margin-top:0}.max,.mtx,.mvx{margin-top:3px}.mas,.mts,.mvs{margin-top:5px}.mam,.mtm,.mvm{margin-top:10px}.mal,.mtl,.mvl{margin-top:20px}.man,.mhn,.mrn{margin-right:0}.max,.mhx,.mrx{margin-right:3px}.mas,.mhs,.mrs{margin-right:5px}.mam,.mhm,.mrm{margin-right:10px}.mal,.mhl,.mrl{margin-right:20px}.man,.mbn,.mvn{margin-bottom:0}.max,.mbx,.mvx{margin-bottom:3px}.mas,.mbs,.mvs{margin-bottom:5px}.mam,.mbm,.mvm{margin-bottom:10px}.mal,.mbl,.mvl{margin-bottom:20px}.man,.mhn,.mln{margin-left:0}.max,.mhx,.mlx{margin-left:3px}.mas,.mhs,.mls{margin-left:5px}.mam,.mhm,.mlm{margin-left:10px}.mal,.mhl,.mll{margin-left:20px} table.dataTable{clear:both;margin-top:6px!important;margin-bottom:6px!important;max-width:none!important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:400;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc{padding-right:30px}table.dataTable thead>tr>td:active,table.dataTable thead>tr>th:active{outline:0}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:.5}table.dataTable thead .sorting:after{opacity:.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}div.dataTables_scrollBody table{border-top:none;margin-top:0!important;margin-bottom:0!important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child td,div.dataTables_scrollBody table tbody tr:first-child th{border-top:none}div.dataTables_scrollFoot table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable{border-collapse:separate!important}table.table-bordered.dataTable td,table.table-bordered.dataTable th{border-left-width:0}table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable th:last-child{border-right-width:0}table.table-bordered.dataTable tbody td,table.table-bordered.dataTable tbody th{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0} diff --git a/static/css/main.css b/static/css/main.css index 2962bdda..2d770736 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -702,6 +702,10 @@ table.dataTable { background-color: #37485a; } +.nav-badge { + margin-top: 5px; +} + #resultsMapContainer { display: none; } diff --git a/static/js/dist/app/gophish.min.js b/static/js/dist/app/gophish.min.js index 2decaa38..abadbfa3 100644 --- a/static/js/dist/app/gophish.min.js +++ b/static/js/dist/app/gophish.min.js @@ -1 +1 @@ -function errorFlash(e){$("#flashes").empty(),$("#flashes").append('
'+e+"
")}function successFlash(e){$("#flashes").empty(),$("#flashes").append('
'+e+"
")}function modalError(e){$("#modal\\.flashes").empty().append('
'+e+"
")}function query(e,t,n,r){return $.ajax({url:"/api"+e,async:r,method:t,data:JSON.stringify(n),dataType:"json",contentType:"application/json",beforeSend:function(e){e.setRequestHeader("Authorization","Bearer "+user.api_key)}})}function escapeHtml(e){return $("
").text(e).html()}function unescapeHtml(e){return $("
").html(e).text()}var capitalize=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},api={campaigns:{get:function(){return query("/campaigns/","GET",{},!1)},post:function(e){return query("/campaigns/","POST",e,!1)},summary:function(){return query("/campaigns/summary","GET",{},!1)}},campaignId:{get:function(e){return query("/campaigns/"+e,"GET",{},!0)},delete:function(e){return query("/campaigns/"+e,"DELETE",{},!1)},results:function(e){return query("/campaigns/"+e+"/results","GET",{},!0)},complete:function(e){return query("/campaigns/"+e+"/complete","GET",{},!0)},summary:function(e){return query("/campaigns/"+e+"/summary","GET",{},!0)}},groups:{get:function(){return query("/groups/","GET",{},!1)},post:function(e){return query("/groups/","POST",e,!1)},summary:function(){return query("/groups/summary","GET",{},!0)}},groupId:{get:function(e){return query("/groups/"+e,"GET",{},!1)},put:function(e){return query("/groups/"+e.id,"PUT",e,!1)},delete:function(e){return query("/groups/"+e,"DELETE",{},!1)}},templates:{get:function(){return query("/templates/","GET",{},!1)},post:function(e){return query("/templates/","POST",e,!1)}},templateId:{get:function(e){return query("/templates/"+e,"GET",{},!1)},put:function(e){return query("/templates/"+e.id,"PUT",e,!1)},delete:function(e){return query("/templates/"+e,"DELETE",{},!1)}},pages:{get:function(){return query("/pages/","GET",{},!1)},post:function(e){return query("/pages/","POST",e,!1)}},pageId:{get:function(e){return query("/pages/"+e,"GET",{},!1)},put:function(e){return query("/pages/"+e.id,"PUT",e,!1)},delete:function(e){return query("/pages/"+e,"DELETE",{},!1)}},SMTP:{get:function(){return query("/smtp/","GET",{},!1)},post:function(e){return query("/smtp/","POST",e,!1)}},SMTPId:{get:function(e){return query("/smtp/"+e,"GET",{},!1)},put:function(e){return query("/smtp/"+e.id,"PUT",e,!1)},delete:function(e){return query("/smtp/"+e,"DELETE",{},!1)}},import_email:function(e){return query("/import/email","POST",e,!1)},clone_site:function(e){return query("/import/site","POST",e,!1)},send_test_email:function(e){return query("/util/send_test_email","POST",e,!0)},reset:function(){return query("/reset","POST",{},!0)}};$(document).ready(function(){var t=location.pathname;$(".nav-sidebar li").each(function(){var e=$(this);e.find("a").attr("href")===t&&e.addClass("active")}),$.fn.dataTable.moment("MMMM Do YYYY, h:mm:ss a"),$('[data-toggle="tooltip"]').tooltip()}); \ No newline at end of file +function errorFlash(e){$("#flashes").empty(),$("#flashes").append('
'+e+"
")}function successFlash(e){$("#flashes").empty(),$("#flashes").append('
'+e+"
")}function modalError(e){$("#modal\\.flashes").empty().append('
'+e+"
")}function query(e,t,r,n){return $.ajax({url:"/api"+e,async:n,method:t,data:JSON.stringify(r),dataType:"json",contentType:"application/json",beforeSend:function(e){e.setRequestHeader("Authorization","Bearer "+user.api_key)}})}function escapeHtml(e){return $("
").text(e).html()}function unescapeHtml(e){return $("
").html(e).text()}window.escapeHtml=escapeHtml;var capitalize=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},api={campaigns:{get:function(){return query("/campaigns/","GET",{},!1)},post:function(e){return query("/campaigns/","POST",e,!1)},summary:function(){return query("/campaigns/summary","GET",{},!1)}},campaignId:{get:function(e){return query("/campaigns/"+e,"GET",{},!0)},delete:function(e){return query("/campaigns/"+e,"DELETE",{},!1)},results:function(e){return query("/campaigns/"+e+"/results","GET",{},!0)},complete:function(e){return query("/campaigns/"+e+"/complete","GET",{},!0)},summary:function(e){return query("/campaigns/"+e+"/summary","GET",{},!0)}},groups:{get:function(){return query("/groups/","GET",{},!1)},post:function(e){return query("/groups/","POST",e,!1)},summary:function(){return query("/groups/summary","GET",{},!0)}},groupId:{get:function(e){return query("/groups/"+e,"GET",{},!1)},put:function(e){return query("/groups/"+e.id,"PUT",e,!1)},delete:function(e){return query("/groups/"+e,"DELETE",{},!1)}},templates:{get:function(){return query("/templates/","GET",{},!1)},post:function(e){return query("/templates/","POST",e,!1)}},templateId:{get:function(e){return query("/templates/"+e,"GET",{},!1)},put:function(e){return query("/templates/"+e.id,"PUT",e,!1)},delete:function(e){return query("/templates/"+e,"DELETE",{},!1)}},pages:{get:function(){return query("/pages/","GET",{},!1)},post:function(e){return query("/pages/","POST",e,!1)}},pageId:{get:function(e){return query("/pages/"+e,"GET",{},!1)},put:function(e){return query("/pages/"+e.id,"PUT",e,!1)},delete:function(e){return query("/pages/"+e,"DELETE",{},!1)}},SMTP:{get:function(){return query("/smtp/","GET",{},!1)},post:function(e){return query("/smtp/","POST",e,!1)}},SMTPId:{get:function(e){return query("/smtp/"+e,"GET",{},!1)},put:function(e){return query("/smtp/"+e.id,"PUT",e,!1)},delete:function(e){return query("/smtp/"+e,"DELETE",{},!1)}},users:{get:function(){return query("/users/","GET",{},!0)},post:function(e){return query("/users/","POST",e,!0)}},userId:{get:function(e){return query("/users/"+e,"GET",{},!0)},put:function(e){return query("/users/"+e.id,"PUT",e,!0)},delete:function(e){return query("/users/"+e,"DELETE",{},!0)}},import_email:function(e){return query("/import/email","POST",e,!1)},clone_site:function(e){return query("/import/site","POST",e,!1)},send_test_email:function(e){return query("/util/send_test_email","POST",e,!0)},reset:function(){return query("/reset","POST",{},!0)}};window.api=api,$(document).ready(function(){var t=location.pathname;$(".nav-sidebar li").each(function(){var e=$(this);e.find("a").attr("href")===t&&e.addClass("active")}),$.fn.dataTable.moment("MMMM Do YYYY, h:mm:ss a"),$('[data-toggle="tooltip"]').tooltip()}); \ No newline at end of file diff --git a/static/js/dist/app/groups.min.js b/static/js/dist/app/groups.min.js new file mode 100644 index 00000000..02d746e8 --- /dev/null +++ b/static/js/dist/app/groups.min.js @@ -0,0 +1 @@ +var groups=[];function save(e){var t=[];$.each($("#targetsTable").DataTable().rows().data(),function(e,a){t.push({first_name:unescapeHtml(a[0]),last_name:unescapeHtml(a[1]),email:unescapeHtml(a[2]),position:unescapeHtml(a[3])})});var a={name:$("#name").val(),targets:t};-1!=e?(a.id=e,api.groupId.put(a).success(function(e){successFlash("Group updated successfully!"),load(),dismiss(),$("#modal").modal("hide")}).error(function(e){modalError(e.responseJSON.message)})):api.groups.post(a).success(function(e){successFlash("Group added successfully!"),load(),dismiss(),$("#modal").modal("hide")}).error(function(e){modalError(e.responseJSON.message)})}function dismiss(){$("#targetsTable").dataTable().DataTable().clear().draw(),$("#name").val(""),$("#modal\\.flashes").empty()}function edit(e){if(targets=$("#targetsTable").dataTable({destroy:!0,columnDefs:[{orderable:!1,targets:"no-sort"}]}),$("#modalSubmit").unbind("click").click(function(){save(e)}),-1==e);else api.groupId.get(e).success(function(e){$("#name").val(e.name),$.each(e.targets,function(e,a){targets.DataTable().row.add([escapeHtml(a.first_name),escapeHtml(a.last_name),escapeHtml(a.email),escapeHtml(a.position),'']).draw()})}).error(function(){errorFlash("Error fetching group")});$("#csvupload").fileupload({url:"/api/import/group",dataType:"json",beforeSend:function(e){e.setRequestHeader("Authorization","Bearer "+user.api_key)},add:function(e,a){$("#modal\\.flashes").empty();var t=a.originalFiles[0].name;if(t&&!/(csv|txt)$/i.test(t.split(".").pop()))return modalError("Unsupported file extension (use .csv or .txt)"),!1;a.submit()},done:function(e,a){$.each(a.result,function(e,a){addTarget(a.first_name,a.last_name,a.email,a.position)}),targets.DataTable().draw()}})}var downloadCSVTemplate=function(){var e="group_template.csv",a=Papa.unparse([{"First Name":"Example","Last Name":"User",Email:"foobar@example.com",Position:"Systems Administrator"}],{}),t=new Blob([a],{type:"text/csv;charset=utf-8;"});if(navigator.msSaveBlob)navigator.msSaveBlob(t,e);else{var s=window.URL.createObjectURL(t),o=document.createElement("a");o.href=s,o.setAttribute("download",e),document.body.appendChild(o),o.click(),document.body.removeChild(o)}},deleteGroup=function(s){var e=groups.find(function(e){return e.id===s});e&&swal({title:"Are you sure?",text:"This will delete the group. This can't be undone!",type:"warning",animation:!1,showCancelButton:!0,confirmButtonText:"Delete "+escapeHtml(e.name),confirmButtonColor:"#428bca",reverseButtons:!0,allowOutsideClick:!1,preConfirm:function(){return new Promise(function(a,t){api.groupId.delete(s).success(function(e){a()}).error(function(e){t(e.responseJSON.message)})})}}).then(function(){swal("Group Deleted!","This group has been deleted!","success"),$('button:contains("OK")').on("click",function(){location.reload()})})};function addTarget(e,a,t,s){var o=escapeHtml(t).toLowerCase(),r=[escapeHtml(e),escapeHtml(a),o,escapeHtml(s),''],n=targets.DataTable(),i=n.column(2,{order:"index"}).data().indexOf(o);0<=i?n.row(i,{order:"index"}).data(r):n.row.add(r)}function load(){$("#groupTable").hide(),$("#emptyMessage").hide(),$("#loading").show(),api.groups.summary().success(function(e){if($("#loading").hide(),0
"]).draw()})}else $("#emptyMessage").show()}).error(function(){errorFlash("Error fetching groups")})}$(document).ready(function(){load(),$("#targetForm").submit(function(){return addTarget($("#firstName").val(),$("#lastName").val(),$("#email").val(),$("#position").val()),targets.DataTable().draw(),$("#targetForm>div>input").val(""),$("#firstName").focus(),!1}),$("#targetsTable").on("click","span>i.fa-trash-o",function(){targets.DataTable().row($(this).parents("tr")).remove().draw()}),$("#modal").on("hide.bs.modal",function(){dismiss()}),$("#csv-template").click(downloadCSVTemplate)}); \ No newline at end of file diff --git a/static/js/dist/app/users.min.js b/static/js/dist/app/users.min.js index 02d746e8..b2a3f080 100644 --- a/static/js/dist/app/users.min.js +++ b/static/js/dist/app/users.min.js @@ -1 +1 @@ -var groups=[];function save(e){var t=[];$.each($("#targetsTable").DataTable().rows().data(),function(e,a){t.push({first_name:unescapeHtml(a[0]),last_name:unescapeHtml(a[1]),email:unescapeHtml(a[2]),position:unescapeHtml(a[3])})});var a={name:$("#name").val(),targets:t};-1!=e?(a.id=e,api.groupId.put(a).success(function(e){successFlash("Group updated successfully!"),load(),dismiss(),$("#modal").modal("hide")}).error(function(e){modalError(e.responseJSON.message)})):api.groups.post(a).success(function(e){successFlash("Group added successfully!"),load(),dismiss(),$("#modal").modal("hide")}).error(function(e){modalError(e.responseJSON.message)})}function dismiss(){$("#targetsTable").dataTable().DataTable().clear().draw(),$("#name").val(""),$("#modal\\.flashes").empty()}function edit(e){if(targets=$("#targetsTable").dataTable({destroy:!0,columnDefs:[{orderable:!1,targets:"no-sort"}]}),$("#modalSubmit").unbind("click").click(function(){save(e)}),-1==e);else api.groupId.get(e).success(function(e){$("#name").val(e.name),$.each(e.targets,function(e,a){targets.DataTable().row.add([escapeHtml(a.first_name),escapeHtml(a.last_name),escapeHtml(a.email),escapeHtml(a.position),'']).draw()})}).error(function(){errorFlash("Error fetching group")});$("#csvupload").fileupload({url:"/api/import/group",dataType:"json",beforeSend:function(e){e.setRequestHeader("Authorization","Bearer "+user.api_key)},add:function(e,a){$("#modal\\.flashes").empty();var t=a.originalFiles[0].name;if(t&&!/(csv|txt)$/i.test(t.split(".").pop()))return modalError("Unsupported file extension (use .csv or .txt)"),!1;a.submit()},done:function(e,a){$.each(a.result,function(e,a){addTarget(a.first_name,a.last_name,a.email,a.position)}),targets.DataTable().draw()}})}var downloadCSVTemplate=function(){var e="group_template.csv",a=Papa.unparse([{"First Name":"Example","Last Name":"User",Email:"foobar@example.com",Position:"Systems Administrator"}],{}),t=new Blob([a],{type:"text/csv;charset=utf-8;"});if(navigator.msSaveBlob)navigator.msSaveBlob(t,e);else{var s=window.URL.createObjectURL(t),o=document.createElement("a");o.href=s,o.setAttribute("download",e),document.body.appendChild(o),o.click(),document.body.removeChild(o)}},deleteGroup=function(s){var e=groups.find(function(e){return e.id===s});e&&swal({title:"Are you sure?",text:"This will delete the group. This can't be undone!",type:"warning",animation:!1,showCancelButton:!0,confirmButtonText:"Delete "+escapeHtml(e.name),confirmButtonColor:"#428bca",reverseButtons:!0,allowOutsideClick:!1,preConfirm:function(){return new Promise(function(a,t){api.groupId.delete(s).success(function(e){a()}).error(function(e){t(e.responseJSON.message)})})}}).then(function(){swal("Group Deleted!","This group has been deleted!","success"),$('button:contains("OK")').on("click",function(){location.reload()})})};function addTarget(e,a,t,s){var o=escapeHtml(t).toLowerCase(),r=[escapeHtml(e),escapeHtml(a),o,escapeHtml(s),''],n=targets.DataTable(),i=n.column(2,{order:"index"}).data().indexOf(o);0<=i?n.row(i,{order:"index"}).data(r):n.row.add(r)}function load(){$("#groupTable").hide(),$("#emptyMessage").hide(),$("#loading").show(),api.groups.summary().success(function(e){if($("#loading").hide(),0
"]).draw()})}else $("#emptyMessage").show()}).error(function(){errorFlash("Error fetching groups")})}$(document).ready(function(){load(),$("#targetForm").submit(function(){return addTarget($("#firstName").val(),$("#lastName").val(),$("#email").val(),$("#position").val()),targets.DataTable().draw(),$("#targetForm>div>input").val(""),$("#firstName").focus(),!1}),$("#targetsTable").on("click","span>i.fa-trash-o",function(){targets.DataTable().row($(this).parents("tr")).remove().draw()}),$("#modal").on("hide.bs.modal",function(){dismiss()}),$("#csv-template").click(downloadCSVTemplate)}); \ No newline at end of file +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t){var r=[],n=function(){$("#username").val(""),$("#password").val(""),$("#confirm_password").val(""),$("#role").val(""),$("#modal\\.flashes").empty()},o=function(e){$("#modalSubmit").unbind("click").click(function(){!function(e){if($("#password").val()===$("#confirm_password").val()){var t={username:$("#username").val(),password:$("#password").val(),role:$("#role").val()};-1!=e?(t.id=e,api.userId.put(t).success(function(e){successFlash("User ".concat(t.username," updated successfully!")),s(),n(),$("#modal").modal("hide")}).error(function(e){modalError(e.responseJSON.message)})):api.users.post(t).success(function(e){successFlash("User ".concat(t.username," registered successfully!")),s(),n(),$("#modal").modal("hide")}).error(function(e){modalError(e.responseJSON.message)})}else modalError("Passwords must match.")}(e)}),$("#role").select2(),-1==e?($("#role").val("user"),$("#role").trigger("change")):api.userId.get(e).success(function(e){$("#username").val(e.username),$("#role").val(e.role.slug),$("#role").trigger("change")}).error(function(){errorFlash("Error fetching user")})},s=function(){$("#userTable").hide(),$("#loading").show(),api.users.get().success(function(e){r=e,$("#loading").hide(),$("#userTable").show();var t=$("#userTable").DataTable({destroy:!0,columnDefs:[{orderable:!1,targets:"no-sort"}]});t.clear(),$.each(r,function(e,r){t.row.add([escapeHtml(r.username),escapeHtml(r.role.name),"
"]).draw()})}).error(function(){errorFlash("Error fetching users")})};$(document).ready(function(){s(),$("#modal").on("hide.bs.modal",function(){n()}),$.fn.select2.defaults.set("width","100%"),$.fn.select2.defaults.set("dropdownParent",$("#role-select")),$.fn.select2.defaults.set("theme","bootstrap"),$.fn.select2.defaults.set("sorter",function(e){return e.sort(function(e,t){return e.text.toLowerCase()>t.text.toLowerCase()?1:e.text.toLowerCase()").text(text).html() } +window.escapeHtml = escapeHtml function unescapeHtml(html) { return $("
").html(html).text() @@ -196,6 +197,32 @@ var api = { return query("/smtp/" + id, "DELETE", {}, false) } }, + // users contains the endpoints for /users + users: { + // get() - Queries the API for GET /users + get: function () { + return query("/users/", "GET", {}, true) + }, + // post() - Posts a user to POST /users + post: function (user) { + return query("/users/", "POST", user, true) + } + }, + // userId contains the endpoints for /users/:id + userId: { + // get() - Queries the API for GET /users/:id + get: function (id) { + return query("/users/" + id, "GET", {}, true) + }, + // put() - Puts a user to PUT /users/:id + put: function (user) { + return query("/users/" + user.id, "PUT", user, true) + }, + // delete() - Deletes a user at DELETE /users/:id + delete: function (id) { + return query("/users/" + id, "DELETE", {}, true) + } + }, // import handles all of the "import" functions in the api import_email: function (req) { return query("/import/email", "POST", req, false) @@ -212,6 +239,7 @@ var api = { return query("/reset", "POST", {}, true) } } +window.api = api // Register our moment.js datatables listeners $(document).ready(function () { diff --git a/static/js/src/app/groups.js b/static/js/src/app/groups.js new file mode 100644 index 00000000..02a2b890 --- /dev/null +++ b/static/js/src/app/groups.js @@ -0,0 +1,284 @@ +var groups = [] + +// Save attempts to POST or PUT to /groups/ +function save(id) { + var targets = [] + $.each($("#targetsTable").DataTable().rows().data(), function (i, target) { + targets.push({ + first_name: unescapeHtml(target[0]), + last_name: unescapeHtml(target[1]), + email: unescapeHtml(target[2]), + position: unescapeHtml(target[3]) + }) + }) + var group = { + name: $("#name").val(), + targets: targets + } + // Submit the group + if (id != -1) { + // If we're just editing an existing group, + // we need to PUT /groups/:id + group.id = id + api.groupId.put(group) + .success(function (data) { + successFlash("Group updated successfully!") + load() + dismiss() + $("#modal").modal('hide') + }) + .error(function (data) { + modalError(data.responseJSON.message) + }) + } else { + // Else, if this is a new group, POST it + // to /groups + api.groups.post(group) + .success(function (data) { + successFlash("Group added successfully!") + load() + dismiss() + $("#modal").modal('hide') + }) + .error(function (data) { + modalError(data.responseJSON.message) + }) + } +} + +function dismiss() { + $("#targetsTable").dataTable().DataTable().clear().draw() + $("#name").val("") + $("#modal\\.flashes").empty() +} + +function edit(id) { + targets = $("#targetsTable").dataTable({ + destroy: true, // Destroy any other instantiated table - http://datatables.net/manual/tech-notes/3#destroy + columnDefs: [{ + orderable: false, + targets: "no-sort" + }] + }) + $("#modalSubmit").unbind('click').click(function () { + save(id) + }) + if (id == -1) { + var group = {} + } else { + api.groupId.get(id) + .success(function (group) { + $("#name").val(group.name) + $.each(group.targets, function (i, record) { + targets.DataTable() + .row.add([ + escapeHtml(record.first_name), + escapeHtml(record.last_name), + escapeHtml(record.email), + escapeHtml(record.position), + '' + ]).draw() + }); + + }) + .error(function () { + errorFlash("Error fetching group") + }) + } + // Handle file uploads + $("#csvupload").fileupload({ + url: "/api/import/group", + dataType: "json", + beforeSend: function (xhr) { + xhr.setRequestHeader('Authorization', 'Bearer ' + user.api_key); + }, + add: function (e, data) { + $("#modal\\.flashes").empty() + var acceptFileTypes = /(csv|txt)$/i; + var filename = data.originalFiles[0]['name'] + if (filename && !acceptFileTypes.test(filename.split(".").pop())) { + modalError("Unsupported file extension (use .csv or .txt)") + return false; + } + data.submit(); + }, + done: function (e, data) { + $.each(data.result, function (i, record) { + addTarget( + record.first_name, + record.last_name, + record.email, + record.position); + }); + targets.DataTable().draw(); + } + }) +} + +var downloadCSVTemplate = function () { + var csvScope = [{ + 'First Name': 'Example', + 'Last Name': 'User', + 'Email': 'foobar@example.com', + 'Position': 'Systems Administrator' + }] + var filename = 'group_template.csv' + var csvString = Papa.unparse(csvScope, {}) + var csvData = new Blob([csvString], { + type: 'text/csv;charset=utf-8;' + }); + if (navigator.msSaveBlob) { + navigator.msSaveBlob(csvData, filename); + } else { + var csvURL = window.URL.createObjectURL(csvData); + var dlLink = document.createElement('a'); + dlLink.href = csvURL; + dlLink.setAttribute('download', filename) + document.body.appendChild(dlLink) + dlLink.click(); + document.body.removeChild(dlLink) + } +} + + +var deleteGroup = function (id) { + var group = groups.find(function (x) { + return x.id === id + }) + if (!group) { + return + } + swal({ + title: "Are you sure?", + text: "This will delete the group. This can't be undone!", + type: "warning", + animation: false, + showCancelButton: true, + confirmButtonText: "Delete " + escapeHtml(group.name), + confirmButtonColor: "#428bca", + reverseButtons: true, + allowOutsideClick: false, + preConfirm: function () { + return new Promise(function (resolve, reject) { + api.groupId.delete(id) + .success(function (msg) { + resolve() + }) + .error(function (data) { + reject(data.responseJSON.message) + }) + }) + } + }).then(function () { + swal( + 'Group Deleted!', + 'This group has been deleted!', + 'success' + ); + $('button:contains("OK")').on('click', function () { + location.reload() + }) + }) +} + +function addTarget(firstNameInput, lastNameInput, emailInput, positionInput) { + // Create new data row. + var email = escapeHtml(emailInput).toLowerCase(); + var newRow = [ + escapeHtml(firstNameInput), + escapeHtml(lastNameInput), + email, + escapeHtml(positionInput), + '' + ]; + + // Check table to see if email already exists. + var targetsTable = targets.DataTable(); + var existingRowIndex = targetsTable + .column(2, { + order: "index" + }) // Email column has index of 2 + .data() + .indexOf(email); + // Update or add new row as necessary. + if (existingRowIndex >= 0) { + targetsTable + .row(existingRowIndex, { + order: "index" + }) + .data(newRow); + } else { + targetsTable.row.add(newRow); + } +} + +function load() { + $("#groupTable").hide() + $("#emptyMessage").hide() + $("#loading").show() + api.groups.summary() + .success(function (response) { + $("#loading").hide() + if (response.total > 0) { + groups = response.groups + $("#emptyMessage").hide() + $("#groupTable").show() + var groupTable = $("#groupTable").DataTable({ + destroy: true, + columnDefs: [{ + orderable: false, + targets: "no-sort" + }] + }); + groupTable.clear(); + $.each(groups, function (i, group) { + groupTable.row.add([ + escapeHtml(group.name), + escapeHtml(group.num_targets), + moment(group.modified_date).format('MMMM Do YYYY, h:mm:ss a'), + "
\ +
" + ]).draw() + }) + } else { + $("#emptyMessage").show() + } + }) + .error(function () { + errorFlash("Error fetching groups") + }) +} + +$(document).ready(function () { + load() + // Setup the event listeners + // Handle manual additions + $("#targetForm").submit(function () { + addTarget( + $("#firstName").val(), + $("#lastName").val(), + $("#email").val(), + $("#position").val()); + targets.DataTable().draw(); + + // Reset user input. + $("#targetForm>div>input").val(''); + $("#firstName").focus(); + return false; + }); + // Handle Deletion + $("#targetsTable").on("click", "span>i.fa-trash-o", function () { + targets.DataTable() + .row($(this).parents('tr')) + .remove() + .draw(); + }); + $("#modal").on("hide.bs.modal", function () { + dismiss(); + }); + $("#csv-template").click(downloadCSVTemplate) +}); \ No newline at end of file diff --git a/static/js/src/app/users.js b/static/js/src/app/users.js index 02a2b890..81db6697 100644 --- a/static/js/src/app/users.js +++ b/static/js/src/app/users.js @@ -1,28 +1,25 @@ -var groups = [] +let users = [] -// Save attempts to POST or PUT to /groups/ -function save(id) { - var targets = [] - $.each($("#targetsTable").DataTable().rows().data(), function (i, target) { - targets.push({ - first_name: unescapeHtml(target[0]), - last_name: unescapeHtml(target[1]), - email: unescapeHtml(target[2]), - position: unescapeHtml(target[3]) - }) - }) - var group = { - name: $("#name").val(), - targets: targets +// Save attempts to POST or PUT to /users/ +const save = (id) => { + // Validate that the passwords match + if ($("#password").val() !== $("#confirm_password").val()) { + modalError("Passwords must match.") + return } - // Submit the group + let user = { + username: $("#username").val(), + password: $("#password").val(), + role: $("#role").val() + } + // Submit the user if (id != -1) { - // If we're just editing an existing group, - // we need to PUT /groups/:id - group.id = id - api.groupId.put(group) + // If we're just editing an existing user, + // we need to PUT /user/:id + user.id = id + api.userId.put(user) .success(function (data) { - successFlash("Group updated successfully!") + successFlash(`User ${user.username} updated successfully!`) load() dismiss() $("#modal").modal('hide') @@ -31,11 +28,11 @@ function save(id) { modalError(data.responseJSON.message) }) } else { - // Else, if this is a new group, POST it - // to /groups - api.groups.post(group) + // Else, if this is a new user, POST it + // to /user + api.users.post(user) .success(function (data) { - successFlash("Group added successfully!") + successFlash(`User ${user.username} registered successfully!`) load() dismiss() $("#modal").modal('hide') @@ -46,133 +43,65 @@ function save(id) { } } -function dismiss() { - $("#targetsTable").dataTable().DataTable().clear().draw() - $("#name").val("") +const dismiss = () => { + $("#username").val("") + $("#password").val("") + $("#confirm_password").val("") + $("#role").val("") $("#modal\\.flashes").empty() } -function edit(id) { - targets = $("#targetsTable").dataTable({ - destroy: true, // Destroy any other instantiated table - http://datatables.net/manual/tech-notes/3#destroy - columnDefs: [{ - orderable: false, - targets: "no-sort" - }] - }) - $("#modalSubmit").unbind('click').click(function () { +const edit = (id) => { + $("#modalSubmit").unbind('click').click(() => { save(id) }) + $("#role").select2() if (id == -1) { - var group = {} + $("#role").val("user") + $("#role").trigger("change") } else { - api.groupId.get(id) - .success(function (group) { - $("#name").val(group.name) - $.each(group.targets, function (i, record) { - targets.DataTable() - .row.add([ - escapeHtml(record.first_name), - escapeHtml(record.last_name), - escapeHtml(record.email), - escapeHtml(record.position), - '' - ]).draw() - }); - + api.userId.get(id) + .success(function (user) { + $("#username").val(user.username) + $("#role").val(user.role.slug) + $("#role").trigger("change") }) .error(function () { - errorFlash("Error fetching group") + errorFlash("Error fetching user") }) } - // Handle file uploads - $("#csvupload").fileupload({ - url: "/api/import/group", - dataType: "json", - beforeSend: function (xhr) { - xhr.setRequestHeader('Authorization', 'Bearer ' + user.api_key); - }, - add: function (e, data) { - $("#modal\\.flashes").empty() - var acceptFileTypes = /(csv|txt)$/i; - var filename = data.originalFiles[0]['name'] - if (filename && !acceptFileTypes.test(filename.split(".").pop())) { - modalError("Unsupported file extension (use .csv or .txt)") - return false; - } - data.submit(); - }, - done: function (e, data) { - $.each(data.result, function (i, record) { - addTarget( - record.first_name, - record.last_name, - record.email, - record.position); - }); - targets.DataTable().draw(); - } - }) } -var downloadCSVTemplate = function () { - var csvScope = [{ - 'First Name': 'Example', - 'Last Name': 'User', - 'Email': 'foobar@example.com', - 'Position': 'Systems Administrator' - }] - var filename = 'group_template.csv' - var csvString = Papa.unparse(csvScope, {}) - var csvData = new Blob([csvString], { - type: 'text/csv;charset=utf-8;' - }); - if (navigator.msSaveBlob) { - navigator.msSaveBlob(csvData, filename); - } else { - var csvURL = window.URL.createObjectURL(csvData); - var dlLink = document.createElement('a'); - dlLink.href = csvURL; - dlLink.setAttribute('download', filename) - document.body.appendChild(dlLink) - dlLink.click(); - document.body.removeChild(dlLink) - } -} - - -var deleteGroup = function (id) { - var group = groups.find(function (x) { - return x.id === id - }) - if (!group) { +const deleteUser = (id) => { + var user = users.find(x => x.id == id) + if (!user) { return } swal({ title: "Are you sure?", - text: "This will delete the group. This can't be undone!", + text: `This will delete the account for ${user.username} as well as all of the objects they have created.\n\nThis can't be undone!`, type: "warning", animation: false, showCancelButton: true, - confirmButtonText: "Delete " + escapeHtml(group.name), + confirmButtonText: "Delete", confirmButtonColor: "#428bca", reverseButtons: true, allowOutsideClick: false, preConfirm: function () { - return new Promise(function (resolve, reject) { - api.groupId.delete(id) - .success(function (msg) { + return new Promise((resolve, reject) => { + api.userId.delete(id) + .success((msg) => { resolve() }) - .error(function (data) { + .error((data) => { reject(data.responseJSON.message) }) }) } }).then(function () { swal( - 'Group Deleted!', - 'This group has been deleted!', + 'User Deleted!', + `The user account for ${user.username} and all associated objects have been deleted!`, 'success' ); $('button:contains("OK")').on('click', function () { @@ -181,104 +110,69 @@ var deleteGroup = function (id) { }) } -function addTarget(firstNameInput, lastNameInput, emailInput, positionInput) { - // Create new data row. - var email = escapeHtml(emailInput).toLowerCase(); - var newRow = [ - escapeHtml(firstNameInput), - escapeHtml(lastNameInput), - email, - escapeHtml(positionInput), - '' - ]; - // Check table to see if email already exists. - var targetsTable = targets.DataTable(); - var existingRowIndex = targetsTable - .column(2, { - order: "index" - }) // Email column has index of 2 - .data() - .indexOf(email); - // Update or add new row as necessary. - if (existingRowIndex >= 0) { - targetsTable - .row(existingRowIndex, { - order: "index" - }) - .data(newRow); - } else { - targetsTable.row.add(newRow); - } -} - -function load() { - $("#groupTable").hide() - $("#emptyMessage").hide() +const load = () => { + $("#userTable").hide() $("#loading").show() - api.groups.summary() - .success(function (response) { + api.users.get() + .success((us) => { + users = us $("#loading").hide() - if (response.total > 0) { - groups = response.groups - $("#emptyMessage").hide() - $("#groupTable").show() - var groupTable = $("#groupTable").DataTable({ - destroy: true, - columnDefs: [{ - orderable: false, - targets: "no-sort" - }] - }); - groupTable.clear(); - $.each(groups, function (i, group) { - groupTable.row.add([ - escapeHtml(group.name), - escapeHtml(group.num_targets), - moment(group.modified_date).format('MMMM Do YYYY, h:mm:ss a'), - "
\ -
" - ]).draw() - }) - } else { - $("#emptyMessage").show() - } + ]).draw() + }) }) - .error(function () { - errorFlash("Error fetching groups") + .error(() => { + errorFlash("Error fetching users") }) } $(document).ready(function () { load() // Setup the event listeners - // Handle manual additions - $("#targetForm").submit(function () { - addTarget( - $("#firstName").val(), - $("#lastName").val(), - $("#email").val(), - $("#position").val()); - targets.DataTable().draw(); - - // Reset user input. - $("#targetForm>div>input").val(''); - $("#firstName").focus(); - return false; - }); - // Handle Deletion - $("#targetsTable").on("click", "span>i.fa-trash-o", function () { - targets.DataTable() - .row($(this).parents('tr')) - .remove() - .draw(); - }); $("#modal").on("hide.bs.modal", function () { dismiss(); }); - $("#csv-template").click(downloadCSVTemplate) + // Select2 Defaults + $.fn.select2.defaults.set("width", "100%"); + $.fn.select2.defaults.set("dropdownParent", $("#role-select")); + $.fn.select2.defaults.set("theme", "bootstrap"); + $.fn.select2.defaults.set("sorter", function (data) { + return data.sort(function (a, b) { + if (a.text.toLowerCase() > b.text.toLowerCase()) { + return 1; + } + if (a.text.toLowerCase() < b.text.toLowerCase()) { + return -1; + } + return 0; + }); + }) + $("#new_button").on("click", function () { + edit(-1) + }) + $("#userTable").on('click', '.edit_button', function (e) { + edit($(this).attr('data-user-id')) + }) + $("#userTable").on('click', '.delete_button', function (e) { + deleteUser($(this).attr('data-user-id')) + }) }); \ No newline at end of file diff --git a/templates/groups.html b/templates/groups.html new file mode 100644 index 00000000..97709400 --- /dev/null +++ b/templates/groups.html @@ -0,0 +1,106 @@ +{{define "body"}} +
+
+

+ Users & Groups +

+
+
+
+ +
+   +
+ +
+ +
+ + + + + + + + + + + + +
+
+ + +{{end}} {{define "scripts"}} + +{{end}} \ No newline at end of file diff --git a/templates/nav.html b/templates/nav.html index 09af8982..728a8f7e 100644 --- a/templates/nav.html +++ b/templates/nav.html @@ -10,7 +10,7 @@ Campaigns
  • - Users & Groups + Users & Groups
  • Email Templates
  • @@ -21,8 +21,13 @@ Sending Profiles
  • - Settings Admin + Account Settings
  • + {{if .ModifySystem}} +
  • + User ManagementAdmin +
  • + {{end}}

  • diff --git a/templates/register.html b/templates/register.html deleted file mode 100644 index 518aec09..00000000 --- a/templates/register.html +++ /dev/null @@ -1,62 +0,0 @@ -{{ define "base" }} - - - - - - - - - - - - Gophish - {{ .Title }} - - - - - - - -
    - -
    - - - - - -{{ end }} \ No newline at end of file diff --git a/templates/settings.html b/templates/settings.html index b08842f4..eeac2c24 100644 --- a/templates/settings.html +++ b/templates/settings.html @@ -8,7 +8,8 @@
    @@ -22,19 +23,12 @@

    -
    - - -
    -
    {{end}}
    - +
    @@ -46,26 +40,30 @@
    - +

    - +

    - +

    - +
    diff --git a/templates/users.html b/templates/users.html index adbcad01..0f5736ef 100644 --- a/templates/users.html +++ b/templates/users.html @@ -2,31 +2,25 @@

    - Users & Groups + {{.Title}}

    - +
     
    -
    - + - - - + + @@ -43,56 +37,30 @@ - + - - - - - - - - - - -
    First NameLast NameEmailPosition