diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..08e32e7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Insuetus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..6fcc141 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Pathfinder ( Visualization ) + diff --git a/index.html b/index.html new file mode 100644 index 0000000..8f9a759 --- /dev/null +++ b/index.html @@ -0,0 +1,95 @@ + + + Pathfinder + + + + + + +
+
+

+
+ +
+
+
+ +
+
+ + + + + + + + + diff --git a/public/.DS_Store b/public/.DS_Store new file mode 100644 index 0000000..b85336d Binary files /dev/null and b/public/.DS_Store differ diff --git a/public/browser/animations/launchAnimations.js b/public/browser/animations/launchAnimations.js new file mode 100644 index 0000000..7953290 --- /dev/null +++ b/public/browser/animations/launchAnimations.js @@ -0,0 +1,174 @@ +const weightedSearchAlgorithm = require("../pathfindingAlgorithms/weightedSearchAlgorithm"); +const unweightedSearchAlgorithm = require("../pathfindingAlgorithms/unweightedSearchAlgorithm"); + +function launchAnimations(board, success, type, object, algorithm, heuristic) { + let nodes = object ? board.objectNodesToAnimate.slice(0) : board.nodesToAnimate.slice(0); + let speed = board.speed === "fast" ? + 0 : board.speed === "average" ? + 100 : 500; + let shortestNodes; + function timeout(index) { + setTimeout(function () { + if (index === nodes.length) { + if (object) { + board.objectNodesToAnimate = []; + if (success) { + board.addShortestPath(board.object, board.start, "object"); + board.clearNodeStatuses(); + let newSuccess; + if (board.currentAlgorithm === "bidirectional") { + + } else { + if (type === "weighted") { + newSuccess = weightedSearchAlgorithm(board.nodes, board.object, board.target, board.nodesToAnimate, board.boardArray, algorithm, heuristic); + } else { + newSuccess = unweightedSearchAlgorithm(board.nodes, board.object, board.target, board.nodesToAnimate, board.boardArray, algorithm); + } + } + document.getElementById(board.object).className = "visitedObjectNode"; + launchAnimations(board, newSuccess, type); + return; + } else { + console.log("Failure."); + board.reset(); + board.toggleButtons(); + return; + } + } else { + board.nodesToAnimate = []; + if (success) { + if (document.getElementById(board.target).className !== "visitedTargetNodeBlue") { + document.getElementById(board.target).className = "visitedTargetNodeBlue"; + } + if (board.isObject) { + board.addShortestPath(board.target, board.object); + board.drawShortestPathTimeout(board.target, board.object, type, "object"); + board.objectShortestPathNodesToAnimate = []; + board.shortestPathNodesToAnimate = []; + board.reset("objectNotTransparent"); + } else { + board.drawShortestPathTimeout(board.target, board.start, type); + board.objectShortestPathNodesToAnimate = []; + board.shortestPathNodesToAnimate = []; + board.reset(); + } + shortestNodes = board.objectShortestPathNodesToAnimate.concat(board.shortestPathNodesToAnimate); + return; + } else { + console.log("Failure."); + board.reset(); + board.toggleButtons(); + return; + } + } + } else if (index === 0) { + if (object) { + document.getElementById(board.start).className = "visitedStartNodePurple"; + } else { + if (document.getElementById(board.start).className !== "visitedStartNodePurple") { + document.getElementById(board.start).className = "visitedStartNodeBlue"; + } + } + if (board.currentAlgorithm === "bidirectional") { + document.getElementById(board.target).className = "visitedTargetNodeBlue"; + } + change(nodes[index]) + } else if (index === nodes.length - 1 && board.currentAlgorithm === "bidirectional") { + change(nodes[index], nodes[index - 1], "bidirectional"); + } else { + change(nodes[index], nodes[index - 1]); + } + timeout(index + 1); + }, speed); + } + + function change(currentNode, previousNode, bidirectional) { + let currentHTMLNode = document.getElementById(currentNode.id); + let relevantClassNames = ["start", "target", "object", "visitedStartNodeBlue", "visitedStartNodePurple", "visitedObjectNode", "visitedTargetNodePurple", "visitedTargetNodeBlue"]; + if (!relevantClassNames.includes(currentHTMLNode.className)) { + currentHTMLNode.className = !bidirectional ? + "current" : currentNode.weight === 15 ? + "visited weight" : "visited"; + } + if (currentHTMLNode.className === "visitedStartNodePurple" && !object) { + currentHTMLNode.className = "visitedStartNodeBlue"; + } + if (currentHTMLNode.className === "target" && object) { + currentHTMLNode.className = "visitedTargetNodePurple"; + } + if (previousNode) { + let previousHTMLNode = document.getElementById(previousNode.id); + if (!relevantClassNames.includes(previousHTMLNode.className)) { + if (object) { + previousHTMLNode.className = previousNode.weight === 15 ? "visitedobject weight" : "visitedobject"; + } else { + previousHTMLNode.className = previousNode.weight === 15 ? "visited weight" : "visited"; + } + } + } + } + + function shortestPathTimeout(index) { + setTimeout(function () { + if (index === shortestNodes.length){ + board.reset(); + if (object) { + shortestPathChange(board.nodes[board.target], shortestNodes[index - 1]); + board.objectShortestPathNodesToAnimate = []; + board.shortestPathNodesToAnimate = []; + board.clearNodeStatuses(); + let newSuccess; + if (type === "weighted") { + newSuccess = weightedSearchAlgorithm(board.nodes, board.object, board.target, board.nodesToAnimate, board.boardArray, algorithm); + } else { + newSuccess = unweightedSearchAlgorithm(board.nodes, board.object, board.target, board.nodesToAnimate, board.boardArray, algorithm); + } + launchAnimations(board, newSuccess, type); + return; + } else { + shortestPathChange(board.nodes[board.target], shortestNodes[index - 1]); + board.objectShortestPathNodesToAnimate = []; + board.shortestPathNodesToAnimate = []; + return; + } + } else if (index === 0) { + shortestPathChange(shortestNodes[index]) + } else { + shortestPathChange(shortestNodes[index], shortestNodes[index - 1]); + } + shortestPathTimeout(index + 1); + }, 40); + } + + function shortestPathChange(currentNode, previousNode) { + let currentHTMLNode = document.getElementById(currentNode.id); + if (type === "unweighted") { + currentHTMLNode.className = "shortest-path-unweighted"; + } else { + if (currentNode.direction === "up") { + currentHTMLNode.className = "shortest-path-up"; + } else if (currentNode.direction === "down") { + currentHTMLNode.className = "shortest-path-down"; + } else if (currentNode.direction === "right") { + currentHTMLNode.className = "shortest-path-right"; + } else if (currentNode.direction === "left") { + currentHTMLNode.className = "shortest-path-left"; + } else if (currentNode.direction = "down-right") { + currentHTMLNode.className = "wall" + } + } + if (previousNode) { + let previousHTMLNode = document.getElementById(previousNode.id); + previousHTMLNode.className = "shortest-path"; + } else { + let element = document.getElementById(board.start); + element.className = "shortest-path"; + element.removeAttribute("style"); + } + } + + timeout(0); + +}; + +module.exports = launchAnimations; diff --git a/public/browser/animations/launchInstantAnimations.js b/public/browser/animations/launchInstantAnimations.js new file mode 100644 index 0000000..09507b3 --- /dev/null +++ b/public/browser/animations/launchInstantAnimations.js @@ -0,0 +1,116 @@ +const weightedSearchAlgorithm = require("../pathfindingAlgorithms/weightedSearchAlgorithm"); +const unweightedSearchAlgorithm = require("../pathfindingAlgorithms/unweightedSearchAlgorithm"); + +function launchInstantAnimations(board, success, type, object, algorithm, heuristic) { + let nodes = object ? board.objectNodesToAnimate.slice(0) : board.nodesToAnimate.slice(0); + let shortestNodes; + for (let i = 0; i < nodes.length; i++) { + if (i === 0) { + change(nodes[i]); + } else { + change(nodes[i], nodes[i - 1]); + } + } + if (object) { + board.objectNodesToAnimate = []; + if (success) { + board.drawShortestPath(board.object, board.start, "object"); + board.clearNodeStatuses(); + let newSuccess; + if (type === "weighted") { + newSuccess = weightedSearchAlgorithm(board.nodes, board.object, board.target, board.nodesToAnimate, board.boardArray, algorithm, heuristic); + } else { + newSuccess = unweightedSearchAlgorithm(board.nodes, board.object, board.target, board.nodesToAnimate, board.boardArray, algorithm); + } + launchInstantAnimations(board, newSuccess, type); + shortestNodes = board.objectShortestPathNodesToAnimate.concat(board.shortestPathNodesToAnimate); + } else { + console.log("Failure."); + board.reset(); + return; + } + } else { + board.nodesToAnimate = []; + if (success) { + if (board.isObject) { + board.drawShortestPath(board.target, board.object); + } else { + board.drawShortestPath(board.target, board.start); + } + shortestNodes = board.objectShortestPathNodesToAnimate.concat(board.shortestPathNodesToAnimate); + } else { + console.log("Failure"); + board.reset(); + return; + } + } + + let j; + for (j = 0; j < shortestNodes.length; j++) { + if (j === 0) { + shortestPathChange(shortestNodes[j]); + } else { + shortestPathChange(shortestNodes[j], shortestNodes[j - 1]); + } + } + board.reset(); + if (object) { + shortestPathChange(board.nodes[board.target], shortestNodes[j - 1]); + board.objectShortestPathNodesToAnimate = []; + board.shortestPathNodesToAnimate = []; + board.clearNodeStatuses(); + let newSuccess; + if (type === "weighted") { + newSuccess = weightedSearchAlgorithm(board.nodes, board.object, board.target, board.nodesToAnimate, board.boardArray, algorithm); + } else { + newSuccess = unweightedSearchAlgorithm(board.nodes, board.object, board.target, board.nodesToAnimate, board.boardArray, algorithm); + } + launchInstantAnimations(board, newSuccess, type); + } else { + shortestPathChange(board.nodes[board.target], shortestNodes[j - 1]); + board.objectShortestPathNodesToAnimate = []; + board.shortestPathNodesToAnimate = []; + } + + function change(currentNode, previousNode) { + let currentHTMLNode = document.getElementById(currentNode.id); + let relevantClassNames = ["start", "shortest-path", "instantshortest-path", "instantshortest-path weight"]; + if (previousNode) { + let previousHTMLNode = document.getElementById(previousNode.id); + if (!relevantClassNames.includes(previousHTMLNode.className)) { + if (object) { + previousHTMLNode.className = previousNode.weight === 15 ? "instantvisitedobject weight" : "instantvisitedobject"; + } else { + previousHTMLNode.className = previousNode.weight === 15 ? "instantvisited weight" : "instantvisited"; + } + } + } + } + + function shortestPathChange(currentNode, previousNode) { + let currentHTMLNode = document.getElementById(currentNode.id); + if (type === "unweighted") { + currentHTMLNode.className = "shortest-path-unweighted"; + } else { + if (currentNode.direction === "up") { + currentHTMLNode.className = "shortest-path-up"; + } else if (currentNode.direction === "down") { + currentHTMLNode.className = "shortest-path-down"; + } else if (currentNode.direction === "right") { + currentHTMLNode.className = "shortest-path-right"; + } else if (currentNode.direction === "left") { + currentHTMLNode.className = "shortest-path-left"; + } + } + if (previousNode) { + let previousHTMLNode = document.getElementById(previousNode.id); + previousHTMLNode.className = previousNode.weight === 15 ? "instantshortest-path weight" : "instantshortest-path"; + } else { + let element = document.getElementById(board.start); + element.className = "startTransparent"; + } + } + +}; + +module.exports = launchInstantAnimations; diff --git a/public/browser/animations/mazeGenerationAnimations.js b/public/browser/animations/mazeGenerationAnimations.js new file mode 100644 index 0000000..8c6919d --- /dev/null +++ b/public/browser/animations/mazeGenerationAnimations.js @@ -0,0 +1,21 @@ +function mazeGenerationAnimations(board) { + let nodes = board.wallsToAnimate.slice(0); + let speed = board.speed === "fast" ? + 0 : board.speed === "average" ? + 25 : 75; + function timeout(index) { + setTimeout(function () { + if (index === nodes.length){ + board.wallsToAnimate = []; + board.toggleButtons(); + return; + } + nodes[index].className = board.nodes[nodes[index].id].weight === 15 ? "unvisited weight" : "wall"; + timeout(index + 1); + }, speed); + } + + timeout(0); +}; + +module.exports = mazeGenerationAnimations; diff --git a/public/browser/bundle.js b/public/browser/bundle.js new file mode 100644 index 0000000..f1ad884 --- /dev/null +++ b/public/browser/bundle.js @@ -0,0 +1,3008 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o`; + for (let c = 0; c < this.width; c++) { + let newNodeId = `${r}-${c}`, newNodeClass, newNode; + if (r === Math.floor(this.height / 2) && c === Math.floor(this.width / 4)) { + newNodeClass = "start"; + this.start = `${newNodeId}`; + } else if (r === Math.floor(this.height / 2) && c === Math.floor(3 * this.width / 4)) { + newNodeClass = "target"; + this.target = `${newNodeId}`; + } else { + newNodeClass = "unvisited"; + } + newNode = new Node(newNodeId, newNodeClass); + currentArrayRow.push(newNode); + currentHTMLRow += ``; + this.nodes[`${newNodeId}`] = newNode; + } + this.boardArray.push(currentArrayRow); + tableHTML += `${currentHTMLRow}`; + } + let board = document.getElementById("board"); + board.innerHTML = tableHTML; +}; + +Board.prototype.addEventListeners = function() { + let board = this; + for (let r = 0; r < board.height; r++) { + for (let c = 0; c < board.width; c++) { + let currentId = `${r}-${c}`; + let currentNode = board.getNode(currentId); + let currentElement = document.getElementById(currentId); + currentElement.onmousedown = (e) => { + e.preventDefault(); + if (this.buttonsOn) { + board.mouseDown = true; + if (currentNode.status === "start" || currentNode.status === "target" || currentNode.status === "object") { + board.pressedNodeStatus = currentNode.status; + } else { + board.pressedNodeStatus = "normal"; + board.changeNormalNode(currentNode); + } + } + } + currentElement.onmouseup = () => { + if (this.buttonsOn) { + board.mouseDown = false; + if (board.pressedNodeStatus === "target") { + board.target = currentId; + } else if (board.pressedNodeStatus === "start") { + board.start = currentId; + } else if (board.pressedNodeStatus === "object") { + board.object = currentId; + } + board.pressedNodeStatus = "normal"; + } + } + currentElement.onmouseenter = () => { + if (this.buttonsOn) { + if (board.mouseDown && board.pressedNodeStatus !== "normal") { + board.changeSpecialNode(currentNode); + if (board.pressedNodeStatus === "target") { + board.target = currentId; + if (board.algoDone) { + board.redoAlgorithm(); + } + } else if (board.pressedNodeStatus === "start") { + board.start = currentId; + if (board.algoDone) { + board.redoAlgorithm(); + } + } else if (board.pressedNodeStatus === "object") { + board.object = currentId; + if (board.algoDone) { + board.redoAlgorithm(); + } + } + } else if (board.mouseDown) { + board.changeNormalNode(currentNode); + } + } + } + currentElement.onmouseleave = () => { + if (this.buttonsOn) { + if (board.mouseDown && board.pressedNodeStatus !== "normal") { + board.changeSpecialNode(currentNode); + } + } + } + } + } +}; + +Board.prototype.getNode = function(id) { + let coordinates = id.split("-"); + let r = parseInt(coordinates[0]); + let c = parseInt(coordinates[1]); + return this.boardArray[r][c]; +}; + +Board.prototype.changeSpecialNode = function(currentNode) { + let element = document.getElementById(currentNode.id), previousElement; + if (this.previouslySwitchedNode) previousElement = document.getElementById(this.previouslySwitchedNode.id); + if (currentNode.status !== "target" && currentNode.status !== "start" && currentNode.status !== "object") { + if (this.previouslySwitchedNode) { + this.previouslySwitchedNode.status = this.previouslyPressedNodeStatus; + previousElement.className = this.previouslySwitchedNodeWeight === 15 ? + "unvisited weight" : this.previouslyPressedNodeStatus; + this.previouslySwitchedNode.weight = this.previouslySwitchedNodeWeight === 15 ? + 15 : 0; + this.previouslySwitchedNode = null; + this.previouslySwitchedNodeWeight = currentNode.weight; + + this.previouslyPressedNodeStatus = currentNode.status; + element.className = this.pressedNodeStatus; + currentNode.status = this.pressedNodeStatus; + + currentNode.weight = 0; + } + } else if (currentNode.status !== this.pressedNodeStatus && !this.algoDone) { + this.previouslySwitchedNode.status = this.pressedNodeStatus; + previousElement.className = this.pressedNodeStatus; + } else if (currentNode.status === this.pressedNodeStatus) { + this.previouslySwitchedNode = currentNode; + element.className = this.previouslyPressedNodeStatus; + currentNode.status = this.previouslyPressedNodeStatus; + } +}; + +Board.prototype.changeNormalNode = function(currentNode) { + let element = document.getElementById(currentNode.id); + let relevantStatuses = ["start", "target", "object"]; + let unweightedAlgorithms = ["dfs", "bfs"] + if (!this.keyDown) { + if (!relevantStatuses.includes(currentNode.status)) { + element.className = currentNode.status !== "wall" ? + "wall" : "unvisited"; + currentNode.status = element.className !== "wall" ? + "unvisited" : "wall"; + currentNode.weight = 0; + } + } else if (this.keyDown === 87 && !unweightedAlgorithms.includes(this.currentAlgorithm)) { + if (!relevantStatuses.includes(currentNode.status)) { + element.className = currentNode.weight !== 15 ? + "unvisited weight" : "unvisited"; + currentNode.weight = element.className !== "unvisited weight" ? + 0 : 15; + currentNode.status = "unvisited"; + } + } +}; + +Board.prototype.drawShortestPath = function(targetNodeId, startNodeId, object) { + let currentNode; + if (this.currentAlgorithm !== "bidirectional") { + currentNode = this.nodes[this.nodes[targetNodeId].previousNode]; + if (object) { + while (currentNode.id !== startNodeId) { + this.objectShortestPathNodesToAnimate.unshift(currentNode); + currentNode = this.nodes[currentNode.previousNode]; + } + } else { + while (currentNode.id !== startNodeId) { + this.shortestPathNodesToAnimate.unshift(currentNode); + document.getElementById(currentNode.id).className = `shortest-path`; + currentNode = this.nodes[currentNode.previousNode]; + } + } + } else { + if (this.middleNode !== this.target && this.middleNode !== this.start) { + currentNode = this.nodes[this.nodes[this.middleNode].previousNode]; + secondCurrentNode = this.nodes[this.nodes[this.middleNode].otherpreviousNode]; + if (secondCurrentNode.id === this.target) { + this.nodes[this.target].direction = getDistance(this.nodes[this.middleNode], this.nodes[this.target])[2]; + } + if (this.nodes[this.middleNode].weight === 0) { + document.getElementById(this.middleNode).className = `shortest-path`; + } else { + document.getElementById(this.middleNode).className = `shortest-path weight`; + } + while (currentNode.id !== startNodeId) { + this.shortestPathNodesToAnimate.unshift(currentNode); + document.getElementById(currentNode.id).className = `shortest-path`; + currentNode = this.nodes[currentNode.previousNode]; + } + while (secondCurrentNode.id !== targetNodeId) { + this.shortestPathNodesToAnimate.unshift(secondCurrentNode); + document.getElementById(secondCurrentNode.id).className = `shortest-path`; + if (secondCurrentNode.otherpreviousNode === targetNodeId) { + if (secondCurrentNode.otherdirection === "left") { + secondCurrentNode.direction = "right"; + } else if (secondCurrentNode.otherdirection === "right") { + secondCurrentNode.direction = "left"; + } else if (secondCurrentNode.otherdirection === "up") { + secondCurrentNode.direction = "down"; + } else if (secondCurrentNode.otherdirection === "down") { + secondCurrentNode.direction = "up"; + } + this.nodes[this.target].direction = getDistance(secondCurrentNode, this.nodes[this.target])[2]; + } + secondCurrentNode = this.nodes[secondCurrentNode.otherpreviousNode] + } + } else { + document.getElementById(this.nodes[this.target].previousNode).className = `shortest-path`; + } + } +}; + +Board.prototype.addShortestPath = function(targetNodeId, startNodeId, object) { + let currentNode = this.nodes[this.nodes[targetNodeId].previousNode]; + if (object) { + while (currentNode.id !== startNodeId) { + this.objectShortestPathNodesToAnimate.unshift(currentNode); + currentNode.relatesToObject = true; + currentNode = this.nodes[currentNode.previousNode]; + } + } else { + while (currentNode.id !== startNodeId) { + this.shortestPathNodesToAnimate.unshift(currentNode); + currentNode = this.nodes[currentNode.previousNode]; + } + } +}; + +Board.prototype.drawShortestPathTimeout = function(targetNodeId, startNodeId, type, object) { + let board = this; + let currentNode; + let secondCurrentNode; + let currentNodesToAnimate; + + if (board.currentAlgorithm !== "bidirectional") { + currentNode = board.nodes[board.nodes[targetNodeId].previousNode]; + if (object) { + board.objectShortestPathNodesToAnimate.push("object"); + currentNodesToAnimate = board.objectShortestPathNodesToAnimate.concat(board.shortestPathNodesToAnimate); + } else { + currentNodesToAnimate = []; + while (currentNode.id !== startNodeId) { + currentNodesToAnimate.unshift(currentNode); + currentNode = board.nodes[currentNode.previousNode]; + } + } + } else { + if (board.middleNode !== board.target && board.middleNode !== board.start) { + currentNode = board.nodes[board.nodes[board.middleNode].previousNode]; + secondCurrentNode = board.nodes[board.nodes[board.middleNode].otherpreviousNode]; + if (secondCurrentNode.id === board.target) { + board.nodes[board.target].direction = getDistance(board.nodes[board.middleNode], board.nodes[board.target])[2]; + } + if (object) { + + } else { + currentNodesToAnimate = []; + board.nodes[board.middleNode].direction = getDistance(currentNode, board.nodes[board.middleNode])[2]; + while (currentNode.id !== startNodeId) { + currentNodesToAnimate.unshift(currentNode); + currentNode = board.nodes[currentNode.previousNode]; + } + currentNodesToAnimate.push(board.nodes[board.middleNode]); + while (secondCurrentNode.id !== targetNodeId) { + if (secondCurrentNode.otherdirection === "left") { + secondCurrentNode.direction = "right"; + } else if (secondCurrentNode.otherdirection === "right") { + secondCurrentNode.direction = "left"; + } else if (secondCurrentNode.otherdirection === "up") { + secondCurrentNode.direction = "down"; + } else if (secondCurrentNode.otherdirection === "down") { + secondCurrentNode.direction = "up"; + } + currentNodesToAnimate.push(secondCurrentNode); + if (secondCurrentNode.otherpreviousNode === targetNodeId) { + board.nodes[board.target].direction = getDistance(secondCurrentNode, board.nodes[board.target])[2]; + } + secondCurrentNode = board.nodes[secondCurrentNode.otherpreviousNode] + } + } + } else { + currentNodesToAnimate = []; + let target = board.nodes[board.target]; + currentNodesToAnimate.push(board.nodes[target.previousNode], target); + } + +} + + + timeout(0); + + function timeout(index) { + if (!currentNodesToAnimate.length) currentNodesToAnimate.push(board.nodes[board.start]); + setTimeout(function () { + if (index === 0) { + shortestPathChange(currentNodesToAnimate[index]); + } else if (index < currentNodesToAnimate.length) { + shortestPathChange(currentNodesToAnimate[index], currentNodesToAnimate[index - 1]); + } else if (index === currentNodesToAnimate.length) { + shortestPathChange(board.nodes[board.target], currentNodesToAnimate[index - 1], "isActualTarget"); + } + if (index > currentNodesToAnimate.length) { + board.toggleButtons(); + return; + } + timeout(index + 1); + }, 40) + } + + + function shortestPathChange(currentNode, previousNode, isActualTarget) { + if (currentNode === "object") { + let element = document.getElementById(board.object); + element.className = "objectTransparent"; + } else if (currentNode.id !== board.start) { + if (currentNode.id !== board.target || currentNode.id === board.target && isActualTarget) { + let currentHTMLNode = document.getElementById(currentNode.id); + if (type === "unweighted") { + currentHTMLNode.className = "shortest-path-unweighted"; + } else { + let direction; + if (currentNode.relatesToObject && !currentNode.overwriteObjectRelation && currentNode.id !== board.target) { + direction = "storedDirection"; + currentNode.overwriteObjectRelation = true; + } else { + direction = "direction"; + } + if (currentNode[direction] === "up") { + currentHTMLNode.className = "shortest-path-up"; + } else if (currentNode[direction] === "down") { + currentHTMLNode.className = "shortest-path-down"; + } else if (currentNode[direction] === "right") { + currentHTMLNode.className = "shortest-path-right"; + } else if (currentNode[direction] === "left") { + currentHTMLNode.className = "shortest-path-left"; + } else { + currentHTMLNode.className = "shortest-path"; + } + } + } + } + if (previousNode) { + if (previousNode !== "object" && previousNode.id !== board.target && previousNode.id !== board.start) { + let previousHTMLNode = document.getElementById(previousNode.id); + previousHTMLNode.className = previousNode.weight === 15 ? "shortest-path weight" : "shortest-path"; + } + } else { + let element = document.getElementById(board.start); + element.className = "startTransparent"; + } + } + + + + + +}; + +Board.prototype.createMazeOne = function(type) { + Object.keys(this.nodes).forEach(node => { + let random = Math.random(); + let currentHTMLNode = document.getElementById(node); + let relevantClassNames = ["start", "target", "object"] + let randomTwo = type === "wall" ? 0.25 : 0.35; + if (random < randomTwo && !relevantClassNames.includes(currentHTMLNode.className)) { + if (type === "wall") { + currentHTMLNode.className = "wall"; + this.nodes[node].status = "wall"; + this.nodes[node].weight = 0; + } else if (type === "weight") { + currentHTMLNode.className = "unvisited weight"; + this.nodes[node].status = "unvisited"; + this.nodes[node].weight = 15; + } + } + }); +}; + +Board.prototype.clearPath = function(clickedButton) { + if (clickedButton) { + let start = this.nodes[this.start]; + let target = this.nodes[this.target]; + let object = this.numberOfObjects ? this.nodes[this.object] : null; + start.status = "start"; + document.getElementById(start.id).className = "start"; + target.status = "target"; + document.getElementById(target.id).className = "target"; + if (object) { + object.status = "object"; + document.getElementById(object.id).className = "object"; + } + } + + document.getElementById("startButtonStart").onclick = () => { + if (!this.currentAlgorithm) { + this.currentAlgorithm = "dijkstra"; + document.getElementById("startButtonStart").innerHTML = '' + this.clearPath("clickedButton"); + this.toggleButtons(); + let success; + if (!this.numberOfObjects) { + success = weightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted"); + } else { + this.isObject = true; + success = weightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted", "object", this.currentAlgorithm, this.currentHeuristic); + } + this.algoDone = true; + + } else { + this.clearPath("clickedButton"); + this.toggleButtons(); + let weightedAlgorithms = ["dijkstra", "CLA", "greedy"]; + let unweightedAlgorithms = ["dfs", "bfs"]; + let success; + + if (this.currentAlgorithm === "bidirectional") { + if (!this.numberOfObjects) { + success = bidirectional(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic, this); + launchAnimations(this, success, "weighted"); + } else { + this.isObject = true; + } + this.algoDone = true; + } else if (this.currentAlgorithm === "astar") { + if (!this.numberOfObjects) { + success = weightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted"); + } else { + this.isObject = true; + success = weightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted", "object", this.currentAlgorithm, this.currentHeuristic); + } + this.algoDone = true; + } else if (weightedAlgorithms.includes(this.currentAlgorithm)) { + if (!this.numberOfObjects) { + success = weightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted"); + } else { + this.isObject = true; + success = weightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted", "object", this.currentAlgorithm, this.currentHeuristic); + } + this.algoDone = true; + } else if (unweightedAlgorithms.includes(this.currentAlgorithm)) { + if (!this.numberOfObjects) { + success = unweightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm); + launchAnimations(this, success, "unweighted"); + } else { + this.isObject = true; + success = unweightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm); + launchAnimations(this, success, "unweighted", "object", this.currentAlgorithm); + } + this.algoDone = true; + } + } + } + + this.algoDone = false; + Object.keys(this.nodes).forEach(id => { + let currentNode = this.nodes[id]; + currentNode.previousNode = null; + currentNode.distance = Infinity; + currentNode.totalDistance = Infinity; + currentNode.heuristicDistance = null; + currentNode.direction = null; + currentNode.storedDirection = null; + currentNode.relatesToObject = false; + currentNode.overwriteObjectRelation = false; + currentNode.otherpreviousNode = null; + currentNode.otherdistance = Infinity; + currentNode.otherdirection = null; + let currentHTMLNode = document.getElementById(id); + let relevantStatuses = ["wall", "start", "target", "object"]; + if ((!relevantStatuses.includes(currentNode.status) || currentHTMLNode.className === "visitedobject") && currentNode.weight !== 15) { + currentNode.status = "unvisited"; + currentHTMLNode.className = "unvisited"; + } else if (currentNode.weight === 15) { + currentNode.status = "unvisited"; + currentHTMLNode.className = "unvisited weight"; + } + }); +}; + +Board.prototype.clearWalls = function() { + this.clearPath("clickedButton"); + Object.keys(this.nodes).forEach(id => { + let currentNode = this.nodes[id]; + let currentHTMLNode = document.getElementById(id); + if (currentNode.status === "wall" || currentNode.weight === 15) { + currentNode.status = "unvisited"; + currentNode.weight = 0; + currentHTMLNode.className = "unvisited"; + } + }); +} + +Board.prototype.clearWeights = function() { + Object.keys(this.nodes).forEach(id => { + let currentNode = this.nodes[id]; + let currentHTMLNode = document.getElementById(id); + if (currentNode.weight === 15) { + currentNode.status = "unvisited"; + currentNode.weight = 0; + currentHTMLNode.className = "unvisited"; + } + }); +} + +Board.prototype.clearNodeStatuses = function() { + Object.keys(this.nodes).forEach(id => { + let currentNode = this.nodes[id]; + currentNode.previousNode = null; + currentNode.distance = Infinity; + currentNode.totalDistance = Infinity; + currentNode.heuristicDistance = null; + currentNode.storedDirection = currentNode.direction; + currentNode.direction = null; + let relevantStatuses = ["wall", "start", "target", "object"]; + if (!relevantStatuses.includes(currentNode.status)) { + currentNode.status = "unvisited"; + } + }) +}; + +Board.prototype.instantAlgorithm = function() { + let weightedAlgorithms = ["dijkstra", "CLA", "greedy"]; + let unweightedAlgorithms = ["dfs", "bfs"]; + let success; + if (this.currentAlgorithm === "bidirectional") { + if (!this.numberOfObjects) { + success = bidirectional(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic, this); + launchInstantAnimations(this, success, "weighted"); + } else { + this.isObject = true; + } + this.algoDone = true; + } else if (this.currentAlgorithm === "astar") { + if (!this.numberOfObjects) { + success = weightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchInstantAnimations(this, success, "weighted"); + } else { + this.isObject = true; + success = weightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchInstantAnimations(this, success, "weighted", "object", this.currentAlgorithm); + } + this.algoDone = true; + } + if (weightedAlgorithms.includes(this.currentAlgorithm)) { + if (!this.numberOfObjects) { + success = weightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchInstantAnimations(this, success, "weighted"); + } else { + this.isObject = true; + success = weightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchInstantAnimations(this, success, "weighted", "object", this.currentAlgorithm, this.currentHeuristic); + } + this.algoDone = true; + } else if (unweightedAlgorithms.includes(this.currentAlgorithm)) { + if (!this.numberOfObjects) { + success = unweightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm); + launchInstantAnimations(this, success, "unweighted"); + } else { + this.isObject = true; + success = unweightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm); + launchInstantAnimations(this, success, "unweighted", "object", this.currentAlgorithm); + } + this.algoDone = true; + } +}; + +Board.prototype.redoAlgorithm = function() { + this.clearPath(); + this.instantAlgorithm(); +}; + +Board.prototype.reset = function(objectNotTransparent) { + this.nodes[this.start].status = "start"; + document.getElementById(this.start).className = "startTransparent"; + this.nodes[this.target].status = "target"; + if (this.object) { + this.nodes[this.object].status = "object"; + if (objectNotTransparent) { + document.getElementById(this.object).className = "visitedObjectNode"; + } else { + document.getElementById(this.object).className = "objectTransparent"; + } + } +}; + +Board.prototype.resetHTMLNodes = function() { + let start = document.getElementById(this.start); + let target = document.getElementById(this.target); + start.className = "start"; + target.className = "target"; +}; + +Board.prototype.changeStartNodeImages = function() { + let unweighted = ["bfs", "dfs"]; + let strikethrough = ["bfs", "dfs"]; + let guaranteed = ["dijkstra", "astar"]; + let name = ""; + if (this.currentAlgorithm === "bfs") { + name = "Breadth-first Search"; + } else if (this.currentAlgorithm === "dfs") { + name = "Depth-first Search"; + } else if (this.currentAlgorithm === "dijkstra") { + name = "Dijkstra's Algorithm"; + } else if (this.currentAlgorithm === "astar") { + name = "A* Search"; + } else if (this.currentAlgorithm === "greedy") { + name = "Greedy Best-first Search"; + } else if (this.currentAlgorithm === "CLA" && this.currentHeuristic !== "extraPoweredManhattanDistance") { + name = "Swarm Algorithm"; + } else if (this.currentAlgorithm === "CLA" && this.currentHeuristic === "extraPoweredManhattanDistance") { + name = "Convergent Swarm Algorithm"; + } else if (this.currentAlgorithm === "bidirectional") { + name = "Bidirectional Swarm Algorithm"; + } + if (unweighted.includes(this.currentAlgorithm)) { + if (this.currentAlgorithm === "dfs") { + document.getElementById("algorithmDescriptor").innerHTML = `${name} is unweighted and does not guarantee the shortest path!`; + } else { + document.getElementById("algorithmDescriptor").innerHTML = `${name} is unweighted and guarantees the shortest path!`; + } + for (let i = 0; i < 14; i++) { + let j = i.toString(); + + } + } else { + if (this.currentAlgorithm === "greedy" || this.currentAlgorithm === "CLA") { + document.getElementById("algorithmDescriptor").innerHTML = `${name} is weighted and does not guarantee the shortest path!`; + } + for (let i = 0; i < 14; i++) { + let j = i.toString(); + } + } + if (this.currentAlgorithm === "bidirectional") { + + document.getElementById("algorithmDescriptor").innerHTML = `${name} is weighted and does not guarantee the shortest path!`; + document.getElementById("startButtonAddObject").className = "navbar-inverse navbar-nav disabledA"; + } else { + document.getElementById("startButtonAddObject").className = "navbar-inverse navbar-nav"; + } + if (guaranteed.includes(this.currentAlgorithm)) { + document.getElementById("algorithmDescriptor").innerHTML = `${name} is weighted and guarantees the shortest path!`; + } +}; + +let counter = 1; +Board.prototype.toggleTutorialButtons = function() { + + document.getElementById("tutorial").style.display = "none"; + this.toggleButtons(); + + + if (document.getElementById("nextButton")) { + document.getElementById("nextButton").onclick = () => { + if (counter < 9) counter++; + nextPreviousClick(); + this.toggleTutorialButtons(); + } + } + + + let board = this; + function nextPreviousClick() { + if (counter === 1) { + document.getElementById("tutorial").innerHTML = `

Welcome to Pathfinding Visualizer!

This short tutorial will walk you through all of the features of this application.

If you want to dive right in, feel free to press the "Skip Tutorial" button below. Otherwise, press "Next"!

1/9
` + } else if (counter === 2) { + document.getElementById("tutorial").innerHTML = `

What is a pathfinding algorithm?

At its core, a pathfinding algorithm seeks to find the shortest path between two points. This application visualizes various pathfinding algorithms in action, and more!

All of the algorithms on this application are adapted for a 2D grid, where 90 degree turns have a "cost" of 1 and movements from a node to another have a "cost" of 1.

${counter}/9
` + } else if (counter === 3) { + document.getElementById("tutorial").innerHTML = `

Picking an algorithm

Choose an algorithm from the "Algorithms" drop-down menu.

Note that some algorithms are unweighted, while others are weighted. Unweighted algorithms do not take turns or weight nodes into account, whereas weighted ones do. Additionally, not all algorithms guarantee the shortest path.

${counter}/9
` + } else if (counter === 4) { + document.getElementById("tutorial").innerHTML = `

Meet the algorithms

Not all algorithms are created equal.
${counter}/9
` + } else if (counter === 5) { + document.getElementById("tutorial").innerHTML = `

Adding walls and weights

Click on the grid to add a wall. Click on the grid while pressing W to add a weight. Generate mazes and patterns from the "Mazes & Patterns" drop-down menu.

Walls are impenetrable, meaning that a path cannot cross through them. Weights, however, are not impassable. They are simply more "costly" to move through. In this application, moving through a weight node has a "cost" of 15.

${counter}/9
` + } else if (counter === 6) { + document.getElementById("tutorial").innerHTML = `

Adding a bomb

Click the "Add Bomb" button.

Adding a bomb will change the course of the chosen algorithm. In other words, the algorithm will first look for the bomb (in an effort to diffuse it) and will then look for the target node. Note that the Bidirectional Swarm Algorithm does not support adding a bomb.

${counter}/9
` + } else if (counter === 7) { + document.getElementById("tutorial").innerHTML = `

Dragging nodes

Click and drag the start, bomb, and target nodes to move them.

Note that you can drag nodes even after an algorithm has finished running. This will allow you to instantly see different paths.

${counter}/9
` + } else if (counter === 8) { + document.getElementById("tutorial").innerHTML = `

Visualizing and more

Use the navbar buttons to visualize algorithms and to do other stuff!

You can clear the current path, clear walls and weights, clear the entire board, and adjust the visualization speed, all from the navbar. If you want to access this tutorial again, click on "Pathfinding Visualizer" in the top left corner of your screen.

${counter}/9
` + } else if (counter === 9) { + document.getElementById("tutorial").innerHTML = `

Enjoy!

I hope you have just as much fun playing around with this visualization tool as I had building it!

If you want to see the source code for this application, check out my github.

${counter}/9
` + document.getElementById("finishButton").onclick = () => { + document.getElementById("tutorial").style.display = "none"; + board.toggleButtons(); + } + } + } + +}; + +Board.prototype.toggleButtons = function() { + document.getElementById("refreshButton").onclick = () => { + window.location.reload(true); + } + + if (!this.buttonsOn) { + this.buttonsOn = true; + + document.getElementById("startButtonStart").onclick = () => { + if (!this.currentAlgorithm) { + this.currentAlgorithm = "dijkstra"; + document.getElementById("startButtonStart").innerHTML = '' + this.clearPath("clickedButton"); + this.toggleButtons(); + let success; + if (!this.numberOfObjects) { + success = weightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted"); + } else { + this.isObject = true; + success = weightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted", "object", this.currentAlgorithm, this.currentHeuristic); + } + this.algoDone = true; + } else { + this.clearPath("clickedButton"); + this.toggleButtons(); + let weightedAlgorithms = ["dijkstra", "CLA", "CLA", "greedy"]; + let unweightedAlgorithms = ["dfs", "bfs"]; + let success; + if (this.currentAlgorithm === "bidirectional") { + if (!this.numberOfObjects) { + success = bidirectional(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic, this); + launchAnimations(this, success, "weighted"); + } else { + this.isObject = true; + success = bidirectional(this.nodes, this.start, this.object, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic, this); + launchAnimations(this, success, "weighted"); + } + this.algoDone = true; + } else if (this.currentAlgorithm === "astar") { + if (!this.numberOfObjects) { + success = weightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted"); + } else { + this.isObject = true; + success = weightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted", "object", this.currentAlgorithm); + } + this.algoDone = true; + } else if (weightedAlgorithms.includes(this.currentAlgorithm)) { + if (!this.numberOfObjects) { + success = weightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted"); + } else { + this.isObject = true; + success = weightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm, this.currentHeuristic); + launchAnimations(this, success, "weighted", "object", this.currentAlgorithm, this.currentHeuristic); + } + this.algoDone = true; + } else if (unweightedAlgorithms.includes(this.currentAlgorithm)) { + if (!this.numberOfObjects) { + success = unweightedSearchAlgorithm(this.nodes, this.start, this.target, this.nodesToAnimate, this.boardArray, this.currentAlgorithm); + launchAnimations(this, success, "unweighted"); + } else { + this.isObject = true; + success = unweightedSearchAlgorithm(this.nodes, this.start, this.object, this.objectNodesToAnimate, this.boardArray, this.currentAlgorithm); + launchAnimations(this, success, "unweighted", "object", this.currentAlgorithm); + } + this.algoDone = true; + } + } + } + + document.getElementById("adjustFast").onclick = () => { + this.speed = "fast"; + document.getElementById("adjustSpeed").innerHTML = 'Speed: Fast'; + } + + document.getElementById("adjustAverage").onclick = () => { + this.speed = "average"; + document.getElementById("adjustSpeed").innerHTML = 'Speed: Average'; + } + + document.getElementById("adjustSlow").onclick = () => { + this.speed = "slow"; + document.getElementById("adjustSpeed").innerHTML = 'Speed: Slow'; + } + + document.getElementById("startStairDemonstration").onclick = () => { + this.clearWalls(); + this.clearPath("clickedButton"); + this.toggleButtons(); + stairDemonstration(this); + mazeGenerationAnimations(this); + } + + + document.getElementById("startButtonBidirectional").onclick = () => { + document.getElementById("startButtonStart").innerHTML = '' + this.currentAlgorithm = "bidirectional"; + this.currentHeuristic = "manhattanDistance"; + if (this.numberOfObjects) { + let objectNodeId = this.object; + document.getElementById("startButtonAddObject").innerHTML = 'Add a Bomb'; + document.getElementById(objectNodeId).className = "unvisited"; + this.object = null; + this.numberOfObjects = 0; + this.nodes[objectNodeId].status = "unvisited"; + this.isObject = false; + } + this.clearPath("clickedButton"); + this.changeStartNodeImages(); + } + + document.getElementById("startButtonDijkstra").onclick = () => { + document.getElementById("startButtonStart").innerHTML = '' + this.currentAlgorithm = "dijkstra"; + this.changeStartNodeImages(); + } + document.getElementById("startButtonAStar3").onclick = () => { + document.getElementById("startButtonStart").innerHTML = '' + this.currentAlgorithm = "CLA"; + this.currentHeuristic = "extraPoweredManhattanDistance" + this.changeStartNodeImages(); + } + document.getElementById("startButtonAStar2").onclick = () => { + document.getElementById("startButtonStart").innerHTML = '' + this.currentAlgorithm = "astar"; + this.currentHeuristic = "poweredManhattanDistance" + this.changeStartNodeImages(); + } + document.getElementById("startButtonAStar").onclick = () => { + document.getElementById("startButtonStart").innerHTML = '' + this.currentAlgorithm = "CLA"; + this.currentHeuristic = "manhattanDistance" + this.changeStartNodeImages(); + } + + + + document.getElementById("startButtonGreedy").onclick = () => { + document.getElementById("startButtonStart").innerHTML = '' + this.currentAlgorithm = "greedy"; + this.changeStartNodeImages(); + } + + document.getElementById("startButtonBFS").onclick = () => { + document.getElementById("startButtonStart").innerHTML = '' + this.currentAlgorithm = "bfs"; + this.clearWeights(); + this.changeStartNodeImages(); + } + + document.getElementById("startButtonDFS").onclick = () => { + document.getElementById("startButtonStart").innerHTML = '' + this.currentAlgorithm = "dfs"; + this.clearWeights(); + this.changeStartNodeImages(); + } + + document.getElementById("startButtonCreateMazeOne").onclick = () => { + this.clearWalls(); + this.clearPath("clickedButton"); + this.createMazeOne("wall"); + } + + document.getElementById("startButtonCreateMazeTwo").onclick = () => { + this.clearWalls(); + this.clearPath("clickedButton"); + this.toggleButtons(); + recursiveDivisionMaze(this, 2, this.height - 3, 2, this.width - 3, "horizontal", false, "wall"); + mazeGenerationAnimations(this); + } + + document.getElementById("startButtonCreateMazeWeights").onclick = () => { + this.clearWalls(); + this.clearPath("clickedButton"); + this.createMazeOne("weight"); + } + + document.getElementById("startButtonClearBoard").onclick = () => { + document.getElementById("startButtonAddObject").innerHTML = ''; + + + + let navbarHeight = document.getElementById("navbarDiv").clientHeight; + let textHeight = document.getElementById("mainText").clientHeight + document.getElementById("algorithmDescriptor").clientHeight; + let height = Math.floor((document.documentElement.clientHeight - navbarHeight - textHeight) / 28); + let width = Math.floor(document.documentElement.clientWidth / 25); + let start = Math.floor(height / 2).toString() + "-" + Math.floor(width / 4).toString(); + let target = Math.floor(height / 2).toString() + "-" + Math.floor(3 * width / 4).toString(); + + Object.keys(this.nodes).forEach(id => { + let currentNode = this.nodes[id]; + let currentHTMLNode = document.getElementById(id); + if (id === start) { + currentHTMLNode.className = "start"; + currentNode.status = "start"; + } else if (id === target) { + currentHTMLNode.className = "target"; + currentNode.status = "target" + } else { + currentHTMLNode.className = "unvisited"; + currentNode.status = "unvisited"; + } + currentNode.previousNode = null; + currentNode.path = null; + currentNode.direction = null; + currentNode.storedDirection = null; + currentNode.distance = Infinity; + currentNode.totalDistance = Infinity; + currentNode.heuristicDistance = null; + currentNode.weight = 0; + currentNode.relatesToObject = false; + currentNode.overwriteObjectRelation = false; + + }); + this.start = start; + this.target = target; + this.object = null; + this.nodesToAnimate = []; + this.objectNodesToAnimate = []; + this.shortestPathNodesToAnimate = []; + this.objectShortestPathNodesToAnimate = []; + this.wallsToAnimate = []; + this.mouseDown = false; + this.pressedNodeStatus = "normal"; + this.previouslyPressedNodeStatus = null; + this.previouslySwitchedNode = null; + this.previouslySwitchedNodeWeight = 0; + this.keyDown = false; + this.algoDone = false; + this.numberOfObjects = 0; + this.isObject = false; + } + + document.getElementById("startButtonClearWalls").onclick = () => { + this.clearWalls(); + } + + document.getElementById("startButtonClearPath").onclick = () => { + this.clearPath("clickedButton"); + } + + document.getElementById("startButtonCreateMazeThree").onclick = () => { + this.clearWalls(); + this.clearPath("clickedButton"); + this.toggleButtons(); + otherMaze(this, 2, this.height - 3, 2, this.width - 3, "vertical", false); + mazeGenerationAnimations(this); + } + + document.getElementById("startButtonCreateMazeFour").onclick = () => { + this.clearWalls(); + this.clearPath("clickedButton"); + this.toggleButtons(); + otherOtherMaze(this, 2, this.height - 3, 2, this.width - 3, "horizontal", false); + mazeGenerationAnimations(this); + } + + document.getElementById("startButtonAddObject").onclick = () => { + let innerHTML = document.getElementById("startButtonAddObject").innerHTML; + if (this.currentAlgorithm !== "bidirectional") { + if (innerHTML.includes("Add")) { + let r = Math.floor(this.height / 2); + let c = Math.floor(2 * this.width / 4); + let objectNodeId = `${r}-${c}`; + if (this.target === objectNodeId || this.start === objectNodeId || this.numberOfObjects === 1) { + console.log("Failure to place object."); + } else { + document.getElementById("startButtonAddObject").innerHTML = 'Remove Bomb'; + this.clearPath("clickedButton"); + this.object = objectNodeId; + this.numberOfObjects = 1; + this.nodes[objectNodeId].status = "object"; + document.getElementById(objectNodeId).className = "object"; + } + } else { + let objectNodeId = this.object; + document.getElementById("startButtonAddObject").innerHTML = 'Add Bomb'; + document.getElementById(objectNodeId).className = "unvisited"; + this.object = null; + this.numberOfObjects = 0; + this.nodes[objectNodeId].status = "unvisited"; + this.isObject = false; + this.clearPath("clickedButton"); + } + } + + } + + document.getElementById("startButtonClearPath").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonClearWalls").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonClearBoard").className = "navbar-inverse navbar-nav"; + if (this.currentAlgorithm !== "bidirectional") { + document.getElementById("startButtonAddObject").className = "navbar-inverse navbar-nav"; + } + document.getElementById("startButtonCreateMazeOne").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonCreateMazeTwo").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonCreateMazeThree").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonCreateMazeFour").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonCreateMazeWeights").className = "navbar-inverse navbar-nav"; + document.getElementById("startStairDemonstration").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonDFS").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonAStar").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonAStar2").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonAStar3").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonBFS").className = "navbar-inverse navbar-nav"; + document.getElementById("startButtonDijkstra").className = "navbar-inverse navbar-nav"; + document.getElementById("adjustFast").className = "navbar-inverse navbar-nav"; + document.getElementById("adjustAverage").className = "navbar-inverse navbar-nav"; + document.getElementById("adjustSlow").className = "navbar-inverse navbar-nav"; + document.getElementById("actualStartButton").style.backgroundColor = ""; + + } else { + this.buttonsOn = false; + document.getElementById("startButtonDFS").onclick = null; + document.getElementById("startButtonBFS").onclick = null; + document.getElementById("startButtonDijkstra").onclick = null; + document.getElementById("startButtonAddObject").onclick = null; + document.getElementById("startButtonAStar").onclick = null; + document.getElementById("startButtonAStar2").onclick = null; + document.getElementById("startButtonAStar3").onclick = null; + + document.getElementById("startButtonCreateMazeOne").onclick = null; + document.getElementById("startButtonCreateMazeTwo").onclick = null; + document.getElementById("startButtonCreateMazeThree").onclick = null; + document.getElementById("startButtonCreateMazeFour").onclick = null; + document.getElementById("startButtonCreateMazeWeights").onclick = null; + document.getElementById("startStairDemonstration").onclick = null; + document.getElementById("startButtonClearPath").onclick = null; + document.getElementById("startButtonClearWalls").onclick = null; + document.getElementById("startButtonClearBoard").onclick = null; + document.getElementById("startButtonStart").onclick = null; + document.getElementById("adjustFast").onclick = null; + document.getElementById("adjustAverage").onclick = null; + document.getElementById("adjustSlow").onclick = null; + + document.getElementById("startButtonAStar").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonAStar2").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonAStar3").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("adjustFast").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("adjustAverage").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("adjustSlow").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonClearPath").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonClearWalls").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonClearBoard").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonAddObject").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonCreateMazeOne").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonCreateMazeTwo").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonCreateMazeThree").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonCreateMazeFour").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonCreateMazeWeights").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startStairDemonstration").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonDFS").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonBFS").className = "navbar-inverse navbar-nav disabledA"; + document.getElementById("startButtonDijkstra").className = "navbar-inverse navbar-nav disabledA"; + + document.getElementById("actualStartButton").style.backgroundColor = "rgb(185, 15, 15)"; + } + + +} + +let navbarHeight = $("#navbarDiv").height(); +let textHeight = $("#mainText").height() + $("#algorithmDescriptor").height(); +let height = Math.floor(($(document).height() - navbarHeight - textHeight) / 28); +let width = Math.floor($(document).width() / 25); +let newBoard = new Board(height, width) +newBoard.initialise(); + +window.onkeydown = (e) => { + newBoard.keyDown = e.keyCode; +} + +window.onkeyup = (e) => { + newBoard.keyDown = false; +} + +},{"./animations/launchAnimations":1,"./animations/launchInstantAnimations":2,"./animations/mazeGenerationAnimations":3,"./getDistance":5,"./mazeAlgorithms/otherMaze":6,"./mazeAlgorithms/otherOtherMaze":7,"./mazeAlgorithms/recursiveDivisionMaze":8,"./mazeAlgorithms/simpleDemonstration":9,"./mazeAlgorithms/stairDemonstration":10,"./mazeAlgorithms/weightsDemonstration":11,"./node":12,"./pathfindingAlgorithms/astar":13,"./pathfindingAlgorithms/bidirectional":14,"./pathfindingAlgorithms/unweightedSearchAlgorithm":15,"./pathfindingAlgorithms/weightedSearchAlgorithm":16}],5:[function(require,module,exports){ +function getDistance(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1) { + if (nodeOne.direction === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.direction === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.direction === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.direction === "down") { + return [3, ["r", "r", "f"], "up"]; + } + } else if (x2 > x1) { + if (nodeOne.direction === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.direction === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.direction === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.direction === "down") { + return [1, ["f"], "down"]; + } + } + if (y2 < y1) { + if (nodeOne.direction === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.direction === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.direction === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.direction === "down") { + return [2, ["r", "f"], "left"]; + } + } else if (y2 > y1) { + if (nodeOne.direction === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.direction === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.direction === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.direction === "down") { + return [2, ["l", "f"], "right"]; + } + } +} + +module.exports = getDistance; + +},{}],6:[function(require,module,exports){ +function recursiveDivisionMaze(board, rowStart, rowEnd, colStart, colEnd, orientation, surroundingWalls) { + if (rowEnd < rowStart || colEnd < colStart) { + return; + } + if (!surroundingWalls) { + let relevantIds = [board.start, board.target]; + if (board.object) relevantIds.push(board.object); + Object.keys(board.nodes).forEach(node => { + if (!relevantIds.includes(node)) { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === 0 || c === 0 || r === board.height - 1 || c === board.width - 1) { + let currentHTMLNode = document.getElementById(node); + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + surroundingWalls = true; + } + if (orientation === "horizontal") { + let possibleRows = []; + for (let number = rowStart; number <= rowEnd; number += 2) { + possibleRows.push(number); + } + let possibleCols = []; + for (let number = colStart - 1; number <= colEnd + 1; number += 2) { + possibleCols.push(number); + } + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let currentRow = possibleRows[randomRowIndex]; + let colRandom = possibleCols[randomColIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === currentRow && c !== colRandom && c >= colStart - 1 && c <= colEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + if (currentRow - 2 - rowStart > colEnd - colStart) { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, orientation, surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, "vertical", surroundingWalls); + } + if (rowEnd - (currentRow + 2) > colEnd - colStart) { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, "vertical", surroundingWalls); + } else { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, "vertical", surroundingWalls); + } + } else { + let possibleCols = []; + for (let number = colStart; number <= colEnd; number += 2) { + possibleCols.push(number); + } + let possibleRows = []; + for (let number = rowStart - 1; number <= rowEnd + 1; number += 2) { + possibleRows.push(number); + } + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let currentCol = possibleCols[randomColIndex]; + let rowRandom = possibleRows[randomRowIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (c === currentCol && r !== rowRandom && r >= rowStart - 1 && r <= rowEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + if (rowEnd - rowStart > currentCol - 2 - colStart) { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, "vertical", surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, orientation, surroundingWalls); + } + if (rowEnd - rowStart > colEnd - (currentCol + 2)) { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, "horizontal", surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, orientation, surroundingWalls); + } + } +}; + +module.exports = recursiveDivisionMaze; + +},{}],7:[function(require,module,exports){ +function recursiveDivisionMaze(board, rowStart, rowEnd, colStart, colEnd, orientation, surroundingWalls) { + if (rowEnd < rowStart || colEnd < colStart) { + return; + } + if (!surroundingWalls) { + let relevantIds = [board.start, board.target]; + if (board.object) relevantIds.push(board.object); + Object.keys(board.nodes).forEach(node => { + if (!relevantIds.includes(node)) { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === 0 || c === 0 || r === board.height - 1 || c === board.width - 1) { + let currentHTMLNode = document.getElementById(node); + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + surroundingWalls = true; + } + if (orientation === "horizontal") { + let possibleRows = []; + for (let number = rowStart; number <= rowEnd; number += 2) { + possibleRows.push(number); + } + let possibleCols = []; + for (let number = colStart - 1; number <= colEnd + 1; number += 2) { + possibleCols.push(number); + } + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let currentRow = possibleRows[randomRowIndex]; + let colRandom = possibleCols[randomColIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === currentRow && c !== colRandom && c >= colStart - 1 && c <= colEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + if (currentRow - 2 - rowStart > colEnd - colStart) { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, orientation, surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, "horizontal", surroundingWalls); + } + if (rowEnd - (currentRow + 2) > colEnd - colStart) { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, orientation, surroundingWalls); + } else { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, "vertical", surroundingWalls); + } + } else { + let possibleCols = []; + for (let number = colStart; number <= colEnd; number += 2) { + possibleCols.push(number); + } + let possibleRows = []; + for (let number = rowStart - 1; number <= rowEnd + 1; number += 2) { + possibleRows.push(number); + } + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let currentCol = possibleCols[randomColIndex]; + let rowRandom = possibleRows[randomRowIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (c === currentCol && r !== rowRandom && r >= rowStart - 1 && r <= rowEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + if (rowEnd - rowStart > currentCol - 2 - colStart) { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, "horizontal", surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, "horizontal", surroundingWalls); + } + if (rowEnd - rowStart > colEnd - (currentCol + 2)) { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, "horizontal", surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, orientation, surroundingWalls); + } + } +}; + +module.exports = recursiveDivisionMaze; + +},{}],8:[function(require,module,exports){ +function recursiveDivisionMaze(board, rowStart, rowEnd, colStart, colEnd, orientation, surroundingWalls, type) { + if (rowEnd < rowStart || colEnd < colStart) { + return; + } + if (!surroundingWalls) { + let relevantIds = [board.start, board.target]; + if (board.object) relevantIds.push(board.object); + Object.keys(board.nodes).forEach(node => { + if (!relevantIds.includes(node)) { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === 0 || c === 0 || r === board.height - 1 || c === board.width - 1) { + let currentHTMLNode = document.getElementById(node); + board.wallsToAnimate.push(currentHTMLNode); + if (type === "wall") { + board.nodes[node].status = "wall"; + board.nodes[node].weight = 0; + } else if (type === "weight") { + board.nodes[node].status = "unvisited"; + board.nodes[node].weight = 15; + } + } + } + }); + surroundingWalls = true; + } + if (orientation === "horizontal") { + let possibleRows = []; + for (let number = rowStart; number <= rowEnd; number += 2) { + possibleRows.push(number); + } + let possibleCols = []; + for (let number = colStart - 1; number <= colEnd + 1; number += 2) { + possibleCols.push(number); + } + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let currentRow = possibleRows[randomRowIndex]; + let colRandom = possibleCols[randomColIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === currentRow && c !== colRandom && c >= colStart - 1 && c <= colEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + if (type === "wall") { + board.nodes[node].status = "wall"; + board.nodes[node].weight = 0; + } else if (type === "weight") { + board.nodes[node].status = "unvisited"; + board.nodes[node].weight = 15; + } } + } + }); + if (currentRow - 2 - rowStart > colEnd - colStart) { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, orientation, surroundingWalls, type); + } else { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, "vertical", surroundingWalls, type); + } + if (rowEnd - (currentRow + 2) > colEnd - colStart) { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, orientation, surroundingWalls, type); + } else { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, "vertical", surroundingWalls, type); + } + } else { + let possibleCols = []; + for (let number = colStart; number <= colEnd; number += 2) { + possibleCols.push(number); + } + let possibleRows = []; + for (let number = rowStart - 1; number <= rowEnd + 1; number += 2) { + possibleRows.push(number); + } + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let currentCol = possibleCols[randomColIndex]; + let rowRandom = possibleRows[randomRowIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (c === currentCol && r !== rowRandom && r >= rowStart - 1 && r <= rowEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + if (type === "wall") { + board.nodes[node].status = "wall"; + board.nodes[node].weight = 0; + } else if (type === "weight") { + board.nodes[node].status = "unvisited"; + board.nodes[node].weight = 15; + } } + } + }); + if (rowEnd - rowStart > currentCol - 2 - colStart) { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, "horizontal", surroundingWalls, type); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, orientation, surroundingWalls, type); + } + if (rowEnd - rowStart > colEnd - (currentCol + 2)) { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, "horizontal", surroundingWalls, type); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, orientation, surroundingWalls, type); + } + } +}; + +module.exports = recursiveDivisionMaze; + +},{}],9:[function(require,module,exports){ +function simpleDemonstration(board) { + let currentIdY = board.width - 10; + for (let counter = 0; counter < 7; counter++) { + let currentIdXOne = Math.floor(board.height / 2) - counter; + let currentIdXTwo = Math.floor(board.height / 2) + counter; + let currentIdOne = `${currentIdXOne}-${currentIdY}`; + let currentIdTwo = `${currentIdXTwo}-${currentIdY}`; + let currentElementOne = document.getElementById(currentIdOne); + let currentElementTwo = document.getElementById(currentIdTwo); + board.wallsToAnimate.push(currentElementOne); + board.wallsToAnimate.push(currentElementTwo); + let currentNodeOne = board.nodes[currentIdOne]; + let currentNodeTwo = board.nodes[currentIdTwo]; + currentNodeOne.status = "wall"; + currentNodeOne.weight = 0; + currentNodeTwo.status = "wall"; + currentNodeTwo.weight = 0; + } +} + +module.exports = simpleDemonstration; + +},{}],10:[function(require,module,exports){ +function stairDemonstration(board) { + let currentIdX = board.height - 1; + let currentIdY = 0; + let relevantStatuses = ["start", "target", "object"]; + while (currentIdX > 0 && currentIdY < board.width) { + let currentId = `${currentIdX}-${currentIdY}`; + let currentNode = board.nodes[currentId]; + let currentHTMLNode = document.getElementById(currentId); + if (!relevantStatuses.includes(currentNode.status)) { + currentNode.status = "wall"; + board.wallsToAnimate.push(currentHTMLNode); + } + currentIdX--; + currentIdY++; + } + while (currentIdX < board.height - 2 && currentIdY < board.width) { + let currentId = `${currentIdX}-${currentIdY}`; + let currentNode = board.nodes[currentId]; + let currentHTMLNode = document.getElementById(currentId); + if (!relevantStatuses.includes(currentNode.status)) { + currentNode.status = "wall"; + board.wallsToAnimate.push(currentHTMLNode); + } + currentIdX++; + currentIdY++; + } + while (currentIdX > 0 && currentIdY < board.width - 1) { + let currentId = `${currentIdX}-${currentIdY}`; + let currentNode = board.nodes[currentId]; + let currentHTMLNode = document.getElementById(currentId); + if (!relevantStatuses.includes(currentNode.status)) { + currentNode.status = "wall"; + board.wallsToAnimate.push(currentHTMLNode); + } + currentIdX--; + currentIdY++; + } +} + +module.exports = stairDemonstration; + +},{}],11:[function(require,module,exports){ +function weightsDemonstration(board) { + let currentIdX = board.height - 1; + let currentIdY = 35; + while (currentIdX > 5) { + let currentId = `${currentIdX}-${currentIdY}`; + let currentElement = document.getElementById(currentId); + board.wallsToAnimate.push(currentElement); + let currentNode = board.nodes[currentId]; + currentNode.status = "wall"; + currentNode.weight = 0; + currentIdX--; + } + for (let currentIdX = board.height - 2; currentIdX > board.height - 11; currentIdX--) { + for (let currentIdY = 1; currentIdY < 35; currentIdY++) { + let currentId = `${currentIdX}-${currentIdY}`; + let currentElement = document.getElementById(currentId); + board.wallsToAnimate.push(currentElement); + let currentNode = board.nodes[currentId]; + if (currentIdX === board.height - 2 && currentIdY < 35 && currentIdY > 26) { + currentNode.status = "wall"; + currentNode.weight = 0; + } else { + currentNode.status = "unvisited"; + currentNode.weight = 15; + } + } + } +} + +module.exports = weightsDemonstration; + +},{}],12:[function(require,module,exports){ +function Node(id, status) { + this.id = id; + this.status = status; + this.previousNode = null; + this.path = null; + this.direction = null; + this.storedDirection = null; + this.distance = Infinity; + this.totalDistance = Infinity; + this.heuristicDistance = null; + this.weight = 0; + this.relatesToObject = false; + this.overwriteObjectRelation = false; + + this.otherid = id; + this.otherstatus = status; + this.otherpreviousNode = null; + this.otherpath = null; + this.otherdirection = null; + this.otherstoredDirection = null; + this.otherdistance = Infinity; + this.otherweight = 0; + this.otherrelatesToObject = false; + this.otheroverwriteObjectRelation = false; +} + +module.exports = Node; + +},{}],13:[function(require,module,exports){ +function astar(nodes, start, target, nodesToAnimate, boardArray, name, heuristic) { + if (!start || !target || start === target) { + return false; + } + nodes[start].distance = 0; + nodes[start].totalDistance = 0; + nodes[start].direction = "up"; + let unvisitedNodes = Object.keys(nodes); + while (unvisitedNodes.length) { + let currentNode = closestNode(nodes, unvisitedNodes); + while (currentNode.status === "wall" && unvisitedNodes.length) { + currentNode = closestNode(nodes, unvisitedNodes) + } + if (currentNode.distance === Infinity) return false; + nodesToAnimate.push(currentNode); + currentNode.status = "visited"; + if (currentNode.id === target) { + return "success!"; + } + updateNeighbors(nodes, currentNode, boardArray, target, name, start, heuristic); + } +} + +function closestNode(nodes, unvisitedNodes) { + let currentClosest, index; + for (let i = 0; i < unvisitedNodes.length; i++) { + if (!currentClosest || currentClosest.totalDistance > nodes[unvisitedNodes[i]].totalDistance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } else if (currentClosest.totalDistance === nodes[unvisitedNodes[i]].totalDistance) { + if (currentClosest.heuristicDistance > nodes[unvisitedNodes[i]].heuristicDistance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } + } + } + unvisitedNodes.splice(index, 1); + return currentClosest; +} + +function updateNeighbors(nodes, node, boardArray, target, name, start, heuristic) { + let neighbors = getNeighbors(node.id, nodes, boardArray); + for (let neighbor of neighbors) { + if (target) { + updateNode(node, nodes[neighbor], nodes[target], name, nodes, nodes[start], heuristic, boardArray); + } else { + updateNode(node, nodes[neighbor]); + } + } +} + +function updateNode(currentNode, targetNode, actualTargetNode, name, nodes, actualStartNode, heuristic, boardArray) { + let distance = getDistance(currentNode, targetNode); + if (!targetNode.heuristicDistance) targetNode.heuristicDistance = manhattanDistance(targetNode, actualTargetNode); + let distanceToCompare = currentNode.distance + targetNode.weight + distance[0]; + if (distanceToCompare < targetNode.distance) { + targetNode.distance = distanceToCompare; + targetNode.totalDistance = targetNode.distance + targetNode.heuristicDistance; + targetNode.previousNode = currentNode.id; + targetNode.path = distance[1]; + targetNode.direction = distance[2]; + } +} + +function getNeighbors(id, nodes, boardArray) { + let coordinates = id.split("-"); + let x = parseInt(coordinates[0]); + let y = parseInt(coordinates[1]); + let neighbors = []; + let potentialNeighbor; + if (boardArray[x - 1] && boardArray[x - 1][y]) { + potentialNeighbor = `${(x - 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x + 1] && boardArray[x + 1][y]) { + potentialNeighbor = `${(x + 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y - 1]) { + potentialNeighbor = `${x.toString()}-${(y - 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y + 1]) { + potentialNeighbor = `${x.toString()}-${(y + 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + // if (boardArray[x - 1] && boardArray[x - 1][y - 1]) { + // potentialNeighbor = `${(x - 1).toString()}-${(y - 1).toString()}` + // let potentialWallOne = `${(x - 1).toString()}-${y.toString()}` + // let potentialWallTwo = `${x.toString()}-${(y - 1).toString()}` + // if (nodes[potentialNeighbor].status !== "wall" && !(nodes[potentialWallOne].status === "wall" && nodes[potentialWallTwo].status === "wall")) neighbors.push(potentialNeighbor); + // } + // if (boardArray[x + 1] && boardArray[x + 1][y - 1]) { + // potentialNeighbor = `${(x + 1).toString()}-${(y - 1).toString()}` + // let potentialWallOne = `${(x + 1).toString()}-${y.toString()}` + // let potentialWallTwo = `${x.toString()}-${(y - 1).toString()}` + // if (nodes[potentialNeighbor].status !== "wall" && !(nodes[potentialWallOne].status === "wall" && nodes[potentialWallTwo].status === "wall")) neighbors.push(potentialNeighbor); + // } + // if (boardArray[x - 1] && boardArray[x - 1][y + 1]) { + // potentialNeighbor = `${(x - 1).toString()}-${(y + 1).toString()}` + // let potentialWallOne = `${(x - 1).toString()}-${y.toString()}` + // let potentialWallTwo = `${x.toString()}-${(y + 1).toString()}` + // if (nodes[potentialNeighbor].status !== "wall" && !(nodes[potentialWallOne].status === "wall" && nodes[potentialWallTwo].status === "wall")) neighbors.push(potentialNeighbor); + // } + // if (boardArray[x + 1] && boardArray[x + 1][y + 1]) { + // potentialNeighbor = `${(x + 1).toString()}-${(y + 1).toString()}` + // let potentialWallOne = `${(x + 1).toString()}-${y.toString()}` + // let potentialWallTwo = `${x.toString()}-${(y + 1).toString()}` + // if (nodes[potentialNeighbor].status !== "wall" && !(nodes[potentialWallOne].status === "wall" && nodes[potentialWallTwo].status === "wall")) neighbors.push(potentialNeighbor); + // } + return neighbors; +} + + +function getDistance(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1 && y1 === y2) { + if (nodeOne.direction === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.direction === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.direction === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.direction === "down") { + return [3, ["r", "r", "f"], "up"]; + } else if (nodeOne.direction === "up-right") { + return [1.5, null, "up"]; + } else if (nodeOne.direction === "down-right") { + return [2.5, null, "up"]; + } else if (nodeOne.direction === "up-left") { + return [1.5, null, "up"]; + } else if (nodeOne.direction === "down-left") { + return [2.5, null, "up"]; + } + } else if (x2 > x1 && y1 === y2) { + if (nodeOne.direction === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.direction === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.direction === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.direction === "down") { + return [1, ["f"], "down"]; + } else if (nodeOne.direction === "up-right") { + return [2.5, null, "down"]; + } else if (nodeOne.direction === "down-right") { + return [1.5, null, "down"]; + } else if (nodeOne.direction === "up-left") { + return [2.5, null, "down"]; + } else if (nodeOne.direction === "down-left") { + return [1.5, null, "down"]; + } + } + if (y2 < y1 && x1 === x2) { + if (nodeOne.direction === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.direction === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.direction === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.direction === "down") { + return [2, ["r", "f"], "left"]; + } else if (nodeOne.direction === "up-right") { + return [2.5, null, "left"]; + } else if (nodeOne.direction === "down-right") { + return [2.5, null, "left"]; + } else if (nodeOne.direction === "up-left") { + return [1.5, null, "left"]; + } else if (nodeOne.direction === "down-left") { + return [1.5, null, "left"]; + } + } else if (y2 > y1 && x1 === x2) { + if (nodeOne.direction === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.direction === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.direction === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.direction === "down") { + return [2, ["l", "f"], "right"]; + } else if (nodeOne.direction === "up-right") { + return [1.5, null, "right"]; + } else if (nodeOne.direction === "down-right") { + return [1.5, null, "right"]; + } else if (nodeOne.direction === "up-left") { + return [2.5, null, "right"]; + } else if (nodeOne.direction === "down-left") { + return [2.5, null, "right"]; + } + } /*else if (x2 < x1 && y2 < y1) { + if (nodeOne.direction === "up") { + return [1.5, ["f"], "up-left"]; + } else if (nodeOne.direction === "right") { + return [2.5, ["l", "f"], "up-left"]; + } else if (nodeOne.direction === "left") { + return [1.5, ["r", "f"], "up-left"]; + } else if (nodeOne.direction === "down") { + return [2.5, ["r", "r", "f"], "up-left"]; + } else if (nodeOne.direction === "up-right") { + return [2, null, "up-left"]; + } else if (nodeOne.direction === "down-right") { + return [3, null, "up-left"]; + } else if (nodeOne.direction === "up-left") { + return [1, null, "up-left"]; + } else if (nodeOne.direction === "down-left") { + return [2, null, "up-left"]; + } + } else if (x2 < x1 && y2 > y1) { + if (nodeOne.direction === "up") { + return [1.5, ["f"], "up-right"]; + } else if (nodeOne.direction === "right") { + return [1.5, ["l", "f"], "up-right"]; + } else if (nodeOne.direction === "left") { + return [2.5, ["r", "f"], "up-right"]; + } else if (nodeOne.direction === "down") { + return [2.5, ["r", "r", "f"], "up-right"]; + } else if (nodeOne.direction === "up-right") { + return [1, null, "up-right"]; + } else if (nodeOne.direction === "down-right") { + return [2, null, "up-right"]; + } else if (nodeOne.direction === "up-left") { + return [2, null, "up-right"]; + } else if (nodeOne.direction === "down-left") { + return [3, null, "up-right"]; + } + } else if (x2 > x1 && y2 > y1) { + if (nodeOne.direction === "up") { + return [2.5, ["f"], "down-right"]; + } else if (nodeOne.direction === "right") { + return [1.5, ["l", "f"], "down-right"]; + } else if (nodeOne.direction === "left") { + return [2.5, ["r", "f"], "down-right"]; + } else if (nodeOne.direction === "down") { + return [1.5, ["r", "r", "f"], "down-right"]; + } else if (nodeOne.direction === "up-right") { + return [2, null, "down-right"]; + } else if (nodeOne.direction === "down-right") { + return [1, null, "down-right"]; + } else if (nodeOne.direction === "up-left") { + return [3, null, "down-right"]; + } else if (nodeOne.direction === "down-left") { + return [2, null, "down-right"]; + } + } else if (x2 > x1 && y2 < y1) { + if (nodeOne.direction === "up") { + return [2.5, ["f"], "down-left"]; + } else if (nodeOne.direction === "right") { + return [2.5, ["l", "f"], "down-left"]; + } else if (nodeOne.direction === "left") { + return [1.5, ["r", "f"], "down-left"]; + } else if (nodeOne.direction === "down") { + return [1.5, ["r", "r", "f"], "down-left"]; + } else if (nodeOne.direction === "up-right") { + return [3, null, "down-left"]; + } else if (nodeOne.direction === "down-right") { + return [2, null, "down-left"]; + } else if (nodeOne.direction === "up-left") { + return [2, null, "down-left"]; + } else if (nodeOne.direction === "down-left") { + return [1, null, "down-left"]; + } + }*/ +} + +function manhattanDistance(nodeOne, nodeTwo) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xOne = nodeOneCoordinates[0]; + let xTwo = nodeTwoCoordinates[0]; + let yOne = nodeOneCoordinates[1]; + let yTwo = nodeTwoCoordinates[1]; + + let xChange = Math.abs(xOne - xTwo); + let yChange = Math.abs(yOne - yTwo); + + return (xChange + yChange); +} + + + +module.exports = astar; + +},{}],14:[function(require,module,exports){ +const astar = require("./astar"); + +function bidirectional(nodes, start, target, nodesToAnimate, boardArray, name, heuristic, board) { + if (name === "astar") return astar(nodes, start, target, nodesToAnimate, boardArray, name) + if (!start || !target || start === target) { + return false; + } + nodes[start].distance = 0; + nodes[start].direction = "right"; + nodes[target].otherdistance = 0; + nodes[target].otherdirection = "left"; + let visitedNodes = {}; + let unvisitedNodesOne = Object.keys(nodes); + let unvisitedNodesTwo = Object.keys(nodes); + while (unvisitedNodesOne.length && unvisitedNodesTwo.length) { + let currentNode = closestNode(nodes, unvisitedNodesOne); + let secondCurrentNode = closestNodeTwo(nodes, unvisitedNodesTwo); + while ((currentNode.status === "wall" || secondCurrentNode.status === "wall") && unvisitedNodesOne.length && unvisitedNodesTwo.length) { + if (currentNode.status === "wall") currentNode = closestNode(nodes, unvisitedNodesOne); + if (secondCurrentNode.status === "wall") secondCurrentNode = closestNodeTwo(nodes, unvisitedNodesTwo); + } + if (currentNode.distance === Infinity || secondCurrentNode.otherdistance === Infinity) { + return false; + } + nodesToAnimate.push(currentNode); + nodesToAnimate.push(secondCurrentNode); + currentNode.status = "visited"; + secondCurrentNode.status = "visited"; + if (visitedNodes[currentNode.id]) { + board.middleNode = currentNode.id; + return "success"; + } else if (visitedNodes[secondCurrentNode.id]) { + board.middleNode = secondCurrentNode.id; + return "success"; + } else if (currentNode === secondCurrentNode) { + board.middleNode = secondCurrentNode.id; + return "success"; + } + visitedNodes[currentNode.id] = true; + visitedNodes[secondCurrentNode.id] = true; + updateNeighbors(nodes, currentNode, boardArray, target, name, start, heuristic); + updateNeighborsTwo(nodes, secondCurrentNode, boardArray, start, name, target, heuristic); + } +} + +function closestNode(nodes, unvisitedNodes) { + let currentClosest, index; + for (let i = 0; i < unvisitedNodes.length; i++) { + if (!currentClosest || currentClosest.distance > nodes[unvisitedNodes[i]].distance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } + } + unvisitedNodes.splice(index, 1); + return currentClosest; +} + +function closestNodeTwo(nodes, unvisitedNodes) { + let currentClosest, index; + for (let i = 0; i < unvisitedNodes.length; i++) { + if (!currentClosest || currentClosest.otherdistance > nodes[unvisitedNodes[i]].otherdistance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } + } + unvisitedNodes.splice(index, 1); + return currentClosest; +} + +function updateNeighbors(nodes, node, boardArray, target, name, start, heuristic) { + let neighbors = getNeighbors(node.id, nodes, boardArray); + for (let neighbor of neighbors) { + updateNode(node, nodes[neighbor], nodes[target], name, nodes, nodes[start], heuristic, boardArray); + } +} + +function updateNeighborsTwo(nodes, node, boardArray, target, name, start, heuristic) { + let neighbors = getNeighbors(node.id, nodes, boardArray); + for (let neighbor of neighbors) { + updateNodeTwo(node, nodes[neighbor], nodes[target], name, nodes, nodes[start], heuristic, boardArray); + } +} + +function updateNode(currentNode, targetNode, actualTargetNode, name, nodes, actualStartNode, heuristic, boardArray) { + let distance = getDistance(currentNode, targetNode); + let weight = targetNode.weight === 15 ? 15 : 1; + let distanceToCompare = currentNode.distance + (weight + distance[0]) * manhattanDistance(targetNode, actualTargetNode); + if (distanceToCompare < targetNode.distance) { + targetNode.distance = distanceToCompare; + targetNode.previousNode = currentNode.id; + targetNode.path = distance[1]; + targetNode.direction = distance[2]; + } +} + +function updateNodeTwo(currentNode, targetNode, actualTargetNode, name, nodes, actualStartNode, heuristic, boardArray) { + let distance = getDistanceTwo(currentNode, targetNode); + let weight = targetNode.weight === 15 ? 15 : 1; + let distanceToCompare = currentNode.otherdistance + (weight + distance[0]) * manhattanDistance(targetNode, actualTargetNode); + if (distanceToCompare < targetNode.otherdistance) { + targetNode.otherdistance = distanceToCompare; + targetNode.otherpreviousNode = currentNode.id; + targetNode.path = distance[1]; + targetNode.otherdirection = distance[2]; + } +} + +function getNeighbors(id, nodes, boardArray) { + let coordinates = id.split("-"); + let x = parseInt(coordinates[0]); + let y = parseInt(coordinates[1]); + let neighbors = []; + let potentialNeighbor; + if (boardArray[x - 1] && boardArray[x - 1][y]) { + potentialNeighbor = `${(x - 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x + 1] && boardArray[x + 1][y]) { + potentialNeighbor = `${(x + 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y - 1]) { + potentialNeighbor = `${x.toString()}-${(y - 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y + 1]) { + potentialNeighbor = `${x.toString()}-${(y + 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + return neighbors; +} + +function getDistance(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1) { + if (nodeOne.direction === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.direction === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.direction === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.direction === "down") { + return [3, ["r", "r", "f"], "up"]; + } + } else if (x2 > x1) { + if (nodeOne.direction === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.direction === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.direction === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.direction === "down") { + return [1, ["f"], "down"]; + } + } + if (y2 < y1) { + if (nodeOne.direction === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.direction === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.direction === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.direction === "down") { + return [2, ["r", "f"], "left"]; + } + } else if (y2 > y1) { + if (nodeOne.direction === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.direction === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.direction === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.direction === "down") { + return [2, ["l", "f"], "right"]; + } + } +} + +function getDistanceTwo(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1) { + if (nodeOne.otherdirection === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.otherdirection === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.otherdirection === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.otherdirection === "down") { + return [3, ["r", "r", "f"], "up"]; + } + } else if (x2 > x1) { + if (nodeOne.otherdirection === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.otherdirection === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.otherdirection === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.otherdirection === "down") { + return [1, ["f"], "down"]; + } + } + if (y2 < y1) { + if (nodeOne.otherdirection === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.otherdirection === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.otherdirection === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.otherdirection === "down") { + return [2, ["r", "f"], "left"]; + } + } else if (y2 > y1) { + if (nodeOne.otherdirection === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.otherdirection === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.otherdirection === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.otherdirection === "down") { + return [2, ["l", "f"], "right"]; + } + } +} + +function manhattanDistance(nodeOne, nodeTwo) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xChange = Math.abs(nodeOneCoordinates[0] - nodeTwoCoordinates[0]); + let yChange = Math.abs(nodeOneCoordinates[1] - nodeTwoCoordinates[1]); + return (xChange + yChange); +} + +function weightedManhattanDistance(nodeOne, nodeTwo, nodes) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xChange = Math.abs(nodeOneCoordinates[0] - nodeTwoCoordinates[0]); + let yChange = Math.abs(nodeOneCoordinates[1] - nodeTwoCoordinates[1]); + + if (nodeOneCoordinates[0] < nodeTwoCoordinates[0] && nodeOneCoordinates[1] < nodeTwoCoordinates[1]) { + + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] < nodeTwoCoordinates[0] && nodeOneCoordinates[1] >= nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] >= nodeTwoCoordinates[0] && nodeOneCoordinates[1] < nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] >= nodeTwoCoordinates[0] && nodeOneCoordinates[1] >= nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } + + + return xChange + yChange; + + +} + +module.exports = bidirectional; + +},{"./astar":13}],15:[function(require,module,exports){ +function unweightedSearchAlgorithm(nodes, start, target, nodesToAnimate, boardArray, name) { + if (!start || !target || start === target) { + return false; + } + let structure = [nodes[start]]; + let exploredNodes = {start: true}; + while (structure.length) { + let currentNode = name === "bfs" ? structure.shift() : structure.pop(); + nodesToAnimate.push(currentNode); + if (name === "dfs") exploredNodes[currentNode.id] = true; + currentNode.status = "visited"; + if (currentNode.id === target) { + return "success"; + } + let currentNeighbors = getNeighbors(currentNode.id, nodes, boardArray, name); + currentNeighbors.forEach(neighbor => { + if (!exploredNodes[neighbor]) { + if (name === "bfs") exploredNodes[neighbor] = true; + nodes[neighbor].previousNode = currentNode.id; + structure.push(nodes[neighbor]); + } + }); + } + return false; +} + +function getNeighbors(id, nodes, boardArray, name) { + let coordinates = id.split("-"); + let x = parseInt(coordinates[0]); + let y = parseInt(coordinates[1]); + let neighbors = []; + let potentialNeighbor; + if (boardArray[x - 1] && boardArray[x - 1][y]) { + potentialNeighbor = `${(x - 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") { + if (name === "bfs") { + neighbors.push(potentialNeighbor); + } else { + neighbors.unshift(potentialNeighbor); + } + } + } + if (boardArray[x][y + 1]) { + potentialNeighbor = `${x.toString()}-${(y + 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") { + if (name === "bfs") { + neighbors.push(potentialNeighbor); + } else { + neighbors.unshift(potentialNeighbor); + } + } + } + if (boardArray[x + 1] && boardArray[x + 1][y]) { + potentialNeighbor = `${(x + 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") { + if (name === "bfs") { + neighbors.push(potentialNeighbor); + } else { + neighbors.unshift(potentialNeighbor); + } + } + } + if (boardArray[x][y - 1]) { + potentialNeighbor = `${x.toString()}-${(y - 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") { + if (name === "bfs") { + neighbors.push(potentialNeighbor); + } else { + neighbors.unshift(potentialNeighbor); + } + } + } + return neighbors; +} + +module.exports = unweightedSearchAlgorithm; + +},{}],16:[function(require,module,exports){ +const astar = require("./astar"); + +function weightedSearchAlgorithm(nodes, start, target, nodesToAnimate, boardArray, name, heuristic) { + if (name === "astar") return astar(nodes, start, target, nodesToAnimate, boardArray, name) + if (!start || !target || start === target) { + return false; + } + nodes[start].distance = 0; + nodes[start].direction = "right"; + let unvisitedNodes = Object.keys(nodes); + while (unvisitedNodes.length) { + let currentNode = closestNode(nodes, unvisitedNodes); + while (currentNode.status === "wall" && unvisitedNodes.length) { + currentNode = closestNode(nodes, unvisitedNodes) + } + if (currentNode.distance === Infinity) { + return false; + } + nodesToAnimate.push(currentNode); + currentNode.status = "visited"; + if (currentNode.id === target) return "success!"; + if (name === "CLA" || name === "greedy") { + updateNeighbors(nodes, currentNode, boardArray, target, name, start, heuristic); + } else if (name === "dijkstra") { + updateNeighbors(nodes, currentNode, boardArray); + } + } +} + +function closestNode(nodes, unvisitedNodes) { + let currentClosest, index; + for (let i = 0; i < unvisitedNodes.length; i++) { + if (!currentClosest || currentClosest.distance > nodes[unvisitedNodes[i]].distance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } + } + unvisitedNodes.splice(index, 1); + return currentClosest; +} + +function updateNeighbors(nodes, node, boardArray, target, name, start, heuristic) { + let neighbors = getNeighbors(node.id, nodes, boardArray); + for (let neighbor of neighbors) { + if (target) { + updateNode(node, nodes[neighbor], nodes[target], name, nodes, nodes[start], heuristic, boardArray); + } else { + updateNode(node, nodes[neighbor]); + } + } +} + +function averageNumberOfNodesBetween(currentNode) { + let num = 0; + while (currentNode.previousNode) { + num++; + currentNode = currentNode.previousNode; + } + return num; +} + + +function updateNode(currentNode, targetNode, actualTargetNode, name, nodes, actualStartNode, heuristic, boardArray) { + let distance = getDistance(currentNode, targetNode); + let distanceToCompare; + if (actualTargetNode && name === "CLA") { + let weight = targetNode.weight === 15 ? 15 : 1; + if (heuristic === "manhattanDistance") { + distanceToCompare = currentNode.distance + (distance[0] + weight) * manhattanDistance(targetNode, actualTargetNode); + } else if (heuristic === "poweredManhattanDistance") { + distanceToCompare = currentNode.distance + targetNode.weight + distance[0] + Math.pow(manhattanDistance(targetNode, actualTargetNode), 2); + } else if (heuristic === "extraPoweredManhattanDistance") { + distanceToCompare = currentNode.distance + (distance[0] + weight) * Math.pow(manhattanDistance(targetNode, actualTargetNode), 7); + } + let startNodeManhattanDistance = manhattanDistance(actualStartNode, actualTargetNode); + } else if (actualTargetNode && name === "greedy") { + distanceToCompare = targetNode.weight + distance[0] + manhattanDistance(targetNode, actualTargetNode); + } else { + distanceToCompare = currentNode.distance + targetNode.weight + distance[0]; + } + if (distanceToCompare < targetNode.distance) { + targetNode.distance = distanceToCompare; + targetNode.previousNode = currentNode.id; + targetNode.path = distance[1]; + targetNode.direction = distance[2]; + } +} + +function getNeighbors(id, nodes, boardArray) { + let coordinates = id.split("-"); + let x = parseInt(coordinates[0]); + let y = parseInt(coordinates[1]); + let neighbors = []; + let potentialNeighbor; + if (boardArray[x - 1] && boardArray[x - 1][y]) { + potentialNeighbor = `${(x - 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x + 1] && boardArray[x + 1][y]) { + potentialNeighbor = `${(x + 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y - 1]) { + potentialNeighbor = `${x.toString()}-${(y - 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y + 1]) { + potentialNeighbor = `${x.toString()}-${(y + 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + return neighbors; +} + + +function getDistance(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1) { + if (nodeOne.direction === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.direction === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.direction === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.direction === "down") { + return [3, ["r", "r", "f"], "up"]; + } + } else if (x2 > x1) { + if (nodeOne.direction === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.direction === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.direction === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.direction === "down") { + return [1, ["f"], "down"]; + } + } + if (y2 < y1) { + if (nodeOne.direction === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.direction === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.direction === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.direction === "down") { + return [2, ["r", "f"], "left"]; + } + } else if (y2 > y1) { + if (nodeOne.direction === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.direction === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.direction === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.direction === "down") { + return [2, ["l", "f"], "right"]; + } + } +} + +function manhattanDistance(nodeOne, nodeTwo) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xChange = Math.abs(nodeOneCoordinates[0] - nodeTwoCoordinates[0]); + let yChange = Math.abs(nodeOneCoordinates[1] - nodeTwoCoordinates[1]); + return (xChange + yChange); +} + +function weightedManhattanDistance(nodeOne, nodeTwo, nodes) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xChange = Math.abs(nodeOneCoordinates[0] - nodeTwoCoordinates[0]); + let yChange = Math.abs(nodeOneCoordinates[1] - nodeTwoCoordinates[1]); + + if (nodeOneCoordinates[0] < nodeTwoCoordinates[0] && nodeOneCoordinates[1] < nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] < nodeTwoCoordinates[0] && nodeOneCoordinates[1] >= nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] >= nodeTwoCoordinates[0] && nodeOneCoordinates[1] < nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] >= nodeTwoCoordinates[0] && nodeOneCoordinates[1] >= nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } + + return xChange + yChange; + + +} + +module.exports = weightedSearchAlgorithm; + +},{"./astar":13}]},{},[4]); diff --git a/public/browser/getDistance.js b/public/browser/getDistance.js new file mode 100644 index 0000000..f599427 --- /dev/null +++ b/public/browser/getDistance.js @@ -0,0 +1,52 @@ +function getDistance(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1) { + if (nodeOne.direction === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.direction === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.direction === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.direction === "down") { + return [3, ["r", "r", "f"], "up"]; + } + } else if (x2 > x1) { + if (nodeOne.direction === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.direction === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.direction === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.direction === "down") { + return [1, ["f"], "down"]; + } + } + if (y2 < y1) { + if (nodeOne.direction === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.direction === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.direction === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.direction === "down") { + return [2, ["r", "f"], "left"]; + } + } else if (y2 > y1) { + if (nodeOne.direction === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.direction === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.direction === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.direction === "down") { + return [2, ["l", "f"], "right"]; + } + } +} + +module.exports = getDistance; diff --git a/public/browser/mazeAlgorithms/otherMaze.js b/public/browser/mazeAlgorithms/otherMaze.js new file mode 100644 index 0000000..728b8b0 --- /dev/null +++ b/public/browser/mazeAlgorithms/otherMaze.js @@ -0,0 +1,92 @@ +function recursiveDivisionMaze(board, rowStart, rowEnd, colStart, colEnd, orientation, surroundingWalls) { + if (rowEnd < rowStart || colEnd < colStart) { + return; + } + if (!surroundingWalls) { + let relevantIds = [board.start, board.target]; + if (board.object) relevantIds.push(board.object); + Object.keys(board.nodes).forEach(node => { + if (!relevantIds.includes(node)) { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === 0 || c === 0 || r === board.height - 1 || c === board.width - 1) { + let currentHTMLNode = document.getElementById(node); + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + surroundingWalls = true; + } + if (orientation === "horizontal") { + let possibleRows = []; + for (let number = rowStart; number <= rowEnd; number += 2) { + possibleRows.push(number); + } + let possibleCols = []; + for (let number = colStart - 1; number <= colEnd + 1; number += 2) { + possibleCols.push(number); + } + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let currentRow = possibleRows[randomRowIndex]; + let colRandom = possibleCols[randomColIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === currentRow && c !== colRandom && c >= colStart - 1 && c <= colEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + if (currentRow - 2 - rowStart > colEnd - colStart) { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, orientation, surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, "vertical", surroundingWalls); + } + if (rowEnd - (currentRow + 2) > colEnd - colStart) { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, "vertical", surroundingWalls); + } else { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, "vertical", surroundingWalls); + } + } else { + let possibleCols = []; + for (let number = colStart; number <= colEnd; number += 2) { + possibleCols.push(number); + } + let possibleRows = []; + for (let number = rowStart - 1; number <= rowEnd + 1; number += 2) { + possibleRows.push(number); + } + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let currentCol = possibleCols[randomColIndex]; + let rowRandom = possibleRows[randomRowIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (c === currentCol && r !== rowRandom && r >= rowStart - 1 && r <= rowEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + if (rowEnd - rowStart > currentCol - 2 - colStart) { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, "vertical", surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, orientation, surroundingWalls); + } + if (rowEnd - rowStart > colEnd - (currentCol + 2)) { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, "horizontal", surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, orientation, surroundingWalls); + } + } +}; + +module.exports = recursiveDivisionMaze; diff --git a/public/browser/mazeAlgorithms/otherOtherMaze.js b/public/browser/mazeAlgorithms/otherOtherMaze.js new file mode 100644 index 0000000..b6b2fb6 --- /dev/null +++ b/public/browser/mazeAlgorithms/otherOtherMaze.js @@ -0,0 +1,92 @@ +function recursiveDivisionMaze(board, rowStart, rowEnd, colStart, colEnd, orientation, surroundingWalls) { + if (rowEnd < rowStart || colEnd < colStart) { + return; + } + if (!surroundingWalls) { + let relevantIds = [board.start, board.target]; + if (board.object) relevantIds.push(board.object); + Object.keys(board.nodes).forEach(node => { + if (!relevantIds.includes(node)) { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === 0 || c === 0 || r === board.height - 1 || c === board.width - 1) { + let currentHTMLNode = document.getElementById(node); + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + surroundingWalls = true; + } + if (orientation === "horizontal") { + let possibleRows = []; + for (let number = rowStart; number <= rowEnd; number += 2) { + possibleRows.push(number); + } + let possibleCols = []; + for (let number = colStart - 1; number <= colEnd + 1; number += 2) { + possibleCols.push(number); + } + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let currentRow = possibleRows[randomRowIndex]; + let colRandom = possibleCols[randomColIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === currentRow && c !== colRandom && c >= colStart - 1 && c <= colEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + if (currentRow - 2 - rowStart > colEnd - colStart) { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, orientation, surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, "horizontal", surroundingWalls); + } + if (rowEnd - (currentRow + 2) > colEnd - colStart) { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, orientation, surroundingWalls); + } else { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, "vertical", surroundingWalls); + } + } else { + let possibleCols = []; + for (let number = colStart; number <= colEnd; number += 2) { + possibleCols.push(number); + } + let possibleRows = []; + for (let number = rowStart - 1; number <= rowEnd + 1; number += 2) { + possibleRows.push(number); + } + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let currentCol = possibleCols[randomColIndex]; + let rowRandom = possibleRows[randomRowIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (c === currentCol && r !== rowRandom && r >= rowStart - 1 && r <= rowEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + board.nodes[node].status = "wall"; + } + } + }); + if (rowEnd - rowStart > currentCol - 2 - colStart) { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, "horizontal", surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, "horizontal", surroundingWalls); + } + if (rowEnd - rowStart > colEnd - (currentCol + 2)) { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, "horizontal", surroundingWalls); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, orientation, surroundingWalls); + } + } +}; + +module.exports = recursiveDivisionMaze; diff --git a/public/browser/mazeAlgorithms/recursiveDivisionMaze.js b/public/browser/mazeAlgorithms/recursiveDivisionMaze.js new file mode 100644 index 0000000..8da7e43 --- /dev/null +++ b/public/browser/mazeAlgorithms/recursiveDivisionMaze.js @@ -0,0 +1,108 @@ +function recursiveDivisionMaze(board, rowStart, rowEnd, colStart, colEnd, orientation, surroundingWalls, type) { + if (rowEnd < rowStart || colEnd < colStart) { + return; + } + if (!surroundingWalls) { + let relevantIds = [board.start, board.target]; + if (board.object) relevantIds.push(board.object); + Object.keys(board.nodes).forEach(node => { + if (!relevantIds.includes(node)) { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === 0 || c === 0 || r === board.height - 1 || c === board.width - 1) { + let currentHTMLNode = document.getElementById(node); + board.wallsToAnimate.push(currentHTMLNode); + if (type === "wall") { + board.nodes[node].status = "wall"; + board.nodes[node].weight = 0; + } else if (type === "weight") { + board.nodes[node].status = "unvisited"; + board.nodes[node].weight = 15; + } + } + } + }); + surroundingWalls = true; + } + if (orientation === "horizontal") { + let possibleRows = []; + for (let number = rowStart; number <= rowEnd; number += 2) { + possibleRows.push(number); + } + let possibleCols = []; + for (let number = colStart - 1; number <= colEnd + 1; number += 2) { + possibleCols.push(number); + } + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let currentRow = possibleRows[randomRowIndex]; + let colRandom = possibleCols[randomColIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (r === currentRow && c !== colRandom && c >= colStart - 1 && c <= colEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + if (type === "wall") { + board.nodes[node].status = "wall"; + board.nodes[node].weight = 0; + } else if (type === "weight") { + board.nodes[node].status = "unvisited"; + board.nodes[node].weight = 15; + } } + } + }); + if (currentRow - 2 - rowStart > colEnd - colStart) { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, orientation, surroundingWalls, type); + } else { + recursiveDivisionMaze(board, rowStart, currentRow - 2, colStart, colEnd, "vertical", surroundingWalls, type); + } + if (rowEnd - (currentRow + 2) > colEnd - colStart) { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, orientation, surroundingWalls, type); + } else { + recursiveDivisionMaze(board, currentRow + 2, rowEnd, colStart, colEnd, "vertical", surroundingWalls, type); + } + } else { + let possibleCols = []; + for (let number = colStart; number <= colEnd; number += 2) { + possibleCols.push(number); + } + let possibleRows = []; + for (let number = rowStart - 1; number <= rowEnd + 1; number += 2) { + possibleRows.push(number); + } + let randomColIndex = Math.floor(Math.random() * possibleCols.length); + let randomRowIndex = Math.floor(Math.random() * possibleRows.length); + let currentCol = possibleCols[randomColIndex]; + let rowRandom = possibleRows[randomRowIndex]; + Object.keys(board.nodes).forEach(node => { + let r = parseInt(node.split("-")[0]); + let c = parseInt(node.split("-")[1]); + if (c === currentCol && r !== rowRandom && r >= rowStart - 1 && r <= rowEnd + 1) { + let currentHTMLNode = document.getElementById(node); + if (currentHTMLNode.className !== "start" && currentHTMLNode.className !== "target" && currentHTMLNode.className !== "object") { + board.wallsToAnimate.push(currentHTMLNode); + if (type === "wall") { + board.nodes[node].status = "wall"; + board.nodes[node].weight = 0; + } else if (type === "weight") { + board.nodes[node].status = "unvisited"; + board.nodes[node].weight = 15; + } } + } + }); + if (rowEnd - rowStart > currentCol - 2 - colStart) { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, "horizontal", surroundingWalls, type); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, colStart, currentCol - 2, orientation, surroundingWalls, type); + } + if (rowEnd - rowStart > colEnd - (currentCol + 2)) { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, "horizontal", surroundingWalls, type); + } else { + recursiveDivisionMaze(board, rowStart, rowEnd, currentCol + 2, colEnd, orientation, surroundingWalls, type); + } + } +}; + +module.exports = recursiveDivisionMaze; diff --git a/public/browser/mazeAlgorithms/simpleDemonstration.js b/public/browser/mazeAlgorithms/simpleDemonstration.js new file mode 100644 index 0000000..cec30f7 --- /dev/null +++ b/public/browser/mazeAlgorithms/simpleDemonstration.js @@ -0,0 +1,21 @@ +function simpleDemonstration(board) { + let currentIdY = board.width - 10; + for (let counter = 0; counter < 7; counter++) { + let currentIdXOne = Math.floor(board.height / 2) - counter; + let currentIdXTwo = Math.floor(board.height / 2) + counter; + let currentIdOne = `${currentIdXOne}-${currentIdY}`; + let currentIdTwo = `${currentIdXTwo}-${currentIdY}`; + let currentElementOne = document.getElementById(currentIdOne); + let currentElementTwo = document.getElementById(currentIdTwo); + board.wallsToAnimate.push(currentElementOne); + board.wallsToAnimate.push(currentElementTwo); + let currentNodeOne = board.nodes[currentIdOne]; + let currentNodeTwo = board.nodes[currentIdTwo]; + currentNodeOne.status = "wall"; + currentNodeOne.weight = 0; + currentNodeTwo.status = "wall"; + currentNodeTwo.weight = 0; + } +} + +module.exports = simpleDemonstration; diff --git a/public/browser/mazeAlgorithms/stairDemonstration.js b/public/browser/mazeAlgorithms/stairDemonstration.js new file mode 100644 index 0000000..f584883 --- /dev/null +++ b/public/browser/mazeAlgorithms/stairDemonstration.js @@ -0,0 +1,40 @@ +function stairDemonstration(board) { + let currentIdX = board.height - 1; + let currentIdY = 0; + let relevantStatuses = ["start", "target", "object"]; + while (currentIdX > 0 && currentIdY < board.width) { + let currentId = `${currentIdX}-${currentIdY}`; + let currentNode = board.nodes[currentId]; + let currentHTMLNode = document.getElementById(currentId); + if (!relevantStatuses.includes(currentNode.status)) { + currentNode.status = "wall"; + board.wallsToAnimate.push(currentHTMLNode); + } + currentIdX--; + currentIdY++; + } + while (currentIdX < board.height - 2 && currentIdY < board.width) { + let currentId = `${currentIdX}-${currentIdY}`; + let currentNode = board.nodes[currentId]; + let currentHTMLNode = document.getElementById(currentId); + if (!relevantStatuses.includes(currentNode.status)) { + currentNode.status = "wall"; + board.wallsToAnimate.push(currentHTMLNode); + } + currentIdX++; + currentIdY++; + } + while (currentIdX > 0 && currentIdY < board.width - 1) { + let currentId = `${currentIdX}-${currentIdY}`; + let currentNode = board.nodes[currentId]; + let currentHTMLNode = document.getElementById(currentId); + if (!relevantStatuses.includes(currentNode.status)) { + currentNode.status = "wall"; + board.wallsToAnimate.push(currentHTMLNode); + } + currentIdX--; + currentIdY++; + } +} + +module.exports = stairDemonstration; diff --git a/public/browser/mazeAlgorithms/weightsDemonstration.js b/public/browser/mazeAlgorithms/weightsDemonstration.js new file mode 100644 index 0000000..b0cfe76 --- /dev/null +++ b/public/browser/mazeAlgorithms/weightsDemonstration.js @@ -0,0 +1,30 @@ +function weightsDemonstration(board) { + let currentIdX = board.height - 1; + let currentIdY = 35; + while (currentIdX > 5) { + let currentId = `${currentIdX}-${currentIdY}`; + let currentElement = document.getElementById(currentId); + board.wallsToAnimate.push(currentElement); + let currentNode = board.nodes[currentId]; + currentNode.status = "wall"; + currentNode.weight = 0; + currentIdX--; + } + for (let currentIdX = board.height - 2; currentIdX > board.height - 11; currentIdX--) { + for (let currentIdY = 1; currentIdY < 35; currentIdY++) { + let currentId = `${currentIdX}-${currentIdY}`; + let currentElement = document.getElementById(currentId); + board.wallsToAnimate.push(currentElement); + let currentNode = board.nodes[currentId]; + if (currentIdX === board.height - 2 && currentIdY < 35 && currentIdY > 26) { + currentNode.status = "wall"; + currentNode.weight = 0; + } else { + currentNode.status = "unvisited"; + currentNode.weight = 15; + } + } + } +} + +module.exports = weightsDemonstration; diff --git a/public/browser/node.js b/public/browser/node.js new file mode 100644 index 0000000..42257b8 --- /dev/null +++ b/public/browser/node.js @@ -0,0 +1,27 @@ +function Node(id, status) { + this.id = id; + this.status = status; + this.previousNode = null; + this.path = null; + this.direction = null; + this.storedDirection = null; + this.distance = Infinity; + this.totalDistance = Infinity; + this.heuristicDistance = null; + this.weight = 0; + this.relatesToObject = false; + this.overwriteObjectRelation = false; + + this.otherid = id; + this.otherstatus = status; + this.otherpreviousNode = null; + this.otherpath = null; + this.otherdirection = null; + this.otherstoredDirection = null; + this.otherdistance = Infinity; + this.otherweight = 0; + this.otherrelatesToObject = false; + this.otheroverwriteObjectRelation = false; +} + +module.exports = Node; diff --git a/public/browser/pathfindingAlgorithms/astar.js b/public/browser/pathfindingAlgorithms/astar.js new file mode 100644 index 0000000..12e8674 --- /dev/null +++ b/public/browser/pathfindingAlgorithms/astar.js @@ -0,0 +1,286 @@ +function astar(nodes, start, target, nodesToAnimate, boardArray, name, heuristic) { + if (!start || !target || start === target) { + return false; + } + nodes[start].distance = 0; + nodes[start].totalDistance = 0; + nodes[start].direction = "up"; + let unvisitedNodes = Object.keys(nodes); + while (unvisitedNodes.length) { + let currentNode = closestNode(nodes, unvisitedNodes); + while (currentNode.status === "wall" && unvisitedNodes.length) { + currentNode = closestNode(nodes, unvisitedNodes) + } + if (currentNode.distance === Infinity) return false; + nodesToAnimate.push(currentNode); + currentNode.status = "visited"; + if (currentNode.id === target) { + return "success!"; + } + updateNeighbors(nodes, currentNode, boardArray, target, name, start, heuristic); + } +} + +function closestNode(nodes, unvisitedNodes) { + let currentClosest, index; + for (let i = 0; i < unvisitedNodes.length; i++) { + if (!currentClosest || currentClosest.totalDistance > nodes[unvisitedNodes[i]].totalDistance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } else if (currentClosest.totalDistance === nodes[unvisitedNodes[i]].totalDistance) { + if (currentClosest.heuristicDistance > nodes[unvisitedNodes[i]].heuristicDistance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } + } + } + unvisitedNodes.splice(index, 1); + return currentClosest; +} + +function updateNeighbors(nodes, node, boardArray, target, name, start, heuristic) { + let neighbors = getNeighbors(node.id, nodes, boardArray); + for (let neighbor of neighbors) { + if (target) { + updateNode(node, nodes[neighbor], nodes[target], name, nodes, nodes[start], heuristic, boardArray); + } else { + updateNode(node, nodes[neighbor]); + } + } +} + +function updateNode(currentNode, targetNode, actualTargetNode, name, nodes, actualStartNode, heuristic, boardArray) { + let distance = getDistance(currentNode, targetNode); + if (!targetNode.heuristicDistance) targetNode.heuristicDistance = manhattanDistance(targetNode, actualTargetNode); + let distanceToCompare = currentNode.distance + targetNode.weight + distance[0]; + if (distanceToCompare < targetNode.distance) { + targetNode.distance = distanceToCompare; + targetNode.totalDistance = targetNode.distance + targetNode.heuristicDistance; + targetNode.previousNode = currentNode.id; + targetNode.path = distance[1]; + targetNode.direction = distance[2]; + } +} + +function getNeighbors(id, nodes, boardArray) { + let coordinates = id.split("-"); + let x = parseInt(coordinates[0]); + let y = parseInt(coordinates[1]); + let neighbors = []; + let potentialNeighbor; + if (boardArray[x - 1] && boardArray[x - 1][y]) { + potentialNeighbor = `${(x - 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x + 1] && boardArray[x + 1][y]) { + potentialNeighbor = `${(x + 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y - 1]) { + potentialNeighbor = `${x.toString()}-${(y - 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y + 1]) { + potentialNeighbor = `${x.toString()}-${(y + 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + // if (boardArray[x - 1] && boardArray[x - 1][y - 1]) { + // potentialNeighbor = `${(x - 1).toString()}-${(y - 1).toString()}` + // let potentialWallOne = `${(x - 1).toString()}-${y.toString()}` + // let potentialWallTwo = `${x.toString()}-${(y - 1).toString()}` + // if (nodes[potentialNeighbor].status !== "wall" && !(nodes[potentialWallOne].status === "wall" && nodes[potentialWallTwo].status === "wall")) neighbors.push(potentialNeighbor); + // } + // if (boardArray[x + 1] && boardArray[x + 1][y - 1]) { + // potentialNeighbor = `${(x + 1).toString()}-${(y - 1).toString()}` + // let potentialWallOne = `${(x + 1).toString()}-${y.toString()}` + // let potentialWallTwo = `${x.toString()}-${(y - 1).toString()}` + // if (nodes[potentialNeighbor].status !== "wall" && !(nodes[potentialWallOne].status === "wall" && nodes[potentialWallTwo].status === "wall")) neighbors.push(potentialNeighbor); + // } + // if (boardArray[x - 1] && boardArray[x - 1][y + 1]) { + // potentialNeighbor = `${(x - 1).toString()}-${(y + 1).toString()}` + // let potentialWallOne = `${(x - 1).toString()}-${y.toString()}` + // let potentialWallTwo = `${x.toString()}-${(y + 1).toString()}` + // if (nodes[potentialNeighbor].status !== "wall" && !(nodes[potentialWallOne].status === "wall" && nodes[potentialWallTwo].status === "wall")) neighbors.push(potentialNeighbor); + // } + // if (boardArray[x + 1] && boardArray[x + 1][y + 1]) { + // potentialNeighbor = `${(x + 1).toString()}-${(y + 1).toString()}` + // let potentialWallOne = `${(x + 1).toString()}-${y.toString()}` + // let potentialWallTwo = `${x.toString()}-${(y + 1).toString()}` + // if (nodes[potentialNeighbor].status !== "wall" && !(nodes[potentialWallOne].status === "wall" && nodes[potentialWallTwo].status === "wall")) neighbors.push(potentialNeighbor); + // } + return neighbors; +} + + +function getDistance(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1 && y1 === y2) { + if (nodeOne.direction === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.direction === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.direction === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.direction === "down") { + return [3, ["r", "r", "f"], "up"]; + } else if (nodeOne.direction === "up-right") { + return [1.5, null, "up"]; + } else if (nodeOne.direction === "down-right") { + return [2.5, null, "up"]; + } else if (nodeOne.direction === "up-left") { + return [1.5, null, "up"]; + } else if (nodeOne.direction === "down-left") { + return [2.5, null, "up"]; + } + } else if (x2 > x1 && y1 === y2) { + if (nodeOne.direction === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.direction === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.direction === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.direction === "down") { + return [1, ["f"], "down"]; + } else if (nodeOne.direction === "up-right") { + return [2.5, null, "down"]; + } else if (nodeOne.direction === "down-right") { + return [1.5, null, "down"]; + } else if (nodeOne.direction === "up-left") { + return [2.5, null, "down"]; + } else if (nodeOne.direction === "down-left") { + return [1.5, null, "down"]; + } + } + if (y2 < y1 && x1 === x2) { + if (nodeOne.direction === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.direction === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.direction === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.direction === "down") { + return [2, ["r", "f"], "left"]; + } else if (nodeOne.direction === "up-right") { + return [2.5, null, "left"]; + } else if (nodeOne.direction === "down-right") { + return [2.5, null, "left"]; + } else if (nodeOne.direction === "up-left") { + return [1.5, null, "left"]; + } else if (nodeOne.direction === "down-left") { + return [1.5, null, "left"]; + } + } else if (y2 > y1 && x1 === x2) { + if (nodeOne.direction === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.direction === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.direction === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.direction === "down") { + return [2, ["l", "f"], "right"]; + } else if (nodeOne.direction === "up-right") { + return [1.5, null, "right"]; + } else if (nodeOne.direction === "down-right") { + return [1.5, null, "right"]; + } else if (nodeOne.direction === "up-left") { + return [2.5, null, "right"]; + } else if (nodeOne.direction === "down-left") { + return [2.5, null, "right"]; + } + } /*else if (x2 < x1 && y2 < y1) { + if (nodeOne.direction === "up") { + return [1.5, ["f"], "up-left"]; + } else if (nodeOne.direction === "right") { + return [2.5, ["l", "f"], "up-left"]; + } else if (nodeOne.direction === "left") { + return [1.5, ["r", "f"], "up-left"]; + } else if (nodeOne.direction === "down") { + return [2.5, ["r", "r", "f"], "up-left"]; + } else if (nodeOne.direction === "up-right") { + return [2, null, "up-left"]; + } else if (nodeOne.direction === "down-right") { + return [3, null, "up-left"]; + } else if (nodeOne.direction === "up-left") { + return [1, null, "up-left"]; + } else if (nodeOne.direction === "down-left") { + return [2, null, "up-left"]; + } + } else if (x2 < x1 && y2 > y1) { + if (nodeOne.direction === "up") { + return [1.5, ["f"], "up-right"]; + } else if (nodeOne.direction === "right") { + return [1.5, ["l", "f"], "up-right"]; + } else if (nodeOne.direction === "left") { + return [2.5, ["r", "f"], "up-right"]; + } else if (nodeOne.direction === "down") { + return [2.5, ["r", "r", "f"], "up-right"]; + } else if (nodeOne.direction === "up-right") { + return [1, null, "up-right"]; + } else if (nodeOne.direction === "down-right") { + return [2, null, "up-right"]; + } else if (nodeOne.direction === "up-left") { + return [2, null, "up-right"]; + } else if (nodeOne.direction === "down-left") { + return [3, null, "up-right"]; + } + } else if (x2 > x1 && y2 > y1) { + if (nodeOne.direction === "up") { + return [2.5, ["f"], "down-right"]; + } else if (nodeOne.direction === "right") { + return [1.5, ["l", "f"], "down-right"]; + } else if (nodeOne.direction === "left") { + return [2.5, ["r", "f"], "down-right"]; + } else if (nodeOne.direction === "down") { + return [1.5, ["r", "r", "f"], "down-right"]; + } else if (nodeOne.direction === "up-right") { + return [2, null, "down-right"]; + } else if (nodeOne.direction === "down-right") { + return [1, null, "down-right"]; + } else if (nodeOne.direction === "up-left") { + return [3, null, "down-right"]; + } else if (nodeOne.direction === "down-left") { + return [2, null, "down-right"]; + } + } else if (x2 > x1 && y2 < y1) { + if (nodeOne.direction === "up") { + return [2.5, ["f"], "down-left"]; + } else if (nodeOne.direction === "right") { + return [2.5, ["l", "f"], "down-left"]; + } else if (nodeOne.direction === "left") { + return [1.5, ["r", "f"], "down-left"]; + } else if (nodeOne.direction === "down") { + return [1.5, ["r", "r", "f"], "down-left"]; + } else if (nodeOne.direction === "up-right") { + return [3, null, "down-left"]; + } else if (nodeOne.direction === "down-right") { + return [2, null, "down-left"]; + } else if (nodeOne.direction === "up-left") { + return [2, null, "down-left"]; + } else if (nodeOne.direction === "down-left") { + return [1, null, "down-left"]; + } + }*/ +} + +function manhattanDistance(nodeOne, nodeTwo) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xOne = nodeOneCoordinates[0]; + let xTwo = nodeTwoCoordinates[0]; + let yOne = nodeOneCoordinates[1]; + let yTwo = nodeTwoCoordinates[1]; + + let xChange = Math.abs(xOne - xTwo); + let yChange = Math.abs(yOne - yTwo); + + return (xChange + yChange); +} + + + +module.exports = astar; diff --git a/public/browser/pathfindingAlgorithms/bidirectional.js b/public/browser/pathfindingAlgorithms/bidirectional.js new file mode 100644 index 0000000..5c98454 --- /dev/null +++ b/public/browser/pathfindingAlgorithms/bidirectional.js @@ -0,0 +1,394 @@ +const astar = require("./astar"); + +function bidirectional(nodes, start, target, nodesToAnimate, boardArray, name, heuristic, board) { + if (name === "astar") return astar(nodes, start, target, nodesToAnimate, boardArray, name) + if (!start || !target || start === target) { + return false; + } + nodes[start].distance = 0; + nodes[start].direction = "right"; + nodes[target].otherdistance = 0; + nodes[target].otherdirection = "left"; + let visitedNodes = {}; + let unvisitedNodesOne = Object.keys(nodes); + let unvisitedNodesTwo = Object.keys(nodes); + while (unvisitedNodesOne.length && unvisitedNodesTwo.length) { + let currentNode = closestNode(nodes, unvisitedNodesOne); + let secondCurrentNode = closestNodeTwo(nodes, unvisitedNodesTwo); + while ((currentNode.status === "wall" || secondCurrentNode.status === "wall") && unvisitedNodesOne.length && unvisitedNodesTwo.length) { + if (currentNode.status === "wall") currentNode = closestNode(nodes, unvisitedNodesOne); + if (secondCurrentNode.status === "wall") secondCurrentNode = closestNodeTwo(nodes, unvisitedNodesTwo); + } + if (currentNode.distance === Infinity || secondCurrentNode.otherdistance === Infinity) { + return false; + } + nodesToAnimate.push(currentNode); + nodesToAnimate.push(secondCurrentNode); + currentNode.status = "visited"; + secondCurrentNode.status = "visited"; + if (visitedNodes[currentNode.id]) { + board.middleNode = currentNode.id; + return "success"; + } else if (visitedNodes[secondCurrentNode.id]) { + board.middleNode = secondCurrentNode.id; + return "success"; + } else if (currentNode === secondCurrentNode) { + board.middleNode = secondCurrentNode.id; + return "success"; + } + visitedNodes[currentNode.id] = true; + visitedNodes[secondCurrentNode.id] = true; + updateNeighbors(nodes, currentNode, boardArray, target, name, start, heuristic); + updateNeighborsTwo(nodes, secondCurrentNode, boardArray, start, name, target, heuristic); + } +} + +function closestNode(nodes, unvisitedNodes) { + let currentClosest, index; + for (let i = 0; i < unvisitedNodes.length; i++) { + if (!currentClosest || currentClosest.distance > nodes[unvisitedNodes[i]].distance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } + } + unvisitedNodes.splice(index, 1); + return currentClosest; +} + +function closestNodeTwo(nodes, unvisitedNodes) { + let currentClosest, index; + for (let i = 0; i < unvisitedNodes.length; i++) { + if (!currentClosest || currentClosest.otherdistance > nodes[unvisitedNodes[i]].otherdistance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } + } + unvisitedNodes.splice(index, 1); + return currentClosest; +} + +function updateNeighbors(nodes, node, boardArray, target, name, start, heuristic) { + let neighbors = getNeighbors(node.id, nodes, boardArray); + for (let neighbor of neighbors) { + updateNode(node, nodes[neighbor], nodes[target], name, nodes, nodes[start], heuristic, boardArray); + } +} + +function updateNeighborsTwo(nodes, node, boardArray, target, name, start, heuristic) { + let neighbors = getNeighbors(node.id, nodes, boardArray); + for (let neighbor of neighbors) { + updateNodeTwo(node, nodes[neighbor], nodes[target], name, nodes, nodes[start], heuristic, boardArray); + } +} + +function updateNode(currentNode, targetNode, actualTargetNode, name, nodes, actualStartNode, heuristic, boardArray) { + let distance = getDistance(currentNode, targetNode); + let weight = targetNode.weight === 15 ? 15 : 1; + let distanceToCompare = currentNode.distance + (weight + distance[0]) * manhattanDistance(targetNode, actualTargetNode); + if (distanceToCompare < targetNode.distance) { + targetNode.distance = distanceToCompare; + targetNode.previousNode = currentNode.id; + targetNode.path = distance[1]; + targetNode.direction = distance[2]; + } +} + +function updateNodeTwo(currentNode, targetNode, actualTargetNode, name, nodes, actualStartNode, heuristic, boardArray) { + let distance = getDistanceTwo(currentNode, targetNode); + let weight = targetNode.weight === 15 ? 15 : 1; + let distanceToCompare = currentNode.otherdistance + (weight + distance[0]) * manhattanDistance(targetNode, actualTargetNode); + if (distanceToCompare < targetNode.otherdistance) { + targetNode.otherdistance = distanceToCompare; + targetNode.otherpreviousNode = currentNode.id; + targetNode.path = distance[1]; + targetNode.otherdirection = distance[2]; + } +} + +function getNeighbors(id, nodes, boardArray) { + let coordinates = id.split("-"); + let x = parseInt(coordinates[0]); + let y = parseInt(coordinates[1]); + let neighbors = []; + let potentialNeighbor; + if (boardArray[x - 1] && boardArray[x - 1][y]) { + potentialNeighbor = `${(x - 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x + 1] && boardArray[x + 1][y]) { + potentialNeighbor = `${(x + 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y - 1]) { + potentialNeighbor = `${x.toString()}-${(y - 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y + 1]) { + potentialNeighbor = `${x.toString()}-${(y + 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + return neighbors; +} + +function getDistance(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1) { + if (nodeOne.direction === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.direction === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.direction === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.direction === "down") { + return [3, ["r", "r", "f"], "up"]; + } + } else if (x2 > x1) { + if (nodeOne.direction === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.direction === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.direction === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.direction === "down") { + return [1, ["f"], "down"]; + } + } + if (y2 < y1) { + if (nodeOne.direction === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.direction === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.direction === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.direction === "down") { + return [2, ["r", "f"], "left"]; + } + } else if (y2 > y1) { + if (nodeOne.direction === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.direction === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.direction === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.direction === "down") { + return [2, ["l", "f"], "right"]; + } + } +} + +function getDistanceTwo(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1) { + if (nodeOne.otherdirection === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.otherdirection === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.otherdirection === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.otherdirection === "down") { + return [3, ["r", "r", "f"], "up"]; + } + } else if (x2 > x1) { + if (nodeOne.otherdirection === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.otherdirection === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.otherdirection === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.otherdirection === "down") { + return [1, ["f"], "down"]; + } + } + if (y2 < y1) { + if (nodeOne.otherdirection === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.otherdirection === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.otherdirection === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.otherdirection === "down") { + return [2, ["r", "f"], "left"]; + } + } else if (y2 > y1) { + if (nodeOne.otherdirection === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.otherdirection === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.otherdirection === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.otherdirection === "down") { + return [2, ["l", "f"], "right"]; + } + } +} + +function manhattanDistance(nodeOne, nodeTwo) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xChange = Math.abs(nodeOneCoordinates[0] - nodeTwoCoordinates[0]); + let yChange = Math.abs(nodeOneCoordinates[1] - nodeTwoCoordinates[1]); + return (xChange + yChange); +} + +function weightedManhattanDistance(nodeOne, nodeTwo, nodes) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xChange = Math.abs(nodeOneCoordinates[0] - nodeTwoCoordinates[0]); + let yChange = Math.abs(nodeOneCoordinates[1] - nodeTwoCoordinates[1]); + + if (nodeOneCoordinates[0] < nodeTwoCoordinates[0] && nodeOneCoordinates[1] < nodeTwoCoordinates[1]) { + + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] < nodeTwoCoordinates[0] && nodeOneCoordinates[1] >= nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] >= nodeTwoCoordinates[0] && nodeOneCoordinates[1] < nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] >= nodeTwoCoordinates[0] && nodeOneCoordinates[1] >= nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } + + + return xChange + yChange; + + +} + +module.exports = bidirectional; diff --git a/public/browser/pathfindingAlgorithms/testAlgorithm.js b/public/browser/pathfindingAlgorithms/testAlgorithm.js new file mode 100644 index 0000000..c369a9d --- /dev/null +++ b/public/browser/pathfindingAlgorithms/testAlgorithm.js @@ -0,0 +1,175 @@ + + +function test(nodes, start, target, nodesToAnimate, boardArray, name, heuristic) { + if (!start || !target || start === target) { + return false; + } + nodes[start].distance = 0; + nodes[start].direction = "up"; + let unvisitedNodes = Object.keys(nodes); + while (unvisitedNodes.length) { + let currentNode = closestNode(nodes, unvisitedNodes); + while (currentNode.status === "wall" && unvisitedNodes.length) { + currentNode = closestNode(nodes, unvisitedNodes) + } + if (currentNode.distance === Infinity) return false; + currentNode.status = "visited"; + if (currentNode.id === target) { + while (currentNode.id !== start) { + nodesToAnimate.unshift(currentNode); + currentNode = nodes[currentNode.previousNode]; + } + return "success!"; + } + if (name === "astar" || name === "greedy") { + updateNeighbors(nodes, currentNode, boardArray, target, name, start, heuristic); + } else if (name === "dijkstra") { + updateNeighbors(nodes, currentNode, boardArray); + } + } +} + +function closestNode(nodes, unvisitedNodes) { + let currentClosest, index; + for (let i = 0; i < unvisitedNodes.length; i++) { + if (!currentClosest || currentClosest.distance > nodes[unvisitedNodes[i]].distance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } + } + unvisitedNodes.splice(index, 1); + return currentClosest; +} + +function updateNeighbors(nodes, node, boardArray, target, name, start, heuristic) { + let neighbors = getNeighbors(node.id, nodes, boardArray); + for (let neighbor of neighbors) { + if (target) { + updateNode(node, nodes[neighbor], nodes[target], name, nodes, nodes[start], heuristic, boardArray); + } else { + updateNode(node, nodes[neighbor]); + } + } +} + +function averageNumberOfNodesBetween(currentNode) { + let num = 0; + while (currentNode.previousNode) { + num++; + currentNode = currentNode.previousNode; + } + return num; +} + + +function updateNode(currentNode, targetNode, actualTargetNode, name, nodes, actualStartNode, heuristic, boardArray) { + let distance = getDistance(currentNode, targetNode); + let distanceToCompare; + if (actualTargetNode && name === "astar") { + if (heuristic === "manhattanDistance") { + distanceToCompare = currentNode.distance + targetNode.weight + distance[0] + manhattanDistance(targetNode, actualTargetNode); + } else if (heuristic === "poweredManhattanDistance") { + distanceToCompare = currentNode.distance + targetNode.weight + distance[0] + Math.pow(manhattanDistance(targetNode, actualTargetNode), 3); + } else if (heuristic === "extraPoweredManhattanDistance") { + distanceToCompare = currentNode.distance + targetNode.weight + distance[0] + Math.pow(manhattanDistance(targetNode, actualTargetNode), 5); + } + let startNodeManhattanDistance = manhattanDistance(actualStartNode, actualTargetNode); + } else if (actualTargetNode && name === "greedy") { + distanceToCompare = targetNode.weight + distance[0] + manhattanDistance(targetNode, actualTargetNode); + } else { + distanceToCompare = currentNode.distance + targetNode.weight + distance[0]; + } + if (distanceToCompare < targetNode.distance) { + targetNode.distance = distanceToCompare; + targetNode.previousNode = currentNode.id; + targetNode.path = distance[1]; + targetNode.direction = distance[2]; + } +} + +function getNeighbors(id, nodes, boardArray) { + let coordinates = id.split("-"); + let x = parseInt(coordinates[0]); + let y = parseInt(coordinates[1]); + let neighbors = []; + let potentialNeighbor; + if (boardArray[x - 1] && boardArray[x - 1][y]) { + potentialNeighbor = `${(x - 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x + 1] && boardArray[x + 1][y]) { + potentialNeighbor = `${(x + 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y - 1]) { + potentialNeighbor = `${x.toString()}-${(y - 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y + 1]) { + potentialNeighbor = `${x.toString()}-${(y + 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + return neighbors; +} + + +function getDistance(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1) { + if (nodeOne.direction === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.direction === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.direction === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.direction === "down") { + return [3, ["r", "r", "f"], "up"]; + } + } else if (x2 > x1) { + if (nodeOne.direction === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.direction === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.direction === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.direction === "down") { + return [1, ["f"], "down"]; + } + } + if (y2 < y1) { + if (nodeOne.direction === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.direction === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.direction === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.direction === "down") { + return [2, ["r", "f"], "left"]; + } + } else if (y2 > y1) { + if (nodeOne.direction === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.direction === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.direction === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.direction === "down") { + return [2, ["l", "f"], "right"]; + } + } +} + +function manhattanDistance(nodeOne, nodeTwo) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xChange = Math.abs(nodeOneCoordinates[0] - nodeTwoCoordinates[0]); + let yChange = Math.abs(nodeOneCoordinates[1] - nodeTwoCoordinates[1]); + return (xChange + yChange); +} + +module.exports = test; diff --git a/public/browser/pathfindingAlgorithms/unweightedSearchAlgorithm.js b/public/browser/pathfindingAlgorithms/unweightedSearchAlgorithm.js new file mode 100644 index 0000000..acff907 --- /dev/null +++ b/public/browser/pathfindingAlgorithms/unweightedSearchAlgorithm.js @@ -0,0 +1,76 @@ +function unweightedSearchAlgorithm(nodes, start, target, nodesToAnimate, boardArray, name) { + if (!start || !target || start === target) { + return false; + } + let structure = [nodes[start]]; + let exploredNodes = {start: true}; + while (structure.length) { + let currentNode = name === "bfs" ? structure.shift() : structure.pop(); + nodesToAnimate.push(currentNode); + if (name === "dfs") exploredNodes[currentNode.id] = true; + currentNode.status = "visited"; + if (currentNode.id === target) { + return "success"; + } + let currentNeighbors = getNeighbors(currentNode.id, nodes, boardArray, name); + currentNeighbors.forEach(neighbor => { + if (!exploredNodes[neighbor]) { + if (name === "bfs") exploredNodes[neighbor] = true; + nodes[neighbor].previousNode = currentNode.id; + structure.push(nodes[neighbor]); + } + }); + } + return false; +} + +function getNeighbors(id, nodes, boardArray, name) { + let coordinates = id.split("-"); + let x = parseInt(coordinates[0]); + let y = parseInt(coordinates[1]); + let neighbors = []; + let potentialNeighbor; + if (boardArray[x - 1] && boardArray[x - 1][y]) { + potentialNeighbor = `${(x - 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") { + if (name === "bfs") { + neighbors.push(potentialNeighbor); + } else { + neighbors.unshift(potentialNeighbor); + } + } + } + if (boardArray[x][y + 1]) { + potentialNeighbor = `${x.toString()}-${(y + 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") { + if (name === "bfs") { + neighbors.push(potentialNeighbor); + } else { + neighbors.unshift(potentialNeighbor); + } + } + } + if (boardArray[x + 1] && boardArray[x + 1][y]) { + potentialNeighbor = `${(x + 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") { + if (name === "bfs") { + neighbors.push(potentialNeighbor); + } else { + neighbors.unshift(potentialNeighbor); + } + } + } + if (boardArray[x][y - 1]) { + potentialNeighbor = `${x.toString()}-${(y - 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") { + if (name === "bfs") { + neighbors.push(potentialNeighbor); + } else { + neighbors.unshift(potentialNeighbor); + } + } + } + return neighbors; +} + +module.exports = unweightedSearchAlgorithm; diff --git a/public/browser/pathfindingAlgorithms/weightedSearchAlgorithm.js b/public/browser/pathfindingAlgorithms/weightedSearchAlgorithm.js new file mode 100644 index 0000000..61df02a --- /dev/null +++ b/public/browser/pathfindingAlgorithms/weightedSearchAlgorithm.js @@ -0,0 +1,323 @@ +const astar = require("./astar"); + +function weightedSearchAlgorithm(nodes, start, target, nodesToAnimate, boardArray, name, heuristic) { + if (name === "astar") return astar(nodes, start, target, nodesToAnimate, boardArray, name) + if (!start || !target || start === target) { + return false; + } + nodes[start].distance = 0; + nodes[start].direction = "right"; + let unvisitedNodes = Object.keys(nodes); + while (unvisitedNodes.length) { + let currentNode = closestNode(nodes, unvisitedNodes); + while (currentNode.status === "wall" && unvisitedNodes.length) { + currentNode = closestNode(nodes, unvisitedNodes) + } + if (currentNode.distance === Infinity) { + return false; + } + nodesToAnimate.push(currentNode); + currentNode.status = "visited"; + if (currentNode.id === target) return "success!"; + if (name === "CLA" || name === "greedy") { + updateNeighbors(nodes, currentNode, boardArray, target, name, start, heuristic); + } else if (name === "dijkstra") { + updateNeighbors(nodes, currentNode, boardArray); + } + } +} + +function closestNode(nodes, unvisitedNodes) { + let currentClosest, index; + for (let i = 0; i < unvisitedNodes.length; i++) { + if (!currentClosest || currentClosest.distance > nodes[unvisitedNodes[i]].distance) { + currentClosest = nodes[unvisitedNodes[i]]; + index = i; + } + } + unvisitedNodes.splice(index, 1); + return currentClosest; +} + +function updateNeighbors(nodes, node, boardArray, target, name, start, heuristic) { + let neighbors = getNeighbors(node.id, nodes, boardArray); + for (let neighbor of neighbors) { + if (target) { + updateNode(node, nodes[neighbor], nodes[target], name, nodes, nodes[start], heuristic, boardArray); + } else { + updateNode(node, nodes[neighbor]); + } + } +} + +function averageNumberOfNodesBetween(currentNode) { + let num = 0; + while (currentNode.previousNode) { + num++; + currentNode = currentNode.previousNode; + } + return num; +} + + +function updateNode(currentNode, targetNode, actualTargetNode, name, nodes, actualStartNode, heuristic, boardArray) { + let distance = getDistance(currentNode, targetNode); + let distanceToCompare; + if (actualTargetNode && name === "CLA") { + let weight = targetNode.weight === 15 ? 15 : 1; + if (heuristic === "manhattanDistance") { + distanceToCompare = currentNode.distance + (distance[0] + weight) * manhattanDistance(targetNode, actualTargetNode); + } else if (heuristic === "poweredManhattanDistance") { + distanceToCompare = currentNode.distance + targetNode.weight + distance[0] + Math.pow(manhattanDistance(targetNode, actualTargetNode), 2); + } else if (heuristic === "extraPoweredManhattanDistance") { + distanceToCompare = currentNode.distance + (distance[0] + weight) * Math.pow(manhattanDistance(targetNode, actualTargetNode), 7); + } + let startNodeManhattanDistance = manhattanDistance(actualStartNode, actualTargetNode); + } else if (actualTargetNode && name === "greedy") { + distanceToCompare = targetNode.weight + distance[0] + manhattanDistance(targetNode, actualTargetNode); + } else { + distanceToCompare = currentNode.distance + targetNode.weight + distance[0]; + } + if (distanceToCompare < targetNode.distance) { + targetNode.distance = distanceToCompare; + targetNode.previousNode = currentNode.id; + targetNode.path = distance[1]; + targetNode.direction = distance[2]; + } +} + +function getNeighbors(id, nodes, boardArray) { + let coordinates = id.split("-"); + let x = parseInt(coordinates[0]); + let y = parseInt(coordinates[1]); + let neighbors = []; + let potentialNeighbor; + if (boardArray[x - 1] && boardArray[x - 1][y]) { + potentialNeighbor = `${(x - 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x + 1] && boardArray[x + 1][y]) { + potentialNeighbor = `${(x + 1).toString()}-${y.toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y - 1]) { + potentialNeighbor = `${x.toString()}-${(y - 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + if (boardArray[x][y + 1]) { + potentialNeighbor = `${x.toString()}-${(y + 1).toString()}` + if (nodes[potentialNeighbor].status !== "wall") neighbors.push(potentialNeighbor); + } + return neighbors; +} + + +function getDistance(nodeOne, nodeTwo) { + let currentCoordinates = nodeOne.id.split("-"); + let targetCoordinates = nodeTwo.id.split("-"); + let x1 = parseInt(currentCoordinates[0]); + let y1 = parseInt(currentCoordinates[1]); + let x2 = parseInt(targetCoordinates[0]); + let y2 = parseInt(targetCoordinates[1]); + if (x2 < x1) { + if (nodeOne.direction === "up") { + return [1, ["f"], "up"]; + } else if (nodeOne.direction === "right") { + return [2, ["l", "f"], "up"]; + } else if (nodeOne.direction === "left") { + return [2, ["r", "f"], "up"]; + } else if (nodeOne.direction === "down") { + return [3, ["r", "r", "f"], "up"]; + } + } else if (x2 > x1) { + if (nodeOne.direction === "up") { + return [3, ["r", "r", "f"], "down"]; + } else if (nodeOne.direction === "right") { + return [2, ["r", "f"], "down"]; + } else if (nodeOne.direction === "left") { + return [2, ["l", "f"], "down"]; + } else if (nodeOne.direction === "down") { + return [1, ["f"], "down"]; + } + } + if (y2 < y1) { + if (nodeOne.direction === "up") { + return [2, ["l", "f"], "left"]; + } else if (nodeOne.direction === "right") { + return [3, ["l", "l", "f"], "left"]; + } else if (nodeOne.direction === "left") { + return [1, ["f"], "left"]; + } else if (nodeOne.direction === "down") { + return [2, ["r", "f"], "left"]; + } + } else if (y2 > y1) { + if (nodeOne.direction === "up") { + return [2, ["r", "f"], "right"]; + } else if (nodeOne.direction === "right") { + return [1, ["f"], "right"]; + } else if (nodeOne.direction === "left") { + return [3, ["r", "r", "f"], "right"]; + } else if (nodeOne.direction === "down") { + return [2, ["l", "f"], "right"]; + } + } +} + +function manhattanDistance(nodeOne, nodeTwo) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xChange = Math.abs(nodeOneCoordinates[0] - nodeTwoCoordinates[0]); + let yChange = Math.abs(nodeOneCoordinates[1] - nodeTwoCoordinates[1]); + return (xChange + yChange); +} + +function weightedManhattanDistance(nodeOne, nodeTwo, nodes) { + let nodeOneCoordinates = nodeOne.id.split("-").map(ele => parseInt(ele)); + let nodeTwoCoordinates = nodeTwo.id.split("-").map(ele => parseInt(ele)); + let xChange = Math.abs(nodeOneCoordinates[0] - nodeTwoCoordinates[0]); + let yChange = Math.abs(nodeOneCoordinates[1] - nodeTwoCoordinates[1]); + + if (nodeOneCoordinates[0] < nodeTwoCoordinates[0] && nodeOneCoordinates[1] < nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] < nodeTwoCoordinates[0] && nodeOneCoordinates[1] >= nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx <= nodeTwoCoordinates[0]; currentx++) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] >= nodeTwoCoordinates[0] && nodeOneCoordinates[1] < nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty <= nodeTwoCoordinates[1]; currenty++) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } else if (nodeOneCoordinates[0] >= nodeTwoCoordinates[0] && nodeOneCoordinates[1] >= nodeTwoCoordinates[1]) { + let additionalxChange = 0, + additionalyChange = 0; + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeOne.id.split("-")[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeTwoCoordinates[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + + let otherAdditionalxChange = 0, + otherAdditionalyChange = 0; + for (let currenty = nodeOneCoordinates[1]; currenty >= nodeTwoCoordinates[1]; currenty--) { + let currentId = `${nodeOne.id.split("-")[0]}-${currenty}`; + let currentNode = nodes[currentId]; + additionalyChange += currentNode.weight; + } + for (let currentx = nodeOneCoordinates[0]; currentx >= nodeTwoCoordinates[0]; currentx--) { + let currentId = `${currentx}-${nodeTwoCoordinates[1]}`; + let currentNode = nodes[currentId]; + additionalxChange += currentNode.weight; + } + + if (additionalxChange + additionalyChange < otherAdditionalxChange + otherAdditionalyChange) { + xChange += additionalxChange; + yChange += additionalyChange; + } else { + xChange += otherAdditionalxChange; + yChange += otherAdditionalyChange; + } + } + + return xChange + yChange; + + +} + +module.exports = weightedSearchAlgorithm; diff --git a/public/styling/Screen Shot 2022-08-29 at 7.12.32 PM.png b/public/styling/Screen Shot 2022-08-29 at 7.12.32 PM.png new file mode 100644 index 0000000..390bba5 Binary files /dev/null and b/public/styling/Screen Shot 2022-08-29 at 7.12.32 PM.png differ diff --git a/public/styling/Screen Shot 2022-08-29 at 7.33.54 PM.png b/public/styling/Screen Shot 2022-08-29 at 7.33.54 PM.png new file mode 100644 index 0000000..16bde99 Binary files /dev/null and b/public/styling/Screen Shot 2022-08-29 at 7.33.54 PM.png differ diff --git a/public/styling/a.png b/public/styling/a.png new file mode 100644 index 0000000..f654b85 Binary files /dev/null and b/public/styling/a.png differ diff --git a/public/styling/algorithms.png b/public/styling/algorithms.png new file mode 100644 index 0000000..906e33e Binary files /dev/null and b/public/styling/algorithms.png differ diff --git a/public/styling/bomb.png b/public/styling/bomb.png new file mode 100644 index 0000000..447da16 Binary files /dev/null and b/public/styling/bomb.png differ diff --git a/public/styling/c_icon.png b/public/styling/c_icon.png new file mode 100644 index 0000000..22bad3c Binary files /dev/null and b/public/styling/c_icon.png differ diff --git a/public/styling/car-down.png b/public/styling/car-down.png new file mode 100644 index 0000000..0b1ac02 Binary files /dev/null and b/public/styling/car-down.png differ diff --git a/public/styling/car-left.png b/public/styling/car-left.png new file mode 100644 index 0000000..6abd551 Binary files /dev/null and b/public/styling/car-left.png differ diff --git a/public/styling/car-right.png b/public/styling/car-right.png new file mode 100644 index 0000000..f102cbe Binary files /dev/null and b/public/styling/car-right.png differ diff --git a/public/styling/car-up.png b/public/styling/car-up.png new file mode 100644 index 0000000..f6bd283 Binary files /dev/null and b/public/styling/car-up.png differ diff --git a/public/styling/checkered_flag.svg b/public/styling/checkered_flag.svg new file mode 100644 index 0000000..7c905e7 --- /dev/null +++ b/public/styling/checkered_flag.svg @@ -0,0 +1,5 @@ + + + I love SVG! + + \ No newline at end of file diff --git a/public/styling/circle.svg b/public/styling/circle.svg new file mode 100644 index 0000000..32b71c3 --- /dev/null +++ b/public/styling/circle.svg @@ -0,0 +1,8 @@ + + + + + + + diff --git a/public/styling/cssBasic.css b/public/styling/cssBasic.css new file mode 100644 index 0000000..82ce26a --- /dev/null +++ b/public/styling/cssBasic.css @@ -0,0 +1,7116 @@ +/*.demonstration { + border: 2px solid green; +} + +.other { + border: 2px solid red; +} + +.otherother { + border: 2px solid grey; +}*/ + +.start{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-image:url(triangletwo-right.svg); + /*background-color: rgb(255, 254, 106);*/ + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: specialNodes; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantshortest-path-up{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-up.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.shortest-path-up{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-up.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantshortest-path-down{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-down.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.shortest-path-down{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-down.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantshortest-path-right{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-right.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.shortest-path-right{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-right.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantshortest-path-left{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-left.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.shortest-path-left{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-left.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantStartTransparent{ + /*border: 1px solid rgb(175, 216, 248);*/ + opacity: 0.5; + background-image:url(triangletwo-right.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.startTransparent{ + /*border: 1px solid rgb(175, 216, 248);*/ + opacity: 0.5; + background-image:url(triangletwo-right.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: specialNodes; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.visitedStartNodeBlue { + /*border: 1px solid rgb(175, 216, 248);*/ + background-image:url(triangletwo-right.svg); + /*background-color: rgb(255, 254, 106);*/ + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: visitedStartNodeBlueAnimation; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.visitedStartNodePurple { + /*border: 1px solid rgb(175, 216, 248);*/ + background-image:url(triangletwo-right.svg); + /*background-color: rgb(255, 254, 106);*/ + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: visitedStartNodePurpleAnimation; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.visitedObjectNode { + background-image: url(diamond.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: visitedStartNodeBlueAnimation; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.visitedTargetNodeBlue { + background-image: url(circle.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: visitedStartNodeBlueAnimation; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.visitedTargetNodePurple { + background-image: url(circle.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: visitedStartNodePurpleAnimation; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes visitedStartNodePurpleAnimation { + 0% { + transform: scale(.3); + background-color: rgba(41, 4, 24, 0.75); + border-radius: 100%; + } + + 50% { + background-color: rgba(97, 0, 20, 0.75); + } + + 75% { + transform: scale(1.2); + background-color: rgba(216, 5, 141, 0.75) + } + + 100% { + transform: scale(1.0); + background-color: rgba(178, 67, 255, 0.75); + } +} + +@keyframes visitedStartNodeBlueAnimation { + 0% { + transform: scale(.3); + background-color: rgba(0, 0, 66, 0.75); + border-radius: 100%; + } + + 50% { + background-color: rgba(17, 104, 217, 0.75); + } + + 75% { + transform: scale(1.2); + background-color: rgba(0, 217, 159, 0.75); + } + + 100% { + transform: scale(1.0); + background-color: rgba(0, 190, 218, 0.75); + } +} + +.strikethrough { + color: rgb(185, 15, 15); + text-decoration: line-through; +} + +#algorithmDescriptor { + text-align: center; + color: #34495e; + padding: 15px 25px 15px 25px; +} + +#mainText > ul li { + display: inline-block; + list-style: none; + padding: 0 28px 0 0; + font-size: 14px; + padding: 15px 21px; + line-height: 23px; + font-weight: 700; +} + +#actualStartButton { + /*color: red;*/ + background-color: none; +} + +#mainGrid{ + position: absolute; + z-index: 1; +} + +#tutorial { + position: absolute; + z-index: 3; + background-color: rgba(255, 255, 255, 1); + width: 50%; + height: 70%; + border: 2px solid #34495e; + border-radius: 4px; + text-align: center; + float: right; + margin-left: auto; + margin-right: auto; + margin-top: auto; + margin-bottom: auto; + bottom: 0; + top: 0; + left: 0; + right: 0; +} + +#nextButton { + color: #ffffff; + background-color: #1abc9c; + position: absolute; + right: 2%; + bottom: 2%; +} + +#previousButton { + color: #ffffff; + background-color: #1abc9c; + position: absolute; + right: 12%; + bottom: 2%; +} + +#skipButton { + color: #ffffff; + background-color: #1abc9c; + position: absolute; + left: 2%; + bottom: 2%; +} + +#finishButton { + color: #ffffff; + background-color: #1abc9c; + position: absolute; + right: 2%; + bottom: 2%; +} + +#finishButton:hover, +#nextButton:hover, +#previousButton:hover, +#skipButton:hover { + background-color: #48c9b0; +} + +#tutorialCounter { + position: absolute; + right: 2%; + top: 2%; +} + +#mainTutorialImage { + width: 25%; + padding-top: 5px; +} + +#secondTutorialImage { + padding-top: 5px; +} + +#tutorial > h3 { + padding-bottom: 5px; +} + +#tutorial > h6 { + padding: 5px 20px 5px 20px; +} + +#tutorial > p { + padding: 5px 20px 5px 20px; +} + +#tutorial > ul li { + list-style: none; + padding-bottom: 5px; + padding-right: 40px; + font-size: 14px; +} + +/*#otherText > ul li { + display: inline-block; + list-style: none; + padding: 10px 50px 0 0; +}*/ + +#board{ + border-collapse:collapse; + /*position: center*/ +} + +#mainText div { + /*border: 1px solid rgb(12, 53, 71);*/ + width: 25px; + height: 25px; + display: inline-block; + position: relative; + top: 0.35em; + margin: 0 0.42em; +} + +#board { + margin-left: 30px; + margin-right: 30px; + color:#000000; +} + +/*#tutorial { + position: absolute; + color: red; + height: 50px; + width: 200px; + z-index: 2; +}*/ + +#board td{ + /*border: 1px solid rgb(175, 216, 248);*/ + width: 25px; + height: 25px; +} + +#startButtonStart { + padding-left: 20px; + padding-right: 20px; +} + +.instantvisited{ + border: 1px solid rgb(175, 216, 248); + background-color: #00bedabf; + /*background-color: rgba(178, 67, 255, 0.75);*/ +} + +.instantvisited.weight { + border: 1px solid rgb(175, 216, 248); + background-color: rgba(0, 190, 218, 0.75); + /*background-color: rgba(178, 67, 255, 0.75);*/ + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.visited{ + border: 1px solid rgb(175, 216, 248); + animation-name: visitedAnimation; + animation-duration: 1.5s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.visited.weight{ + border: 1px solid rgb(175, 216, 248); + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: visitedAnimation; + animation-duration: 1.5s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes visitedAnimation { + 0% { + transform: scale(.3); + background-color: rgba(0, 0, 66, 0.75); + border-radius: 100%; + } + + 50% { + background-color: rgba(17, 104, 217, 0.75); + } + + 75% { + transform: scale(1.2); + background-color: rgba(0, 217, 159, 0.75) + } + + 100% { + transform: scale(1.0); + background-color: rgba(0, 190, 218, 0.75); + } +} + +.wall{ + animation-name: wallAnimation; + animation-duration: 0.3s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes wallAnimation { + 0% { + transform: scale(.3); + background-color: rgb(12, 53, 71); + } + + 50% { + transform: scale(1.2); + background-color: rgb(12, 53, 71); + } + + 100% { + transform: scale(1.0); + background-color: rgb(12, 53, 71); + } +} + +.instantvisitedobject{ + border: 1px solid rgb(175, 216, 248); + background-color: rgba(178, 67, 255, 0.75); + /*background-color: rgba(0, 190, 218, 0.75);*/ +} + +.instantvisitedobject.weight{ + border: 1px solid rgb(175, 216, 248); + background-color: rgba(178, 67, 255, 0.75); + /*background-color: rgba(0, 190, 218, 0.75);*/ + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.visitedobject{ + /*background:red*/ + border: 1px solid rgb(175, 216, 248); + animation-name: visitedObjectAnimation; + animation-duration: 1.5s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.visitedobject.weight{ + /*background:red*/ + border: 1px solid rgb(175, 216, 248); + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: visitedObjectAnimation; + animation-duration: 1.5s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes visitedObjectAnimation { + 0% { + transform: scale(.3); + background-color: rgba(41, 4, 24, 0.75); + border-radius: 100%; + } + + 50% { + background-color: rgba(97, 0, 20, 0.75); + } + + 75% { + transform: scale(1.2); + background-color: rgba(216, 5, 141, 0.75) + } + + 100% { + transform: scale(1.0); + background-color: rgba(178, 67, 255, 0.75); + } +} + +.unvisited{ + border: 1px solid rgb(175, 216, 248); + background-color:white +} + +.borderlessWeight { + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: unvisitedWeightAnimation; + animation-duration: 0.3s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.unvisited.weight{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: unvisitedWeightAnimation; + animation-duration: 0.3s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes unvisitedWeightAnimation { + 0% { + transform: scale(.3); + /*background-color: rgb(12, 53, 71);*/ + } + + 50% { + transform: scale(1.2); + /*background-color: rgb(12, 53, 71);*/ + } + + 100% { + transform: scale(1.0); + /*background-color: rgb(12, 53, 71);*/ + } +} + +.unvisited.mud{ + background:brown +} + +.current{ + border: 1px solid rgb(175, 216, 248); + background-color: rgb(255, 254, 106) +} + +.object{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-image: url(diamond.svg); + /*background-color: rgb(255, 254, 106);*/ + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: specialNodes; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantobjectTransparent{ + /*border: 1px solid rgb(175, 216, 248);*/ + opacity: 0.5; + background-image: url(diamond.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.objectTransparent{ + /*border: 1px solid rgb(175, 216, 248);*/ + opacity: 0.5; + background-image: url(diamond.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: specialNodes; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.target{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-image: url(circle.svg); + /*background-color: rgb(255, 254, 106);*/ + /*background-color: rgba(232, 147, 12, 0.75);*/ + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: specialNodes; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes specialNodes { + 0% { + transform: scale(.3); + /*background-color: darkslategrey;*/ + } + + 50% { + transform: scale(1.2); + /*background-color: darkslategrey;*/ + } + + 100% { + transform: scale(1.0); + /*background-color: darkslategrey;*/ + } +} + +.instantshortest-path{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-color: rgb(255, 254, 106); +} + +.instantshortest-path.weight{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-color: rgb(255, 254, 106); + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.shortest-path{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-color: rgb(255, 254, 106); + /*background-position: center; + background-repeat: no-repeat; + background-size: contain;*/ + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.shortest-path.weight{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-color: rgb(255, 254, 106); + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes triangletwo { + 0% { + transform: scale(.6); + background-color: rgb(255, 254, 106); + } + + 50% { + transform: scale(1.2); + background-color: rgb(255, 254, 106); + } + + 100% { + transform: scale(1.0); + background-color: rgb(255, 254, 106); + } +} + +.shortest-path-unweighted{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(spaceshiptwo-up.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain +} + + +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-black.eot');*/ + /*src: url('../fonts/lato/lato-black.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-black.woff') format('woff'), url('../fonts/lato/lato-black.ttf') format('truetype'), url('../fonts/lato/lato-black.svg#latoblack') format('svg');*/ + font-weight: 900; + font-style: normal; +} +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-bold.eot');*/ + /*src: url('../fonts/lato/lato-bold.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-bold.woff') format('woff'), url('../fonts/lato/lato-bold.ttf') format('truetype'), url('../fonts/lato/lato-bold.svg#latobold') format('svg');*/ + font-weight: bold; + font-style: normal; +} +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-bolditalic.eot');*/ + /*src: url('../fonts/lato/lato-bolditalic.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-bolditalic.woff') format('woff'), url('../fonts/lato/lato-bolditalic.ttf') format('truetype'), url('../fonts/lato/lato-bolditalic.svg#latobold-italic') format('svg');*/ + font-weight: bold; + font-style: italic; +} +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-italic.eot');*/ + /*src: url('../fonts/lato/lato-italic.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-italic.woff') format('woff'), url('../fonts/lato/lato-italic.ttf') format('truetype'), url('../fonts/lato/lato-italic.svg#latoitalic') format('svg');*/ + font-weight: normal; + font-style: italic; +} +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-light.eot');*/ + /*src: url('../fonts/lato/lato-light.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-light.woff') format('woff'), url('../fonts/lato/lato-light.ttf') format('truetype'), url('../fonts/lato/lato-light.svg#latolight') format('svg');*/ + font-weight: 300; + font-style: normal; +} +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-regular.eot');*/ + /*src: url('../fonts/lato/lato-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-regular.woff') format('woff'), url('../fonts/lato/lato-regular.ttf') format('truetype'), url('../fonts/lato/lato-regular.svg#latoregular') format('svg');*/ + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: 'Flat-UI-Icons'; + /*src: url('../fonts/glyphicons/flat-ui-icons-regular.eot');*/ + /*src: url('../fonts/glyphicons/flat-ui-icons-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons/flat-ui-icons-regular.woff') format('woff'), url('../fonts/glyphicons/flat-ui-icons-regular.ttf') format('truetype'), url('../fonts/glyphicons/flat-ui-icons-regular.svg#flat-ui-icons-regular') format('svg');*/ +} +[class^="fui-"], +[class*="fui-"] { + font-family: 'Flat-UI-Icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.fui-triangle-up:before { + content: "\e600"; +} +.fui-triangle-down:before { + content: "\e601"; +} +.fui-triangle-up-small:before { + content: "\e602"; +} +.fui-triangle-down-small:before { + content: "\e603"; +} +.fui-triangle-left-large:before { + content: "\e604"; +} +.fui-triangle-right-large:before { + content: "\e605"; +} +.fui-arrow-left:before { + content: "\e606"; +} +.fui-arrow-right:before { + content: "\e607"; +} +.fui-plus:before { + content: "\e608"; +} +.fui-cross:before { + content: "\e609"; +} +.fui-check:before { + content: "\e60a"; +} +.fui-radio-unchecked:before { + content: "\e60b"; +} +.fui-radio-checked:before { + content: "\e60c"; +} +.fui-checkbox-unchecked:before { + content: "\e60d"; +} +.fui-checkbox-checked:before { + content: "\e60e"; +} +.fui-info-circle:before { + content: "\e60f"; +} +.fui-alert-circle:before { + content: "\e610"; +} +.fui-question-circle:before { + content: "\e611"; +} +.fui-check-circle:before { + content: "\e612"; +} +.fui-cross-circle:before { + content: "\e613"; +} +.fui-plus-circle:before { + content: "\e614"; +} +.fui-pause:before { + content: "\e615"; +} +.fui-play:before { + content: "\e616"; +} +.fui-volume:before { + content: "\e617"; +} +.fui-mute:before { + content: "\e618"; +} +.fui-resize:before { + content: "\e619"; +} +.fui-list:before { + content: "\e61a"; +} +.fui-list-thumbnailed:before { + content: "\e61b"; +} +.fui-list-small-thumbnails:before { + content: "\e61c"; +} +.fui-list-large-thumbnails:before { + content: "\e61d"; +} +.fui-list-numbered:before { + content: "\e61e"; +} +.fui-list-columned:before { + content: "\e61f"; +} +.fui-list-bulleted:before { + content: "\e620"; +} +.fui-window:before { + content: "\e621"; +} +.fui-windows:before { + content: "\e622"; +} +.fui-loop:before { + content: "\e623"; +} +.fui-cmd:before { + content: "\e624"; +} +.fui-mic:before { + content: "\e625"; +} +.fui-heart:before { + content: "\e626"; +} +.fui-location:before { + content: "\e627"; +} +.fui-new:before { + content: "\e628"; +} +.fui-video:before { + content: "\e629"; +} +.fui-photo:before { + content: "\e62a"; +} +.fui-time:before { + content: "\e62b"; +} +.fui-eye:before { + content: "\e62c"; +} +.fui-chat:before { + content: "\e62d"; +} +.fui-home:before { + content: "\e62e"; +} +.fui-upload:before { + content: "\e62f"; +} +.fui-search:before { + content: "\e630"; +} +.fui-user:before { + content: "\e631"; +} +.fui-mail:before { + content: "\e632"; +} +.fui-lock:before { + content: "\e633"; +} +.fui-power:before { + content: "\e634"; +} +.fui-calendar:before { + content: "\e635"; +} +.fui-gear:before { + content: "\e636"; +} +.fui-bookmark:before { + content: "\e637"; +} +.fui-exit:before { + content: "\e638"; +} +.fui-trash:before { + content: "\e639"; +} +.fui-folder:before { + content: "\e63a"; +} +.fui-bubble:before { + content: "\e63b"; +} +.fui-export:before { + content: "\e63c"; +} +.fui-calendar-solid:before { + content: "\e63d"; +} +.fui-star:before { + content: "\e63e"; +} +.fui-star-2:before { + content: "\e63f"; +} +.fui-credit-card:before { + content: "\e640"; +} +.fui-clip:before { + content: "\e641"; +} +.fui-link:before { + content: "\e642"; +} +.fui-tag:before { + content: "\e643"; +} +.fui-document:before { + content: "\e644"; +} +.fui-image:before { + content: "\e645"; +} +.fui-facebook:before { + content: "\e646"; +} +.fui-youtube:before { + content: "\e647"; +} +.fui-vimeo:before { + content: "\e648"; +} +.fui-twitter:before { + content: "\e649"; +} +.fui-spotify:before { + content: "\e64a"; +} +.fui-skype:before { + content: "\e64b"; +} +.fui-pinterest:before { + content: "\e64c"; +} +.fui-path:before { + content: "\e64d"; +} +.fui-linkedin:before { + content: "\e64e"; +} +.fui-google-plus:before { + content: "\e64f"; +} +.fui-dribbble:before { + content: "\e650"; +} +.fui-behance:before { + content: "\e651"; +} +.fui-stumbleupon:before { + content: "\e652"; +} +.fui-yelp:before { + content: "\e653"; +} +.fui-wordpress:before { + content: "\e654"; +} +.fui-windows-8:before { + content: "\e655"; +} +.fui-vine:before { + content: "\e656"; +} +.fui-tumblr:before { + content: "\e657"; +} +.fui-paypal:before { + content: "\e658"; +} +.fui-lastfm:before { + content: "\e659"; +} +.fui-instagram:before { + content: "\e65a"; +} +.fui-html5:before { + content: "\e65b"; +} +.fui-github:before { + content: "\e65c"; +} +.fui-foursquare:before { + content: "\e65d"; +} +.fui-dropbox:before { + content: "\e65e"; +} +.fui-android:before { + content: "\e65f"; +} +.fui-apple:before { + content: "\e660"; +} +body { + font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + font-weight: 400; + font-style: normal; + -webkit-font-smoothing: antialiased; + line-height: 1.15; + color: #ffffff; + background-color: #181818; + border-radius: "10px"; +} +a { + color: #61dafb; + text-decoration: none; + -webkit-transition: .25s; + transition: .25s; +} +a:hover, +a:focus { + color: #61dafb; + text-decoration: none; +} +a:focus { + outline: none; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.72222; + background-color: #ffffff; + border: 2px solid #bdc3c7; + border-radius: 6px; + -webkit-transition: all 0.25s ease-in-out; + transition: all 0.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, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + 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: normal; +} +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: 18px; + 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: #ffffff; +} +.text-primary { + color: #1abc9c; +} +a.text-primary:hover { + color: #148f77; +} +.text-warning { + color: #f1c40f; +} +a.text-warning:hover { + color: #c29d0b; +} +.text-danger { + color: #e74c3c; +} +a.text-danger:hover { + color: #d62c1a; +} +.text-success { + color: #2ecc71; +} +a.text-success:hover { + color: #25a25a; +} +.text-info { + color: #3498db; +} +a.text-info:hover { + color: #217dbb; +} +.bg-primary { + color: #ffffff; + background-color: #34495e; +} +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: 2px solid #e7e9ec; +} +ul, +ol { + margin-bottom: 15px; +} +dl { + margin-bottom: 30px; +} +dt, +dd { + line-height: 1.72222; +} +@media (min-width: 768px) { + .dl-horizontal dt { + width: 160px; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-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: normal; + margin-bottom: .4em; +} +blockquote small, +blockquote .small { + font-size: 18px; + 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; +} +sub, +sup { + font-size: 70%; +} +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: #ffffff; + background-color: #34495e; + border-radius: 4px; + box-shadow: none; +} +pre { + padding: 8px; + margin: 0 0 15px; + font-size: 13px; + line-height: 1.72222; + color: inherit; + background-color: #ffffff; + 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: #ffffff; + border: 2px solid #bdc3c7; + border-radius: 6px; + -webkit-transition: border 0.25s ease-in-out; + transition: border 0.25s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + display: block; + max-width: 100%; + height: auto; + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #16a085; +} +.thumbnail .caption { + padding: 9px; + color: #34495e; +} +.btn { + border: none; + font-size: 15px; + font-weight: normal; + line-height: 1.4; + border-radius: 4px; + padding: 10px 15px; + -webkit-font-smoothing: subpixel-antialiased; + -webkit-transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; + transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; +} +.btn:hover, +.btn:focus { + outline: none; + color: #ffffff; +} +.btn:active, +.btn.active { + outline: none; + box-shadow: none; +} +.btn:focus:active { + outline: none; +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + background-color: #bdc3c7; + color: rgba(255, 255, 255, 0.75); + opacity: 0.7; + filter: alpha(opacity=70); + cursor: not-allowed; +} +.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: #61dafb; + background-color: #000000; +} +.btn-default:hover, +.btn-default.hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #ffffff; + 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], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled.hover, +.btn-default[disabled].hover, +fieldset[disabled] .btn-default.hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #bdc3c7; + border-color: #bdc3c7; +} +.btn-default .badge { + color: #bdc3c7; + background-color: #ffffff; +} +.btn-primary { + color: #ffffff; + background-color: #1abc9c; +} +.btn-primary:hover, +.btn-primary.hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #ffffff; + 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], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled.hover, +.btn-primary[disabled].hover, +fieldset[disabled] .btn-primary.hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #bdc3c7; + border-color: #1abc9c; +} +.btn-primary .badge { + color: #1abc9c; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #3498db; +} +.btn-info:hover, +.btn-info.hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #ffffff; + 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], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled.hover, +.btn-info[disabled].hover, +fieldset[disabled] .btn-info.hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #bdc3c7; + border-color: #3498db; +} +.btn-info .badge { + color: #3498db; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #e74c3c; +} +.btn-danger:hover, +.btn-danger.hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #ffffff; + 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], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled.hover, +.btn-danger[disabled].hover, +fieldset[disabled] .btn-danger.hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #bdc3c7; + border-color: #e74c3c; +} +.btn-danger .badge { + color: #e74c3c; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #2ecc71; +} +.btn-success:hover, +.btn-success.hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #ffffff; + 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], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled.hover, +.btn-success[disabled].hover, +fieldset[disabled] .btn-success.hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #bdc3c7; + border-color: #2ecc71; +} +.btn-success .badge { + color: #2ecc71; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #f1c40f; +} +.btn-warning:hover, +.btn-warning.hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #f4d313; + border-color: #f4d313; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background: #cda70d; + border-color: #cda70d; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled.hover, +.btn-warning[disabled].hover, +fieldset[disabled] .btn-warning.hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #bdc3c7; + border-color: #f1c40f; +} +.btn-warning .badge { + color: #f1c40f; + background-color: #ffffff; +} +.btn-inverse { + color: #ffffff; + background-color: #34495e; +} +.btn-inverse:hover, +.btn-inverse.hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.open > .dropdown-toggle.btn-inverse { + color: #ffffff; + 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], +fieldset[disabled] .btn-inverse, +.btn-inverse.disabled:hover, +.btn-inverse[disabled]:hover, +fieldset[disabled] .btn-inverse:hover, +.btn-inverse.disabled.hover, +.btn-inverse[disabled].hover, +fieldset[disabled] .btn-inverse.hover, +.btn-inverse.disabled:focus, +.btn-inverse[disabled]:focus, +fieldset[disabled] .btn-inverse:focus, +.btn-inverse.disabled:active, +.btn-inverse[disabled]:active, +fieldset[disabled] .btn-inverse:active, +.btn-inverse.disabled.active, +.btn-inverse[disabled].active, +fieldset[disabled] .btn-inverse.active { + background-color: #bdc3c7; + border-color: #34495e; +} +.btn-inverse .badge { + color: #34495e; + background-color: #ffffff; +} +.btn-embossed { + box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.15); +} +.btn-embossed.active, +.btn-embossed:active { + box-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.15); +} +.btn-wide { + min-width: 140px; + padding-left: 30px; + padding-right: 30px; +} +.btn-link { + color: #16a085; +} +.btn-link:hover, +.btn-link:focus { + color: #1abc9c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #bdc3c7; + text-decoration: none; +} +.btn-hg, +.btn-group-hg > .btn { + padding: 13px 20px; + font-size: 22px; + line-height: 1.227; + border-radius: 6px; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 19px; + font-size: 17px; + line-height: 1.471; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 9px 13px; + font-size: 13px; + line-height: 1.385; + border-radius: 4px; +} +.btn-xs, +.btn-group-xs > .btn { + 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; +} +[class*="btn-social-"] { + padding: 10px 15px; + font-size: 13px; + line-height: 1.077; + border-radius: 4px; +} +.btn-social-pinterest { + color: #ffffff; + background-color: #cb2028; +} +.btn-social-pinterest:hover, +.btn-social-pinterest:focus { + background-color: #d54d53; +} +.btn-social-pinterest:active, +.btn-social-pinterest.active { + background-color: #ad1b22; +} +.btn-social-linkedin { + color: #ffffff; + background-color: #0072b5; +} +.btn-social-linkedin:hover, +.btn-social-linkedin:focus { + background-color: #338ec4; +} +.btn-social-linkedin:active, +.btn-social-linkedin.active { + background-color: #00619a; +} +.btn-social-stumbleupon { + color: #ffffff; + background-color: #ed4a13; +} +.btn-social-stumbleupon:hover, +.btn-social-stumbleupon:focus { + background-color: #f16e42; +} +.btn-social-stumbleupon:active, +.btn-social-stumbleupon.active { + background-color: #c93f10; +} +.btn-social-googleplus { + color: #ffffff; + background-color: #2d2d2d; +} +.btn-social-googleplus:hover, +.btn-social-googleplus:focus { + background-color: #575757; +} +.btn-social-googleplus:active, +.btn-social-googleplus.active { + background-color: #262626; +} +.btn-social-facebook { + color: #ffffff; + background-color: #2f4b93; +} +.btn-social-facebook:hover, +.btn-social-facebook:focus { + background-color: #596fa9; +} +.btn-social-facebook:active, +.btn-social-facebook.active { + background-color: #28407d; +} +.btn-social-twitter { + color: #ffffff; + background-color: #00bdef; +} +.btn-social-twitter:hover, +.btn-social-twitter:focus { + background-color: #33caf2; +} +.btn-social-twitter:active, +.btn-social-twitter.active { + background-color: #00a1cb; +} +.btn-group > .btn + .btn { + margin-left: 0; +} +.btn-group > .btn + .dropdown-toggle { + border-left: 2px solid rgba(52, 73, 94, 0.15); + padding: 10px 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; +} +.dropdown-toggle .caret { + margin-left: 8px; +} +.btn-group-xs > .btn + .dropdown-toggle { + padding: 6px 9px; +} +.btn-group-sm > .btn + .dropdown-toggle { + padding: 9px 13px; +} +.btn-group-lg > .btn + .dropdown-toggle { + padding: 10px 19px; +} +.btn-group-hg > .btn + .dropdown-toggle { + padding: 13px 20px; +} +.btn-xs .caret { + border-width: 6px 4px 0; + border-bottom-width: 0; +} +.btn-lg .caret { + border-width: 8px 6px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 6px 8px; +} +.dropup .btn-xs .caret { + border-width: 0 4px 6px; +} +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-weight: 400; +} +.btn-group:focus .dropdown-toggle { + outline: none; + -webkit-transition: .25s; + transition: .25s; +} +.btn-group.open .dropdown-toggle { + color: rgba(255, 255, 255, 0.75); + box-shadow: none; +} +.btn-toolbar .btn.active { + color: #ffffff; +} +.btn-toolbar .btn > [class^="fui-"] { + font-size: 16px; + margin: 0 1px; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 30px / 2; + 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: normal; + font-size: 15px; + line-height: 2.3; +} +.form-control::-moz-placeholder, +.select2-search input[type="text"]::-moz-placeholder { + color: #b2bcc5; + opacity: 1; +} +.form-control:-ms-input-placeholder, +.select2-search input[type="text"]:-ms-input-placeholder { + color: #b2bcc5; +} +.form-control::-webkit-input-placeholder, +.select2-search input[type="text"]::-webkit-input-placeholder { + color: #b2bcc5; +} +.form-control, +.select2-search input[type="text"] { + border: 2px solid #bdc3c7; + color: #34495e; + font-family: "Lato", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 1.467; + padding: 8px 12px; + height: 42px; + border-radius: 6px; + box-shadow: none; + -webkit-transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; + transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; +} +.form-group.focus .form-control, +.form-control:focus, +.form-group.focus .select2-search input[type="text"], +.select2-search input[type="text"]:focus { + border-color: #1abc9c; + outline: 0; + box-shadow: none; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control, +.select2-search input[type="text"][disabled], +.select2-search input[type="text"][readonly], +fieldset[disabled] .select2-search input[type="text"] { + background-color: #f4f6f6; + border-color: #d5dbdb; + color: #d5dbdb; + cursor: default; + opacity: 0.7; + filter: alpha(opacity=70); +} +.form-control.flat, +.select2-search input[type="text"].flat { + border-color: transparent; +} +.form-control.flat:hover, +.select2-search input[type="text"].flat:hover { + border-color: #bdc3c7; +} +.form-control.flat:focus, +.select2-search input[type="text"].flat:focus { + border-color: #1abc9c; +} +.input-sm, +.form-group-sm .form-control, +.form-group-sm .select2-search input[type="text"], +.select2-search input[type="text"] { + height: 35px; + padding: 6px 10px; + font-size: 13px; + line-height: 1.462; + border-radius: 6px; +} +select.input-sm, +select.form-group-sm .form-control, +select.form-group-sm .select2-search input[type="text"], +select.select2-search input[type="text"] { + height: 35px; + line-height: 35px; +} +textarea.input-sm, +textarea.form-group-sm .form-control, +select[multiple].input-sm, +select[multiple].form-group-sm .form-control, +textarea.form-group-sm .select2-search input[type="text"], +select[multiple].form-group-sm .select2-search input[type="text"], +textarea.select2-search input[type="text"], +select[multiple].select2-search input[type="text"] { + height: auto; +} +.input-lg, +.form-group-lg .form-control, +.form-group-lg .select2-search input[type="text"] { + height: 45px; + padding: 10px 15px; + font-size: 17px; + line-height: 1.235; + border-radius: 6px; +} +select.input-lg, +select.form-group-lg .form-control, +select.form-group-lg .select2-search input[type="text"] { + height: 45px; + line-height: 45px; +} +textarea.input-lg, +textarea.form-group-lg .form-control, +select[multiple].input-lg, +select[multiple].form-group-lg .form-control, +textarea.form-group-lg .select2-search input[type="text"], +select[multiple].form-group-lg .select2-search input[type="text"] { + height: auto; +} +.input-hg, +.form-group-hg .form-control, +.form-horizontal .form-group-hg .form-control, +.form-group-hg .select2-search input[type="text"], +.form-horizontal .form-group-hg .select2-search input[type="text"] { + height: 53px; + padding: 10px 16px; + font-size: 22px; + line-height: 1.318; + border-radius: 6px; +} +select.input-hg, +select.form-group-hg .form-control, +select.form-group-hg .select2-search input[type="text"] { + height: 53px; + line-height: 53px; +} +textarea.input-hg, +textarea.form-group-hg .form-control, +select[multiple].input-hg, +select[multiple].form-group-hg .form-control, +textarea.form-group-hg .select2-search input[type="text"], +select[multiple].form-group-hg .select2-search input[type="text"] { + height: auto; +} +.form-control-feedback { + position: absolute; + top: 2px; + right: 2px; + margin-top: 1px; + line-height: 36px; + font-size: 17px; + color: #b2bcc5; + background-color: transparent; + padding: 0 12px 0 0; + border-radius: 6px; + pointer-events: none; +} +.input-hg + .form-control-feedback, +.control-feedback-hg { + font-size: 20px; + line-height: 48px; + padding-right: 16px; + width: auto; + height: 48px; +} +.input-lg + .form-control-feedback, +.control-feedback-lg { + font-size: 18px; + line-height: 40px; + width: auto; + height: 40px; + padding-right: 15px; +} +.input-sm + .form-control-feedback, +.control-feedback-sm, +.select2-search input[type="text"] + .form-control-feedback { + line-height: 29px; + height: 29px; + width: auto; + padding-right: 10px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline { + color: #2ecc71; +} +.has-success .form-control, +.has-success .select2-search input[type="text"] { + color: #2ecc71; + border-color: #2ecc71; + box-shadow: none; +} +.has-success .form-control::-moz-placeholder, +.has-success .select2-search input[type="text"]::-moz-placeholder { + color: #2ecc71; + opacity: 1; +} +.has-success .form-control:-ms-input-placeholder, +.has-success .select2-search input[type="text"]:-ms-input-placeholder { + color: #2ecc71; +} +.has-success .form-control::-webkit-input-placeholder, +.has-success .select2-search input[type="text"]::-webkit-input-placeholder { + color: #2ecc71; +} +.has-success .form-control:focus, +.has-success .select2-search input[type="text"]:focus { + border-color: #2ecc71; + box-shadow: none; +} +.has-success .input-group-addon { + color: #2ecc71; + border-color: #2ecc71; + background-color: #ffffff; +} +.has-success .form-control-feedback { + color: #2ecc71; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline { + color: #f1c40f; +} +.has-warning .form-control, +.has-warning .select2-search input[type="text"] { + color: #f1c40f; + border-color: #f1c40f; + box-shadow: none; +} +.has-warning .form-control::-moz-placeholder, +.has-warning .select2-search input[type="text"]::-moz-placeholder { + color: #f1c40f; + opacity: 1; +} +.has-warning .form-control:-ms-input-placeholder, +.has-warning .select2-search input[type="text"]:-ms-input-placeholder { + color: #f1c40f; +} +.has-warning .form-control::-webkit-input-placeholder, +.has-warning .select2-search input[type="text"]::-webkit-input-placeholder { + color: #f1c40f; +} +.has-warning .form-control:focus, +.has-warning .select2-search input[type="text"]:focus { + border-color: #f1c40f; + box-shadow: none; +} +.has-warning .input-group-addon { + color: #f1c40f; + border-color: #f1c40f; + background-color: #ffffff; +} +.has-warning .form-control-feedback { + color: #f1c40f; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline { + color: #e74c3c; +} +.has-error .form-control, +.has-error .select2-search input[type="text"] { + color: #e74c3c; + border-color: #e74c3c; + box-shadow: none; +} +.has-error .form-control::-moz-placeholder, +.has-error .select2-search input[type="text"]::-moz-placeholder { + color: #e74c3c; + opacity: 1; +} +.has-error .form-control:-ms-input-placeholder, +.has-error .select2-search input[type="text"]:-ms-input-placeholder { + color: #e74c3c; +} +.has-error .form-control::-webkit-input-placeholder, +.has-error .select2-search input[type="text"]::-webkit-input-placeholder { + color: #e74c3c; +} +.has-error .form-control:focus, +.has-error .select2-search input[type="text"]:focus { + border-color: #e74c3c; + box-shadow: none; +} +.has-error .input-group-addon { + color: #e74c3c; + border-color: #e74c3c; + background-color: #ffffff; +} +.has-error .form-control-feedback { + color: #e74c3c; +} +.form-control[disabled] + .form-control-feedback, +.form-control[readonly] + .form-control-feedback, +fieldset[disabled] .form-control + .form-control-feedback, +.form-control.disabled + .form-control-feedback, +.select2-search input[type="text"][disabled] + .form-control-feedback, +.select2-search input[type="text"][readonly] + .form-control-feedback, +fieldset[disabled] .select2-search input[type="text"] + .form-control-feedback, +.select2-search input[type="text"].disabled + .form-control-feedback { + cursor: not-allowed; + color: #d5dbdb; + background-color: transparent; + opacity: 0.7; + filter: alpha(opacity=70); +} +.help-block { + font-size: 14px; + margin-bottom: 5px; + color: #6b7a88; +} +.form-group { + position: relative; + margin-bottom: 20px; +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 3px; + padding-bottom: 3px; + } +} +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +.form-horizontal .form-control-static { + padding-top: 6px; + padding-bottom: 6px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-hg .control-label { + font-size: 22px; + padding-top: 2px; + padding-bottom: 0; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + font-size: 17px; + padding-top: 3px; + padding-bottom: 2px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + font-size: 13px; + padding-top: 2px; + padding-bottom: 2px; + } +} +.input-group .form-control, +.input-group .select2-search input[type="text"] { + position: static; +} +.input-group-hg > .form-control, +.input-group-hg > .input-group-addon, +.input-group-hg > .input-group-btn > .btn, +.input-group-hg > .select2-search input[type="text"] { + 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, +select.input-group-hg > .select2-search input[type="text"] { + height: 53px; + line-height: 53px; +} +textarea.input-group-hg > .form-control, +textarea.input-group-hg > .input-group-addon, +textarea.input-group-hg > .input-group-btn > .btn, +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 > .select2-search input[type="text"], +select[multiple].input-group-hg > .select2-search input[type="text"] { + height: auto; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn, +.input-group-lg > .select2-search input[type="text"] { + 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, +select.input-group-lg > .select2-search input[type="text"] { + height: 45px; + line-height: 45px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +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 > .select2-search input[type="text"], +select[multiple].input-group-lg > .select2-search input[type="text"] { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn, +.input-group-sm > .select2-search input[type="text"] { + 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, +select.input-group-sm > .select2-search input[type="text"] { + height: 35px; + line-height: 35px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +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 > .select2-search input[type="text"], +select[multiple].input-group-sm > .select2-search input[type="text"] { + height: auto; +} +.input-group-addon { + padding: 10px 12px; + font-size: 15px; + color: #ffffff; + text-align: center; + background-color: #bdc3c7; + border: 2px solid #bdc3c7; + border-radius: 6px; + -webkit-transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; + transition: border 0.25s linear, color 0.25s linear, background-color 0.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), +.input-group .select2-search input[type="text"]:first-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group .select2-search input[type="text"]:last-child { + 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: #ffffff; + color: #1abc9c; +} +.form-group.focus .input-group-btn .btn-default, +.input-group.focus .input-group-btn .btn-default { + color: #ffffff; + background-color: #1abc9c; +} +.form-group.focus .input-group-btn .btn-default:hover, +.input-group.focus .input-group-btn .btn-default:hover, +.form-group.focus .input-group-btn .btn-default.hover, +.input-group.focus .input-group-btn .btn-default.hover, +.form-group.focus .input-group-btn .btn-default:focus, +.input-group.focus .input-group-btn .btn-default:focus, +.form-group.focus .input-group-btn .btn-default:active, +.input-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, +.open > .dropdown-toggle.form-group.focus .input-group-btn .btn-default, +.open > .dropdown-toggle.input-group.focus .input-group-btn .btn-default { + color: #ffffff; + background-color: #48c9b0; + border-color: #48c9b0; +} +.form-group.focus .input-group-btn .btn-default:active, +.input-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, +.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, +.input-group.focus .input-group-btn .btn-default.disabled, +.form-group.focus .input-group-btn .btn-default[disabled], +.input-group.focus .input-group-btn .btn-default[disabled], +fieldset[disabled] .form-group.focus .input-group-btn .btn-default, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default, +.form-group.focus .input-group-btn .btn-default.disabled:hover, +.input-group.focus .input-group-btn .btn-default.disabled:hover, +.form-group.focus .input-group-btn .btn-default[disabled]:hover, +.input-group.focus .input-group-btn .btn-default[disabled]:hover, +fieldset[disabled] .form-group.focus .input-group-btn .btn-default:hover, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default:hover, +.form-group.focus .input-group-btn .btn-default.disabled.hover, +.input-group.focus .input-group-btn .btn-default.disabled.hover, +.form-group.focus .input-group-btn .btn-default[disabled].hover, +.input-group.focus .input-group-btn .btn-default[disabled].hover, +fieldset[disabled] .form-group.focus .input-group-btn .btn-default.hover, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default.hover, +.form-group.focus .input-group-btn .btn-default.disabled:focus, +.input-group.focus .input-group-btn .btn-default.disabled:focus, +.form-group.focus .input-group-btn .btn-default[disabled]:focus, +.input-group.focus .input-group-btn .btn-default[disabled]:focus, +fieldset[disabled] .form-group.focus .input-group-btn .btn-default:focus, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default:focus, +.form-group.focus .input-group-btn .btn-default.disabled:active, +.input-group.focus .input-group-btn .btn-default.disabled:active, +.form-group.focus .input-group-btn .btn-default[disabled]:active, +.input-group.focus .input-group-btn .btn-default[disabled]:active, +fieldset[disabled] .form-group.focus .input-group-btn .btn-default:active, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default:active, +.form-group.focus .input-group-btn .btn-default.disabled.active, +.input-group.focus .input-group-btn .btn-default.disabled.active, +.form-group.focus .input-group-btn .btn-default[disabled].active, +.input-group.focus .input-group-btn .btn-default[disabled].active, +fieldset[disabled] .form-group.focus .input-group-btn .btn-default.active, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default.active { + background-color: #bdc3c7; + border-color: #1abc9c; +} +.form-group.focus .input-group-btn .btn-default .badge, +.input-group.focus .input-group-btn .btn-default .badge { + color: #1abc9c; + background-color: #ffffff; +} +.input-group-btn .btn { + background-color: #ffffff; + border: 2px solid #bdc3c7; + color: #bdc3c7; + line-height: 18px; + height: 42px; +} +.input-group-btn .btn-default { + color: #ffffff; + background-color: #bdc3c7; +} +.input-group-btn .btn-default:hover, +.input-group-btn .btn-default.hover, +.input-group-btn .btn-default:focus, +.input-group-btn .btn-default:active, +.input-group-btn .btn-default.active, +.open > .dropdown-toggle.input-group-btn .btn-default { + color: #ffffff; + 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], +fieldset[disabled] .input-group-btn .btn-default, +.input-group-btn .btn-default.disabled:hover, +.input-group-btn .btn-default[disabled]:hover, +fieldset[disabled] .input-group-btn .btn-default:hover, +.input-group-btn .btn-default.disabled.hover, +.input-group-btn .btn-default[disabled].hover, +fieldset[disabled] .input-group-btn .btn-default.hover, +.input-group-btn .btn-default.disabled:focus, +.input-group-btn .btn-default[disabled]:focus, +fieldset[disabled] .input-group-btn .btn-default:focus, +.input-group-btn .btn-default.disabled:active, +.input-group-btn .btn-default[disabled]:active, +fieldset[disabled] .input-group-btn .btn-default:active, +.input-group-btn .btn-default.disabled.active, +.input-group-btn .btn-default[disabled].active, +fieldset[disabled] .input-group-btn .btn-default.active { + background-color: #bdc3c7; + border-color: #bdc3c7; +} +.input-group-btn .btn-default .badge { + color: #bdc3c7; + background-color: #ffffff; +} +.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: -3px; +} +.input-group-btn:last-child > .btn { + border-left-width: 0; + margin-left: -3px; +} +.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, +.input-group-rounded .input-group-btn + .select2-search input[type="text"] { + 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, +.input-group-hg.input-group-rounded .input-group-btn + .select2-search input[type="text"] { + 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, +.input-group-lg.input-group-rounded .input-group-btn + .select2-search input[type="text"] { + 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, +.input-group-rounded .select2-search input[type="text"]:first-child { + 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, +.input-group-hg.input-group-rounded .select2-search input[type="text"]:first-child { + 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, +.input-group-lg.input-group-rounded .select2-search input[type="text"]:first-child { + border-bottom-left-radius: 25px; + border-top-left-radius: 25px; +} +.input-group-rounded .input-group-btn + .form-control, +.input-group-rounded .input-group-btn + .select2-search input[type="text"] { + 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 .icons, +.radio .icons { + color: #bdc3c7; + display: block; + height: 20px; + top: 0; + left: 0; + position: absolute; + width: 20px; + text-align: center; + line-height: 20px; + font-size: 20px; + cursor: pointer; +} +.checkbox .icons .icon-checked, +.radio .icons .icon-checked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox .icon-checked, +.radio .icon-checked, +.checkbox .icon-unchecked, +.radio .icon-unchecked { + display: inline-table; + position: absolute; + left: 0; + top: 0; + background-color: transparent; + margin: 0; + opacity: 1; + -webkit-filter: none; + filter: none; + -webkit-transition: color .25s linear; + transition: color .25s linear; +} +.checkbox .icon-checked:before, +.radio .icon-checked:before, +.checkbox .icon-unchecked:before, +.radio .icon-unchecked:before { + font-family: 'Flat-UI-Icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.checkbox .icon-checked:before { + content: "\e60e"; +} +.checkbox .icon-unchecked:before { + content: "\e60d"; +} +.radio .icon-checked:before { + content: "\e60c"; +} +.radio .icon-unchecked:before { + content: "\e60b"; +} +.checkbox input[type="checkbox"].custom-checkbox, +.radio input[type="checkbox"].custom-checkbox, +.checkbox input[type="radio"].custom-radio, +.radio input[type="radio"].custom-radio { + outline: none !important; + opacity: 0; + position: absolute; + margin: 0; + padding: 0; + left: 0; + top: 0; + width: 20px; + height: 20px; +} +.checkbox input[type="checkbox"].custom-checkbox:hover:not(.nohover):not(:disabled) + .icons .icon-unchecked, +.radio input[type="checkbox"].custom-checkbox:hover:not(.nohover):not(:disabled) + .icons .icon-unchecked, +.checkbox input[type="radio"].custom-radio:hover:not(.nohover):not(:disabled) + .icons .icon-unchecked, +.radio input[type="radio"].custom-radio:hover:not(.nohover):not(:disabled) + .icons .icon-unchecked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox input[type="checkbox"].custom-checkbox:hover:not(.nohover):not(:disabled) + .icons .icon-checked, +.radio input[type="checkbox"].custom-checkbox:hover:not(.nohover):not(:disabled) + .icons .icon-checked, +.checkbox input[type="radio"].custom-radio:hover:not(.nohover):not(:disabled) + .icons .icon-checked, +.radio input[type="radio"].custom-radio:hover:not(.nohover):not(:disabled) + .icons .icon-checked { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.checkbox input[type="checkbox"].custom-checkbox:checked + .icons, +.radio input[type="checkbox"].custom-checkbox:checked + .icons, +.checkbox input[type="radio"].custom-radio:checked + .icons, +.radio input[type="radio"].custom-radio:checked + .icons { + color: #1abc9c; +} +.checkbox input[type="checkbox"].custom-checkbox:checked + .icons .icon-unchecked, +.radio input[type="checkbox"].custom-checkbox:checked + .icons .icon-unchecked, +.checkbox input[type="radio"].custom-radio:checked + .icons .icon-unchecked, +.radio input[type="radio"].custom-radio:checked + .icons .icon-unchecked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox input[type="checkbox"].custom-checkbox:checked + .icons .icon-checked, +.radio input[type="checkbox"].custom-checkbox:checked + .icons .icon-checked, +.checkbox input[type="radio"].custom-radio:checked + .icons .icon-checked, +.radio input[type="radio"].custom-radio:checked + .icons .icon-checked { + opacity: 1; + -webkit-filter: none; + filter: none; + color: #1abc9c; +} +.checkbox input[type="checkbox"].custom-checkbox:disabled + .icons, +.radio input[type="checkbox"].custom-checkbox:disabled + .icons, +.checkbox input[type="radio"].custom-radio:disabled + .icons, +.radio input[type="radio"].custom-radio:disabled + .icons { + cursor: default; + color: #e6e8ea; +} +.checkbox input[type="checkbox"].custom-checkbox:disabled + .icons .icon-unchecked, +.radio input[type="checkbox"].custom-checkbox:disabled + .icons .icon-unchecked, +.checkbox input[type="radio"].custom-radio:disabled + .icons .icon-unchecked, +.radio input[type="radio"].custom-radio:disabled + .icons .icon-unchecked { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.checkbox input[type="checkbox"].custom-checkbox:disabled + .icons .icon-checked, +.radio input[type="checkbox"].custom-checkbox:disabled + .icons .icon-checked, +.checkbox input[type="radio"].custom-radio:disabled + .icons .icon-checked, +.radio input[type="radio"].custom-radio:disabled + .icons .icon-checked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox input[type="checkbox"].custom-checkbox:disabled:checked + .icons, +.radio input[type="checkbox"].custom-checkbox:disabled:checked + .icons, +.checkbox input[type="radio"].custom-radio:disabled:checked + .icons, +.radio input[type="radio"].custom-radio:disabled:checked + .icons { + color: #e6e8ea; +} +.checkbox input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-unchecked, +.radio input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-unchecked, +.checkbox input[type="radio"].custom-radio:disabled:checked + .icons .icon-unchecked, +.radio input[type="radio"].custom-radio:disabled:checked + .icons .icon-unchecked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-checked, +.radio input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-checked, +.checkbox input[type="radio"].custom-radio:disabled:checked + .icons .icon-checked, +.radio input[type="radio"].custom-radio:disabled:checked + .icons .icon-checked { + opacity: 1; + -webkit-filter: none; + filter: none; + color: #e6e8ea; +} +.checkbox input[type="checkbox"].custom-checkbox:indeterminate + .icons, +.radio input[type="checkbox"].custom-checkbox:indeterminate + .icons, +.checkbox input[type="radio"].custom-radio:indeterminate + .icons, +.radio input[type="radio"].custom-radio:indeterminate + .icons { + color: #bdc3c7; +} +.checkbox input[type="checkbox"].custom-checkbox:indeterminate + .icons .icon-unchecked, +.radio input[type="checkbox"].custom-checkbox:indeterminate + .icons .icon-unchecked, +.checkbox input[type="radio"].custom-radio:indeterminate + .icons .icon-unchecked, +.radio input[type="radio"].custom-radio:indeterminate + .icons .icon-unchecked { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.checkbox input[type="checkbox"].custom-checkbox:indeterminate + .icons .icon-checked, +.radio input[type="checkbox"].custom-checkbox:indeterminate + .icons .icon-checked, +.checkbox input[type="radio"].custom-radio:indeterminate + .icons .icon-checked, +.radio input[type="radio"].custom-radio:indeterminate + .icons .icon-checked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox input[type="checkbox"].custom-checkbox:indeterminate + .icons:before, +.radio input[type="checkbox"].custom-checkbox:indeterminate + .icons:before, +.checkbox input[type="radio"].custom-radio:indeterminate + .icons:before, +.radio input[type="radio"].custom-radio:indeterminate + .icons:before { + content: "\2013"; + position: absolute; + top: 0; + left: 0; + line-height: 20px; + width: 20px; + text-align: center; + color: #ffffff; + font-size: 22px; + z-index: 10; +} +.checkbox.primary input[type="checkbox"].custom-checkbox + .icons, +.radio.primary input[type="checkbox"].custom-checkbox + .icons, +.checkbox.primary input[type="radio"].custom-radio + .icons, +.radio.primary input[type="radio"].custom-radio + .icons { + color: #34495e; +} +.checkbox.primary input[type="checkbox"].custom-checkbox:checked + .icons, +.radio.primary input[type="checkbox"].custom-checkbox:checked + .icons, +.checkbox.primary input[type="radio"].custom-radio:checked + .icons, +.radio.primary input[type="radio"].custom-radio:checked + .icons { + color: #1abc9c; +} +.checkbox.primary input[type="checkbox"].custom-checkbox:disabled + .icons, +.radio.primary input[type="checkbox"].custom-checkbox:disabled + .icons, +.checkbox.primary input[type="radio"].custom-radio:disabled + .icons, +.radio.primary input[type="radio"].custom-radio:disabled + .icons { + cursor: default; + color: #bdc3c7; +} +.checkbox.primary input[type="checkbox"].custom-checkbox:disabled + .icons.checked, +.radio.primary input[type="checkbox"].custom-checkbox:disabled + .icons.checked, +.checkbox.primary input[type="radio"].custom-radio:disabled + .icons.checked, +.radio.primary input[type="radio"].custom-radio:disabled + .icons.checked { + color: #bdc3c7; +} +.checkbox.primary input[type="checkbox"].custom-checkbox:indeterminate + .icons, +.radio.primary input[type="checkbox"].custom-checkbox:indeterminate + .icons, +.checkbox.primary input[type="radio"].custom-radio:indeterminate + .icons, +.radio.primary input[type="radio"].custom-radio:indeterminate + .icons { + color: #34495e; +} +.input-group-addon .radio, +.input-group-addon .checkbox { + margin: -2px 0; + padding-left: 20px; +} +.input-group-addon .radio .icons, +.input-group-addon .checkbox .icons { + color: #e6e8ea; +} +.input-group-addon .radio input[type="checkbox"].custom-checkbox:checked + .icons, +.input-group-addon .checkbox input[type="checkbox"].custom-checkbox:checked + .icons, +.input-group-addon .radio input[type="radio"].custom-radio:checked + .icons, +.input-group-addon .checkbox input[type="radio"].custom-radio:checked + .icons { + color: #ffffff; +} +.input-group-addon .radio input[type="checkbox"].custom-checkbox:checked + .icons .icon-checked, +.input-group-addon .checkbox input[type="checkbox"].custom-checkbox:checked + .icons .icon-checked, +.input-group-addon .radio input[type="radio"].custom-radio:checked + .icons .icon-checked, +.input-group-addon .checkbox input[type="radio"].custom-radio:checked + .icons .icon-checked { + color: #ffffff; +} +.input-group-addon .radio input[type="checkbox"].custom-checkbox:disabled + .icons, +.input-group-addon .checkbox input[type="checkbox"].custom-checkbox:disabled + .icons, +.input-group-addon .radio input[type="radio"].custom-radio:disabled + .icons, +.input-group-addon .checkbox input[type="radio"].custom-radio:disabled + .icons { + color: rgba(230, 232, 234, 0.6); +} +.input-group-addon .radio input[type="checkbox"].custom-checkbox:disabled:checked + .icons, +.input-group-addon .checkbox input[type="checkbox"].custom-checkbox:disabled:checked + .icons, +.input-group-addon .radio input[type="radio"].custom-radio:disabled:checked + .icons, +.input-group-addon .checkbox input[type="radio"].custom-radio:disabled:checked + .icons { + color: rgba(230, 232, 234, 0.6); +} +.input-group-addon .radio input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-checked, +.input-group-addon .checkbox input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-checked, +.input-group-addon .radio input[type="radio"].custom-radio:disabled:checked + .icons .icon-checked, +.input-group-addon .checkbox input[type="radio"].custom-radio:disabled:checked + .icons .icon-checked { + color: rgba(230, 232, 234, 0.6); +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: 10px; +} +.form-inline .checkbox, +.form-inline .radio { + padding-left: 32px; +} +.bootstrap-tagsinput { + background-color: #ffffff; + border: 2px solid #ebedef; + border-radius: 6px; + margin-bottom: 18px; + padding: 6px 1px 1px 6px; + text-align: left; + font-size: 0; +} +.bootstrap-tagsinput .tag { + border-radius: 4px; + background-color: #ebedef; + color: #7b8996; + font-size: 13px; + cursor: pointer; + display: inline-block; + position: relative; + vertical-align: middle; + overflow: hidden; + margin: 0 7px 7px 0; + line-height: 15px; + height: 27px; + padding: 6px 21px; + -webkit-transition: .25s linear; + transition: .25s linear; +} +.bootstrap-tagsinput .tag > span { + color: #ffffff; + cursor: pointer; + font-size: 12px; + position: absolute; + right: 0; + text-align: right; + text-decoration: none; + top: 0; + width: 100%; + bottom: 0; + padding: 0 10px 0 0; + z-index: 2; + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: opacity .25s linear; + transition: opacity .25s linear; +} +.bootstrap-tagsinput .tag > span:after { + content: "\e609"; + font-family: "Flat-UI-Icons"; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + line-height: 27px; +} +.bootstrap-tagsinput .tag:hover { + background-color: #16a085; + color: #ffffff; + padding-right: 28px; + padding-left: 14px; +} +.bootstrap-tagsinput .tag:hover > span { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.bootstrap-tagsinput input[type="text"] { + font-size: 14px; + border: none; + box-shadow: none; + outline: none; + background-color: transparent; + padding: 0; + margin: 0; + width: auto !important; + max-width: inherit; + min-width: 80px; + vertical-align: top; + height: 29px; + color: #34495e; +} +.bootstrap-tagsinput input[type="text"]:first-child { + height: 23px; + margin: 3px 0 8px; +} +.tags_clear { + clear: both; + width: 100%; + height: 0; +} +.not_valid { + background: #fbd8db !important; + color: #90111a !important; + margin-left: 5px !important; +} +.tagsinput-primary { + margin-bottom: 18px; +} +.tagsinput-primary .bootstrap-tagsinput { + border-color: #1abc9c; + margin-bottom: 0; +} +.tagsinput-primary .tag { + background-color: #1abc9c; + color: #ffffff; +} +.tagsinput-primary .tag:hover { + background-color: #16a085; + color: #ffffff; +} +.bootstrap-tagsinput .twitter-typeahead { + width: auto; + vertical-align: top; +} +.bootstrap-tagsinput .twitter-typeahead .tt-input { + min-width: 200px; +} +.bootstrap-tagsinput .twitter-typeahead .tt-dropdown-menu { + width: auto; + min-width: 120px; + margin-top: 11px; +} +.twitter-typeahead { + width: 100%; +} +.twitter-typeahead .tt-dropdown-menu { + width: 100%; + margin-top: 5px; + border: 2px solid #1abc9c; + padding: 5px 0; + background-color: #ffffff; + 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, +.twitter-typeahead .tt-suggestion.tt-cursor { + cursor: pointer; + color: #fff; + background-color: #16a085; +} +.progress { + background: #ebedef; + border-radius: 32px; + height: 12px; + box-shadow: none; +} +.progress-bar { + background: #1abc9c; + line-height: 12px; + 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; + 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:hover, +.ui-slider-handle:focus { + background-color: #48c9b0; + outline: none; +} +.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: #34495e; + border-radius: 6px; + color: #ffffff; + 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: none; + border: none; + border-left: 2px solid #2c3e50; + color: #ffffff; + padding: 9px 15px 10px; + text-decoration: none; + white-space: nowrap; + border-radius: 0 6px 6px 0; + line-height: 1.313; +} +.pager li > a:hover, +.pager li > span:hover, +.pager li > a:focus, +.pager li > span:focus { + 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; + display: block; + background: #d6dbdf; + color: #ffffff; + padding: 0; + display: inline-block; + border-radius: 6px; + word-spacing: -0.5px; +} +@media (min-width: 768px) { + .pagination { + display: inline-block; + } +} +@media (max-width: 767px) { + .pagination { + height: 41px; + padding: 0 55px 0 52px; + overflow: auto; + white-space: nowrap; + border-radius: 6px; + } +} +.pagination li { + display: inline-block; + margin-right: -2px; + vertical-align: middle; + word-spacing: normal; +} +.pagination li a { + position: static; +} +.pagination li.active > a, +.pagination li.active > span { + background-color: #1abc9c; + color: #ffffff; + border-color: #dfe2e5; +} +.pagination li.active > a, +.pagination li.active > span, +.pagination li.active > a:hover, +.pagination li.active > span:hover, +.pagination li.active > a:focus, +.pagination li.active > span:focus { + background-color: #1abc9c; + color: #ffffff; + border-color: #dfe2e5; +} +.pagination li.active.previous > a, +.pagination li.active.next > a, +.pagination li.active.previous > span, +.pagination li.active.next > span { + margin: 0; +} +.pagination li.active.previous > a, +.pagination li.active.next > a, +.pagination li.active.previous > span, +.pagination li.active.next > span, +.pagination li.active.previous > a:hover, +.pagination li.active.next > a:hover, +.pagination li.active.previous > span:hover, +.pagination li.active.next > span:hover, +.pagination li.active.previous > a:focus, +.pagination li.active.next > a:focus, +.pagination li.active.previous > span:focus, +.pagination li.active.next > span:focus { + background-color: #1abc9c; + color: #ffffff; +} +.pagination li:first-child > a, +.pagination li:first-child > span { + border-radius: 6px 0 0 6px; + border-left: none; +} +.pagination li:first-child.previous + li > a, +.pagination li:first-child.previous + li > span { + border-left-width: 0; +} +.pagination li:last-child { + margin-right: 0; +} +.pagination li:last-child > a, +.pagination li:last-child > span, +.pagination li:last-child > a:hover, +.pagination li:last-child > span:hover, +.pagination li:last-child > a:focus, +.pagination li:last-child > span:focus { + border-radius: 0 6px 6px 0; +} +.pagination li.previous > a, +.pagination li.next > a, +.pagination li.previous > span, +.pagination li.next > span { + border-right: 2px solid #e4e7ea; + font-size: 16px; + min-width: auto; + padding: 12px 17px; + background-color: transparent; +} +.pagination li.next > a, +.pagination li.next > span { + border-right: none; +} +.pagination li.disabled > a, +.pagination li.disabled > span { + color: #ffffff; + background-color: rgba(255, 255, 255, 0.3); + border-right-color: #dfe2e5; + cursor: not-allowed; +} +.pagination li.disabled > a:hover, +.pagination li.disabled > span:hover, +.pagination li.disabled > a:focus, +.pagination li.disabled > span:focus, +.pagination li.disabled > a:active, +.pagination li.disabled > span:active { + background-color: rgba(255, 255, 255, 0.4); + color: #ffffff; +} +@media (max-width: 767px) { + .pagination li.next, + .pagination li.previous { + background-color: #d6dbdf; + position: absolute; + right: 0; + top: 0; + z-index: 10; + border-radius: 0 6px 6px 0; + } + .pagination li.previous { + left: 0; + right: auto; + border-radius: 6px 0 0 6px; + } +} +.pagination li > a, +.pagination li > span { + display: inline-block; + background: transparent; + border: none; + border-left: 2px solid #e4e7ea; + color: #ffffff; + font-size: 14px; + line-height: 16px; + min-height: 41px; + min-width: 41px; + outline: none; + padding: 12px 10px; + text-align: center; + -webkit-transition: 0.25s ease-out; + transition: 0.25s ease-out; +} +.pagination li > a:hover, +.pagination li > span:hover, +.pagination li > a:focus, +.pagination li > span:focus { + background-color: #1abc9c; + color: #ffffff; +} +.pagination li > a:active, +.pagination li > span:active { + background-color: #1abc9c; + color: #ffffff; +} +.pagination > .btn.previous, +.pagination > .btn.next { + margin-right: 8px; + font-size: 14px; + line-height: 1.429; + padding-left: 23px; + padding-right: 23px; +} +.pagination > .btn.previous [class*="fui-"], +.pagination > .btn.next [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; +} +@media (max-width: 767px) { + .pagination > .btn { + display: block; + margin: 0; + width: 50%; + } + .pagination > .btn:first-child { + border-bottom: 2px solid #dfe2e5; + border-radius: 6px 0 0; + } + .pagination > .btn:first-child.btn-primary { + border-bottom-color: #48c9b0; + } + .pagination > .btn:first-child.btn-danger { + border-bottom-color: #ec7063; + } + .pagination > .btn:first-child.btn-warning { + border-bottom-color: #f4d03f; + } + .pagination > .btn:first-child.btn-success { + border-bottom-color: #58d68d; + } + .pagination > .btn:first-child.btn-info { + border-bottom-color: #5dade2; + } + .pagination > .btn:first-child.btn-inverse { + border-bottom-color: #5d6d7e; + } + .pagination > .btn:first-child > [class*="fui"] { + margin-left: -20px; + } + .pagination > .btn + ul { + padding: 0; + text-align: center; + border-radius: 0 0 6px 6px; + } + .pagination > .btn + ul + .btn { + border-bottom: 2px solid #dfe2e5; + position: absolute; + right: 0; + top: 0; + border-radius: 0 6px 0 0; + } + .pagination > .btn + ul + .btn.btn-primary { + border-bottom-color: #48c9b0; + } + .pagination > .btn + ul + .btn.btn-danger { + border-bottom-color: #ec7063; + } + .pagination > .btn + ul + .btn.btn-warning { + border-bottom-color: #f4d03f; + } + .pagination > .btn + ul + .btn.btn-success { + border-bottom-color: #58d68d; + } + .pagination > .btn + ul + .btn.btn-info { + border-bottom-color: #5dade2; + } + .pagination > .btn + ul + .btn.btn-inverse { + border-bottom-color: #5d6d7e; + } + .pagination > .btn + ul + .btn > [class*="fui"] { + margin-right: -20px; + } + .pagination ul { + display: block; + } + .pagination ul > li > a { + border-radius: 0; + } +} +.pagination-danger { + background-color: #e74c3c; +} +.pagination-danger li.previous > a { + border-right-color: #ef897e; +} +.pagination-danger li > a, +.pagination-danger li > span { + border-left-color: #ef897e; +} +.pagination-danger li > a:hover, +.pagination-danger li > span:hover, +.pagination-danger li > a:focus, +.pagination-danger li > span:focus { + border-left-color: #ef897e; + background-color: #ec7063; +} +.pagination-danger li > a:active, +.pagination-danger li > span:active { + background-color: #c44133; +} +.pagination-danger li.active > a, +.pagination-danger li.active > span { + border-left-color: #ef897e; + background-color: #c44133; +} +.pagination-danger li.active > a:hover, +.pagination-danger li.active > span:hover, +.pagination-danger li.active > a:focus, +.pagination-danger li.active > span:focus { + border-left-color: #ef897e; + background-color: #ec7063; +} +.pagination-success { + background-color: #2ecc71; +} +.pagination-success li.previous > a { + border-right-color: #75dda1; +} +.pagination-success li > a, +.pagination-success li > span { + border-left-color: #75dda1; +} +.pagination-success li > a:hover, +.pagination-success li > span:hover, +.pagination-success li > a:focus, +.pagination-success li > span:focus { + border-left-color: #75dda1; + background-color: #58d68d; +} +.pagination-success li > a:active, +.pagination-success li > span:active { + background-color: #27ad60; +} +.pagination-success li.active > a, +.pagination-success li.active > span { + border-left-color: #75dda1; + background-color: #27ad60; +} +.pagination-success li.active > a:hover, +.pagination-success li.active > span:hover, +.pagination-success li.active > a:focus, +.pagination-success li.active > span:focus { + border-left-color: #75dda1; + background-color: #58d68d; +} +.pagination-warning { + background-color: #f1c40f; +} +.pagination-warning li.previous > a { + border-right-color: #f6d861; +} +.pagination-warning li > a, +.pagination-warning li > span { + border-left-color: #f6d861; +} +.pagination-warning li > a:hover, +.pagination-warning li > span:hover, +.pagination-warning li > a:focus, +.pagination-warning li > span:focus { + border-left-color: #f6d861; + background-color: #f4d313; +} +.pagination-warning li > a:active, +.pagination-warning li > span:active { + background-color: #cda70d; +} +.pagination-warning li.active > a, +.pagination-warning li.active > span { + border-left-color: #f6d861; + background-color: #cda70d; +} +.pagination-warning li.active > a:hover, +.pagination-warning li.active > span:hover, +.pagination-warning li.active > a:focus, +.pagination-warning li.active > span:focus { + border-left-color: #f6d861; + background-color: #f4d313; +} +.pagination-info { + background-color: #3498db; +} +.pagination-info li.previous > a { + border-right-color: #79bbe7; +} +.pagination-info li > a, +.pagination-info li > span { + border-left-color: #79bbe7; +} +.pagination-info li > a:hover, +.pagination-info li > span:hover, +.pagination-info li > a:focus, +.pagination-info li > span:focus { + border-left-color: #79bbe7; + background-color: #5dade2; +} +.pagination-info li > a:active, +.pagination-info li > span:active { + background-color: #2c81ba; +} +.pagination-info li.active > a, +.pagination-info li.active > span { + border-left-color: #79bbe7; + background-color: #2c81ba; +} +.pagination-info li.active > a:hover, +.pagination-info li.active > span:hover, +.pagination-info li.active > a:focus, +.pagination-info li.active > span:focus { + border-left-color: #79bbe7; + background-color: #5dade2; +} +.pagination-inverse { + background-color: #34495e; +} +.pagination-inverse li.previous > a { + border-right-color: #798795; +} +.pagination-inverse li > a, +.pagination-inverse li > span { + border-left-color: #798795; +} +.pagination-inverse li > a:hover, +.pagination-inverse li > span:hover, +.pagination-inverse li > a:focus, +.pagination-inverse li > span:focus { + border-left-color: #798795; + background-color: #415b76; +} +.pagination-inverse li > a:active, +.pagination-inverse li > span:active { + background-color: #2c3e50; +} +.pagination-inverse li.active > a, +.pagination-inverse li.active > span { + border-left-color: #798795; + background-color: #2c3e50; +} +.pagination-inverse li.active > a:hover, +.pagination-inverse li.active > span:hover, +.pagination-inverse li.active > a:focus, +.pagination-inverse li.active > span:focus { + border-left-color: #798795; + background-color: #415b76; +} +.pagination-minimal > li:first-child { + border-radius: 6px 0 0 6px; +} +.pagination-minimal > li:first-child.previous + li > a, +.pagination-minimal > li:first-child.previous + li > span { + border-left-width: 5px; +} +.pagination-minimal > li:last-child { + border-radius: 0 6px 6px 0; +} +.pagination-minimal > li.previous > a, +.pagination-minimal > li.next > a, +.pagination-minimal > li.previous > span, +.pagination-minimal > li.next > span { + background: transparent; + border: none; + border-right: 2px solid #e4e7ea; + margin: 0 9px 0 0; + padding: 12px 17px; + border-radius: 6px 0 0 6px; +} +.pagination-minimal > li.previous > a, +.pagination-minimal > li.next > a, +.pagination-minimal > li.previous > span, +.pagination-minimal > li.next > span, +.pagination-minimal > li.previous > a:hover, +.pagination-minimal > li.next > a:hover, +.pagination-minimal > li.previous > span:hover, +.pagination-minimal > li.next > span:hover, +.pagination-minimal > li.previous > a:focus, +.pagination-minimal > li.next > a:focus, +.pagination-minimal > li.previous > span:focus, +.pagination-minimal > li.next > span:focus { + border-color: #e4e7ea !important; +} +@media (max-width: 767px) { + .pagination-minimal > li.previous > a, + .pagination-minimal > li.next > a, + .pagination-minimal > li.previous > span, + .pagination-minimal > li.next > span { + margin-right: 0; + } +} +.pagination-minimal > li.next { + margin-left: 9px; +} +.pagination-minimal > li.next > a, +.pagination-minimal > li.next > span { + border-left: 2px solid #e4e7ea; + border-right: none; + margin: 0; + border-radius: 0 6px 6px 0; +} +.pagination-minimal > li.active > a, +.pagination-minimal > li.active > span { + background-color: #ffffff; + border-color: #ffffff; + border-width: 2px !important; + color: #d6dbdf; + margin: 10px 5px 9px; +} +.pagination-minimal > li.active > a:hover, +.pagination-minimal > li.active > span:hover, +.pagination-minimal > li.active > a:focus, +.pagination-minimal > li.active > span:focus { + background-color: #ffffff; + border-color: #ffffff; + color: #d6dbdf; +} +.pagination-minimal > li.active.previous, +.pagination-minimal > li.active.next { + border-color: #e4e7ea; +} +.pagination-minimal > li.active.previous { + margin-right: 6px; +} +.pagination-minimal > li > a, +.pagination-minimal > li > span { + background: #ffffff; + border: 5px solid #d6dbdf; + color: #ffffff; + line-height: 16px; + margin: 7px 2px 6px; + min-width: 0; + min-height: 16px; + padding: 0 4px; + border-radius: 50px; + background-clip: padding-box; + -webkit-transition: background 0.2s ease-out, border-color 0s ease-out, color 0.2s ease-out; + transition: background 0.2s ease-out, border-color 0s ease-out, color 0.2s ease-out; +} +.pagination-minimal > li > a:hover, +.pagination-minimal > li > span:hover, +.pagination-minimal > li > a:focus, +.pagination-minimal > li > span:focus { + background-color: #1abc9c; + border-color: #1abc9c; + color: #ffffff; + -webkit-transition: background 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out; + transition: background 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out; +} +.pagination-minimal > li > a:active, +.pagination-minimal > li > span:active { + background-color: #16a085; + border-color: #16a085; +} +.pagination-plain { + font-size: 16px; + font-weight: 700; + list-style-type: none; + margin: 0 0 20px; + padding: 0; + height: 57px; +} +.pagination-plain > li { + display: inline; +} +.pagination-plain > li.previous { + padding-right: 23px; +} +.pagination-plain > li.next { + padding-left: 20px; +} +.pagination-plain > li.active > a { + color: #d3d7da; +} +.pagination-plain > li > a { + padding: 0 5px; +} +@media (max-width: 480px) { + .pagination-plain { + overflow: hidden; + text-align: center; + } + .pagination-plain > li.previous { + display: block; + margin-bottom: 10px; + text-align: left; + width: 50%; + } + .pagination-plain > li.next { + float: right; + margin-top: -64px; + text-align: right; + width: 50%; + } +} +@media (min-width: 768px) { + .pagination-plain { + height: auto; + } +} +.pagination-dropdown ul { + min-width: 67px; + width: auto; + left: 50%; + margin-left: -34px; +} +.pagination-dropdown ul li { + display: block; + margin-right: 0; +} +.pagination-dropdown ul li:first-child > a, +.pagination-dropdown ul li:first-child > span { + border-radius: 6px 6px 0 0; +} +.pagination-dropdown ul li:last-child > a, +.pagination-dropdown ul li:last-child > span { + border-radius: 0 0 6px 6px !important; +} +.pagination-dropdown ul li > a, +.pagination-dropdown ul li > span { + border-left: none; + display: block; + float: none; + padding: 8px 10px 7px; + text-align: center; + min-height: 0; +} +.pagination-dropdown.dropup { + position: relative; +} +.tooltip { + font-size: 14px; + line-height: 1.286; + z-index: 1070; +} +.tooltip.in { + opacity: 1; + filter: alpha(opacity=100); +} +.tooltip.top { + margin-top: -5px; + padding: 9px 0; +} +.tooltip.right { + margin-left: 5px; + padding: 0 9px; +} +.tooltip.bottom { + margin-top: 5px; + padding: 9px 0; +} +.tooltip.left { + margin-left: -5px; + padding: 0 9px; +} +.tooltip-inner { + max-width: 183px; + line-height: 1.286; + padding: 12px 12px; + color: #ffffff; + background-color: #34495e; + border-radius: 6px; +} +.tooltip.top .tooltip-arrow { + margin-left: -9px; + border-width: 9px 9px 0; + border-top-color: #34495e; +} +.tooltip.right .tooltip-arrow { + margin-top: -9px; + border-width: 9px 9px 9px 0; + border-right-color: #34495e; +} +.tooltip.left .tooltip-arrow { + margin-top: -9px; + border-width: 9px 0 9px 9px; + border-left-color: #34495e; +} +.tooltip.bottom .tooltip-arrow { + margin-left: -9px; + border-width: 0 9px 9px; + border-bottom-color: #34495e; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 5px; + vertical-align: middle; + border-top: 8px solid; + border-right: 6px solid transparent; + border-left: 6px solid transparent; + -webkit-transition: border-color 0.25s, color 0.25s; + transition: border-color 0.25s, color 0.25s; +} +.dropdown-menu, +.select2-drop { + z-index: 1000; + background-color: #f3f4f5; + min-width: 220px; + border: none; + margin-top: 9px; + padding: 0; + font-size: 14px; + border-radius: 4px; + box-shadow: none; +} +.dropdown-menu .divider { + height: 2px; + margin: 3px 0; + overflow: hidden; + background-color: rgba(202, 206, 209, 0.5); +} +.dropdown-menu > li > a { + padding: 8px 16px; + line-height: 1.429; + color: #606d7a; +} +.dropdown-menu > li:first-child > a:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.dropdown-menu > li:last-child > a:first-child { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.dropdown-menu.typeahead { + display: none; + width: auto; + margin-top: 5px; + border: 2px solid #1abc9c; + padding: 5px 0; + background-color: #ffffff; + border-radius: 6px; +} +.dropdown-menu.typeahead li a { + padding: 6px 14px; +} +.dropdown-menu.typeahead li:first-child a, +.dropdown-menu.typeahead li:last-child a { + padding: 6px 14px; + border-radius: 0; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #55606c; + background-color: rgba(202, 206, 209, 0.5); +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #1abc9c; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #bdc3c7; + background-color: transparent; + cursor: not-allowed; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + padding: 8px 16px; + line-height: 1.538; + font-size: 13px; + text-transform: uppercase; + color: rgba(52, 73, 94, 0.6); +} +.dropdown-header:first-child { + margin-top: 3px; +} +.dropdown-backdrop { + z-index: 990; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-bottom: 8px solid; + margin-bottom: .25em; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + margin-top: 0; + margin-bottom: 9px; +} +.dropdown-menu-inverse { + background-color: #34495e; +} +.dropdown-menu-inverse .divider { + height: 2px; + margin: 3px 0; + overflow: hidden; + background-color: rgba(43, 60, 78, 0.5); +} +.dropdown-menu-inverse > li > a { + color: rgba(255, 255, 255, 0.85); +} +.dropdown-menu-inverse > li > a:hover, +.dropdown-menu-inverse > li > a:focus { + color: rgba(255, 255, 255, 0.85); + background-color: rgba(43, 60, 78, 0.5); +} +.dropdown-menu-inverse > .active > a, +.dropdown-menu-inverse > .active > a:hover, +.dropdown-menu-inverse > .active > a:focus { + color: rgba(255, 255, 255, 0.85); + background-color: #1abc9c; +} +.dropdown-menu-inverse > .disabled > a, +.dropdown-menu-inverse > .disabled > a:hover, +.dropdown-menu-inverse > .disabled > a:focus { + color: rgba(255, 255, 255, 0.5); +} +.dropdown-menu-inverse > .disabled > a:hover, +.dropdown-menu-inverse > .disabled > a:focus { + background-color: transparent; +} +.dropdown-menu-inverse .dropdown-header { + color: rgba(255, 255, 255, 0.4); +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.select { + position: relative; + display: inline-block; + vertical-align: top; + min-width: 220px; + width: auto; +} +.form-group .select { + width: 100%; +} +.form-group .select > .select2-choice { + width: 100%; +} +.select.form-control, +.select.select2-search input[type="text"] { + border: none; + padding: 0; + height: auto; +} +.select2-choice { + width: 100%; + display: inline-block; + position: relative; + border: none; + font-size: 15px; + font-weight: normal; + line-height: 1.4; + border-radius: 4px; + padding: 10px 39px 10px 15px; + -webkit-transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; + transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; +} +.select2-choice:hover, +.select2-choice:focus { + outline: none; +} +.select2-choice:active { + outline: none; + box-shadow: none; +} +.select2-container-disabled .select2-choice { + opacity: 0.7; + filter: alpha(opacity=70); +} +.select2-chosen { + overflow: hidden; + text-align: left; +} +.select2-arrow { + display: inline-block; + border-width: 8px 6px; + border-color: #34495e transparent; + border-style: solid; + border-bottom-style: none; + position: absolute; + right: 16px; + top: 42%; + -webkit-transform: scale(1.001); + -ms-transform: scale(1.001); + transform: scale(1.001); +} +.select2-arrow b { + display: none; +} +.btn-lg .select2-arrow { + border-top-width: 8px; + border-right-width: 6px; + border-left-width: 6px; +} +.select-default .select2-choice { + color: #ffffff; + background-color: #bdc3c7; +} +.select-default .select2-choice:hover, +.select-default .select2-choice.hover, +.select-default .select2-choice:focus, +.select-default .select2-choice:active { + color: #ffffff; + background-color: #cacfd2; + border-color: #cacfd2; +} +.select-default .select2-choice:active { + background: #a1a6a9; + border-color: #a1a6a9; +} +.select2-container-disabled.select-default .select2-choice, +.select2-container-disabled.select-default .select2-choice:hover, +.select2-container-disabled.select-default .select2-choice:focus, +.select2-container-disabled.select-default .select2-choice:active { + background-color: #bdc3c7; + border-color: #bdc3c7; +} +.select-default .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-primary .select2-choice { + color: #ffffff; + background-color: #1abc9c; +} +.select-primary .select2-choice:hover, +.select-primary .select2-choice.hover, +.select-primary .select2-choice:focus, +.select-primary .select2-choice:active { + color: #ffffff; + background-color: #48c9b0; + border-color: #48c9b0; +} +.select-primary .select2-choice:active { + background: #16a085; + border-color: #16a085; +} +.select2-container-disabled.select-primary .select2-choice, +.select2-container-disabled.select-primary .select2-choice:hover, +.select2-container-disabled.select-primary .select2-choice:focus, +.select2-container-disabled.select-primary .select2-choice:active { + background-color: #bdc3c7; + border-color: #1abc9c; +} +.select-primary .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-info .select2-choice { + color: #ffffff; + background-color: #3498db; +} +.select-info .select2-choice:hover, +.select-info .select2-choice.hover, +.select-info .select2-choice:focus, +.select-info .select2-choice:active { + color: #ffffff; + background-color: #5dade2; + border-color: #5dade2; +} +.select-info .select2-choice:active { + background: #2c81ba; + border-color: #2c81ba; +} +.select2-container-disabled.select-info .select2-choice, +.select2-container-disabled.select-info .select2-choice:hover, +.select2-container-disabled.select-info .select2-choice:focus, +.select2-container-disabled.select-info .select2-choice:active { + background-color: #bdc3c7; + border-color: #3498db; +} +.select-info .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-danger .select2-choice { + color: #ffffff; + background-color: #e74c3c; +} +.select-danger .select2-choice:hover, +.select-danger .select2-choice.hover, +.select-danger .select2-choice:focus, +.select-danger .select2-choice:active { + color: #ffffff; + background-color: #ec7063; + border-color: #ec7063; +} +.select-danger .select2-choice:active { + background: #c44133; + border-color: #c44133; +} +.select2-container-disabled.select-danger .select2-choice, +.select2-container-disabled.select-danger .select2-choice:hover, +.select2-container-disabled.select-danger .select2-choice:focus, +.select2-container-disabled.select-danger .select2-choice:active { + background-color: #bdc3c7; + border-color: #e74c3c; +} +.select-danger .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-success .select2-choice { + color: #ffffff; + background-color: #2ecc71; +} +.select-success .select2-choice:hover, +.select-success .select2-choice.hover, +.select-success .select2-choice:focus, +.select-success .select2-choice:active { + color: #ffffff; + background-color: #58d68d; + border-color: #58d68d; +} +.select-success .select2-choice:active { + background: #27ad60; + border-color: #27ad60; +} +.select2-container-disabled.select-success .select2-choice, +.select2-container-disabled.select-success .select2-choice:hover, +.select2-container-disabled.select-success .select2-choice:focus, +.select2-container-disabled.select-success .select2-choice:active { + background-color: #bdc3c7; + border-color: #2ecc71; +} +.select-success .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-warning .select2-choice { + color: #ffffff; + background-color: #f1c40f; +} +.select-warning .select2-choice:hover, +.select-warning .select2-choice.hover, +.select-warning .select2-choice:focus, +.select-warning .select2-choice:active { + color: #ffffff; + background-color: #f4d313; + border-color: #f4d313; +} +.select-warning .select2-choice:active { + background: #cda70d; + border-color: #cda70d; +} +.select2-container-disabled.select-warning .select2-choice, +.select2-container-disabled.select-warning .select2-choice:hover, +.select2-container-disabled.select-warning .select2-choice:focus, +.select2-container-disabled.select-warning .select2-choice:active { + background-color: #bdc3c7; + border-color: #f1c40f; +} +.select-warning .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-inverse .select2-choice { + color: #ffffff; + background-color: #34495e; +} +.select-inverse .select2-choice:hover, +.select-inverse .select2-choice.hover, +.select-inverse .select2-choice:focus, +.select-inverse .select2-choice:active { + color: #ffffff; + background-color: #415b76; + border-color: #415b76; +} +.select-inverse .select2-choice:active { + background: #2c3e50; + border-color: #2c3e50; +} +.select2-container-disabled.select-inverse .select2-choice, +.select2-container-disabled.select-inverse .select2-choice:hover, +.select2-container-disabled.select-inverse .select2-choice:focus, +.select2-container-disabled.select-inverse .select2-choice:active { + background-color: #bdc3c7; + border-color: #34495e; +} +.select-inverse .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select2-container.select-hg > .select2-choice { + padding: 13px 20px; + font-size: 22px; + line-height: 1.227; + border-radius: 6px; + padding-right: 49px; + min-height: 53px; +} +.select2-container.select-hg > .select2-choice .filter-option { + left: 20px; + right: 40px; + top: 13px; +} +.select2-container.select-hg > .select2-choice .select2-arrow { + right: 20px; +} +.select2-container.select-hg > .select2-choice > [class^="fui-"] { + top: 2px; +} +.select2-container.select-lg > .select2-choice { + padding: 10px 19px; + font-size: 17px; + line-height: 1.471; + border-radius: 6px; + padding-right: 47px; + min-height: 45px; +} +.select2-container.select-lg > .select2-choice .filter-option { + left: 18px; + right: 38px; +} +.select2-container.select-sm > .select2-choice { + padding: 9px 13px; + font-size: 13px; + line-height: 1.385; + border-radius: 4px; + padding-right: 35px; + min-height: 36px; +} +.select2-container.select-sm > .select2-choice .filter-option { + left: 13px; + right: 33px; +} +.select2-container.select-sm > .select2-choice .select2-arrow { + right: 13px; +} +.multiselect { + position: relative; + display: inline-block; + vertical-align: top; + min-width: 220px; + background-color: #ffffff; + border-radius: 6px; + text-align: left; + font-size: 0; + width: auto; + max-width: none; +} +.form-group .multiselect { + width: 100%; +} +.form-group .multiselect > .select2-choice { + width: 100%; +} +.multiselect.form-control, +.multiselect.select2-search input[type="text"] { + height: auto; + padding: 6px 1px 1px 6px; + border: 2px solid #ebedef; +} +.select2-choices { + margin: 0; + padding: 0; + position: relative; + cursor: text; + overflow: hidden; + min-height: 26px; +} +.select2-choices li { + float: left; + list-style: none; +} +.select2-search-choice { + border-radius: 4px; + color: #ffffff; + font-size: 13px; + cursor: pointer; + display: inline-block; + position: relative; + vertical-align: middle; + overflow: hidden; + margin: 0 5px 4px 0; + line-height: 15px; + height: 27px; + padding: 6px 21px; + -webkit-transition: .25s linear; + transition: .25s linear; +} +.select2-search-choice:hover { + padding-right: 28px; + padding-left: 14px; + color: #ffffff; +} +.select2-search-choice:hover .select2-search-choice-close { + opacity: 1; + -webkit-filter: none; + filter: none; + color: inherit; +} +.select2-search-choice .select2-search-choice-close { + color: #ffffff; + cursor: pointer; + font-size: 12px; + position: absolute; + right: 0; + text-align: right; + text-decoration: none; + top: 0; + width: 100%; + bottom: 0; + padding-right: 10px; + z-index: 2; + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: opacity .25s linear; + transition: opacity .25s linear; +} +.select2-search-choice .select2-search-choice-close:after { + content: "\e609"; + font-family: "Flat-UI-Icons"; + line-height: 27px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.select2-search-field input[type="text"] { + color: #34495e; + font-size: 14px; + border: none; + box-shadow: none; + outline: none; + background-color: transparent; + padding: 0; + margin: 0; + width: auto; + max-width: inherit; + min-width: 80px; + vertical-align: top; + height: 29px; +} +.select2-search-field:first-child input[type="text"] { + height: 23px; + margin: 3px 0 5px; +} +.select2-container-multi.multiselect-default { + border-color: #bdc3c7; +} +.select2-container-multi.multiselect-default .select2-search-choice { + background-color: #bdc3c7; +} +.select2-container-multi.multiselect-default .select2-search-choice:hover { + background-color: #cacfd2; +} +.select2-container-multi.multiselect-primary { + border-color: #1abc9c; +} +.select2-container-multi.multiselect-primary .select2-search-choice { + background-color: #1abc9c; +} +.select2-container-multi.multiselect-primary .select2-search-choice:hover { + background-color: #48c9b0; +} +.select2-container-multi.multiselect-info { + border-color: #3498db; +} +.select2-container-multi.multiselect-info .select2-search-choice { + background-color: #3498db; +} +.select2-container-multi.multiselect-info .select2-search-choice:hover { + background-color: #5dade2; +} +.select2-container-multi.multiselect-danger { + border-color: #e74c3c; +} +.select2-container-multi.multiselect-danger .select2-search-choice { + background-color: #e74c3c; +} +.select2-container-multi.multiselect-danger .select2-search-choice:hover { + background-color: #ec7063; +} +.select2-container-multi.multiselect-success { + border-color: #2ecc71; +} +.select2-container-multi.multiselect-success .select2-search-choice { + background-color: #2ecc71; +} +.select2-container-multi.multiselect-success .select2-search-choice:hover { + background-color: #58d68d; +} +.select2-container-multi.multiselect-warning { + border-color: #f1c40f; +} +.select2-container-multi.multiselect-warning .select2-search-choice { + background-color: #f1c40f; +} +.select2-container-multi.multiselect-warning .select2-search-choice:hover { + background-color: #f4d313; +} +.select2-container-multi.multiselect-inverse { + border-color: #34495e; +} +.select2-container-multi.multiselect-inverse .select2-search-choice { + background-color: #34495e; +} +.select2-container-multi.multiselect-inverse .select2-search-choice:hover { + background-color: #415b76; +} +.select2-drop { + min-width: 220px; + margin-top: 9px; + visibility: visible; + opacity: 1; + -webkit-filter: none; + filter: none; + border-radius: 4px; + font-size: 14px; + position: absolute; + z-index: 9999; + top: 100%; + -webkit-transition: none; + transition: none; +} +.select2-drop.select2-drop-above { + margin-top: -9px; +} +.select2-drop.select2-drop-auto-width { + width: auto; +} +.select2-drop.show-select-search .select2-search { + display: block; +} +.select2-drop.show-select-search .select2-search + .select2-results > li:first-child .select2-result-label { + border-radius: 0; +} +.select2-drop .select2-results { + padding: 0; + margin: 0; + list-style: none; +} +.select2-drop .select2-results > li:first-child > .select2-result-label { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.select2-drop .select2-results > li:last-child > .select2-result-label { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.select2-drop .select2-result-sub { + padding: 0; + margin: 0; + list-style: none; +} +.select2-drop .select2-result-sub > li:last-child > .select2-result-label { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.select2-drop .select2-no-results { + padding: 8px 15px; +} +.select2-drop .select2-result-label { + line-height: 1.429; + padding: 8px 16px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transition: background-color 0.25s, color 0.25s; + transition: background-color 0.25s, color 0.25s; +} +.select2-drop .select2-result-selectable .select2-result-label { + color: rgba(52, 73, 94, 0.85); + cursor: pointer; +} +.select2-drop .select2-result-selectable .select2-result-label:focus, +.select2-drop .select2-result-selectable .select2-result-label:hover, +.select2-drop .select2-result-selectable .select2-result-label:active { + background-color: #e1e4e7; + color: inherit; + outline: none; +} +.select2-drop .select2-disabled { + cursor: default; + color: rgba(52, 73, 94, 0.95); + opacity: 0.4; + filter: alpha(opacity=40); +} +.select2-drop .select2-disabled:focus, +.select2-drop .select2-disabled:hover, +.select2-drop .select2-disabled:active { + background: none !important; +} +.select2-drop .select2-highlighted > .select2-result-label { + background: #1abc9c; + color: #ffffff; +} +.select2-drop .select2-result-with-children > .select2-result-label { + font-size: 13px; + text-transform: uppercase; + color: rgba(52, 73, 94, 0.6); + margin-top: 5px; +} +.select2-drop .select2-result-with-children + .select2-result-with-children > .select2-result-label { + margin-top: 11px; +} +.select2-results { + max-height: 200px; + position: relative; + overflow-x: hidden; + overflow-y: auto; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +.select2-search { + padding: 8px 6px; + width: 100%; + display: none; +} +.select2-search input[type="text"] { + width: 100%; + height: auto !important; +} +.select-inverse-dropdown { + background-color: #34495e; + color: rgba(255, 255, 255, 0.75); +} +.select-inverse-dropdown .select2-results .select2-result-label { + color: #ffffff; +} +.select-inverse-dropdown .select2-results .select2-result-label:focus, +.select-inverse-dropdown .select2-results .select2-result-label:hover, +.select-inverse-dropdown .select2-results .select2-result-label:active { + background: #2c3e50; +} +.select-inverse-dropdown .select2-results.select2-disabled .select2-result-label:hover { + color: #ffffff; +} +.select-inverse-dropdown .select2-result-with-children > .select2-result-label { + color: rgba(255, 255, 255, 0.6); +} +.select-inverse-dropdown .select2-result-with-children > .select2-result-label:hover { + color: #ffffff; + background: none !important; +} +.select2-drop-multi { + border-radius: 6px; +} +.select2-drop-multi .select2-results { + padding: 2px 0; +} +.select2-drop-multi .select2-result { + padding: 2px 4px; +} +.select2-drop-multi .select2-result-label { + border-radius: 4px; +} +.select2-drop-multi .select2-selected { + display: none; +} +.select2-offscreen, +.select2-offscreen:focus { + clip: rect(0 0 0 0) !important; + width: 1px !important; + height: 1px !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; + overflow: hidden !important; + position: absolute !important; + outline: 0 !important; + left: 0 !important; + top: 0 !important; +} +.select2-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.select2-offscreen, +.select2-offscreen:focus { + clip: rect(0 0 0 0) !important; + width: 1px !important; + height: 1px !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; + overflow: hidden !important; + position: absolute !important; + outline: 0 !important; + left: 0 !important; + top: 0 !important; +} +.select2-display-none { + display: none; +} +.select2-measure-scrollbar { + position: absolute; + top: -10000px; + left: -10000px; + width: 100px; + height: 100px; + overflow: scroll; +} +.select2-drop-mask { + border: 0; + margin: 0; + padding: 0; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + z-index: 9998; + /* styles required for IE to work */ + background-color: #fff; + opacity: 0; + filter: alpha(opacity=0); +} +.tile { + background-color: #eff0f2; + border-radius: 6px; + padding: 14px; + margin-bottom: 20px; + position: relative; + text-align: center; +} +.tile .tile-hot-ribbon { + display: block; + 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; +} +.navbar { + font-size: 16px; + min-height: 53px; + margin-bottom: 30px; + border: none; + border-radius: 0px; +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + box-shadow: none; + padding-right: 21px; + padding-left: 21px; +} +.navbar-collapse .navbar-form:first-child { + border: none; +} +@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-collapse .navbar-nav.navbar-right:last-child > .dropdown:last-child > a { + border-radius: 0 6px 6px 0; + } + .navbar-fixed-top .navbar-collapse .navbar-form.navbar-right:last-child, + .navbar-fixed-bottom .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; + } +} +.navbar .container, +.navbar .container-fluid { + padding-left: 21px; + padding-right: 21px; +} +.navbar .container > .navbar-header, +.navbar .container-fluid > .navbar-header, +.navbar .container > .navbar-collapse, +.navbar .container-fluid > .navbar-collapse { + margin-right: -21px; + margin-left: -21px; +} +@media (min-width: 768px) { + .navbar .container > .navbar-header, + .navbar .container-fluid > .navbar-header, + .navbar .container > .navbar-collapse, + .navbar .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0; + border-radius: 0; +} +.navbar-fixed-top, +.navbar-fixed-bottom { + 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: 20px; + line-height: 1.042; + height: 53px; + 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: #34495e; + margin: 0 0 0 21px; + padding: 0 21px; + height: 53px; + line-height: 53px; +} +.navbar-toggle:before { + color: #16a085; + content: "\e61a"; + font-family: "Flat-UI-Icons"; + font-size: 22px; + font-style: normal; + font-weight: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-transition: color .25s linear; + transition: color .25s linear; +} +.navbar-toggle:hover, +.navbar-toggle:focus { + outline: none; +} +.navbar-toggle:hover:before, +.navbar-toggle:focus:before { + color: #1abc9c; +} +.navbar-toggle .icon-bar { + display: none; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 0; +} +.navbar-nav > li > a { + font-size: 14px; + padding: 15px 21px; + line-height: 23px; + font-weight: 700; +} +.navbar-nav > li > a:hover, +.navbar-nav > li > a:focus, +.navbar-nav .open > a:focus, +.navbar-nav .open > a:hover { + background-color: transparent; +} +.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 > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + 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; +} +textarea.navbar-input, +select[multiple].navbar-input { + height: auto; +} +.navbar-form { + 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 { + margin: 3px -21px; + width: auto; + } +} +.navbar-form .form-control, +.navbar-form .input-group-addon, +.navbar-form .btn, +.navbar-form .select2-search input[type="text"] { + height: 35px; + padding: 5px 10px; + font-size: 13px; + line-height: 1.4; + border-radius: 6px; +} +select.navbar-form .form-control, +select.navbar-form .input-group-addon, +select.navbar-form .btn, +select.navbar-form .select2-search input[type="text"] { + height: 35px; + line-height: 35px; +} +textarea.navbar-form .form-control, +textarea.navbar-form .input-group-addon, +textarea.navbar-form .btn, +select[multiple].navbar-form .form-control, +select[multiple].navbar-form .input-group-addon, +select[multiple].navbar-form .btn, +textarea.navbar-form .select2-search input[type="text"], +select[multiple].navbar-form .select2-search input[type="text"] { + height: auto; +} +.navbar-form .btn { + margin: 0; +} +.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), +.navbar-form .input-group .select2-search input[type="text"]:first-child { + 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:last-child > .btn, +.navbar-form .input-group-btn:last-child > .dropdown-toggle, +.navbar-form .input-group-btn:first-child > .btn:not(:first-child), +.navbar-form .input-group .select2-search input[type="text"]:last-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.navbar-form .form-control, +.navbar-form .select2-search input[type="text"] { + font-size: 15px; + border-radius: 5px; + display: table-cell; +} +.navbar-form .form-group ~ .btn { + font-size: 15px; + border-radius: 5px; + margin-left: 5px; +} +.navbar-form .form-group + .btn { + margin-right: 5px; +} +@media (min-width: 768px) { + .navbar-form .input-group { + width: 195px; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 7px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } + .navbar-form .form-group + .btn { + margin-left: 0; + } +} +.navbar-nav > li > .dropdown-menu { + min-width: 100%; + margin-top: 9px; + border-radius: 4px; +} +@media (max-width: 767px) { + .navbar-nav > li.open > .dropdown-menu { + margin-top: 0 !important; + } +} +.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: #34495e; + 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-unread, +.navbar-new { + font-family: "Lato", Helvetica, Arial, sans-serif; + background-color: #1abc9c; + border-radius: 50%; + color: #ffffff; + 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-unread, + .navbar-new { + position: static; + float: right; + margin: 0 0 0 10px; + } +} +.active .navbar-unread, +.active .navbar-new { + background-color: #ffffff; + 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: #34495e; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #1abc9c; + background-color: transparent; +} +.navbar-default .navbar-toggle:before { + color: #34495e; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: transparent; +} +.navbar-default .navbar-toggle:hover:before, +.navbar-default .navbar-toggle:focus:before { + color: #1abc9c; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e5e9ea; + border-width: 2px; +} +.navbar-default .navbar-nav > li > a { + color: #34495e; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #1abc9c; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #1abc9c; + background-color: transparent; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} +.navbar-default .navbar-nav > .dropdown > a .caret { + border-top-color: #34495e; + border-bottom-color: #34495e; +} +.navbar-default .navbar-nav > .active > a .caret { + border-top-color: #1abc9c; + border-bottom-color: #1abc9c; +} +.navbar-default .navbar-nav > .dropdown > a:hover .caret, +.navbar-default .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #1abc9c; + border-bottom-color: #1abc9c; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + background-color: transparent; + color: #1abc9c; +} +.navbar-default .navbar-nav > .open > a .caret, +.navbar-default .navbar-nav > .open > a:hover .caret, +.navbar-default .navbar-nav > .open > a:focus .caret { + border-top-color: #1abc9c; + border-bottom-color: #1abc9c; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #34495e; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #1abc9c; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #1abc9c; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} +.navbar-default .navbar-form .form-control, +.navbar-default .navbar-form .select2-search input[type="text"] { + border-color: transparent; +} +.navbar-default .navbar-form .form-control::-moz-placeholder, +.navbar-default .navbar-form .select2-search input[type="text"]::-moz-placeholder { + color: #aeb6bf; + opacity: 1; +} +.navbar-default .navbar-form .form-control:-ms-input-placeholder, +.navbar-default .navbar-form .select2-search input[type="text"]:-ms-input-placeholder { + color: #aeb6bf; +} +.navbar-default .navbar-form .form-control::-webkit-input-placeholder, +.navbar-default .navbar-form .select2-search input[type="text"]::-webkit-input-placeholder { + color: #aeb6bf; +} +.navbar-default .navbar-form .form-control:focus, +.navbar-default .navbar-form .select2-search input[type="text"]: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, +.navbar-default .navbar-form .input-group.focus .select2-search input[type="text"] { + border-color: #1abc9c; + color: #1abc9c; +} +.navbar-default .navbar-text { + color: #34495e; +} +.navbar-default .navbar-link { + color: #34495e; +} +.navbar-default .navbar-link:hover { + color: #1abc9c; +} +.navbar-default .btn-link { + color: #34495e; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #1abc9c; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #cccccc; +} +.navbar-inverse { + background-color: #000000; +} +.navbar-inverse .navbar-brand { + color: #ffffff; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #1abc9c; + background-color: transparent; +} +.navbar-inverse .navbar-toggle:before { + color: #ffffff; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: transparent; +} +.navbar-inverse .navbar-toggle:hover:before, +.navbar-inverse .navbar-toggle:focus:before { + color: #1abc9c; +} +.navbar-inverse .navbar-collapse { + border-color: #2f4154; + border-width: 2px; +} +.navbar-inverse .navbar-nav > li > a { + color: #ffffff; +} + +/*.navbar-inverse .navbar-nav > li.disabledA > a { + color: red; +}*/ + +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #1abc9c; + background-color: transparent; +} + +.navbar-inverse .navbar-nav > li.disabledA > a:hover { + color: rgb(185, 15, 15); + background-color: transparent; +} + +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #1abc9c; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .dropdown > a:hover .caret, +.navbar-inverse .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #1abc9c; + border-bottom-color: #1abc9c; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #61dafb; + color: #ffffff; + border-left-color: transparent; +} +.navbar-inverse .navbar-nav > .open > a .caret, +.navbar-inverse .navbar-nav > .open > a:hover .caret, +.navbar-inverse .navbar-nav > .open > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-inverse .navbar-nav > .dropdown > a .caret { + border-top-color: #4b6075; + border-bottom-color: #4b6075; +} +.navbar-inverse .navbar-nav > .open > .dropdown-menu { + background-color: #000000; + 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:hover, +.navbar-inverse .navbar-nav > .open > .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: #61dafb; +} + +.navbar-inverse .navbar-nav > .open > .dropdown-menu > li.disabledA > a:hover { + color: #ffffff; + background-color: rgb(185, 15, 15); +} + +.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: #ffffff; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #1abc9c; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #1abc9c; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } + .navbar-inverse .navbar-nav .dropdown-menu .divider { + background-color: #2f4154; + } +} +.navbar-inverse .navbar-form .form-control, +.navbar-inverse .navbar-form .select2-search input[type="text"] { + color: #536a81; + border-color: transparent; + background-color: #293a4a; +} +.navbar-inverse .navbar-form .form-control::-moz-placeholder, +.navbar-inverse .navbar-form .select2-search input[type="text"]::-moz-placeholder { + color: #536a81; + opacity: 1; +} +.navbar-inverse .navbar-form .form-control:-ms-input-placeholder, +.navbar-inverse .navbar-form .select2-search input[type="text"]:-ms-input-placeholder { + color: #536a81; +} +.navbar-inverse .navbar-form .form-control::-webkit-input-placeholder, +.navbar-inverse .navbar-form .select2-search input[type="text"]::-webkit-input-placeholder { + color: #536a81; +} +.navbar-inverse .navbar-form .form-control:focus, +.navbar-inverse .navbar-form .select2-search input[type="text"]:focus { + border-color: #1abc9c; + color: #1abc9c; +} +.navbar-inverse .navbar-form .btn { + color: #ffffff; + background-color: #1abc9c; +} +.navbar-inverse .navbar-form .btn:hover, +.navbar-inverse .navbar-form .btn.hover, +.navbar-inverse .navbar-form .btn:focus, +.navbar-inverse .navbar-form .btn:active, +.navbar-inverse .navbar-form .btn.active, +.open > .dropdown-toggle.navbar-inverse .navbar-form .btn { + color: #ffffff; + 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], +fieldset[disabled] .navbar-inverse .navbar-form .btn, +.navbar-inverse .navbar-form .btn.disabled:hover, +.navbar-inverse .navbar-form .btn[disabled]:hover, +fieldset[disabled] .navbar-inverse .navbar-form .btn:hover, +.navbar-inverse .navbar-form .btn.disabled.hover, +.navbar-inverse .navbar-form .btn[disabled].hover, +fieldset[disabled] .navbar-inverse .navbar-form .btn.hover, +.navbar-inverse .navbar-form .btn.disabled:focus, +.navbar-inverse .navbar-form .btn[disabled]:focus, +fieldset[disabled] .navbar-inverse .navbar-form .btn:focus, +.navbar-inverse .navbar-form .btn.disabled:active, +.navbar-inverse .navbar-form .btn[disabled]:active, +fieldset[disabled] .navbar-inverse .navbar-form .btn:active, +.navbar-inverse .navbar-form .btn.disabled.active, +.navbar-inverse .navbar-form .btn[disabled].active, +fieldset[disabled] .navbar-inverse .navbar-form .btn.active { + background-color: #bdc3c7; + border-color: #1abc9c; +} +.navbar-inverse .navbar-form .btn .badge { + color: #1abc9c; + background-color: #ffffff; +} +.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, +.navbar-inverse .navbar-form .input-group.focus .select2-search input[type="text"] { + 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: #ffffff; +} +.navbar-inverse .navbar-text a { + color: #ffffff; +} +.navbar-inverse .navbar-text a:hover, +.navbar-inverse .navbar-text a:focus { + color: #1abc9c; +} +.navbar-inverse .navbar-btn { + color: #61dafb; + background-color: #181818; +} +.navbar-inverse .navbar-btn:hover, +.navbar-inverse .navbar-btn.hover, +.navbar-inverse .navbar-btn:focus, +.navbar-inverse .navbar-btn:active, +.navbar-inverse .navbar-btn.active, +.open > .dropdown-toggle.navbar-inverse .navbar-btn { + color: #ffffff; + 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], +fieldset[disabled] .navbar-inverse .navbar-btn, +.navbar-inverse .navbar-btn.disabled:hover, +.navbar-inverse .navbar-btn[disabled]:hover, +fieldset[disabled] .navbar-inverse .navbar-btn:hover, +.navbar-inverse .navbar-btn.disabled.hover, +.navbar-inverse .navbar-btn[disabled].hover, +fieldset[disabled] .navbar-inverse .navbar-btn.hover, +.navbar-inverse .navbar-btn.disabled:focus, +.navbar-inverse .navbar-btn[disabled]:focus, +fieldset[disabled] .navbar-inverse .navbar-btn:focus, +.navbar-inverse .navbar-btn.disabled:active, +.navbar-inverse .navbar-btn[disabled]:active, +fieldset[disabled] .navbar-inverse .navbar-btn:active, +.navbar-inverse .navbar-btn.disabled.active, +.navbar-inverse .navbar-btn[disabled].active, +fieldset[disabled] .navbar-inverse .navbar-btn.active { + background-color: #bdc3c7; + border-color: #1abc9c; +} +.navbar-inverse .navbar-btn .badge { + color: #1abc9c; + background-color: #ffffff; +} +@media (min-width: 768px) { + .navbar-embossed > .navbar-collapse { + border-radius: 6px; + box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.15); + } + .navbar-embossed.navbar-inverse .navbar-nav .active > a, + .navbar-embossed.navbar-inverse .navbar-nav .open > a { + box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.15); + } +} +.navbar-lg { + min-height: 76px; +} +.navbar-lg .navbar-brand { + line-height: 1; + height: 76px; + 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; +} +.bootstrap-switch { + font-size: 15px; + line-height: 29px; + display: inline-block; + cursor: pointer; + border-radius: 30px; + position: relative; + text-align: left; + overflow: hidden; + vertical-align: middle; + width: 80px; + height: 29px; + -webkit-mask-box-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgODAgMjkiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDgwIDI5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGQ9Ik04MCwxNC41YzAsOC02LjUsMTQuNS0xNC41LDE0LjVoLTUxQzYuNSwyOSwwLDIyLjUsMCwxNC41bDAsMEMwLDYuNSw2LjUsMCwxNC41LDBoNTFDNzMuNSwwLDgwLDYuNSw4MCwxNC41TDgwLDE0LjV6Ii8+DQo8L3N2Zz4NCg==) 0 0 stretch; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.bootstrap-switch > div { + display: inline-block; + width: 132px; + border-radius: 30px; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.bootstrap-switch > div > span { + font-weight: 700; + line-height: 19px; + cursor: pointer; + display: inline-block; + height: 100%; + padding-bottom: 5px; + padding-top: 5px; + text-align: center; + z-index: 1; + width: 66px; + -webkit-transition: box-shadow 0.25s ease-out; + transition: box-shadow 0.25s ease-out; +} +.bootstrap-switch > div > span > [class^="fui-"] { + text-indent: 0; +} +.bootstrap-switch > div > label { + cursor: pointer; + display: block; + position: absolute; + width: 100%; + height: 100%; + text-indent: -9999px; + font-size: 0; + top: 0; + left: 0; + margin: 0; + z-index: 200; + opacity: 0; + filter: alpha(opacity=0); +} +.bootstrap-switch input[type="radio"], +.bootstrap-switch input[type="checkbox"] { + position: absolute !important; + margin: 0; + top: 0; + left: 0; + z-index: -1; + opacity: 0; + filter: alpha(opacity=0); +} +.bootstrap-switch-handle-on { + border-bottom-left-radius: 30px; + border-top-left-radius: 30px; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-default { + box-shadow: inset 0 0 transparent, -16px 0 0 #bdc3c7; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-default:before { + border-color: #bdc3c7; + background-color: #7f8c9a; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-primary { + box-shadow: inset 0 0 transparent, -16px 0 0 #34495e; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-primary:before { + border-color: #34495e; + background-color: #1abc9c; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-success { + box-shadow: inset 0 0 transparent, -16px 0 0 #2ecc71; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-success:before { + border-color: #2ecc71; + background-color: #ffffff; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-warning { + box-shadow: inset 0 0 transparent, -16px 0 0 #f1c40f; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-warning:before { + border-color: #f1c40f; + background-color: #ffffff; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-info { + box-shadow: inset 0 0 transparent, -16px 0 0 #3498db; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-info:before { + border-color: #3498db; + background-color: #ffffff; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-danger { + box-shadow: inset 0 0 transparent, -16px 0 0 #e74c3c; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-danger:before { + border-color: #e74c3c; + background-color: #ffffff; +} +.bootstrap-switch-handle-off { + border-bottom-right-radius: 30px; + border-top-right-radius: 30px; +} +.bootstrap-switch-handle-off:before { + display: inline-block; + content: " "; + border: 4px solid transparent; + border-radius: 50%; + text-align: center; + vertical-align: top; + padding: 0; + height: 29px; + width: 29px; + position: absolute; + top: 0; + left: 51px; + z-index: 100; + background-clip: padding-box; + -webkit-transition: border-color 0.25s ease-out, background-color 0.25s ease-out; + transition: border-color 0.25s ease-out, background-color 0.25s ease-out; +} +.bootstrap-switch-animate > div { + -webkit-transition: margin-left 0.25s ease-out; + transition: margin-left 0.25s ease-out; +} +.bootstrap-switch-on > div { + margin-left: 0; +} +.bootstrap-switch-off > div { + margin-left: -51px; +} +.bootstrap-switch-disabled, +.bootstrap-switch-readonly { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.bootstrap-switch-disabled > div > span, +.bootstrap-switch-readonly > div > span, +.bootstrap-switch-disabled > div > label, +.bootstrap-switch-readonly > div > label { + cursor: default !important; +} +.bootstrap-switch-focused { + outline: 0; +} +.bootstrap-switch-default { + color: #ffffff; + background-color: #bdc3c7; +} +.bootstrap-switch-default ~ .bootstrap-switch-handle-off:before { + background-color: #7f8c9a; + border-color: #bdc3c7; +} +.bootstrap-switch-on .bootstrap-switch-default ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #bdc3c7; +} +.bootstrap-switch-primary { + color: #1abc9c; + background-color: #34495e; +} +.bootstrap-switch-primary ~ .bootstrap-switch-handle-off:before { + background-color: #1abc9c; + border-color: #34495e; +} +.bootstrap-switch-on .bootstrap-switch-primary ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #34495e; +} +.bootstrap-switch-info { + color: #ffffff; + background-color: #3498db; +} +.bootstrap-switch-info ~ .bootstrap-switch-handle-off:before { + background-color: #ffffff; + border-color: #3498db; +} +.bootstrap-switch-on .bootstrap-switch-info ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #3498db; +} +.bootstrap-switch-success { + color: #ffffff; + background-color: #2ecc71; +} +.bootstrap-switch-success ~ .bootstrap-switch-handle-off:before { + background-color: #ffffff; + border-color: #2ecc71; +} +.bootstrap-switch-on .bootstrap-switch-success ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #2ecc71; +} +.bootstrap-switch-warning { + color: #ffffff; + background-color: #f1c40f; +} +.bootstrap-switch-warning ~ .bootstrap-switch-handle-off:before { + background-color: #ffffff; + border-color: #f1c40f; +} +.bootstrap-switch-on .bootstrap-switch-warning ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #f1c40f; +} +.bootstrap-switch-danger { + color: #ffffff; + background-color: #e74c3c; +} +.bootstrap-switch-danger ~ .bootstrap-switch-handle-off:before { + background-color: #ffffff; + border-color: #e74c3c; +} +.bootstrap-switch-on .bootstrap-switch-danger ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #e74c3c; +} +.bootstrap-switch-square .bootstrap-switch { + -webkit-mask-box-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgODAgMjkiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDgwIDI5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGQ9Ik04MCwyNWMwLDIuMi0xLjgsNC00LDRINGMtMi4yLDAtNC0xLjgtNC00VjRjMC0yLjIsMS44LTQsNC00aDcyYzIuMiwwLDQsMS44LDQsNFYyNXoiLz4NCjwvc3ZnPg0K) 0 0 stretch; + border-radius: 4px; +} +.bootstrap-switch-square .bootstrap-switch > div { + border-radius: 4px; +} +.bootstrap-switch-square .bootstrap-switch .bootstrap-switch-handle-on { + text-indent: -15px; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.bootstrap-switch-square .bootstrap-switch .bootstrap-switch-handle-off { + text-indent: 15px; + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.bootstrap-switch-square .bootstrap-switch .bootstrap-switch-handle-off:before { + border: none; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 2px; + border-top-right-radius: 2px; +} +.bootstrap-switch-square .bootstrap-switch-off .bootstrap-switch-handle-off:before { + border-bottom-left-radius: 2px; + border-top-left-radius: 2px; + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.share { + background-color: #eff0f2; + position: relative; + border-radius: 6px; +} +.share ul { + list-style-type: none; + margin: 0; + padding: 15px; +} +.share li { + font-size: 15px; + line-height: 1.4; + padding-top: 11px; +} +.share li:before, +.share li:after { + content: " "; + display: table; +} +.share li:after { + clear: both; +} +.share li:first-child { + padding-top: 0; +} +.share .toggle { + float: right; + margin: 0; +} +.share .btn { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.share-label { + float: left; + font-size: 15px; + line-height: 1.4; + padding-top: 5px; + width: 50%; +} +.video-js { + background-color: transparent; + position: relative; + padding-bottom: 47px; + font-size: 0; + vertical-align: middle; + overflow: hidden; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + border-top-radius: 6px; + width: 100% !important; + height: auto !important; +} +.video-js .vjs-tech { + height: 100%; + width: 100%; + display: block; +} +.video-js::-moz-full-screen { + position: absolute; +} +.video-js::-webkit-full-screen { + width: 100% !important; + height: 100% !important; +} +.vjs-fullscreen { + position: fixed; + overflow: hidden; + z-index: 10000; + left: 0; + top: 0; + bottom: 0; + right: 0; + width: 100% !important; + height: 100% !important; + border-top-radius: 0; +} +.vjs-fullscreen .vjs-control-bar { + margin-top: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.vjs-fullscreen .vjs-tech { + background-color: #000000; +} +.vjs-poster { + margin: 0 auto; + padding: 0; + cursor: pointer; + position: relative; + width: 100%; + max-height: 100%; + border-top-radius: 6px; +} +.vjs-control-bar { + position: relative; + height: 47px; + color: #ffffff; + background: #2c3e50; + margin-top: -1px; + border-bottom-right-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.vjs-control-bar.vjs-fade-out { + visibility: visible !important; + opacity: 1 !important; +} +.vjs-text-track-display { + text-align: center; + position: absolute; + bottom: 4em; + left: 1em; + right: 1em; + font-family: "Lato", Helvetica, Arial, sans-serif; +} +.vjs-text-track { + display: none; + color: #ffffff; + font-size: 1.4em; + text-align: center; + margin-bottom: .1em; + background-color: rgba(0, 0, 0, 0.5); +} +.vjs-subtitles { + color: #ffffff; +} +.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 { + background-position: center; + background-repeat: no-repeat; + position: relative; + text-align: center; + display: inline-block; + height: 18px; + width: 18px; + vertical-align: middle; +} +.vjs-control:focus { + outline: 0; +} +.vjs-control > div { + background-position: 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; + height: 47px; + width: 58px; +} +.vjs-play-control > div { + position: relative; + height: 47px; +} +.vjs-play-control > div:before, +.vjs-play-control > div:after { + position: absolute; + font-family: "Flat-UI-Icons"; + color: #1abc9c; + font-size: 16px; + top: 38%; + left: 50%; + margin: -0.5em 0 0 -0.5em; + -webkit-font-smoothing: antialiased; + -webkit-transition: color .25s, opacity .25s; + transition: color .25s, opacity .25s; +} +.vjs-play-control > div:after { + content: "\e615"; +} +.vjs-play-control > div:before { + content: "\e616"; +} +.vjs-paused .vjs-play-control:hover > div:before { + color: #16a085; +} +.vjs-paused .vjs-play-control > div:after { + opacity: 0; + filter: alpha(opacity=0); +} +.vjs-paused .vjs-play-control > div:before { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.vjs-playing .vjs-play-control:hover > div:after { + color: #16a085; +} +.vjs-playing .vjs-play-control > div:after { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.vjs-playing .vjs-play-control > div:before { + opacity: 0; + filter: alpha(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 { + float: right; + margin: 14px 0; + cursor: pointer !important; +} +.vjs-mute-control:hover > div, +.vjs-mute-control:focus > div { + color: #57718b; +} +.vjs-mute-control > div { + height: 18px; + color: #475d72; +} +.vjs-mute-control > div:after, +.vjs-mute-control > div:before { + font-family: "Flat-UI-Icons"; + font-size: 16px; + line-height: 18px; + position: absolute; + left: 50%; + margin: 0 0 0 -0.5em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-transition: color .25s, opacity .25s; + transition: color .25s, opacity .25s; +} +.vjs-mute-control > div:after { + content: "\e617"; +} +.vjs-mute-control > div:before { + content: "\e618"; + opacity: 0; + filter: alpha(opacity=0); +} +.vjs-mute-control.vjs-vol-0 > div:after { + opacity: 0; + filter: alpha(opacity=0); +} +.vjs-mute-control.vjs-vol-0 > div:before { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.vjs-volume-control, +.vjs-volume-level, +.vjs-volume-handle, +.vjs-volume-bar { + display: none; +} +.vjs-progress-control { + height: 12px; + position: absolute; + left: 60px; + right: 160px; + width: auto; + top: 18px; + background: #425669; + border-radius: 32px; +} +.vjs-progress-holder { + position: relative; + cursor: pointer !important; + padding: 0; + margin: 0; + height: 12px; +} +.vjs-play-progress, +.vjs-load-progress { + display: block; + height: 12px; + margin: 0; + padding: 0; + border-radius: 32px; +} +.vjs-play-progress { + background: #1abc9c; + left: -1px; + position: absolute; + top: 0; + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.vjs-load-progress { + background: #d6dbdf; +} +.vjs-load-progress[style*="100%"], +.vjs-load-progress[style*="99%"] { + border-radius: 32px; +} +.vjs-seek-handle { + background-color: #16a085; + width: 18px; + height: 18px; + top: 0; + position: absolute; + margin: -3px 0 0 -3px; + border-radius: 50%; + -webkit-transition: background-color 0.25s; + transition: background-color 0.25s; +} +.vjs-seek-handle[style*="95."] { + margin-left: 3px; +} +.vjs-seek-handle[style="left: 0%;"] { + margin-left: -2px; +} +.vjs-seek-handle:hover, +.vjs-seek-handle:focus { + background-color: #148d75; +} +.vjs-seek-handle:active { + background-color: #117a65; +} +.vjs-time-controls { + font-family: "Lato", Helvetica, Arial, sans-serif; + font-weight: 300; + font-size: 13px; + line-height: normal; + width: auto; + height: auto; + position: absolute; +} +.vjs-time-divider { + color: #5d6d7e; + font-size: 14px; + position: absolute; + right: 114px; + top: 11px; +} +.vjs-remaining-time { + display: none; +} +.vjs-current-time { + right: 122px; + top: 16px; +} +.vjs-duration { + color: #5d6d7e; + right: 85px; + top: 16px; +} +.vjs-fullscreen-control { + cursor: pointer; + float: right; + margin: 14px 15px; +} +.vjs-fullscreen-control:hover > div, +.vjs-fullscreen-control:focus > div { + color: #57718b; +} +.vjs-fullscreen-control > div { + height: 18px; + color: #475d72; +} +.vjs-fullscreen-control > div:before { + font-family: "Flat-UI-Icons"; + content: "\e619"; + font-size: 16px; + line-height: 18px; + position: absolute; + left: 50%; + margin: 0 0 0 -0.5em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-transition: color .25s, opacity .25s; + transition: color .25s, opacity .25s; +} +.vjs-menu-button { + display: none !important; +} +.vjs-loading-spinner { + position: absolute; + top: 50%; + left: 50%; + background: #ebedee; + display: none; + height: 16px; + width: 16px; + border-radius: 10px; + margin: -8px 0 0 -8px; + -webkit-animation: sharp 2s ease infinite; + animation: sharp 2s ease infinite; +} +@-webkit-keyframes sharp { + 0% { + background-color: #e74c3c; + border-radius: 10px; + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 50% { + background-color: #ebedee; + border-radius: 0; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + 100% { + background-color: #e74c3c; + border-radius: 10px; + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes sharp { + 0% { + background-color: #e74c3c; + border-radius: 10px; + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 50% { + background-color: #ebedee; + border-radius: 0; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + 100% { + background-color: #e74c3c; + border-radius: 10px; + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.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: #34495e; + 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; + color: #1abc9c; +} +.todo li.todo-done .todo-name { + color: #1abc9c; +} +.todo li:after { + content: " "; + display: block; + width: 20px; + height: 20px; + position: absolute; + top: 50%; + right: 22px; + margin-top: -10px; + background: #ffffff; + border-radius: 50%; +} +.todo li.todo-done:after { + content: "\e60a"; + font-family: 'Flat-UI-Icons'; + text-align: center; + font-size: 12px; + line-height: 21px; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background: #1abc9c; + color: #2c3e50; +} +.todo-search { + position: relative; + background: #1abc9c; + background-size: 16px 16px; + border-radius: 6px 6px 0 0; + color: #34495e; + padding: 19px 25px 20px; +} +.todo-search:before { + position: absolute; + font-family: 'Flat-UI-Icons'; + content: "\e630"; + font-size: 16px; + line-height: 17px; + display: inline-block; + top: 50%; + left: 92%; + margin: -0.5em 0 0 -1em; +} +.todo-search-field { + background: none; + border: none; + color: #34495e; + font-size: 19px; + font-weight: 700; + margin: 0; + line-height: 23px; + padding: 5px 0; + text-indent: 0; + box-shadow: none; + outline: none; +} +.todo-search-field::-moz-placeholder { + color: #34495e; + opacity: 1; +} +.todo-search-field:-ms-input-placeholder { + color: #34495e; +} +.todo-search-field::-webkit-input-placeholder { + color: #34495e; +} +.todo-icon { + float: left; + font-size: 24px; + padding: 11px 22px 0 0; +} +.todo-content { + padding-top: 1px; + overflow: hidden; +} +.todo-name { + color: #ffffff; + font-size: 17px; + margin: 1px 0 3px; +} +.pallete-item { + width: 140px; + float: left; + margin: 0 0 20px 20px; +} +.palette { + font-size: 14px; + line-height: 1.214; + color: #ffffff; + margin: 0; + padding: 15px; + text-transform: uppercase; +} +.palette dt, +.palette dd { + line-height: 1.429; +} +.palette dt { + display: block; + font-weight: bold; + 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: #34495e; +} +.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; +} +.login { + background: url(../img/login/imac.png) 0 0 no-repeat; + background-size: 940px 778px; + color: #ffffff; + 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 .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: all .25s; + transition: all .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(../img/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: #ffffff; +} +.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; +} +.ptn, +.pvn, +.pan { + padding-top: 0; +} +.ptx, +.pvx, +.pax { + padding-top: 3px; +} +.pts, +.pvs, +.pas { + padding-top: 5px; +} +.ptm, +.pvm, +.pam { + padding-top: 10px; +} +.ptl, +.pvl, +.pal { + padding-top: 20px; +} +.prn, +.phn, +.pan { + padding-right: 0; +} +.prx, +.phx, +.pax { + padding-right: 3px; +} +.prs, +.phs, +.pas { + padding-right: 5px; +} +.prm, +.phm, +.pam { + padding-right: 10px; +} +.prl, +.phl, +.pal { + padding-right: 20px; +} +.pbn, +.pvn, +.pan { + padding-bottom: 0; +} +.pbx, +.pvx, +.pax { + padding-bottom: 3px; +} +.pbs, +.pvs, +.pas { + padding-bottom: 5px; +} +.pbm, +.pvm, +.pam { + padding-bottom: 10px; +} +.pbl, +.pvl, +.pal { + padding-bottom: 20px; +} +.pln, +.phn, +.pan { + padding-left: 0; +} +.plx, +.phx, +.pax { + padding-left: 3px; +} +.pls, +.phs, +.pas { + padding-left: 5px; +} +.plm, +.phm, +.pam { + padding-left: 10px; +} +.pll, +.phl, +.pal { + padding-left: 20px; +} +.mtn, +.mvn, +.man { + margin-top: 0px; +} +.mtx, +.mvx, +.max { + margin-top: 3px; +} +.mts, +.mvs, +.mas { + margin-top: 5px; +} +.mtm, +.mvm, +.mam { + margin-top: 10px; +} +.mtl, +.mvl, +.mal { + margin-top: 20px; +} +.mrn, +.mhn, +.man { + margin-right: 0px; +} +.mrx, +.mhx, +.max { + margin-right: 3px; +} +.mrs, +.mhs, +.mas { + margin-right: 5px; +} +.mrm, +.mhm, +.mam { + margin-right: 10px; +} +.mrl, +.mhl, +.mal { + margin-right: 20px; +} +.mbn, +.mvn, +.man { + margin-bottom: 0px; +} +.mbx, +.mvx, +.max { + margin-bottom: 3px; +} +.mbs, +.mvs, +.mas { + margin-bottom: 5px; +} +.mbm, +.mvm, +.mam { + margin-bottom: 10px; +} +.mbl, +.mvl, +.mal { + margin-bottom: 20px; +} +.mln, +.mhn, +.man { + margin-left: 0px; +} +.mlx, +.mhx, +.max { + margin-left: 3px; +} +.mls, +.mhs, +.mas { + margin-left: 5px; +} +.mlm, +.mhm, +.mam { + margin-left: 10px; +} +.mll, +.mhl, +.mal { + margin-left: 20px; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + .btn { + border-style: solid; + border-width: 2px; + } + .dropdown-menu, + .select2-drop { + background: #fff !important; + border: 2px solid #ddd; + } + .input-group-rounded .input-group-btn + .form-control, + .input-group-rounded .input-group-btn + .select2-search input[type="text"], + .input-group-rounded .input-group-btn + .select2-search input[type="text"] { + padding-left: 10px; + } + .form-control, + .select2-search input[type="text"] { + border: 2px solid #ddd !important; + } + .bootstrap-switch { + height: 33px; + width: 84px; + border: 2px solid #bdc3c7; + } + .tooltip { + border: 2px solid #bdc3c7; + } + .progress, + .ui-slider { + background: #ddd !important; + } + .progress-bar, + .ui-slider-range, + .ui-slider-handle { + background: #bdc3c7 !important; + } + + /*#heuristics > .dropdown-menu > a:hover { + color: #bdc3c7; + background-color: transparent; + cursor: not-allowed; + }*/ + + /* Dropdown Button */ +.dropbtn { + background-color: #4CAF50; + color: white; + padding: 16px; + font-size: 16px; + border: none; + cursor: pointer; +} + +/* Dropdown button on hover & focus */ +.dropbtn:hover, .dropbtn:focus { + background-color: #3e8e41; +} + + /*The container
- needed to position the dropdown content */ +#heuristics { + position: relative; + display: inline-block; +} + +/* Dropdown Content (Hidden by Default) */ +.test { + display: none; + position: absolute; + background-color: #f9f9f9; + min-width: 160px; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); +} + +/* Links inside the dropdown */ +.dropdown-content a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} + +/* Change color of dropdown links on hover */ +.dropdown-content a:hover {background-color: #f1f1f1} + +/* Show the dropdown menu (use JS to add this class to the .dropdown-content container when the user clicks on the dropdown button) */ +.show {display:block;} + +} +/*# sourceMappingURL=flat-ui.css.map */ diff --git a/public/styling/cssPokemon.css b/public/styling/cssPokemon.css new file mode 100644 index 0000000..30b5810 --- /dev/null +++ b/public/styling/cssPokemon.css @@ -0,0 +1,6860 @@ +/*.demonstration { + border: 2px solid green; +} + +.other { + border: 2px solid red; +} + +.otherother { + border: 2px solid grey; +}*/ + +.start{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-image:url(triangletwo-up.svg); + /*background-color: rgb(255, 254, 106);*/ + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: specialNodes; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantshortest-path-up{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-up.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.shortest-path-up{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-up.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantshortest-path-down{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-down.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.shortest-path-down{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-down.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantshortest-path-right{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-right.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.shortest-path-right{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-right.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantshortest-path-left{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-left.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.shortest-path-left{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(triangletwo-left.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantStartTransparent{ + /*border: 1px solid rgb(175, 216, 248);*/ + opacity: 0.5; + background-image:url(triangletwo-up.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.startTransparent{ + /*border: 1px solid rgb(175, 216, 248);*/ + opacity: 0.5; + background-image:url(triangletwo-up.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: specialNodes; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +#mainText > ul li { + display: inline-block; + list-style: none; + padding: 0 30px 0 0; +} + +#actualStartButton { + /*color: red;*/ + background-color: none; +} + +#mainGrid{ + position: center +} + +#board{ + border-collapse:collapse; + /*position: center*/ +} + +#mainText div { + /*border: 1px solid rgb(12, 53, 71);*/ + width: 25px; + height: 25px; + display: inline-block; + position: relative; + top: 0.35em; + margin: 0 0.42em; +} + +#board { + margin-left: 5px; +} + +#board td{ + /*border: 1px solid rgb(175, 216, 248);*/ + width: 25px; + height: 25px; +} + +.instantvisited{ + border: 1px solid rgb(175, 216, 248); + background-color: rgba(0, 190, 218, 0.75); + /*background-color: rgba(178, 67, 255, 0.75);*/ +} + +.instantvisited.weight { + border: 1px solid rgb(175, 216, 248); + background-color: rgba(0, 190, 218, 0.75); + /*background-color: rgba(178, 67, 255, 0.75);*/ + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.visited{ + border: 1px solid rgb(175, 216, 248); + animation-name: visitedAnimation; + animation-duration: 1.5s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.visited.weight{ + border: 1px solid rgb(175, 216, 248); + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: visitedAnimation; + animation-duration: 1.5s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes visitedAnimation { + 0% { + transform: scale(.3); + background-color: rgba(0, 0, 66, 0.75); + border-radius: 100%; + } + + 50% { + background-color: rgba(17, 104, 217, 0.75); + } + + 75% { + transform: scale(1.2); + background-color: rgba(0, 217, 159, 0.75) + } + + 100% { + transform: scale(1.0); + background-color: rgba(0, 190, 218, 0.75); + } +} + +.wall{ + animation-name: wallAnimation; + animation-duration: 0.3s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes wallAnimation { + 0% { + transform: scale(.3); + background-color: rgb(12, 53, 71); + } + + 50% { + transform: scale(1.2); + background-color: rgb(12, 53, 71); + } + + 100% { + transform: scale(1.0); + background-color: rgb(12, 53, 71); + } +} + +.instantvisitedobject{ + border: 1px solid rgb(175, 216, 248); + background-color: rgba(178, 67, 255, 0.75); + /*background-color: rgba(0, 190, 218, 0.75);*/ +} + +.instantvisitedobject.weight{ + border: 1px solid rgb(175, 216, 248); + background-color: rgba(178, 67, 255, 0.75); + /*background-color: rgba(0, 190, 218, 0.75);*/ + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.visitedobject{ + /*background:red*/ + border: 1px solid rgb(175, 216, 248); + animation-name: visitedObjectAnimation; + animation-duration: 1.5s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.visitedobject.weight{ + /*background:red*/ + border: 1px solid rgb(175, 216, 248); + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: visitedObjectAnimation; + animation-duration: 1.5s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes visitedObjectAnimation { + 0% { + transform: scale(.3); + background-color: rgba(41, 4, 24, 0.75); + border-radius: 100%; + } + + 50% { + background-color: rgba(97, 0, 20, 0.75); + } + + 75% { + transform: scale(1.2); + background-color: rgba(216, 5, 141, 0.75) + } + + 100% { + transform: scale(1.0); + background-color: rgba(178, 67, 255, 0.75); + } +} + +.unvisited{ + border: 1px solid rgb(175, 216, 248); + background-color:white +} + +.borderlessWeight { + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: unvisitedWeightAnimation; + animation-duration: 0.3s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.unvisited.weight{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-image: url(pokemonweight.png); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: unvisitedWeightAnimation; + animation-duration: 0.3s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes unvisitedWeightAnimation { + 0% { + transform: scale(.3); + /*background-color: rgb(12, 53, 71);*/ + } + + 50% { + transform: scale(1.2); + /*background-color: rgb(12, 53, 71);*/ + } + + 100% { + transform: scale(1.0); + /*background-color: rgb(12, 53, 71);*/ + } +} + +.unvisited.mud{ + background:brown +} + +.current{ + border: 1px solid rgb(175, 216, 248); + background-color: rgb(255, 254, 106) +} + +.object{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-image: url(diamond.svg); + /*background-color: rgb(255, 254, 106);*/ + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: specialNodes; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.instantobjectTransparent{ + /*border: 1px solid rgb(175, 216, 248);*/ + opacity: 0.5; + background-image: url(diamond.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.objectTransparent{ + /*border: 1px solid rgb(175, 216, 248);*/ + opacity: 0.5; + background-image: url(diamond.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: specialNodes; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.target{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-image: url(circle.svg); + /*background-color: rgb(255, 254, 106);*/ + /*background-color: rgba(232, 147, 12, 0.75);*/ + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: specialNodes; + animation-duration: 2.0s; + animation-timing-function: ease-out; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes specialNodes { + 0% { + transform: scale(.3); + /*background-color: darkslategrey;*/ + } + + 50% { + transform: scale(1.2); + /*background-color: darkslategrey;*/ + } + + 100% { + transform: scale(1.0); + /*background-color: darkslategrey;*/ + } +} + +.instantshortest-path{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-color: rgb(255, 254, 106); +} + +.instantshortest-path.weight{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-color: rgb(255, 254, 106); + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.shortest-path{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-color: rgb(255, 254, 106); + /*background-position: center; + background-repeat: no-repeat; + background-size: contain;*/ + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +.shortest-path.weight{ + /*border: 1px solid rgb(175, 216, 248);*/ + background-color: rgb(255, 254, 106); + background-image: url(weight.svg); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + animation-name: triangletwo; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-delay: 0; + animation-direction: alternate; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-play-state: running; +} + +@keyframes triangletwo { + 0% { + transform: scale(.6); + background-color: rgb(255, 254, 106); + } + + 50% { + transform: scale(1.2); + background-color: rgb(255, 254, 106); + } + + 100% { + transform: scale(1.0); + background-color: rgb(255, 254, 106); + } +} + +.shortest-path-unweighted{ + /*border: 1px solid rgb(175, 216, 248);*/ + background:url(spaceship.svg); + background-color: rgb(255, 254, 106); + background-position: center; + background-repeat: no-repeat; + background-size: contain +} + + +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-black.eot');*/ + /*src: url('../fonts/lato/lato-black.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-black.woff') format('woff'), url('../fonts/lato/lato-black.ttf') format('truetype'), url('../fonts/lato/lato-black.svg#latoblack') format('svg');*/ + font-weight: 900; + font-style: normal; +} +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-bold.eot');*/ + /*src: url('../fonts/lato/lato-bold.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-bold.woff') format('woff'), url('../fonts/lato/lato-bold.ttf') format('truetype'), url('../fonts/lato/lato-bold.svg#latobold') format('svg');*/ + font-weight: bold; + font-style: normal; +} +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-bolditalic.eot');*/ + /*src: url('../fonts/lato/lato-bolditalic.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-bolditalic.woff') format('woff'), url('../fonts/lato/lato-bolditalic.ttf') format('truetype'), url('../fonts/lato/lato-bolditalic.svg#latobold-italic') format('svg');*/ + font-weight: bold; + font-style: italic; +} +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-italic.eot');*/ + /*src: url('../fonts/lato/lato-italic.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-italic.woff') format('woff'), url('../fonts/lato/lato-italic.ttf') format('truetype'), url('../fonts/lato/lato-italic.svg#latoitalic') format('svg');*/ + font-weight: normal; + font-style: italic; +} +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-light.eot');*/ + /*src: url('../fonts/lato/lato-light.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-light.woff') format('woff'), url('../fonts/lato/lato-light.ttf') format('truetype'), url('../fonts/lato/lato-light.svg#latolight') format('svg');*/ + font-weight: 300; + font-style: normal; +} +@font-face { + font-family: 'Lato'; + /*src: url('../fonts/lato/lato-regular.eot');*/ + /*src: url('../fonts/lato/lato-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/lato/lato-regular.woff') format('woff'), url('../fonts/lato/lato-regular.ttf') format('truetype'), url('../fonts/lato/lato-regular.svg#latoregular') format('svg');*/ + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: 'Flat-UI-Icons'; + /*src: url('../fonts/glyphicons/flat-ui-icons-regular.eot');*/ + /*src: url('../fonts/glyphicons/flat-ui-icons-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons/flat-ui-icons-regular.woff') format('woff'), url('../fonts/glyphicons/flat-ui-icons-regular.ttf') format('truetype'), url('../fonts/glyphicons/flat-ui-icons-regular.svg#flat-ui-icons-regular') format('svg');*/ +} +[class^="fui-"], +[class*="fui-"] { + font-family: 'Flat-UI-Icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.fui-triangle-up:before { + content: "\e600"; +} +.fui-triangle-down:before { + content: "\e601"; +} +.fui-triangle-up-small:before { + content: "\e602"; +} +.fui-triangle-down-small:before { + content: "\e603"; +} +.fui-triangle-left-large:before { + content: "\e604"; +} +.fui-triangle-right-large:before { + content: "\e605"; +} +.fui-arrow-left:before { + content: "\e606"; +} +.fui-arrow-right:before { + content: "\e607"; +} +.fui-plus:before { + content: "\e608"; +} +.fui-cross:before { + content: "\e609"; +} +.fui-check:before { + content: "\e60a"; +} +.fui-radio-unchecked:before { + content: "\e60b"; +} +.fui-radio-checked:before { + content: "\e60c"; +} +.fui-checkbox-unchecked:before { + content: "\e60d"; +} +.fui-checkbox-checked:before { + content: "\e60e"; +} +.fui-info-circle:before { + content: "\e60f"; +} +.fui-alert-circle:before { + content: "\e610"; +} +.fui-question-circle:before { + content: "\e611"; +} +.fui-check-circle:before { + content: "\e612"; +} +.fui-cross-circle:before { + content: "\e613"; +} +.fui-plus-circle:before { + content: "\e614"; +} +.fui-pause:before { + content: "\e615"; +} +.fui-play:before { + content: "\e616"; +} +.fui-volume:before { + content: "\e617"; +} +.fui-mute:before { + content: "\e618"; +} +.fui-resize:before { + content: "\e619"; +} +.fui-list:before { + content: "\e61a"; +} +.fui-list-thumbnailed:before { + content: "\e61b"; +} +.fui-list-small-thumbnails:before { + content: "\e61c"; +} +.fui-list-large-thumbnails:before { + content: "\e61d"; +} +.fui-list-numbered:before { + content: "\e61e"; +} +.fui-list-columned:before { + content: "\e61f"; +} +.fui-list-bulleted:before { + content: "\e620"; +} +.fui-window:before { + content: "\e621"; +} +.fui-windows:before { + content: "\e622"; +} +.fui-loop:before { + content: "\e623"; +} +.fui-cmd:before { + content: "\e624"; +} +.fui-mic:before { + content: "\e625"; +} +.fui-heart:before { + content: "\e626"; +} +.fui-location:before { + content: "\e627"; +} +.fui-new:before { + content: "\e628"; +} +.fui-video:before { + content: "\e629"; +} +.fui-photo:before { + content: "\e62a"; +} +.fui-time:before { + content: "\e62b"; +} +.fui-eye:before { + content: "\e62c"; +} +.fui-chat:before { + content: "\e62d"; +} +.fui-home:before { + content: "\e62e"; +} +.fui-upload:before { + content: "\e62f"; +} +.fui-search:before { + content: "\e630"; +} +.fui-user:before { + content: "\e631"; +} +.fui-mail:before { + content: "\e632"; +} +.fui-lock:before { + content: "\e633"; +} +.fui-power:before { + content: "\e634"; +} +.fui-calendar:before { + content: "\e635"; +} +.fui-gear:before { + content: "\e636"; +} +.fui-bookmark:before { + content: "\e637"; +} +.fui-exit:before { + content: "\e638"; +} +.fui-trash:before { + content: "\e639"; +} +.fui-folder:before { + content: "\e63a"; +} +.fui-bubble:before { + content: "\e63b"; +} +.fui-export:before { + content: "\e63c"; +} +.fui-calendar-solid:before { + content: "\e63d"; +} +.fui-star:before { + content: "\e63e"; +} +.fui-star-2:before { + content: "\e63f"; +} +.fui-credit-card:before { + content: "\e640"; +} +.fui-clip:before { + content: "\e641"; +} +.fui-link:before { + content: "\e642"; +} +.fui-tag:before { + content: "\e643"; +} +.fui-document:before { + content: "\e644"; +} +.fui-image:before { + content: "\e645"; +} +.fui-facebook:before { + content: "\e646"; +} +.fui-youtube:before { + content: "\e647"; +} +.fui-vimeo:before { + content: "\e648"; +} +.fui-twitter:before { + content: "\e649"; +} +.fui-spotify:before { + content: "\e64a"; +} +.fui-skype:before { + content: "\e64b"; +} +.fui-pinterest:before { + content: "\e64c"; +} +.fui-path:before { + content: "\e64d"; +} +.fui-linkedin:before { + content: "\e64e"; +} +.fui-google-plus:before { + content: "\e64f"; +} +.fui-dribbble:before { + content: "\e650"; +} +.fui-behance:before { + content: "\e651"; +} +.fui-stumbleupon:before { + content: "\e652"; +} +.fui-yelp:before { + content: "\e653"; +} +.fui-wordpress:before { + content: "\e654"; +} +.fui-windows-8:before { + content: "\e655"; +} +.fui-vine:before { + content: "\e656"; +} +.fui-tumblr:before { + content: "\e657"; +} +.fui-paypal:before { + content: "\e658"; +} +.fui-lastfm:before { + content: "\e659"; +} +.fui-instagram:before { + content: "\e65a"; +} +.fui-html5:before { + content: "\e65b"; +} +.fui-github:before { + content: "\e65c"; +} +.fui-foursquare:before { + content: "\e65d"; +} +.fui-dropbox:before { + content: "\e65e"; +} +.fui-android:before { + content: "\e65f"; +} +.fui-apple:before { + content: "\e660"; +} +body { + font-family: "Lato", Helvetica, Arial, sans-serif; + font-size: 18px; + line-height: 1.72222; + color: #34495e; + background-color: #ffffff; +} +a { + color: #16a085; + text-decoration: none; + -webkit-transition: .25s; + transition: .25s; +} +a:hover, +a:focus { + color: #1abc9c; + text-decoration: none; +} +a:focus { + outline: none; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.72222; + background-color: #ffffff; + border: 2px solid #bdc3c7; + border-radius: 6px; + -webkit-transition: all 0.25s ease-in-out; + transition: all 0.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, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + 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: normal; +} +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: 18px; + 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: #ffffff; +} +.text-primary { + color: #1abc9c; +} +a.text-primary:hover { + color: #148f77; +} +.text-warning { + color: #f1c40f; +} +a.text-warning:hover { + color: #c29d0b; +} +.text-danger { + color: #e74c3c; +} +a.text-danger:hover { + color: #d62c1a; +} +.text-success { + color: #2ecc71; +} +a.text-success:hover { + color: #25a25a; +} +.text-info { + color: #3498db; +} +a.text-info:hover { + color: #217dbb; +} +.bg-primary { + color: #ffffff; + background-color: #34495e; +} +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: 2px solid #e7e9ec; +} +ul, +ol { + margin-bottom: 15px; +} +dl { + margin-bottom: 30px; +} +dt, +dd { + line-height: 1.72222; +} +@media (min-width: 768px) { + .dl-horizontal dt { + width: 160px; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-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: normal; + margin-bottom: .4em; +} +blockquote small, +blockquote .small { + font-size: 18px; + 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; +} +sub, +sup { + font-size: 70%; +} +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: #ffffff; + background-color: #34495e; + border-radius: 4px; + box-shadow: none; +} +pre { + padding: 8px; + margin: 0 0 15px; + font-size: 13px; + line-height: 1.72222; + color: inherit; + background-color: #ffffff; + 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: #ffffff; + border: 2px solid #bdc3c7; + border-radius: 6px; + -webkit-transition: border 0.25s ease-in-out; + transition: border 0.25s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + display: block; + max-width: 100%; + height: auto; + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #16a085; +} +.thumbnail .caption { + padding: 9px; + color: #34495e; +} +.btn { + border: none; + font-size: 15px; + font-weight: normal; + line-height: 1.4; + border-radius: 4px; + padding: 10px 15px; + -webkit-font-smoothing: subpixel-antialiased; + -webkit-transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; + transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; +} +.btn:hover, +.btn:focus { + outline: none; + color: #ffffff; +} +.btn:active, +.btn.active { + outline: none; + box-shadow: none; +} +.btn:focus:active { + outline: none; +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + background-color: #bdc3c7; + color: rgba(255, 255, 255, 0.75); + opacity: 0.7; + filter: alpha(opacity=70); + cursor: not-allowed; +} +.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: #ffffff; + background-color: #bdc3c7; +} +.btn-default:hover, +.btn-default.hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #ffffff; + 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], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled.hover, +.btn-default[disabled].hover, +fieldset[disabled] .btn-default.hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #bdc3c7; + border-color: #bdc3c7; +} +.btn-default .badge { + color: #bdc3c7; + background-color: #ffffff; +} +.btn-primary { + color: #ffffff; + background-color: #1abc9c; +} +.btn-primary:hover, +.btn-primary.hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #ffffff; + 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], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled.hover, +.btn-primary[disabled].hover, +fieldset[disabled] .btn-primary.hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #bdc3c7; + border-color: #1abc9c; +} +.btn-primary .badge { + color: #1abc9c; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #3498db; +} +.btn-info:hover, +.btn-info.hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #ffffff; + 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], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled.hover, +.btn-info[disabled].hover, +fieldset[disabled] .btn-info.hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #bdc3c7; + border-color: #3498db; +} +.btn-info .badge { + color: #3498db; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #e74c3c; +} +.btn-danger:hover, +.btn-danger.hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #ffffff; + 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], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled.hover, +.btn-danger[disabled].hover, +fieldset[disabled] .btn-danger.hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #bdc3c7; + border-color: #e74c3c; +} +.btn-danger .badge { + color: #e74c3c; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #2ecc71; +} +.btn-success:hover, +.btn-success.hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #ffffff; + 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], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled.hover, +.btn-success[disabled].hover, +fieldset[disabled] .btn-success.hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #bdc3c7; + border-color: #2ecc71; +} +.btn-success .badge { + color: #2ecc71; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #f1c40f; +} +.btn-warning:hover, +.btn-warning.hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #f4d313; + border-color: #f4d313; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background: #cda70d; + border-color: #cda70d; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled.hover, +.btn-warning[disabled].hover, +fieldset[disabled] .btn-warning.hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #bdc3c7; + border-color: #f1c40f; +} +.btn-warning .badge { + color: #f1c40f; + background-color: #ffffff; +} +.btn-inverse { + color: #ffffff; + background-color: #34495e; +} +.btn-inverse:hover, +.btn-inverse.hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.open > .dropdown-toggle.btn-inverse { + color: #ffffff; + 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], +fieldset[disabled] .btn-inverse, +.btn-inverse.disabled:hover, +.btn-inverse[disabled]:hover, +fieldset[disabled] .btn-inverse:hover, +.btn-inverse.disabled.hover, +.btn-inverse[disabled].hover, +fieldset[disabled] .btn-inverse.hover, +.btn-inverse.disabled:focus, +.btn-inverse[disabled]:focus, +fieldset[disabled] .btn-inverse:focus, +.btn-inverse.disabled:active, +.btn-inverse[disabled]:active, +fieldset[disabled] .btn-inverse:active, +.btn-inverse.disabled.active, +.btn-inverse[disabled].active, +fieldset[disabled] .btn-inverse.active { + background-color: #bdc3c7; + border-color: #34495e; +} +.btn-inverse .badge { + color: #34495e; + background-color: #ffffff; +} +.btn-embossed { + box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.15); +} +.btn-embossed.active, +.btn-embossed:active { + box-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.15); +} +.btn-wide { + min-width: 140px; + padding-left: 30px; + padding-right: 30px; +} +.btn-link { + color: #16a085; +} +.btn-link:hover, +.btn-link:focus { + color: #1abc9c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #bdc3c7; + text-decoration: none; +} +.btn-hg, +.btn-group-hg > .btn { + padding: 13px 20px; + font-size: 22px; + line-height: 1.227; + border-radius: 6px; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 19px; + font-size: 17px; + line-height: 1.471; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 9px 13px; + font-size: 13px; + line-height: 1.385; + border-radius: 4px; +} +.btn-xs, +.btn-group-xs > .btn { + 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; +} +[class*="btn-social-"] { + padding: 10px 15px; + font-size: 13px; + line-height: 1.077; + border-radius: 4px; +} +.btn-social-pinterest { + color: #ffffff; + background-color: #cb2028; +} +.btn-social-pinterest:hover, +.btn-social-pinterest:focus { + background-color: #d54d53; +} +.btn-social-pinterest:active, +.btn-social-pinterest.active { + background-color: #ad1b22; +} +.btn-social-linkedin { + color: #ffffff; + background-color: #0072b5; +} +.btn-social-linkedin:hover, +.btn-social-linkedin:focus { + background-color: #338ec4; +} +.btn-social-linkedin:active, +.btn-social-linkedin.active { + background-color: #00619a; +} +.btn-social-stumbleupon { + color: #ffffff; + background-color: #ed4a13; +} +.btn-social-stumbleupon:hover, +.btn-social-stumbleupon:focus { + background-color: #f16e42; +} +.btn-social-stumbleupon:active, +.btn-social-stumbleupon.active { + background-color: #c93f10; +} +.btn-social-googleplus { + color: #ffffff; + background-color: #2d2d2d; +} +.btn-social-googleplus:hover, +.btn-social-googleplus:focus { + background-color: #575757; +} +.btn-social-googleplus:active, +.btn-social-googleplus.active { + background-color: #262626; +} +.btn-social-facebook { + color: #ffffff; + background-color: #2f4b93; +} +.btn-social-facebook:hover, +.btn-social-facebook:focus { + background-color: #596fa9; +} +.btn-social-facebook:active, +.btn-social-facebook.active { + background-color: #28407d; +} +.btn-social-twitter { + color: #ffffff; + background-color: #00bdef; +} +.btn-social-twitter:hover, +.btn-social-twitter:focus { + background-color: #33caf2; +} +.btn-social-twitter:active, +.btn-social-twitter.active { + background-color: #00a1cb; +} +.btn-group > .btn + .btn { + margin-left: 0; +} +.btn-group > .btn + .dropdown-toggle { + border-left: 2px solid rgba(52, 73, 94, 0.15); + padding: 10px 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; +} +.dropdown-toggle .caret { + margin-left: 8px; +} +.btn-group-xs > .btn + .dropdown-toggle { + padding: 6px 9px; +} +.btn-group-sm > .btn + .dropdown-toggle { + padding: 9px 13px; +} +.btn-group-lg > .btn + .dropdown-toggle { + padding: 10px 19px; +} +.btn-group-hg > .btn + .dropdown-toggle { + padding: 13px 20px; +} +.btn-xs .caret { + border-width: 6px 4px 0; + border-bottom-width: 0; +} +.btn-lg .caret { + border-width: 8px 6px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 6px 8px; +} +.dropup .btn-xs .caret { + border-width: 0 4px 6px; +} +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-weight: 400; +} +.btn-group:focus .dropdown-toggle { + outline: none; + -webkit-transition: .25s; + transition: .25s; +} +.btn-group.open .dropdown-toggle { + color: rgba(255, 255, 255, 0.75); + box-shadow: none; +} +.btn-toolbar .btn.active { + color: #ffffff; +} +.btn-toolbar .btn > [class^="fui-"] { + font-size: 16px; + margin: 0 1px; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 30px / 2; + 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: normal; + font-size: 15px; + line-height: 2.3; +} +.form-control::-moz-placeholder, +.select2-search input[type="text"]::-moz-placeholder { + color: #b2bcc5; + opacity: 1; +} +.form-control:-ms-input-placeholder, +.select2-search input[type="text"]:-ms-input-placeholder { + color: #b2bcc5; +} +.form-control::-webkit-input-placeholder, +.select2-search input[type="text"]::-webkit-input-placeholder { + color: #b2bcc5; +} +.form-control, +.select2-search input[type="text"] { + border: 2px solid #bdc3c7; + color: #34495e; + font-family: "Lato", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 1.467; + padding: 8px 12px; + height: 42px; + border-radius: 6px; + box-shadow: none; + -webkit-transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; + transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; +} +.form-group.focus .form-control, +.form-control:focus, +.form-group.focus .select2-search input[type="text"], +.select2-search input[type="text"]:focus { + border-color: #1abc9c; + outline: 0; + box-shadow: none; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control, +.select2-search input[type="text"][disabled], +.select2-search input[type="text"][readonly], +fieldset[disabled] .select2-search input[type="text"] { + background-color: #f4f6f6; + border-color: #d5dbdb; + color: #d5dbdb; + cursor: default; + opacity: 0.7; + filter: alpha(opacity=70); +} +.form-control.flat, +.select2-search input[type="text"].flat { + border-color: transparent; +} +.form-control.flat:hover, +.select2-search input[type="text"].flat:hover { + border-color: #bdc3c7; +} +.form-control.flat:focus, +.select2-search input[type="text"].flat:focus { + border-color: #1abc9c; +} +.input-sm, +.form-group-sm .form-control, +.form-group-sm .select2-search input[type="text"], +.select2-search input[type="text"] { + height: 35px; + padding: 6px 10px; + font-size: 13px; + line-height: 1.462; + border-radius: 6px; +} +select.input-sm, +select.form-group-sm .form-control, +select.form-group-sm .select2-search input[type="text"], +select.select2-search input[type="text"] { + height: 35px; + line-height: 35px; +} +textarea.input-sm, +textarea.form-group-sm .form-control, +select[multiple].input-sm, +select[multiple].form-group-sm .form-control, +textarea.form-group-sm .select2-search input[type="text"], +select[multiple].form-group-sm .select2-search input[type="text"], +textarea.select2-search input[type="text"], +select[multiple].select2-search input[type="text"] { + height: auto; +} +.input-lg, +.form-group-lg .form-control, +.form-group-lg .select2-search input[type="text"] { + height: 45px; + padding: 10px 15px; + font-size: 17px; + line-height: 1.235; + border-radius: 6px; +} +select.input-lg, +select.form-group-lg .form-control, +select.form-group-lg .select2-search input[type="text"] { + height: 45px; + line-height: 45px; +} +textarea.input-lg, +textarea.form-group-lg .form-control, +select[multiple].input-lg, +select[multiple].form-group-lg .form-control, +textarea.form-group-lg .select2-search input[type="text"], +select[multiple].form-group-lg .select2-search input[type="text"] { + height: auto; +} +.input-hg, +.form-group-hg .form-control, +.form-horizontal .form-group-hg .form-control, +.form-group-hg .select2-search input[type="text"], +.form-horizontal .form-group-hg .select2-search input[type="text"] { + height: 53px; + padding: 10px 16px; + font-size: 22px; + line-height: 1.318; + border-radius: 6px; +} +select.input-hg, +select.form-group-hg .form-control, +select.form-group-hg .select2-search input[type="text"] { + height: 53px; + line-height: 53px; +} +textarea.input-hg, +textarea.form-group-hg .form-control, +select[multiple].input-hg, +select[multiple].form-group-hg .form-control, +textarea.form-group-hg .select2-search input[type="text"], +select[multiple].form-group-hg .select2-search input[type="text"] { + height: auto; +} +.form-control-feedback { + position: absolute; + top: 2px; + right: 2px; + margin-top: 1px; + line-height: 36px; + font-size: 17px; + color: #b2bcc5; + background-color: transparent; + padding: 0 12px 0 0; + border-radius: 6px; + pointer-events: none; +} +.input-hg + .form-control-feedback, +.control-feedback-hg { + font-size: 20px; + line-height: 48px; + padding-right: 16px; + width: auto; + height: 48px; +} +.input-lg + .form-control-feedback, +.control-feedback-lg { + font-size: 18px; + line-height: 40px; + width: auto; + height: 40px; + padding-right: 15px; +} +.input-sm + .form-control-feedback, +.control-feedback-sm, +.select2-search input[type="text"] + .form-control-feedback { + line-height: 29px; + height: 29px; + width: auto; + padding-right: 10px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline { + color: #2ecc71; +} +.has-success .form-control, +.has-success .select2-search input[type="text"] { + color: #2ecc71; + border-color: #2ecc71; + box-shadow: none; +} +.has-success .form-control::-moz-placeholder, +.has-success .select2-search input[type="text"]::-moz-placeholder { + color: #2ecc71; + opacity: 1; +} +.has-success .form-control:-ms-input-placeholder, +.has-success .select2-search input[type="text"]:-ms-input-placeholder { + color: #2ecc71; +} +.has-success .form-control::-webkit-input-placeholder, +.has-success .select2-search input[type="text"]::-webkit-input-placeholder { + color: #2ecc71; +} +.has-success .form-control:focus, +.has-success .select2-search input[type="text"]:focus { + border-color: #2ecc71; + box-shadow: none; +} +.has-success .input-group-addon { + color: #2ecc71; + border-color: #2ecc71; + background-color: #ffffff; +} +.has-success .form-control-feedback { + color: #2ecc71; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline { + color: #f1c40f; +} +.has-warning .form-control, +.has-warning .select2-search input[type="text"] { + color: #f1c40f; + border-color: #f1c40f; + box-shadow: none; +} +.has-warning .form-control::-moz-placeholder, +.has-warning .select2-search input[type="text"]::-moz-placeholder { + color: #f1c40f; + opacity: 1; +} +.has-warning .form-control:-ms-input-placeholder, +.has-warning .select2-search input[type="text"]:-ms-input-placeholder { + color: #f1c40f; +} +.has-warning .form-control::-webkit-input-placeholder, +.has-warning .select2-search input[type="text"]::-webkit-input-placeholder { + color: #f1c40f; +} +.has-warning .form-control:focus, +.has-warning .select2-search input[type="text"]:focus { + border-color: #f1c40f; + box-shadow: none; +} +.has-warning .input-group-addon { + color: #f1c40f; + border-color: #f1c40f; + background-color: #ffffff; +} +.has-warning .form-control-feedback { + color: #f1c40f; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline { + color: #e74c3c; +} +.has-error .form-control, +.has-error .select2-search input[type="text"] { + color: #e74c3c; + border-color: #e74c3c; + box-shadow: none; +} +.has-error .form-control::-moz-placeholder, +.has-error .select2-search input[type="text"]::-moz-placeholder { + color: #e74c3c; + opacity: 1; +} +.has-error .form-control:-ms-input-placeholder, +.has-error .select2-search input[type="text"]:-ms-input-placeholder { + color: #e74c3c; +} +.has-error .form-control::-webkit-input-placeholder, +.has-error .select2-search input[type="text"]::-webkit-input-placeholder { + color: #e74c3c; +} +.has-error .form-control:focus, +.has-error .select2-search input[type="text"]:focus { + border-color: #e74c3c; + box-shadow: none; +} +.has-error .input-group-addon { + color: #e74c3c; + border-color: #e74c3c; + background-color: #ffffff; +} +.has-error .form-control-feedback { + color: #e74c3c; +} +.form-control[disabled] + .form-control-feedback, +.form-control[readonly] + .form-control-feedback, +fieldset[disabled] .form-control + .form-control-feedback, +.form-control.disabled + .form-control-feedback, +.select2-search input[type="text"][disabled] + .form-control-feedback, +.select2-search input[type="text"][readonly] + .form-control-feedback, +fieldset[disabled] .select2-search input[type="text"] + .form-control-feedback, +.select2-search input[type="text"].disabled + .form-control-feedback { + cursor: not-allowed; + color: #d5dbdb; + background-color: transparent; + opacity: 0.7; + filter: alpha(opacity=70); +} +.help-block { + font-size: 14px; + margin-bottom: 5px; + color: #6b7a88; +} +.form-group { + position: relative; + margin-bottom: 20px; +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 3px; + padding-bottom: 3px; + } +} +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +.form-horizontal .form-control-static { + padding-top: 6px; + padding-bottom: 6px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-hg .control-label { + font-size: 22px; + padding-top: 2px; + padding-bottom: 0; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + font-size: 17px; + padding-top: 3px; + padding-bottom: 2px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + font-size: 13px; + padding-top: 2px; + padding-bottom: 2px; + } +} +.input-group .form-control, +.input-group .select2-search input[type="text"] { + position: static; +} +.input-group-hg > .form-control, +.input-group-hg > .input-group-addon, +.input-group-hg > .input-group-btn > .btn, +.input-group-hg > .select2-search input[type="text"] { + 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, +select.input-group-hg > .select2-search input[type="text"] { + height: 53px; + line-height: 53px; +} +textarea.input-group-hg > .form-control, +textarea.input-group-hg > .input-group-addon, +textarea.input-group-hg > .input-group-btn > .btn, +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 > .select2-search input[type="text"], +select[multiple].input-group-hg > .select2-search input[type="text"] { + height: auto; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn, +.input-group-lg > .select2-search input[type="text"] { + 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, +select.input-group-lg > .select2-search input[type="text"] { + height: 45px; + line-height: 45px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +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 > .select2-search input[type="text"], +select[multiple].input-group-lg > .select2-search input[type="text"] { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn, +.input-group-sm > .select2-search input[type="text"] { + 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, +select.input-group-sm > .select2-search input[type="text"] { + height: 35px; + line-height: 35px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +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 > .select2-search input[type="text"], +select[multiple].input-group-sm > .select2-search input[type="text"] { + height: auto; +} +.input-group-addon { + padding: 10px 12px; + font-size: 15px; + color: #ffffff; + text-align: center; + background-color: #bdc3c7; + border: 2px solid #bdc3c7; + border-radius: 6px; + -webkit-transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; + transition: border 0.25s linear, color 0.25s linear, background-color 0.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), +.input-group .select2-search input[type="text"]:first-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group .select2-search input[type="text"]:last-child { + 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: #ffffff; + color: #1abc9c; +} +.form-group.focus .input-group-btn .btn-default, +.input-group.focus .input-group-btn .btn-default { + color: #ffffff; + background-color: #1abc9c; +} +.form-group.focus .input-group-btn .btn-default:hover, +.input-group.focus .input-group-btn .btn-default:hover, +.form-group.focus .input-group-btn .btn-default.hover, +.input-group.focus .input-group-btn .btn-default.hover, +.form-group.focus .input-group-btn .btn-default:focus, +.input-group.focus .input-group-btn .btn-default:focus, +.form-group.focus .input-group-btn .btn-default:active, +.input-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, +.open > .dropdown-toggle.form-group.focus .input-group-btn .btn-default, +.open > .dropdown-toggle.input-group.focus .input-group-btn .btn-default { + color: #ffffff; + background-color: #48c9b0; + border-color: #48c9b0; +} +.form-group.focus .input-group-btn .btn-default:active, +.input-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, +.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, +.input-group.focus .input-group-btn .btn-default.disabled, +.form-group.focus .input-group-btn .btn-default[disabled], +.input-group.focus .input-group-btn .btn-default[disabled], +fieldset[disabled] .form-group.focus .input-group-btn .btn-default, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default, +.form-group.focus .input-group-btn .btn-default.disabled:hover, +.input-group.focus .input-group-btn .btn-default.disabled:hover, +.form-group.focus .input-group-btn .btn-default[disabled]:hover, +.input-group.focus .input-group-btn .btn-default[disabled]:hover, +fieldset[disabled] .form-group.focus .input-group-btn .btn-default:hover, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default:hover, +.form-group.focus .input-group-btn .btn-default.disabled.hover, +.input-group.focus .input-group-btn .btn-default.disabled.hover, +.form-group.focus .input-group-btn .btn-default[disabled].hover, +.input-group.focus .input-group-btn .btn-default[disabled].hover, +fieldset[disabled] .form-group.focus .input-group-btn .btn-default.hover, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default.hover, +.form-group.focus .input-group-btn .btn-default.disabled:focus, +.input-group.focus .input-group-btn .btn-default.disabled:focus, +.form-group.focus .input-group-btn .btn-default[disabled]:focus, +.input-group.focus .input-group-btn .btn-default[disabled]:focus, +fieldset[disabled] .form-group.focus .input-group-btn .btn-default:focus, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default:focus, +.form-group.focus .input-group-btn .btn-default.disabled:active, +.input-group.focus .input-group-btn .btn-default.disabled:active, +.form-group.focus .input-group-btn .btn-default[disabled]:active, +.input-group.focus .input-group-btn .btn-default[disabled]:active, +fieldset[disabled] .form-group.focus .input-group-btn .btn-default:active, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default:active, +.form-group.focus .input-group-btn .btn-default.disabled.active, +.input-group.focus .input-group-btn .btn-default.disabled.active, +.form-group.focus .input-group-btn .btn-default[disabled].active, +.input-group.focus .input-group-btn .btn-default[disabled].active, +fieldset[disabled] .form-group.focus .input-group-btn .btn-default.active, +fieldset[disabled] .input-group.focus .input-group-btn .btn-default.active { + background-color: #bdc3c7; + border-color: #1abc9c; +} +.form-group.focus .input-group-btn .btn-default .badge, +.input-group.focus .input-group-btn .btn-default .badge { + color: #1abc9c; + background-color: #ffffff; +} +.input-group-btn .btn { + background-color: #ffffff; + border: 2px solid #bdc3c7; + color: #bdc3c7; + line-height: 18px; + height: 42px; +} +.input-group-btn .btn-default { + color: #ffffff; + background-color: #bdc3c7; +} +.input-group-btn .btn-default:hover, +.input-group-btn .btn-default.hover, +.input-group-btn .btn-default:focus, +.input-group-btn .btn-default:active, +.input-group-btn .btn-default.active, +.open > .dropdown-toggle.input-group-btn .btn-default { + color: #ffffff; + 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], +fieldset[disabled] .input-group-btn .btn-default, +.input-group-btn .btn-default.disabled:hover, +.input-group-btn .btn-default[disabled]:hover, +fieldset[disabled] .input-group-btn .btn-default:hover, +.input-group-btn .btn-default.disabled.hover, +.input-group-btn .btn-default[disabled].hover, +fieldset[disabled] .input-group-btn .btn-default.hover, +.input-group-btn .btn-default.disabled:focus, +.input-group-btn .btn-default[disabled]:focus, +fieldset[disabled] .input-group-btn .btn-default:focus, +.input-group-btn .btn-default.disabled:active, +.input-group-btn .btn-default[disabled]:active, +fieldset[disabled] .input-group-btn .btn-default:active, +.input-group-btn .btn-default.disabled.active, +.input-group-btn .btn-default[disabled].active, +fieldset[disabled] .input-group-btn .btn-default.active { + background-color: #bdc3c7; + border-color: #bdc3c7; +} +.input-group-btn .btn-default .badge { + color: #bdc3c7; + background-color: #ffffff; +} +.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: -3px; +} +.input-group-btn:last-child > .btn { + border-left-width: 0; + margin-left: -3px; +} +.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, +.input-group-rounded .input-group-btn + .select2-search input[type="text"] { + 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, +.input-group-hg.input-group-rounded .input-group-btn + .select2-search input[type="text"] { + 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, +.input-group-lg.input-group-rounded .input-group-btn + .select2-search input[type="text"] { + 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, +.input-group-rounded .select2-search input[type="text"]:first-child { + 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, +.input-group-hg.input-group-rounded .select2-search input[type="text"]:first-child { + 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, +.input-group-lg.input-group-rounded .select2-search input[type="text"]:first-child { + border-bottom-left-radius: 25px; + border-top-left-radius: 25px; +} +.input-group-rounded .input-group-btn + .form-control, +.input-group-rounded .input-group-btn + .select2-search input[type="text"] { + 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 .icons, +.radio .icons { + color: #bdc3c7; + display: block; + height: 20px; + top: 0; + left: 0; + position: absolute; + width: 20px; + text-align: center; + line-height: 20px; + font-size: 20px; + cursor: pointer; +} +.checkbox .icons .icon-checked, +.radio .icons .icon-checked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox .icon-checked, +.radio .icon-checked, +.checkbox .icon-unchecked, +.radio .icon-unchecked { + display: inline-table; + position: absolute; + left: 0; + top: 0; + background-color: transparent; + margin: 0; + opacity: 1; + -webkit-filter: none; + filter: none; + -webkit-transition: color .25s linear; + transition: color .25s linear; +} +.checkbox .icon-checked:before, +.radio .icon-checked:before, +.checkbox .icon-unchecked:before, +.radio .icon-unchecked:before { + font-family: 'Flat-UI-Icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.checkbox .icon-checked:before { + content: "\e60e"; +} +.checkbox .icon-unchecked:before { + content: "\e60d"; +} +.radio .icon-checked:before { + content: "\e60c"; +} +.radio .icon-unchecked:before { + content: "\e60b"; +} +.checkbox input[type="checkbox"].custom-checkbox, +.radio input[type="checkbox"].custom-checkbox, +.checkbox input[type="radio"].custom-radio, +.radio input[type="radio"].custom-radio { + outline: none !important; + opacity: 0; + position: absolute; + margin: 0; + padding: 0; + left: 0; + top: 0; + width: 20px; + height: 20px; +} +.checkbox input[type="checkbox"].custom-checkbox:hover:not(.nohover):not(:disabled) + .icons .icon-unchecked, +.radio input[type="checkbox"].custom-checkbox:hover:not(.nohover):not(:disabled) + .icons .icon-unchecked, +.checkbox input[type="radio"].custom-radio:hover:not(.nohover):not(:disabled) + .icons .icon-unchecked, +.radio input[type="radio"].custom-radio:hover:not(.nohover):not(:disabled) + .icons .icon-unchecked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox input[type="checkbox"].custom-checkbox:hover:not(.nohover):not(:disabled) + .icons .icon-checked, +.radio input[type="checkbox"].custom-checkbox:hover:not(.nohover):not(:disabled) + .icons .icon-checked, +.checkbox input[type="radio"].custom-radio:hover:not(.nohover):not(:disabled) + .icons .icon-checked, +.radio input[type="radio"].custom-radio:hover:not(.nohover):not(:disabled) + .icons .icon-checked { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.checkbox input[type="checkbox"].custom-checkbox:checked + .icons, +.radio input[type="checkbox"].custom-checkbox:checked + .icons, +.checkbox input[type="radio"].custom-radio:checked + .icons, +.radio input[type="radio"].custom-radio:checked + .icons { + color: #1abc9c; +} +.checkbox input[type="checkbox"].custom-checkbox:checked + .icons .icon-unchecked, +.radio input[type="checkbox"].custom-checkbox:checked + .icons .icon-unchecked, +.checkbox input[type="radio"].custom-radio:checked + .icons .icon-unchecked, +.radio input[type="radio"].custom-radio:checked + .icons .icon-unchecked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox input[type="checkbox"].custom-checkbox:checked + .icons .icon-checked, +.radio input[type="checkbox"].custom-checkbox:checked + .icons .icon-checked, +.checkbox input[type="radio"].custom-radio:checked + .icons .icon-checked, +.radio input[type="radio"].custom-radio:checked + .icons .icon-checked { + opacity: 1; + -webkit-filter: none; + filter: none; + color: #1abc9c; +} +.checkbox input[type="checkbox"].custom-checkbox:disabled + .icons, +.radio input[type="checkbox"].custom-checkbox:disabled + .icons, +.checkbox input[type="radio"].custom-radio:disabled + .icons, +.radio input[type="radio"].custom-radio:disabled + .icons { + cursor: default; + color: #e6e8ea; +} +.checkbox input[type="checkbox"].custom-checkbox:disabled + .icons .icon-unchecked, +.radio input[type="checkbox"].custom-checkbox:disabled + .icons .icon-unchecked, +.checkbox input[type="radio"].custom-radio:disabled + .icons .icon-unchecked, +.radio input[type="radio"].custom-radio:disabled + .icons .icon-unchecked { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.checkbox input[type="checkbox"].custom-checkbox:disabled + .icons .icon-checked, +.radio input[type="checkbox"].custom-checkbox:disabled + .icons .icon-checked, +.checkbox input[type="radio"].custom-radio:disabled + .icons .icon-checked, +.radio input[type="radio"].custom-radio:disabled + .icons .icon-checked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox input[type="checkbox"].custom-checkbox:disabled:checked + .icons, +.radio input[type="checkbox"].custom-checkbox:disabled:checked + .icons, +.checkbox input[type="radio"].custom-radio:disabled:checked + .icons, +.radio input[type="radio"].custom-radio:disabled:checked + .icons { + color: #e6e8ea; +} +.checkbox input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-unchecked, +.radio input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-unchecked, +.checkbox input[type="radio"].custom-radio:disabled:checked + .icons .icon-unchecked, +.radio input[type="radio"].custom-radio:disabled:checked + .icons .icon-unchecked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-checked, +.radio input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-checked, +.checkbox input[type="radio"].custom-radio:disabled:checked + .icons .icon-checked, +.radio input[type="radio"].custom-radio:disabled:checked + .icons .icon-checked { + opacity: 1; + -webkit-filter: none; + filter: none; + color: #e6e8ea; +} +.checkbox input[type="checkbox"].custom-checkbox:indeterminate + .icons, +.radio input[type="checkbox"].custom-checkbox:indeterminate + .icons, +.checkbox input[type="radio"].custom-radio:indeterminate + .icons, +.radio input[type="radio"].custom-radio:indeterminate + .icons { + color: #bdc3c7; +} +.checkbox input[type="checkbox"].custom-checkbox:indeterminate + .icons .icon-unchecked, +.radio input[type="checkbox"].custom-checkbox:indeterminate + .icons .icon-unchecked, +.checkbox input[type="radio"].custom-radio:indeterminate + .icons .icon-unchecked, +.radio input[type="radio"].custom-radio:indeterminate + .icons .icon-unchecked { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.checkbox input[type="checkbox"].custom-checkbox:indeterminate + .icons .icon-checked, +.radio input[type="checkbox"].custom-checkbox:indeterminate + .icons .icon-checked, +.checkbox input[type="radio"].custom-radio:indeterminate + .icons .icon-checked, +.radio input[type="radio"].custom-radio:indeterminate + .icons .icon-checked { + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox input[type="checkbox"].custom-checkbox:indeterminate + .icons:before, +.radio input[type="checkbox"].custom-checkbox:indeterminate + .icons:before, +.checkbox input[type="radio"].custom-radio:indeterminate + .icons:before, +.radio input[type="radio"].custom-radio:indeterminate + .icons:before { + content: "\2013"; + position: absolute; + top: 0; + left: 0; + line-height: 20px; + width: 20px; + text-align: center; + color: #ffffff; + font-size: 22px; + z-index: 10; +} +.checkbox.primary input[type="checkbox"].custom-checkbox + .icons, +.radio.primary input[type="checkbox"].custom-checkbox + .icons, +.checkbox.primary input[type="radio"].custom-radio + .icons, +.radio.primary input[type="radio"].custom-radio + .icons { + color: #34495e; +} +.checkbox.primary input[type="checkbox"].custom-checkbox:checked + .icons, +.radio.primary input[type="checkbox"].custom-checkbox:checked + .icons, +.checkbox.primary input[type="radio"].custom-radio:checked + .icons, +.radio.primary input[type="radio"].custom-radio:checked + .icons { + color: #1abc9c; +} +.checkbox.primary input[type="checkbox"].custom-checkbox:disabled + .icons, +.radio.primary input[type="checkbox"].custom-checkbox:disabled + .icons, +.checkbox.primary input[type="radio"].custom-radio:disabled + .icons, +.radio.primary input[type="radio"].custom-radio:disabled + .icons { + cursor: default; + color: #bdc3c7; +} +.checkbox.primary input[type="checkbox"].custom-checkbox:disabled + .icons.checked, +.radio.primary input[type="checkbox"].custom-checkbox:disabled + .icons.checked, +.checkbox.primary input[type="radio"].custom-radio:disabled + .icons.checked, +.radio.primary input[type="radio"].custom-radio:disabled + .icons.checked { + color: #bdc3c7; +} +.checkbox.primary input[type="checkbox"].custom-checkbox:indeterminate + .icons, +.radio.primary input[type="checkbox"].custom-checkbox:indeterminate + .icons, +.checkbox.primary input[type="radio"].custom-radio:indeterminate + .icons, +.radio.primary input[type="radio"].custom-radio:indeterminate + .icons { + color: #34495e; +} +.input-group-addon .radio, +.input-group-addon .checkbox { + margin: -2px 0; + padding-left: 20px; +} +.input-group-addon .radio .icons, +.input-group-addon .checkbox .icons { + color: #e6e8ea; +} +.input-group-addon .radio input[type="checkbox"].custom-checkbox:checked + .icons, +.input-group-addon .checkbox input[type="checkbox"].custom-checkbox:checked + .icons, +.input-group-addon .radio input[type="radio"].custom-radio:checked + .icons, +.input-group-addon .checkbox input[type="radio"].custom-radio:checked + .icons { + color: #ffffff; +} +.input-group-addon .radio input[type="checkbox"].custom-checkbox:checked + .icons .icon-checked, +.input-group-addon .checkbox input[type="checkbox"].custom-checkbox:checked + .icons .icon-checked, +.input-group-addon .radio input[type="radio"].custom-radio:checked + .icons .icon-checked, +.input-group-addon .checkbox input[type="radio"].custom-radio:checked + .icons .icon-checked { + color: #ffffff; +} +.input-group-addon .radio input[type="checkbox"].custom-checkbox:disabled + .icons, +.input-group-addon .checkbox input[type="checkbox"].custom-checkbox:disabled + .icons, +.input-group-addon .radio input[type="radio"].custom-radio:disabled + .icons, +.input-group-addon .checkbox input[type="radio"].custom-radio:disabled + .icons { + color: rgba(230, 232, 234, 0.6); +} +.input-group-addon .radio input[type="checkbox"].custom-checkbox:disabled:checked + .icons, +.input-group-addon .checkbox input[type="checkbox"].custom-checkbox:disabled:checked + .icons, +.input-group-addon .radio input[type="radio"].custom-radio:disabled:checked + .icons, +.input-group-addon .checkbox input[type="radio"].custom-radio:disabled:checked + .icons { + color: rgba(230, 232, 234, 0.6); +} +.input-group-addon .radio input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-checked, +.input-group-addon .checkbox input[type="checkbox"].custom-checkbox:disabled:checked + .icons .icon-checked, +.input-group-addon .radio input[type="radio"].custom-radio:disabled:checked + .icons .icon-checked, +.input-group-addon .checkbox input[type="radio"].custom-radio:disabled:checked + .icons .icon-checked { + color: rgba(230, 232, 234, 0.6); +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: 10px; +} +.form-inline .checkbox, +.form-inline .radio { + padding-left: 32px; +} +.bootstrap-tagsinput { + background-color: #ffffff; + border: 2px solid #ebedef; + border-radius: 6px; + margin-bottom: 18px; + padding: 6px 1px 1px 6px; + text-align: left; + font-size: 0; +} +.bootstrap-tagsinput .tag { + border-radius: 4px; + background-color: #ebedef; + color: #7b8996; + font-size: 13px; + cursor: pointer; + display: inline-block; + position: relative; + vertical-align: middle; + overflow: hidden; + margin: 0 7px 7px 0; + line-height: 15px; + height: 27px; + padding: 6px 21px; + -webkit-transition: .25s linear; + transition: .25s linear; +} +.bootstrap-tagsinput .tag > span { + color: #ffffff; + cursor: pointer; + font-size: 12px; + position: absolute; + right: 0; + text-align: right; + text-decoration: none; + top: 0; + width: 100%; + bottom: 0; + padding: 0 10px 0 0; + z-index: 2; + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: opacity .25s linear; + transition: opacity .25s linear; +} +.bootstrap-tagsinput .tag > span:after { + content: "\e609"; + font-family: "Flat-UI-Icons"; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + line-height: 27px; +} +.bootstrap-tagsinput .tag:hover { + background-color: #16a085; + color: #ffffff; + padding-right: 28px; + padding-left: 14px; +} +.bootstrap-tagsinput .tag:hover > span { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.bootstrap-tagsinput input[type="text"] { + font-size: 14px; + border: none; + box-shadow: none; + outline: none; + background-color: transparent; + padding: 0; + margin: 0; + width: auto !important; + max-width: inherit; + min-width: 80px; + vertical-align: top; + height: 29px; + color: #34495e; +} +.bootstrap-tagsinput input[type="text"]:first-child { + height: 23px; + margin: 3px 0 8px; +} +.tags_clear { + clear: both; + width: 100%; + height: 0; +} +.not_valid { + background: #fbd8db !important; + color: #90111a !important; + margin-left: 5px !important; +} +.tagsinput-primary { + margin-bottom: 18px; +} +.tagsinput-primary .bootstrap-tagsinput { + border-color: #1abc9c; + margin-bottom: 0; +} +.tagsinput-primary .tag { + background-color: #1abc9c; + color: #ffffff; +} +.tagsinput-primary .tag:hover { + background-color: #16a085; + color: #ffffff; +} +.bootstrap-tagsinput .twitter-typeahead { + width: auto; + vertical-align: top; +} +.bootstrap-tagsinput .twitter-typeahead .tt-input { + min-width: 200px; +} +.bootstrap-tagsinput .twitter-typeahead .tt-dropdown-menu { + width: auto; + min-width: 120px; + margin-top: 11px; +} +.twitter-typeahead { + width: 100%; +} +.twitter-typeahead .tt-dropdown-menu { + width: 100%; + margin-top: 5px; + border: 2px solid #1abc9c; + padding: 5px 0; + background-color: #ffffff; + 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, +.twitter-typeahead .tt-suggestion.tt-cursor { + cursor: pointer; + color: #fff; + background-color: #16a085; +} +.progress { + background: #ebedef; + border-radius: 32px; + height: 12px; + box-shadow: none; +} +.progress-bar { + background: #1abc9c; + line-height: 12px; + 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; + 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:hover, +.ui-slider-handle:focus { + background-color: #48c9b0; + outline: none; +} +.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: #34495e; + border-radius: 6px; + color: #ffffff; + 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: none; + border: none; + border-left: 2px solid #2c3e50; + color: #ffffff; + padding: 9px 15px 10px; + text-decoration: none; + white-space: nowrap; + border-radius: 0 6px 6px 0; + line-height: 1.313; +} +.pager li > a:hover, +.pager li > span:hover, +.pager li > a:focus, +.pager li > span:focus { + 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; + display: block; + background: #d6dbdf; + color: #ffffff; + padding: 0; + display: inline-block; + border-radius: 6px; + word-spacing: -0.5px; +} +@media (min-width: 768px) { + .pagination { + display: inline-block; + } +} +@media (max-width: 767px) { + .pagination { + height: 41px; + padding: 0 55px 0 52px; + overflow: auto; + white-space: nowrap; + border-radius: 6px; + } +} +.pagination li { + display: inline-block; + margin-right: -2px; + vertical-align: middle; + word-spacing: normal; +} +.pagination li a { + position: static; +} +.pagination li.active > a, +.pagination li.active > span { + background-color: #1abc9c; + color: #ffffff; + border-color: #dfe2e5; +} +.pagination li.active > a, +.pagination li.active > span, +.pagination li.active > a:hover, +.pagination li.active > span:hover, +.pagination li.active > a:focus, +.pagination li.active > span:focus { + background-color: #1abc9c; + color: #ffffff; + border-color: #dfe2e5; +} +.pagination li.active.previous > a, +.pagination li.active.next > a, +.pagination li.active.previous > span, +.pagination li.active.next > span { + margin: 0; +} +.pagination li.active.previous > a, +.pagination li.active.next > a, +.pagination li.active.previous > span, +.pagination li.active.next > span, +.pagination li.active.previous > a:hover, +.pagination li.active.next > a:hover, +.pagination li.active.previous > span:hover, +.pagination li.active.next > span:hover, +.pagination li.active.previous > a:focus, +.pagination li.active.next > a:focus, +.pagination li.active.previous > span:focus, +.pagination li.active.next > span:focus { + background-color: #1abc9c; + color: #ffffff; +} +.pagination li:first-child > a, +.pagination li:first-child > span { + border-radius: 6px 0 0 6px; + border-left: none; +} +.pagination li:first-child.previous + li > a, +.pagination li:first-child.previous + li > span { + border-left-width: 0; +} +.pagination li:last-child { + margin-right: 0; +} +.pagination li:last-child > a, +.pagination li:last-child > span, +.pagination li:last-child > a:hover, +.pagination li:last-child > span:hover, +.pagination li:last-child > a:focus, +.pagination li:last-child > span:focus { + border-radius: 0 6px 6px 0; +} +.pagination li.previous > a, +.pagination li.next > a, +.pagination li.previous > span, +.pagination li.next > span { + border-right: 2px solid #e4e7ea; + font-size: 16px; + min-width: auto; + padding: 12px 17px; + background-color: transparent; +} +.pagination li.next > a, +.pagination li.next > span { + border-right: none; +} +.pagination li.disabled > a, +.pagination li.disabled > span { + color: #ffffff; + background-color: rgba(255, 255, 255, 0.3); + border-right-color: #dfe2e5; + cursor: not-allowed; +} +.pagination li.disabled > a:hover, +.pagination li.disabled > span:hover, +.pagination li.disabled > a:focus, +.pagination li.disabled > span:focus, +.pagination li.disabled > a:active, +.pagination li.disabled > span:active { + background-color: rgba(255, 255, 255, 0.4); + color: #ffffff; +} +@media (max-width: 767px) { + .pagination li.next, + .pagination li.previous { + background-color: #d6dbdf; + position: absolute; + right: 0; + top: 0; + z-index: 10; + border-radius: 0 6px 6px 0; + } + .pagination li.previous { + left: 0; + right: auto; + border-radius: 6px 0 0 6px; + } +} +.pagination li > a, +.pagination li > span { + display: inline-block; + background: transparent; + border: none; + border-left: 2px solid #e4e7ea; + color: #ffffff; + font-size: 14px; + line-height: 16px; + min-height: 41px; + min-width: 41px; + outline: none; + padding: 12px 10px; + text-align: center; + -webkit-transition: 0.25s ease-out; + transition: 0.25s ease-out; +} +.pagination li > a:hover, +.pagination li > span:hover, +.pagination li > a:focus, +.pagination li > span:focus { + background-color: #1abc9c; + color: #ffffff; +} +.pagination li > a:active, +.pagination li > span:active { + background-color: #1abc9c; + color: #ffffff; +} +.pagination > .btn.previous, +.pagination > .btn.next { + margin-right: 8px; + font-size: 14px; + line-height: 1.429; + padding-left: 23px; + padding-right: 23px; +} +.pagination > .btn.previous [class*="fui-"], +.pagination > .btn.next [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; +} +@media (max-width: 767px) { + .pagination > .btn { + display: block; + margin: 0; + width: 50%; + } + .pagination > .btn:first-child { + border-bottom: 2px solid #dfe2e5; + border-radius: 6px 0 0; + } + .pagination > .btn:first-child.btn-primary { + border-bottom-color: #48c9b0; + } + .pagination > .btn:first-child.btn-danger { + border-bottom-color: #ec7063; + } + .pagination > .btn:first-child.btn-warning { + border-bottom-color: #f4d03f; + } + .pagination > .btn:first-child.btn-success { + border-bottom-color: #58d68d; + } + .pagination > .btn:first-child.btn-info { + border-bottom-color: #5dade2; + } + .pagination > .btn:first-child.btn-inverse { + border-bottom-color: #5d6d7e; + } + .pagination > .btn:first-child > [class*="fui"] { + margin-left: -20px; + } + .pagination > .btn + ul { + padding: 0; + text-align: center; + border-radius: 0 0 6px 6px; + } + .pagination > .btn + ul + .btn { + border-bottom: 2px solid #dfe2e5; + position: absolute; + right: 0; + top: 0; + border-radius: 0 6px 0 0; + } + .pagination > .btn + ul + .btn.btn-primary { + border-bottom-color: #48c9b0; + } + .pagination > .btn + ul + .btn.btn-danger { + border-bottom-color: #ec7063; + } + .pagination > .btn + ul + .btn.btn-warning { + border-bottom-color: #f4d03f; + } + .pagination > .btn + ul + .btn.btn-success { + border-bottom-color: #58d68d; + } + .pagination > .btn + ul + .btn.btn-info { + border-bottom-color: #5dade2; + } + .pagination > .btn + ul + .btn.btn-inverse { + border-bottom-color: #5d6d7e; + } + .pagination > .btn + ul + .btn > [class*="fui"] { + margin-right: -20px; + } + .pagination ul { + display: block; + } + .pagination ul > li > a { + border-radius: 0; + } +} +.pagination-danger { + background-color: #e74c3c; +} +.pagination-danger li.previous > a { + border-right-color: #ef897e; +} +.pagination-danger li > a, +.pagination-danger li > span { + border-left-color: #ef897e; +} +.pagination-danger li > a:hover, +.pagination-danger li > span:hover, +.pagination-danger li > a:focus, +.pagination-danger li > span:focus { + border-left-color: #ef897e; + background-color: #ec7063; +} +.pagination-danger li > a:active, +.pagination-danger li > span:active { + background-color: #c44133; +} +.pagination-danger li.active > a, +.pagination-danger li.active > span { + border-left-color: #ef897e; + background-color: #c44133; +} +.pagination-danger li.active > a:hover, +.pagination-danger li.active > span:hover, +.pagination-danger li.active > a:focus, +.pagination-danger li.active > span:focus { + border-left-color: #ef897e; + background-color: #ec7063; +} +.pagination-success { + background-color: #2ecc71; +} +.pagination-success li.previous > a { + border-right-color: #75dda1; +} +.pagination-success li > a, +.pagination-success li > span { + border-left-color: #75dda1; +} +.pagination-success li > a:hover, +.pagination-success li > span:hover, +.pagination-success li > a:focus, +.pagination-success li > span:focus { + border-left-color: #75dda1; + background-color: #58d68d; +} +.pagination-success li > a:active, +.pagination-success li > span:active { + background-color: #27ad60; +} +.pagination-success li.active > a, +.pagination-success li.active > span { + border-left-color: #75dda1; + background-color: #27ad60; +} +.pagination-success li.active > a:hover, +.pagination-success li.active > span:hover, +.pagination-success li.active > a:focus, +.pagination-success li.active > span:focus { + border-left-color: #75dda1; + background-color: #58d68d; +} +.pagination-warning { + background-color: #f1c40f; +} +.pagination-warning li.previous > a { + border-right-color: #f6d861; +} +.pagination-warning li > a, +.pagination-warning li > span { + border-left-color: #f6d861; +} +.pagination-warning li > a:hover, +.pagination-warning li > span:hover, +.pagination-warning li > a:focus, +.pagination-warning li > span:focus { + border-left-color: #f6d861; + background-color: #f4d313; +} +.pagination-warning li > a:active, +.pagination-warning li > span:active { + background-color: #cda70d; +} +.pagination-warning li.active > a, +.pagination-warning li.active > span { + border-left-color: #f6d861; + background-color: #cda70d; +} +.pagination-warning li.active > a:hover, +.pagination-warning li.active > span:hover, +.pagination-warning li.active > a:focus, +.pagination-warning li.active > span:focus { + border-left-color: #f6d861; + background-color: #f4d313; +} +.pagination-info { + background-color: #3498db; +} +.pagination-info li.previous > a { + border-right-color: #79bbe7; +} +.pagination-info li > a, +.pagination-info li > span { + border-left-color: #79bbe7; +} +.pagination-info li > a:hover, +.pagination-info li > span:hover, +.pagination-info li > a:focus, +.pagination-info li > span:focus { + border-left-color: #79bbe7; + background-color: #5dade2; +} +.pagination-info li > a:active, +.pagination-info li > span:active { + background-color: #2c81ba; +} +.pagination-info li.active > a, +.pagination-info li.active > span { + border-left-color: #79bbe7; + background-color: #2c81ba; +} +.pagination-info li.active > a:hover, +.pagination-info li.active > span:hover, +.pagination-info li.active > a:focus, +.pagination-info li.active > span:focus { + border-left-color: #79bbe7; + background-color: #5dade2; +} +.pagination-inverse { + background-color: #34495e; +} +.pagination-inverse li.previous > a { + border-right-color: #798795; +} +.pagination-inverse li > a, +.pagination-inverse li > span { + border-left-color: #798795; +} +.pagination-inverse li > a:hover, +.pagination-inverse li > span:hover, +.pagination-inverse li > a:focus, +.pagination-inverse li > span:focus { + border-left-color: #798795; + background-color: #415b76; +} +.pagination-inverse li > a:active, +.pagination-inverse li > span:active { + background-color: #2c3e50; +} +.pagination-inverse li.active > a, +.pagination-inverse li.active > span { + border-left-color: #798795; + background-color: #2c3e50; +} +.pagination-inverse li.active > a:hover, +.pagination-inverse li.active > span:hover, +.pagination-inverse li.active > a:focus, +.pagination-inverse li.active > span:focus { + border-left-color: #798795; + background-color: #415b76; +} +.pagination-minimal > li:first-child { + border-radius: 6px 0 0 6px; +} +.pagination-minimal > li:first-child.previous + li > a, +.pagination-minimal > li:first-child.previous + li > span { + border-left-width: 5px; +} +.pagination-minimal > li:last-child { + border-radius: 0 6px 6px 0; +} +.pagination-minimal > li.previous > a, +.pagination-minimal > li.next > a, +.pagination-minimal > li.previous > span, +.pagination-minimal > li.next > span { + background: transparent; + border: none; + border-right: 2px solid #e4e7ea; + margin: 0 9px 0 0; + padding: 12px 17px; + border-radius: 6px 0 0 6px; +} +.pagination-minimal > li.previous > a, +.pagination-minimal > li.next > a, +.pagination-minimal > li.previous > span, +.pagination-minimal > li.next > span, +.pagination-minimal > li.previous > a:hover, +.pagination-minimal > li.next > a:hover, +.pagination-minimal > li.previous > span:hover, +.pagination-minimal > li.next > span:hover, +.pagination-minimal > li.previous > a:focus, +.pagination-minimal > li.next > a:focus, +.pagination-minimal > li.previous > span:focus, +.pagination-minimal > li.next > span:focus { + border-color: #e4e7ea !important; +} +@media (max-width: 767px) { + .pagination-minimal > li.previous > a, + .pagination-minimal > li.next > a, + .pagination-minimal > li.previous > span, + .pagination-minimal > li.next > span { + margin-right: 0; + } +} +.pagination-minimal > li.next { + margin-left: 9px; +} +.pagination-minimal > li.next > a, +.pagination-minimal > li.next > span { + border-left: 2px solid #e4e7ea; + border-right: none; + margin: 0; + border-radius: 0 6px 6px 0; +} +.pagination-minimal > li.active > a, +.pagination-minimal > li.active > span { + background-color: #ffffff; + border-color: #ffffff; + border-width: 2px !important; + color: #d6dbdf; + margin: 10px 5px 9px; +} +.pagination-minimal > li.active > a:hover, +.pagination-minimal > li.active > span:hover, +.pagination-minimal > li.active > a:focus, +.pagination-minimal > li.active > span:focus { + background-color: #ffffff; + border-color: #ffffff; + color: #d6dbdf; +} +.pagination-minimal > li.active.previous, +.pagination-minimal > li.active.next { + border-color: #e4e7ea; +} +.pagination-minimal > li.active.previous { + margin-right: 6px; +} +.pagination-minimal > li > a, +.pagination-minimal > li > span { + background: #ffffff; + border: 5px solid #d6dbdf; + color: #ffffff; + line-height: 16px; + margin: 7px 2px 6px; + min-width: 0; + min-height: 16px; + padding: 0 4px; + border-radius: 50px; + background-clip: padding-box; + -webkit-transition: background 0.2s ease-out, border-color 0s ease-out, color 0.2s ease-out; + transition: background 0.2s ease-out, border-color 0s ease-out, color 0.2s ease-out; +} +.pagination-minimal > li > a:hover, +.pagination-minimal > li > span:hover, +.pagination-minimal > li > a:focus, +.pagination-minimal > li > span:focus { + background-color: #1abc9c; + border-color: #1abc9c; + color: #ffffff; + -webkit-transition: background 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out; + transition: background 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out; +} +.pagination-minimal > li > a:active, +.pagination-minimal > li > span:active { + background-color: #16a085; + border-color: #16a085; +} +.pagination-plain { + font-size: 16px; + font-weight: 700; + list-style-type: none; + margin: 0 0 20px; + padding: 0; + height: 57px; +} +.pagination-plain > li { + display: inline; +} +.pagination-plain > li.previous { + padding-right: 23px; +} +.pagination-plain > li.next { + padding-left: 20px; +} +.pagination-plain > li.active > a { + color: #d3d7da; +} +.pagination-plain > li > a { + padding: 0 5px; +} +@media (max-width: 480px) { + .pagination-plain { + overflow: hidden; + text-align: center; + } + .pagination-plain > li.previous { + display: block; + margin-bottom: 10px; + text-align: left; + width: 50%; + } + .pagination-plain > li.next { + float: right; + margin-top: -64px; + text-align: right; + width: 50%; + } +} +@media (min-width: 768px) { + .pagination-plain { + height: auto; + } +} +.pagination-dropdown ul { + min-width: 67px; + width: auto; + left: 50%; + margin-left: -34px; +} +.pagination-dropdown ul li { + display: block; + margin-right: 0; +} +.pagination-dropdown ul li:first-child > a, +.pagination-dropdown ul li:first-child > span { + border-radius: 6px 6px 0 0; +} +.pagination-dropdown ul li:last-child > a, +.pagination-dropdown ul li:last-child > span { + border-radius: 0 0 6px 6px !important; +} +.pagination-dropdown ul li > a, +.pagination-dropdown ul li > span { + border-left: none; + display: block; + float: none; + padding: 8px 10px 7px; + text-align: center; + min-height: 0; +} +.pagination-dropdown.dropup { + position: relative; +} +.tooltip { + font-size: 14px; + line-height: 1.286; + z-index: 1070; +} +.tooltip.in { + opacity: 1; + filter: alpha(opacity=100); +} +.tooltip.top { + margin-top: -5px; + padding: 9px 0; +} +.tooltip.right { + margin-left: 5px; + padding: 0 9px; +} +.tooltip.bottom { + margin-top: 5px; + padding: 9px 0; +} +.tooltip.left { + margin-left: -5px; + padding: 0 9px; +} +.tooltip-inner { + max-width: 183px; + line-height: 1.286; + padding: 12px 12px; + color: #ffffff; + background-color: #34495e; + border-radius: 6px; +} +.tooltip.top .tooltip-arrow { + margin-left: -9px; + border-width: 9px 9px 0; + border-top-color: #34495e; +} +.tooltip.right .tooltip-arrow { + margin-top: -9px; + border-width: 9px 9px 9px 0; + border-right-color: #34495e; +} +.tooltip.left .tooltip-arrow { + margin-top: -9px; + border-width: 9px 0 9px 9px; + border-left-color: #34495e; +} +.tooltip.bottom .tooltip-arrow { + margin-left: -9px; + border-width: 0 9px 9px; + border-bottom-color: #34495e; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 5px; + vertical-align: middle; + border-top: 8px solid; + border-right: 6px solid transparent; + border-left: 6px solid transparent; + -webkit-transition: border-color 0.25s, color 0.25s; + transition: border-color 0.25s, color 0.25s; +} +.dropdown-menu, +.select2-drop { + z-index: 1000; + background-color: #f3f4f5; + min-width: 220px; + border: none; + margin-top: 9px; + padding: 0; + font-size: 14px; + border-radius: 4px; + box-shadow: none; +} +.dropdown-menu .divider { + height: 2px; + margin: 3px 0; + overflow: hidden; + background-color: rgba(202, 206, 209, 0.5); +} +.dropdown-menu > li > a { + padding: 8px 16px; + line-height: 1.429; + color: #606d7a; +} +.dropdown-menu > li:first-child > a:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.dropdown-menu > li:last-child > a:first-child { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.dropdown-menu.typeahead { + display: none; + width: auto; + margin-top: 5px; + border: 2px solid #1abc9c; + padding: 5px 0; + background-color: #ffffff; + border-radius: 6px; +} +.dropdown-menu.typeahead li a { + padding: 6px 14px; +} +.dropdown-menu.typeahead li:first-child a, +.dropdown-menu.typeahead li:last-child a { + padding: 6px 14px; + border-radius: 0; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #55606c; + background-color: rgba(202, 206, 209, 0.5); +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #1abc9c; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #bdc3c7; + background-color: transparent; + cursor: not-allowed; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + padding: 8px 16px; + line-height: 1.538; + font-size: 13px; + text-transform: uppercase; + color: rgba(52, 73, 94, 0.6); +} +.dropdown-header:first-child { + margin-top: 3px; +} +.dropdown-backdrop { + z-index: 990; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-bottom: 8px solid; + margin-bottom: .25em; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + margin-top: 0; + margin-bottom: 9px; +} +.dropdown-menu-inverse { + background-color: #34495e; +} +.dropdown-menu-inverse .divider { + height: 2px; + margin: 3px 0; + overflow: hidden; + background-color: rgba(43, 60, 78, 0.5); +} +.dropdown-menu-inverse > li > a { + color: rgba(255, 255, 255, 0.85); +} +.dropdown-menu-inverse > li > a:hover, +.dropdown-menu-inverse > li > a:focus { + color: rgba(255, 255, 255, 0.85); + background-color: rgba(43, 60, 78, 0.5); +} +.dropdown-menu-inverse > .active > a, +.dropdown-menu-inverse > .active > a:hover, +.dropdown-menu-inverse > .active > a:focus { + color: rgba(255, 255, 255, 0.85); + background-color: #1abc9c; +} +.dropdown-menu-inverse > .disabled > a, +.dropdown-menu-inverse > .disabled > a:hover, +.dropdown-menu-inverse > .disabled > a:focus { + color: rgba(255, 255, 255, 0.5); +} +.dropdown-menu-inverse > .disabled > a:hover, +.dropdown-menu-inverse > .disabled > a:focus { + background-color: transparent; +} +.dropdown-menu-inverse .dropdown-header { + color: rgba(255, 255, 255, 0.4); +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.select { + position: relative; + display: inline-block; + vertical-align: top; + min-width: 220px; + width: auto; +} +.form-group .select { + width: 100%; +} +.form-group .select > .select2-choice { + width: 100%; +} +.select.form-control, +.select.select2-search input[type="text"] { + border: none; + padding: 0; + height: auto; +} +.select2-choice { + width: 100%; + display: inline-block; + position: relative; + border: none; + font-size: 15px; + font-weight: normal; + line-height: 1.4; + border-radius: 4px; + padding: 10px 39px 10px 15px; + -webkit-transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; + transition: border 0.25s linear, color 0.25s linear, background-color 0.25s linear; +} +.select2-choice:hover, +.select2-choice:focus { + outline: none; +} +.select2-choice:active { + outline: none; + box-shadow: none; +} +.select2-container-disabled .select2-choice { + opacity: 0.7; + filter: alpha(opacity=70); +} +.select2-chosen { + overflow: hidden; + text-align: left; +} +.select2-arrow { + display: inline-block; + border-width: 8px 6px; + border-color: #34495e transparent; + border-style: solid; + border-bottom-style: none; + position: absolute; + right: 16px; + top: 42%; + -webkit-transform: scale(1.001); + -ms-transform: scale(1.001); + transform: scale(1.001); +} +.select2-arrow b { + display: none; +} +.btn-lg .select2-arrow { + border-top-width: 8px; + border-right-width: 6px; + border-left-width: 6px; +} +.select-default .select2-choice { + color: #ffffff; + background-color: #bdc3c7; +} +.select-default .select2-choice:hover, +.select-default .select2-choice.hover, +.select-default .select2-choice:focus, +.select-default .select2-choice:active { + color: #ffffff; + background-color: #cacfd2; + border-color: #cacfd2; +} +.select-default .select2-choice:active { + background: #a1a6a9; + border-color: #a1a6a9; +} +.select2-container-disabled.select-default .select2-choice, +.select2-container-disabled.select-default .select2-choice:hover, +.select2-container-disabled.select-default .select2-choice:focus, +.select2-container-disabled.select-default .select2-choice:active { + background-color: #bdc3c7; + border-color: #bdc3c7; +} +.select-default .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-primary .select2-choice { + color: #ffffff; + background-color: #1abc9c; +} +.select-primary .select2-choice:hover, +.select-primary .select2-choice.hover, +.select-primary .select2-choice:focus, +.select-primary .select2-choice:active { + color: #ffffff; + background-color: #48c9b0; + border-color: #48c9b0; +} +.select-primary .select2-choice:active { + background: #16a085; + border-color: #16a085; +} +.select2-container-disabled.select-primary .select2-choice, +.select2-container-disabled.select-primary .select2-choice:hover, +.select2-container-disabled.select-primary .select2-choice:focus, +.select2-container-disabled.select-primary .select2-choice:active { + background-color: #bdc3c7; + border-color: #1abc9c; +} +.select-primary .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-info .select2-choice { + color: #ffffff; + background-color: #3498db; +} +.select-info .select2-choice:hover, +.select-info .select2-choice.hover, +.select-info .select2-choice:focus, +.select-info .select2-choice:active { + color: #ffffff; + background-color: #5dade2; + border-color: #5dade2; +} +.select-info .select2-choice:active { + background: #2c81ba; + border-color: #2c81ba; +} +.select2-container-disabled.select-info .select2-choice, +.select2-container-disabled.select-info .select2-choice:hover, +.select2-container-disabled.select-info .select2-choice:focus, +.select2-container-disabled.select-info .select2-choice:active { + background-color: #bdc3c7; + border-color: #3498db; +} +.select-info .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-danger .select2-choice { + color: #ffffff; + background-color: #e74c3c; +} +.select-danger .select2-choice:hover, +.select-danger .select2-choice.hover, +.select-danger .select2-choice:focus, +.select-danger .select2-choice:active { + color: #ffffff; + background-color: #ec7063; + border-color: #ec7063; +} +.select-danger .select2-choice:active { + background: #c44133; + border-color: #c44133; +} +.select2-container-disabled.select-danger .select2-choice, +.select2-container-disabled.select-danger .select2-choice:hover, +.select2-container-disabled.select-danger .select2-choice:focus, +.select2-container-disabled.select-danger .select2-choice:active { + background-color: #bdc3c7; + border-color: #e74c3c; +} +.select-danger .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-success .select2-choice { + color: #ffffff; + background-color: #2ecc71; +} +.select-success .select2-choice:hover, +.select-success .select2-choice.hover, +.select-success .select2-choice:focus, +.select-success .select2-choice:active { + color: #ffffff; + background-color: #58d68d; + border-color: #58d68d; +} +.select-success .select2-choice:active { + background: #27ad60; + border-color: #27ad60; +} +.select2-container-disabled.select-success .select2-choice, +.select2-container-disabled.select-success .select2-choice:hover, +.select2-container-disabled.select-success .select2-choice:focus, +.select2-container-disabled.select-success .select2-choice:active { + background-color: #bdc3c7; + border-color: #2ecc71; +} +.select-success .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-warning .select2-choice { + color: #ffffff; + background-color: #f1c40f; +} +.select-warning .select2-choice:hover, +.select-warning .select2-choice.hover, +.select-warning .select2-choice:focus, +.select-warning .select2-choice:active { + color: #ffffff; + background-color: #f4d313; + border-color: #f4d313; +} +.select-warning .select2-choice:active { + background: #cda70d; + border-color: #cda70d; +} +.select2-container-disabled.select-warning .select2-choice, +.select2-container-disabled.select-warning .select2-choice:hover, +.select2-container-disabled.select-warning .select2-choice:focus, +.select2-container-disabled.select-warning .select2-choice:active { + background-color: #bdc3c7; + border-color: #f1c40f; +} +.select-warning .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select-inverse .select2-choice { + color: #ffffff; + background-color: #34495e; +} +.select-inverse .select2-choice:hover, +.select-inverse .select2-choice.hover, +.select-inverse .select2-choice:focus, +.select-inverse .select2-choice:active { + color: #ffffff; + background-color: #415b76; + border-color: #415b76; +} +.select-inverse .select2-choice:active { + background: #2c3e50; + border-color: #2c3e50; +} +.select2-container-disabled.select-inverse .select2-choice, +.select2-container-disabled.select-inverse .select2-choice:hover, +.select2-container-disabled.select-inverse .select2-choice:focus, +.select2-container-disabled.select-inverse .select2-choice:active { + background-color: #bdc3c7; + border-color: #34495e; +} +.select-inverse .select2-choice .select2-arrow { + border-top-color: #ffffff; +} +.select2-container.select-hg > .select2-choice { + padding: 13px 20px; + font-size: 22px; + line-height: 1.227; + border-radius: 6px; + padding-right: 49px; + min-height: 53px; +} +.select2-container.select-hg > .select2-choice .filter-option { + left: 20px; + right: 40px; + top: 13px; +} +.select2-container.select-hg > .select2-choice .select2-arrow { + right: 20px; +} +.select2-container.select-hg > .select2-choice > [class^="fui-"] { + top: 2px; +} +.select2-container.select-lg > .select2-choice { + padding: 10px 19px; + font-size: 17px; + line-height: 1.471; + border-radius: 6px; + padding-right: 47px; + min-height: 45px; +} +.select2-container.select-lg > .select2-choice .filter-option { + left: 18px; + right: 38px; +} +.select2-container.select-sm > .select2-choice { + padding: 9px 13px; + font-size: 13px; + line-height: 1.385; + border-radius: 4px; + padding-right: 35px; + min-height: 36px; +} +.select2-container.select-sm > .select2-choice .filter-option { + left: 13px; + right: 33px; +} +.select2-container.select-sm > .select2-choice .select2-arrow { + right: 13px; +} +.multiselect { + position: relative; + display: inline-block; + vertical-align: top; + min-width: 220px; + background-color: #ffffff; + border-radius: 6px; + text-align: left; + font-size: 0; + width: auto; + max-width: none; +} +.form-group .multiselect { + width: 100%; +} +.form-group .multiselect > .select2-choice { + width: 100%; +} +.multiselect.form-control, +.multiselect.select2-search input[type="text"] { + height: auto; + padding: 6px 1px 1px 6px; + border: 2px solid #ebedef; +} +.select2-choices { + margin: 0; + padding: 0; + position: relative; + cursor: text; + overflow: hidden; + min-height: 26px; +} +.select2-choices li { + float: left; + list-style: none; +} +.select2-search-choice { + border-radius: 4px; + color: #ffffff; + font-size: 13px; + cursor: pointer; + display: inline-block; + position: relative; + vertical-align: middle; + overflow: hidden; + margin: 0 5px 4px 0; + line-height: 15px; + height: 27px; + padding: 6px 21px; + -webkit-transition: .25s linear; + transition: .25s linear; +} +.select2-search-choice:hover { + padding-right: 28px; + padding-left: 14px; + color: #ffffff; +} +.select2-search-choice:hover .select2-search-choice-close { + opacity: 1; + -webkit-filter: none; + filter: none; + color: inherit; +} +.select2-search-choice .select2-search-choice-close { + color: #ffffff; + cursor: pointer; + font-size: 12px; + position: absolute; + right: 0; + text-align: right; + text-decoration: none; + top: 0; + width: 100%; + bottom: 0; + padding-right: 10px; + z-index: 2; + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: opacity .25s linear; + transition: opacity .25s linear; +} +.select2-search-choice .select2-search-choice-close:after { + content: "\e609"; + font-family: "Flat-UI-Icons"; + line-height: 27px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.select2-search-field input[type="text"] { + color: #34495e; + font-size: 14px; + border: none; + box-shadow: none; + outline: none; + background-color: transparent; + padding: 0; + margin: 0; + width: auto; + max-width: inherit; + min-width: 80px; + vertical-align: top; + height: 29px; +} +.select2-search-field:first-child input[type="text"] { + height: 23px; + margin: 3px 0 5px; +} +.select2-container-multi.multiselect-default { + border-color: #bdc3c7; +} +.select2-container-multi.multiselect-default .select2-search-choice { + background-color: #bdc3c7; +} +.select2-container-multi.multiselect-default .select2-search-choice:hover { + background-color: #cacfd2; +} +.select2-container-multi.multiselect-primary { + border-color: #1abc9c; +} +.select2-container-multi.multiselect-primary .select2-search-choice { + background-color: #1abc9c; +} +.select2-container-multi.multiselect-primary .select2-search-choice:hover { + background-color: #48c9b0; +} +.select2-container-multi.multiselect-info { + border-color: #3498db; +} +.select2-container-multi.multiselect-info .select2-search-choice { + background-color: #3498db; +} +.select2-container-multi.multiselect-info .select2-search-choice:hover { + background-color: #5dade2; +} +.select2-container-multi.multiselect-danger { + border-color: #e74c3c; +} +.select2-container-multi.multiselect-danger .select2-search-choice { + background-color: #e74c3c; +} +.select2-container-multi.multiselect-danger .select2-search-choice:hover { + background-color: #ec7063; +} +.select2-container-multi.multiselect-success { + border-color: #2ecc71; +} +.select2-container-multi.multiselect-success .select2-search-choice { + background-color: #2ecc71; +} +.select2-container-multi.multiselect-success .select2-search-choice:hover { + background-color: #58d68d; +} +.select2-container-multi.multiselect-warning { + border-color: #f1c40f; +} +.select2-container-multi.multiselect-warning .select2-search-choice { + background-color: #f1c40f; +} +.select2-container-multi.multiselect-warning .select2-search-choice:hover { + background-color: #f4d313; +} +.select2-container-multi.multiselect-inverse { + border-color: #34495e; +} +.select2-container-multi.multiselect-inverse .select2-search-choice { + background-color: #34495e; +} +.select2-container-multi.multiselect-inverse .select2-search-choice:hover { + background-color: #415b76; +} +.select2-drop { + min-width: 220px; + margin-top: 9px; + visibility: visible; + opacity: 1; + -webkit-filter: none; + filter: none; + border-radius: 4px; + font-size: 14px; + position: absolute; + z-index: 9999; + top: 100%; + -webkit-transition: none; + transition: none; +} +.select2-drop.select2-drop-above { + margin-top: -9px; +} +.select2-drop.select2-drop-auto-width { + width: auto; +} +.select2-drop.show-select-search .select2-search { + display: block; +} +.select2-drop.show-select-search .select2-search + .select2-results > li:first-child .select2-result-label { + border-radius: 0; +} +.select2-drop .select2-results { + padding: 0; + margin: 0; + list-style: none; +} +.select2-drop .select2-results > li:first-child > .select2-result-label { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.select2-drop .select2-results > li:last-child > .select2-result-label { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.select2-drop .select2-result-sub { + padding: 0; + margin: 0; + list-style: none; +} +.select2-drop .select2-result-sub > li:last-child > .select2-result-label { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.select2-drop .select2-no-results { + padding: 8px 15px; +} +.select2-drop .select2-result-label { + line-height: 1.429; + padding: 8px 16px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transition: background-color 0.25s, color 0.25s; + transition: background-color 0.25s, color 0.25s; +} +.select2-drop .select2-result-selectable .select2-result-label { + color: rgba(52, 73, 94, 0.85); + cursor: pointer; +} +.select2-drop .select2-result-selectable .select2-result-label:focus, +.select2-drop .select2-result-selectable .select2-result-label:hover, +.select2-drop .select2-result-selectable .select2-result-label:active { + background-color: #e1e4e7; + color: inherit; + outline: none; +} +.select2-drop .select2-disabled { + cursor: default; + color: rgba(52, 73, 94, 0.95); + opacity: 0.4; + filter: alpha(opacity=40); +} +.select2-drop .select2-disabled:focus, +.select2-drop .select2-disabled:hover, +.select2-drop .select2-disabled:active { + background: none !important; +} +.select2-drop .select2-highlighted > .select2-result-label { + background: #1abc9c; + color: #ffffff; +} +.select2-drop .select2-result-with-children > .select2-result-label { + font-size: 13px; + text-transform: uppercase; + color: rgba(52, 73, 94, 0.6); + margin-top: 5px; +} +.select2-drop .select2-result-with-children + .select2-result-with-children > .select2-result-label { + margin-top: 11px; +} +.select2-results { + max-height: 200px; + position: relative; + overflow-x: hidden; + overflow-y: auto; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +.select2-search { + padding: 8px 6px; + width: 100%; + display: none; +} +.select2-search input[type="text"] { + width: 100%; + height: auto !important; +} +.select-inverse-dropdown { + background-color: #34495e; + color: rgba(255, 255, 255, 0.75); +} +.select-inverse-dropdown .select2-results .select2-result-label { + color: #ffffff; +} +.select-inverse-dropdown .select2-results .select2-result-label:focus, +.select-inverse-dropdown .select2-results .select2-result-label:hover, +.select-inverse-dropdown .select2-results .select2-result-label:active { + background: #2c3e50; +} +.select-inverse-dropdown .select2-results.select2-disabled .select2-result-label:hover { + color: #ffffff; +} +.select-inverse-dropdown .select2-result-with-children > .select2-result-label { + color: rgba(255, 255, 255, 0.6); +} +.select-inverse-dropdown .select2-result-with-children > .select2-result-label:hover { + color: #ffffff; + background: none !important; +} +.select2-drop-multi { + border-radius: 6px; +} +.select2-drop-multi .select2-results { + padding: 2px 0; +} +.select2-drop-multi .select2-result { + padding: 2px 4px; +} +.select2-drop-multi .select2-result-label { + border-radius: 4px; +} +.select2-drop-multi .select2-selected { + display: none; +} +.select2-offscreen, +.select2-offscreen:focus { + clip: rect(0 0 0 0) !important; + width: 1px !important; + height: 1px !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; + overflow: hidden !important; + position: absolute !important; + outline: 0 !important; + left: 0 !important; + top: 0 !important; +} +.select2-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.select2-offscreen, +.select2-offscreen:focus { + clip: rect(0 0 0 0) !important; + width: 1px !important; + height: 1px !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; + overflow: hidden !important; + position: absolute !important; + outline: 0 !important; + left: 0 !important; + top: 0 !important; +} +.select2-display-none { + display: none; +} +.select2-measure-scrollbar { + position: absolute; + top: -10000px; + left: -10000px; + width: 100px; + height: 100px; + overflow: scroll; +} +.select2-drop-mask { + border: 0; + margin: 0; + padding: 0; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + z-index: 9998; + /* styles required for IE to work */ + background-color: #fff; + opacity: 0; + filter: alpha(opacity=0); +} +.tile { + background-color: #eff0f2; + border-radius: 6px; + padding: 14px; + margin-bottom: 20px; + position: relative; + text-align: center; +} +.tile .tile-hot-ribbon { + display: block; + 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; +} +.navbar { + font-size: 16px; + min-height: 53px; + margin-bottom: 30px; + border: none; + border-radius: 0px; +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + box-shadow: none; + padding-right: 21px; + padding-left: 21px; +} +.navbar-collapse .navbar-form:first-child { + border: none; +} +@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-collapse .navbar-nav.navbar-right:last-child > .dropdown:last-child > a { + border-radius: 0 6px 6px 0; + } + .navbar-fixed-top .navbar-collapse .navbar-form.navbar-right:last-child, + .navbar-fixed-bottom .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; + } +} +.navbar .container, +.navbar .container-fluid { + padding-left: 21px; + padding-right: 21px; +} +.navbar .container > .navbar-header, +.navbar .container-fluid > .navbar-header, +.navbar .container > .navbar-collapse, +.navbar .container-fluid > .navbar-collapse { + margin-right: -21px; + margin-left: -21px; +} +@media (min-width: 768px) { + .navbar .container > .navbar-header, + .navbar .container-fluid > .navbar-header, + .navbar .container > .navbar-collapse, + .navbar .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0; + border-radius: 0; +} +.navbar-fixed-top, +.navbar-fixed-bottom { + 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; + height: 53px; + 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: #34495e; + margin: 0 0 0 21px; + padding: 0 21px; + height: 53px; + line-height: 53px; +} +.navbar-toggle:before { + color: #16a085; + content: "\e61a"; + font-family: "Flat-UI-Icons"; + font-size: 22px; + font-style: normal; + font-weight: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-transition: color .25s linear; + transition: color .25s linear; +} +.navbar-toggle:hover, +.navbar-toggle:focus { + outline: none; +} +.navbar-toggle:hover:before, +.navbar-toggle:focus:before { + color: #1abc9c; +} +.navbar-toggle .icon-bar { + display: none; +} +@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 > li > a:hover, +.navbar-nav > li > a:focus, +.navbar-nav .open > a:focus, +.navbar-nav .open > a:hover { + background-color: transparent; +} +.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 > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + 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; +} +textarea.navbar-input, +select[multiple].navbar-input { + height: auto; +} +.navbar-form { + 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 { + margin: 3px -21px; + width: auto; + } +} +.navbar-form .form-control, +.navbar-form .input-group-addon, +.navbar-form .btn, +.navbar-form .select2-search input[type="text"] { + height: 35px; + padding: 5px 10px; + font-size: 13px; + line-height: 1.4; + border-radius: 6px; +} +select.navbar-form .form-control, +select.navbar-form .input-group-addon, +select.navbar-form .btn, +select.navbar-form .select2-search input[type="text"] { + height: 35px; + line-height: 35px; +} +textarea.navbar-form .form-control, +textarea.navbar-form .input-group-addon, +textarea.navbar-form .btn, +select[multiple].navbar-form .form-control, +select[multiple].navbar-form .input-group-addon, +select[multiple].navbar-form .btn, +textarea.navbar-form .select2-search input[type="text"], +select[multiple].navbar-form .select2-search input[type="text"] { + height: auto; +} +.navbar-form .btn { + margin: 0; +} +.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), +.navbar-form .input-group .select2-search input[type="text"]:first-child { + 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:last-child > .btn, +.navbar-form .input-group-btn:last-child > .dropdown-toggle, +.navbar-form .input-group-btn:first-child > .btn:not(:first-child), +.navbar-form .input-group .select2-search input[type="text"]:last-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.navbar-form .form-control, +.navbar-form .select2-search input[type="text"] { + font-size: 15px; + border-radius: 5px; + display: table-cell; +} +.navbar-form .form-group ~ .btn { + font-size: 15px; + border-radius: 5px; + margin-left: 5px; +} +.navbar-form .form-group + .btn { + margin-right: 5px; +} +@media (min-width: 768px) { + .navbar-form .input-group { + width: 195px; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 7px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } + .navbar-form .form-group + .btn { + margin-left: 0; + } +} +.navbar-nav > li > .dropdown-menu { + min-width: 100%; + margin-top: 9px; + border-radius: 4px; +} +@media (max-width: 767px) { + .navbar-nav > li.open > .dropdown-menu { + margin-top: 0 !important; + } +} +.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: #34495e; + 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-unread, +.navbar-new { + font-family: "Lato", Helvetica, Arial, sans-serif; + background-color: #1abc9c; + border-radius: 50%; + color: #ffffff; + 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-unread, + .navbar-new { + position: static; + float: right; + margin: 0 0 0 10px; + } +} +.active .navbar-unread, +.active .navbar-new { + background-color: #ffffff; + 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: #34495e; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #1abc9c; + background-color: transparent; +} +.navbar-default .navbar-toggle:before { + color: #34495e; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: transparent; +} +.navbar-default .navbar-toggle:hover:before, +.navbar-default .navbar-toggle:focus:before { + color: #1abc9c; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e5e9ea; + border-width: 2px; +} +.navbar-default .navbar-nav > li > a { + color: #34495e; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #1abc9c; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #1abc9c; + background-color: transparent; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} +.navbar-default .navbar-nav > .dropdown > a .caret { + border-top-color: #34495e; + border-bottom-color: #34495e; +} +.navbar-default .navbar-nav > .active > a .caret { + border-top-color: #1abc9c; + border-bottom-color: #1abc9c; +} +.navbar-default .navbar-nav > .dropdown > a:hover .caret, +.navbar-default .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #1abc9c; + border-bottom-color: #1abc9c; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + background-color: transparent; + color: #1abc9c; +} +.navbar-default .navbar-nav > .open > a .caret, +.navbar-default .navbar-nav > .open > a:hover .caret, +.navbar-default .navbar-nav > .open > a:focus .caret { + border-top-color: #1abc9c; + border-bottom-color: #1abc9c; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #34495e; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #1abc9c; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #1abc9c; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} +.navbar-default .navbar-form .form-control, +.navbar-default .navbar-form .select2-search input[type="text"] { + border-color: transparent; +} +.navbar-default .navbar-form .form-control::-moz-placeholder, +.navbar-default .navbar-form .select2-search input[type="text"]::-moz-placeholder { + color: #aeb6bf; + opacity: 1; +} +.navbar-default .navbar-form .form-control:-ms-input-placeholder, +.navbar-default .navbar-form .select2-search input[type="text"]:-ms-input-placeholder { + color: #aeb6bf; +} +.navbar-default .navbar-form .form-control::-webkit-input-placeholder, +.navbar-default .navbar-form .select2-search input[type="text"]::-webkit-input-placeholder { + color: #aeb6bf; +} +.navbar-default .navbar-form .form-control:focus, +.navbar-default .navbar-form .select2-search input[type="text"]: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, +.navbar-default .navbar-form .input-group.focus .select2-search input[type="text"] { + border-color: #1abc9c; + color: #1abc9c; +} +.navbar-default .navbar-text { + color: #34495e; +} +.navbar-default .navbar-link { + color: #34495e; +} +.navbar-default .navbar-link:hover { + color: #1abc9c; +} +.navbar-default .btn-link { + color: #34495e; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #1abc9c; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #cccccc; +} +.navbar-inverse { + background-color: #34495e; +} +.navbar-inverse .navbar-brand { + color: #ffffff; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #1abc9c; + background-color: transparent; +} +.navbar-inverse .navbar-toggle:before { + color: #ffffff; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: transparent; +} +.navbar-inverse .navbar-toggle:hover:before, +.navbar-inverse .navbar-toggle:focus:before { + color: #1abc9c; +} +.navbar-inverse .navbar-collapse { + border-color: #2f4154; + border-width: 2px; +} +.navbar-inverse .navbar-nav > li > a { + color: #ffffff; +} + +/*.navbar-inverse .navbar-nav > li.disabledA > a { + color: red; +}*/ + +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #1abc9c; + background-color: transparent; +} + +.navbar-inverse .navbar-nav > li.disabledA > a:hover { + color: rgb(185, 15, 15); + background-color: transparent; +} + +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #1abc9c; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .dropdown > a:hover .caret, +.navbar-inverse .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #1abc9c; + border-bottom-color: #1abc9c; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #1abc9c; + color: #ffffff; + border-left-color: transparent; +} +.navbar-inverse .navbar-nav > .open > a .caret, +.navbar-inverse .navbar-nav > .open > a:hover .caret, +.navbar-inverse .navbar-nav > .open > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-inverse .navbar-nav > .dropdown > a .caret { + border-top-color: #4b6075; + border-bottom-color: #4b6075; +} +.navbar-inverse .navbar-nav > .open > .dropdown-menu { + background-color: #34495e; + 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:hover, +.navbar-inverse .navbar-nav > .open > .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: #1abc9c; +} + +.navbar-inverse .navbar-nav > .open > .dropdown-menu > li.disabledA > a:hover { + color: #ffffff; + background-color: rgb(185, 15, 15); +} + +.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: #ffffff; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #1abc9c; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #1abc9c; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } + .navbar-inverse .navbar-nav .dropdown-menu .divider { + background-color: #2f4154; + } +} +.navbar-inverse .navbar-form .form-control, +.navbar-inverse .navbar-form .select2-search input[type="text"] { + color: #536a81; + border-color: transparent; + background-color: #293a4a; +} +.navbar-inverse .navbar-form .form-control::-moz-placeholder, +.navbar-inverse .navbar-form .select2-search input[type="text"]::-moz-placeholder { + color: #536a81; + opacity: 1; +} +.navbar-inverse .navbar-form .form-control:-ms-input-placeholder, +.navbar-inverse .navbar-form .select2-search input[type="text"]:-ms-input-placeholder { + color: #536a81; +} +.navbar-inverse .navbar-form .form-control::-webkit-input-placeholder, +.navbar-inverse .navbar-form .select2-search input[type="text"]::-webkit-input-placeholder { + color: #536a81; +} +.navbar-inverse .navbar-form .form-control:focus, +.navbar-inverse .navbar-form .select2-search input[type="text"]:focus { + border-color: #1abc9c; + color: #1abc9c; +} +.navbar-inverse .navbar-form .btn { + color: #ffffff; + background-color: #1abc9c; +} +.navbar-inverse .navbar-form .btn:hover, +.navbar-inverse .navbar-form .btn.hover, +.navbar-inverse .navbar-form .btn:focus, +.navbar-inverse .navbar-form .btn:active, +.navbar-inverse .navbar-form .btn.active, +.open > .dropdown-toggle.navbar-inverse .navbar-form .btn { + color: #ffffff; + 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], +fieldset[disabled] .navbar-inverse .navbar-form .btn, +.navbar-inverse .navbar-form .btn.disabled:hover, +.navbar-inverse .navbar-form .btn[disabled]:hover, +fieldset[disabled] .navbar-inverse .navbar-form .btn:hover, +.navbar-inverse .navbar-form .btn.disabled.hover, +.navbar-inverse .navbar-form .btn[disabled].hover, +fieldset[disabled] .navbar-inverse .navbar-form .btn.hover, +.navbar-inverse .navbar-form .btn.disabled:focus, +.navbar-inverse .navbar-form .btn[disabled]:focus, +fieldset[disabled] .navbar-inverse .navbar-form .btn:focus, +.navbar-inverse .navbar-form .btn.disabled:active, +.navbar-inverse .navbar-form .btn[disabled]:active, +fieldset[disabled] .navbar-inverse .navbar-form .btn:active, +.navbar-inverse .navbar-form .btn.disabled.active, +.navbar-inverse .navbar-form .btn[disabled].active, +fieldset[disabled] .navbar-inverse .navbar-form .btn.active { + background-color: #bdc3c7; + border-color: #1abc9c; +} +.navbar-inverse .navbar-form .btn .badge { + color: #1abc9c; + background-color: #ffffff; +} +.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, +.navbar-inverse .navbar-form .input-group.focus .select2-search input[type="text"] { + 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: #ffffff; +} +.navbar-inverse .navbar-text a { + color: #ffffff; +} +.navbar-inverse .navbar-text a:hover, +.navbar-inverse .navbar-text a:focus { + color: #1abc9c; +} +.navbar-inverse .navbar-btn { + color: #ffffff; + background-color: #1abc9c; +} +.navbar-inverse .navbar-btn:hover, +.navbar-inverse .navbar-btn.hover, +.navbar-inverse .navbar-btn:focus, +.navbar-inverse .navbar-btn:active, +.navbar-inverse .navbar-btn.active, +.open > .dropdown-toggle.navbar-inverse .navbar-btn { + color: #ffffff; + 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], +fieldset[disabled] .navbar-inverse .navbar-btn, +.navbar-inverse .navbar-btn.disabled:hover, +.navbar-inverse .navbar-btn[disabled]:hover, +fieldset[disabled] .navbar-inverse .navbar-btn:hover, +.navbar-inverse .navbar-btn.disabled.hover, +.navbar-inverse .navbar-btn[disabled].hover, +fieldset[disabled] .navbar-inverse .navbar-btn.hover, +.navbar-inverse .navbar-btn.disabled:focus, +.navbar-inverse .navbar-btn[disabled]:focus, +fieldset[disabled] .navbar-inverse .navbar-btn:focus, +.navbar-inverse .navbar-btn.disabled:active, +.navbar-inverse .navbar-btn[disabled]:active, +fieldset[disabled] .navbar-inverse .navbar-btn:active, +.navbar-inverse .navbar-btn.disabled.active, +.navbar-inverse .navbar-btn[disabled].active, +fieldset[disabled] .navbar-inverse .navbar-btn.active { + background-color: #bdc3c7; + border-color: #1abc9c; +} +.navbar-inverse .navbar-btn .badge { + color: #1abc9c; + background-color: #ffffff; +} +@media (min-width: 768px) { + .navbar-embossed > .navbar-collapse { + border-radius: 6px; + box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.15); + } + .navbar-embossed.navbar-inverse .navbar-nav .active > a, + .navbar-embossed.navbar-inverse .navbar-nav .open > a { + box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.15); + } +} +.navbar-lg { + min-height: 76px; +} +.navbar-lg .navbar-brand { + line-height: 1; + height: 76px; + 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; +} +.bootstrap-switch { + font-size: 15px; + line-height: 29px; + display: inline-block; + cursor: pointer; + border-radius: 30px; + position: relative; + text-align: left; + overflow: hidden; + vertical-align: middle; + width: 80px; + height: 29px; + -webkit-mask-box-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgODAgMjkiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDgwIDI5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGQ9Ik04MCwxNC41YzAsOC02LjUsMTQuNS0xNC41LDE0LjVoLTUxQzYuNSwyOSwwLDIyLjUsMCwxNC41bDAsMEMwLDYuNSw2LjUsMCwxNC41LDBoNTFDNzMuNSwwLDgwLDYuNSw4MCwxNC41TDgwLDE0LjV6Ii8+DQo8L3N2Zz4NCg==) 0 0 stretch; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.bootstrap-switch > div { + display: inline-block; + width: 132px; + border-radius: 30px; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.bootstrap-switch > div > span { + font-weight: 700; + line-height: 19px; + cursor: pointer; + display: inline-block; + height: 100%; + padding-bottom: 5px; + padding-top: 5px; + text-align: center; + z-index: 1; + width: 66px; + -webkit-transition: box-shadow 0.25s ease-out; + transition: box-shadow 0.25s ease-out; +} +.bootstrap-switch > div > span > [class^="fui-"] { + text-indent: 0; +} +.bootstrap-switch > div > label { + cursor: pointer; + display: block; + position: absolute; + width: 100%; + height: 100%; + text-indent: -9999px; + font-size: 0; + top: 0; + left: 0; + margin: 0; + z-index: 200; + opacity: 0; + filter: alpha(opacity=0); +} +.bootstrap-switch input[type="radio"], +.bootstrap-switch input[type="checkbox"] { + position: absolute !important; + margin: 0; + top: 0; + left: 0; + z-index: -1; + opacity: 0; + filter: alpha(opacity=0); +} +.bootstrap-switch-handle-on { + border-bottom-left-radius: 30px; + border-top-left-radius: 30px; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-default { + box-shadow: inset 0 0 transparent, -16px 0 0 #bdc3c7; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-default:before { + border-color: #bdc3c7; + background-color: #7f8c9a; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-primary { + box-shadow: inset 0 0 transparent, -16px 0 0 #34495e; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-primary:before { + border-color: #34495e; + background-color: #1abc9c; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-success { + box-shadow: inset 0 0 transparent, -16px 0 0 #2ecc71; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-success:before { + border-color: #2ecc71; + background-color: #ffffff; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-warning { + box-shadow: inset 0 0 transparent, -16px 0 0 #f1c40f; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-warning:before { + border-color: #f1c40f; + background-color: #ffffff; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-info { + box-shadow: inset 0 0 transparent, -16px 0 0 #3498db; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-info:before { + border-color: #3498db; + background-color: #ffffff; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-danger { + box-shadow: inset 0 0 transparent, -16px 0 0 #e74c3c; +} +.bootstrap-switch-off .bootstrap-switch-handle-on ~ .bootstrap-switch-handle-off.bootstrap-switch-danger:before { + border-color: #e74c3c; + background-color: #ffffff; +} +.bootstrap-switch-handle-off { + border-bottom-right-radius: 30px; + border-top-right-radius: 30px; +} +.bootstrap-switch-handle-off:before { + display: inline-block; + content: " "; + border: 4px solid transparent; + border-radius: 50%; + text-align: center; + vertical-align: top; + padding: 0; + height: 29px; + width: 29px; + position: absolute; + top: 0; + left: 51px; + z-index: 100; + background-clip: padding-box; + -webkit-transition: border-color 0.25s ease-out, background-color 0.25s ease-out; + transition: border-color 0.25s ease-out, background-color 0.25s ease-out; +} +.bootstrap-switch-animate > div { + -webkit-transition: margin-left 0.25s ease-out; + transition: margin-left 0.25s ease-out; +} +.bootstrap-switch-on > div { + margin-left: 0; +} +.bootstrap-switch-off > div { + margin-left: -51px; +} +.bootstrap-switch-disabled, +.bootstrap-switch-readonly { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.bootstrap-switch-disabled > div > span, +.bootstrap-switch-readonly > div > span, +.bootstrap-switch-disabled > div > label, +.bootstrap-switch-readonly > div > label { + cursor: default !important; +} +.bootstrap-switch-focused { + outline: 0; +} +.bootstrap-switch-default { + color: #ffffff; + background-color: #bdc3c7; +} +.bootstrap-switch-default ~ .bootstrap-switch-handle-off:before { + background-color: #7f8c9a; + border-color: #bdc3c7; +} +.bootstrap-switch-on .bootstrap-switch-default ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #bdc3c7; +} +.bootstrap-switch-primary { + color: #1abc9c; + background-color: #34495e; +} +.bootstrap-switch-primary ~ .bootstrap-switch-handle-off:before { + background-color: #1abc9c; + border-color: #34495e; +} +.bootstrap-switch-on .bootstrap-switch-primary ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #34495e; +} +.bootstrap-switch-info { + color: #ffffff; + background-color: #3498db; +} +.bootstrap-switch-info ~ .bootstrap-switch-handle-off:before { + background-color: #ffffff; + border-color: #3498db; +} +.bootstrap-switch-on .bootstrap-switch-info ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #3498db; +} +.bootstrap-switch-success { + color: #ffffff; + background-color: #2ecc71; +} +.bootstrap-switch-success ~ .bootstrap-switch-handle-off:before { + background-color: #ffffff; + border-color: #2ecc71; +} +.bootstrap-switch-on .bootstrap-switch-success ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #2ecc71; +} +.bootstrap-switch-warning { + color: #ffffff; + background-color: #f1c40f; +} +.bootstrap-switch-warning ~ .bootstrap-switch-handle-off:before { + background-color: #ffffff; + border-color: #f1c40f; +} +.bootstrap-switch-on .bootstrap-switch-warning ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #f1c40f; +} +.bootstrap-switch-danger { + color: #ffffff; + background-color: #e74c3c; +} +.bootstrap-switch-danger ~ .bootstrap-switch-handle-off:before { + background-color: #ffffff; + border-color: #e74c3c; +} +.bootstrap-switch-on .bootstrap-switch-danger ~ .bootstrap-switch-handle-off { + box-shadow: inset 16px 0 0 #e74c3c; +} +.bootstrap-switch-square .bootstrap-switch { + -webkit-mask-box-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgODAgMjkiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDgwIDI5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGQ9Ik04MCwyNWMwLDIuMi0xLjgsNC00LDRINGMtMi4yLDAtNC0xLjgtNC00VjRjMC0yLjIsMS44LTQsNC00aDcyYzIuMiwwLDQsMS44LDQsNFYyNXoiLz4NCjwvc3ZnPg0K) 0 0 stretch; + border-radius: 4px; +} +.bootstrap-switch-square .bootstrap-switch > div { + border-radius: 4px; +} +.bootstrap-switch-square .bootstrap-switch .bootstrap-switch-handle-on { + text-indent: -15px; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.bootstrap-switch-square .bootstrap-switch .bootstrap-switch-handle-off { + text-indent: 15px; + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.bootstrap-switch-square .bootstrap-switch .bootstrap-switch-handle-off:before { + border: none; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 2px; + border-top-right-radius: 2px; +} +.bootstrap-switch-square .bootstrap-switch-off .bootstrap-switch-handle-off:before { + border-bottom-left-radius: 2px; + border-top-left-radius: 2px; + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.share { + background-color: #eff0f2; + position: relative; + border-radius: 6px; +} +.share ul { + list-style-type: none; + margin: 0; + padding: 15px; +} +.share li { + font-size: 15px; + line-height: 1.4; + padding-top: 11px; +} +.share li:before, +.share li:after { + content: " "; + display: table; +} +.share li:after { + clear: both; +} +.share li:first-child { + padding-top: 0; +} +.share .toggle { + float: right; + margin: 0; +} +.share .btn { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.share-label { + float: left; + font-size: 15px; + line-height: 1.4; + padding-top: 5px; + width: 50%; +} +.video-js { + background-color: transparent; + position: relative; + padding-bottom: 47px; + font-size: 0; + vertical-align: middle; + overflow: hidden; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + border-top-radius: 6px; + width: 100% !important; + height: auto !important; +} +.video-js .vjs-tech { + height: 100%; + width: 100%; + display: block; +} +.video-js::-moz-full-screen { + position: absolute; +} +.video-js::-webkit-full-screen { + width: 100% !important; + height: 100% !important; +} +.vjs-fullscreen { + position: fixed; + overflow: hidden; + z-index: 10000; + left: 0; + top: 0; + bottom: 0; + right: 0; + width: 100% !important; + height: 100% !important; + border-top-radius: 0; +} +.vjs-fullscreen .vjs-control-bar { + margin-top: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.vjs-fullscreen .vjs-tech { + background-color: #000000; +} +.vjs-poster { + margin: 0 auto; + padding: 0; + cursor: pointer; + position: relative; + width: 100%; + max-height: 100%; + border-top-radius: 6px; +} +.vjs-control-bar { + position: relative; + height: 47px; + color: #ffffff; + background: #2c3e50; + margin-top: -1px; + border-bottom-right-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.vjs-control-bar.vjs-fade-out { + visibility: visible !important; + opacity: 1 !important; +} +.vjs-text-track-display { + text-align: center; + position: absolute; + bottom: 4em; + left: 1em; + right: 1em; + font-family: "Lato", Helvetica, Arial, sans-serif; +} +.vjs-text-track { + display: none; + color: #ffffff; + font-size: 1.4em; + text-align: center; + margin-bottom: .1em; + background-color: rgba(0, 0, 0, 0.5); +} +.vjs-subtitles { + color: #ffffff; +} +.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 { + background-position: center; + background-repeat: no-repeat; + position: relative; + text-align: center; + display: inline-block; + height: 18px; + width: 18px; + vertical-align: middle; +} +.vjs-control:focus { + outline: 0; +} +.vjs-control > div { + background-position: 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; + height: 47px; + width: 58px; +} +.vjs-play-control > div { + position: relative; + height: 47px; +} +.vjs-play-control > div:before, +.vjs-play-control > div:after { + position: absolute; + font-family: "Flat-UI-Icons"; + color: #1abc9c; + font-size: 16px; + top: 38%; + left: 50%; + margin: -0.5em 0 0 -0.5em; + -webkit-font-smoothing: antialiased; + -webkit-transition: color .25s, opacity .25s; + transition: color .25s, opacity .25s; +} +.vjs-play-control > div:after { + content: "\e615"; +} +.vjs-play-control > div:before { + content: "\e616"; +} +.vjs-paused .vjs-play-control:hover > div:before { + color: #16a085; +} +.vjs-paused .vjs-play-control > div:after { + opacity: 0; + filter: alpha(opacity=0); +} +.vjs-paused .vjs-play-control > div:before { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.vjs-playing .vjs-play-control:hover > div:after { + color: #16a085; +} +.vjs-playing .vjs-play-control > div:after { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.vjs-playing .vjs-play-control > div:before { + opacity: 0; + filter: alpha(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 { + float: right; + margin: 14px 0; + cursor: pointer !important; +} +.vjs-mute-control:hover > div, +.vjs-mute-control:focus > div { + color: #57718b; +} +.vjs-mute-control > div { + height: 18px; + color: #475d72; +} +.vjs-mute-control > div:after, +.vjs-mute-control > div:before { + font-family: "Flat-UI-Icons"; + font-size: 16px; + line-height: 18px; + position: absolute; + left: 50%; + margin: 0 0 0 -0.5em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-transition: color .25s, opacity .25s; + transition: color .25s, opacity .25s; +} +.vjs-mute-control > div:after { + content: "\e617"; +} +.vjs-mute-control > div:before { + content: "\e618"; + opacity: 0; + filter: alpha(opacity=0); +} +.vjs-mute-control.vjs-vol-0 > div:after { + opacity: 0; + filter: alpha(opacity=0); +} +.vjs-mute-control.vjs-vol-0 > div:before { + opacity: 1; + -webkit-filter: none; + filter: none; +} +.vjs-volume-control, +.vjs-volume-level, +.vjs-volume-handle, +.vjs-volume-bar { + display: none; +} +.vjs-progress-control { + height: 12px; + position: absolute; + left: 60px; + right: 160px; + width: auto; + top: 18px; + background: #425669; + border-radius: 32px; +} +.vjs-progress-holder { + position: relative; + cursor: pointer !important; + padding: 0; + margin: 0; + height: 12px; +} +.vjs-play-progress, +.vjs-load-progress { + display: block; + height: 12px; + margin: 0; + padding: 0; + border-radius: 32px; +} +.vjs-play-progress { + background: #1abc9c; + left: -1px; + position: absolute; + top: 0; + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.vjs-load-progress { + background: #d6dbdf; +} +.vjs-load-progress[style*="100%"], +.vjs-load-progress[style*="99%"] { + border-radius: 32px; +} +.vjs-seek-handle { + background-color: #16a085; + width: 18px; + height: 18px; + top: 0; + position: absolute; + margin: -3px 0 0 -3px; + border-radius: 50%; + -webkit-transition: background-color 0.25s; + transition: background-color 0.25s; +} +.vjs-seek-handle[style*="95."] { + margin-left: 3px; +} +.vjs-seek-handle[style="left: 0%;"] { + margin-left: -2px; +} +.vjs-seek-handle:hover, +.vjs-seek-handle:focus { + background-color: #148d75; +} +.vjs-seek-handle:active { + background-color: #117a65; +} +.vjs-time-controls { + font-family: "Lato", Helvetica, Arial, sans-serif; + font-weight: 300; + font-size: 13px; + line-height: normal; + width: auto; + height: auto; + position: absolute; +} +.vjs-time-divider { + color: #5d6d7e; + font-size: 14px; + position: absolute; + right: 114px; + top: 11px; +} +.vjs-remaining-time { + display: none; +} +.vjs-current-time { + right: 122px; + top: 16px; +} +.vjs-duration { + color: #5d6d7e; + right: 85px; + top: 16px; +} +.vjs-fullscreen-control { + cursor: pointer; + float: right; + margin: 14px 15px; +} +.vjs-fullscreen-control:hover > div, +.vjs-fullscreen-control:focus > div { + color: #57718b; +} +.vjs-fullscreen-control > div { + height: 18px; + color: #475d72; +} +.vjs-fullscreen-control > div:before { + font-family: "Flat-UI-Icons"; + content: "\e619"; + font-size: 16px; + line-height: 18px; + position: absolute; + left: 50%; + margin: 0 0 0 -0.5em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-transition: color .25s, opacity .25s; + transition: color .25s, opacity .25s; +} +.vjs-menu-button { + display: none !important; +} +.vjs-loading-spinner { + position: absolute; + top: 50%; + left: 50%; + background: #ebedee; + display: none; + height: 16px; + width: 16px; + border-radius: 10px; + margin: -8px 0 0 -8px; + -webkit-animation: sharp 2s ease infinite; + animation: sharp 2s ease infinite; +} +@-webkit-keyframes sharp { + 0% { + background-color: #e74c3c; + border-radius: 10px; + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 50% { + background-color: #ebedee; + border-radius: 0; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + 100% { + background-color: #e74c3c; + border-radius: 10px; + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes sharp { + 0% { + background-color: #e74c3c; + border-radius: 10px; + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 50% { + background-color: #ebedee; + border-radius: 0; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + 100% { + background-color: #e74c3c; + border-radius: 10px; + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.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: #34495e; + 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; + color: #1abc9c; +} +.todo li.todo-done .todo-name { + color: #1abc9c; +} +.todo li:after { + content: " "; + display: block; + width: 20px; + height: 20px; + position: absolute; + top: 50%; + right: 22px; + margin-top: -10px; + background: #ffffff; + border-radius: 50%; +} +.todo li.todo-done:after { + content: "\e60a"; + font-family: 'Flat-UI-Icons'; + text-align: center; + font-size: 12px; + line-height: 21px; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background: #1abc9c; + color: #2c3e50; +} +.todo-search { + position: relative; + background: #1abc9c; + background-size: 16px 16px; + border-radius: 6px 6px 0 0; + color: #34495e; + padding: 19px 25px 20px; +} +.todo-search:before { + position: absolute; + font-family: 'Flat-UI-Icons'; + content: "\e630"; + font-size: 16px; + line-height: 17px; + display: inline-block; + top: 50%; + left: 92%; + margin: -0.5em 0 0 -1em; +} +.todo-search-field { + background: none; + border: none; + color: #34495e; + font-size: 19px; + font-weight: 700; + margin: 0; + line-height: 23px; + padding: 5px 0; + text-indent: 0; + box-shadow: none; + outline: none; +} +.todo-search-field::-moz-placeholder { + color: #34495e; + opacity: 1; +} +.todo-search-field:-ms-input-placeholder { + color: #34495e; +} +.todo-search-field::-webkit-input-placeholder { + color: #34495e; +} +.todo-icon { + float: left; + font-size: 24px; + padding: 11px 22px 0 0; +} +.todo-content { + padding-top: 1px; + overflow: hidden; +} +.todo-name { + color: #ffffff; + font-size: 17px; + margin: 1px 0 3px; +} +.pallete-item { + width: 140px; + float: left; + margin: 0 0 20px 20px; +} +.palette { + font-size: 14px; + line-height: 1.214; + color: #ffffff; + margin: 0; + padding: 15px; + text-transform: uppercase; +} +.palette dt, +.palette dd { + line-height: 1.429; +} +.palette dt { + display: block; + font-weight: bold; + 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: #34495e; +} +.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; +} +.login { + background: url(../img/login/imac.png) 0 0 no-repeat; + background-size: 940px 778px; + color: #ffffff; + 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 .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: all .25s; + transition: all .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(../img/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: #ffffff; +} +.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; +} +.ptn, +.pvn, +.pan { + padding-top: 0; +} +.ptx, +.pvx, +.pax { + padding-top: 3px; +} +.pts, +.pvs, +.pas { + padding-top: 5px; +} +.ptm, +.pvm, +.pam { + padding-top: 10px; +} +.ptl, +.pvl, +.pal { + padding-top: 20px; +} +.prn, +.phn, +.pan { + padding-right: 0; +} +.prx, +.phx, +.pax { + padding-right: 3px; +} +.prs, +.phs, +.pas { + padding-right: 5px; +} +.prm, +.phm, +.pam { + padding-right: 10px; +} +.prl, +.phl, +.pal { + padding-right: 20px; +} +.pbn, +.pvn, +.pan { + padding-bottom: 0; +} +.pbx, +.pvx, +.pax { + padding-bottom: 3px; +} +.pbs, +.pvs, +.pas { + padding-bottom: 5px; +} +.pbm, +.pvm, +.pam { + padding-bottom: 10px; +} +.pbl, +.pvl, +.pal { + padding-bottom: 20px; +} +.pln, +.phn, +.pan { + padding-left: 0; +} +.plx, +.phx, +.pax { + padding-left: 3px; +} +.pls, +.phs, +.pas { + padding-left: 5px; +} +.plm, +.phm, +.pam { + padding-left: 10px; +} +.pll, +.phl, +.pal { + padding-left: 20px; +} +.mtn, +.mvn, +.man { + margin-top: 0px; +} +.mtx, +.mvx, +.max { + margin-top: 3px; +} +.mts, +.mvs, +.mas { + margin-top: 5px; +} +.mtm, +.mvm, +.mam { + margin-top: 10px; +} +.mtl, +.mvl, +.mal { + margin-top: 20px; +} +.mrn, +.mhn, +.man { + margin-right: 0px; +} +.mrx, +.mhx, +.max { + margin-right: 3px; +} +.mrs, +.mhs, +.mas { + margin-right: 5px; +} +.mrm, +.mhm, +.mam { + margin-right: 10px; +} +.mrl, +.mhl, +.mal { + margin-right: 20px; +} +.mbn, +.mvn, +.man { + margin-bottom: 0px; +} +.mbx, +.mvx, +.max { + margin-bottom: 3px; +} +.mbs, +.mvs, +.mas { + margin-bottom: 5px; +} +.mbm, +.mvm, +.mam { + margin-bottom: 10px; +} +.mbl, +.mvl, +.mal { + margin-bottom: 20px; +} +.mln, +.mhn, +.man { + margin-left: 0px; +} +.mlx, +.mhx, +.max { + margin-left: 3px; +} +.mls, +.mhs, +.mas { + margin-left: 5px; +} +.mlm, +.mhm, +.mam { + margin-left: 10px; +} +.mll, +.mhl, +.mal { + margin-left: 20px; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + .btn { + border-style: solid; + border-width: 2px; + } + .dropdown-menu, + .select2-drop { + background: #fff !important; + border: 2px solid #ddd; + } + .input-group-rounded .input-group-btn + .form-control, + .input-group-rounded .input-group-btn + .select2-search input[type="text"], + .input-group-rounded .input-group-btn + .select2-search input[type="text"] { + padding-left: 10px; + } + .form-control, + .select2-search input[type="text"] { + border: 2px solid #ddd !important; + } + .bootstrap-switch { + height: 33px; + width: 84px; + border: 2px solid #bdc3c7; + } + .tooltip { + border: 2px solid #bdc3c7; + } + .progress, + .ui-slider { + background: #ddd !important; + } + .progress-bar, + .ui-slider-range, + .ui-slider-handle { + background: #bdc3c7 !important; + } + + /*#heuristics > .dropdown-menu > a:hover { + color: #bdc3c7; + background-color: transparent; + cursor: not-allowed; + }*/ + + /* Dropdown Button */ +.dropbtn { + background-color: #4CAF50; + color: white; + padding: 16px; + font-size: 16px; + border: none; + cursor: pointer; +} + +/* Dropdown button on hover & focus */ +.dropbtn:hover, .dropbtn:focus { + background-color: #3e8e41; +} + + /*The container
- needed to position the dropdown content */ +#heuristics { + position: relative; + display: inline-block; +} + +/* Dropdown Content (Hidden by Default) */ +.test { + display: none; + position: absolute; + background-color: #f9f9f9; + min-width: 160px; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); +} + +/* Links inside the dropdown */ +.dropdown-content a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} + +/* Change color of dropdown links on hover */ +.dropdown-content a:hover {background-color: #f1f1f1} + +/* Show the dropdown menu (use JS to add this class to the .dropdown-content container when the user clicks on the dropdown button) */ +.show {display:block;} + +} +/*# sourceMappingURL=flat-ui.css.map */ diff --git a/public/styling/diamond.svg b/public/styling/diamond.svg new file mode 100644 index 0000000..92ad46b --- /dev/null +++ b/public/styling/diamond.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/public/styling/dragging.gif b/public/styling/dragging.gif new file mode 100644 index 0000000..788c46f Binary files /dev/null and b/public/styling/dragging.gif differ diff --git a/public/styling/fonts/glyphicons/flat-ui-icons-regular.eot b/public/styling/fonts/glyphicons/flat-ui-icons-regular.eot new file mode 100644 index 0000000..536680e Binary files /dev/null and b/public/styling/fonts/glyphicons/flat-ui-icons-regular.eot differ diff --git a/public/styling/fonts/glyphicons/flat-ui-icons-regular.svg b/public/styling/fonts/glyphicons/flat-ui-icons-regular.svg new file mode 100644 index 0000000..cb2727c --- /dev/null +++ b/public/styling/fonts/glyphicons/flat-ui-icons-regular.svg @@ -0,0 +1,126 @@ + + + + + +{ + "fontFamily": "flat-ui-icons", + "majorVersion": 1, + "minorVersion": 1, + "fontURL": "http://designmodo.com/flat", + "designer": "Sergey Shmidt", + "designerURL": "http://designmodo.com", + "license": "Attribution-NonCommercial-NoDerivs 3.0 Unported", + "licenseURL": "http://creativecommons.org/licenses/by-nc-nd/3.0/", + "version": "Version 1.1", + "fontId": "flat-ui-icons", + "psName": "flat-ui-icons", + "subFamily": "Regular", + "fullName": "flat-ui-icons", + "description": "Generated by IcoMoon" +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/styling/fonts/glyphicons/flat-ui-icons-regular.ttf b/public/styling/fonts/glyphicons/flat-ui-icons-regular.ttf new file mode 100644 index 0000000..f4933ff Binary files /dev/null and b/public/styling/fonts/glyphicons/flat-ui-icons-regular.ttf differ diff --git a/public/styling/fonts/glyphicons/flat-ui-icons-regular.woff b/public/styling/fonts/glyphicons/flat-ui-icons-regular.woff new file mode 100644 index 0000000..f9e9805 Binary files /dev/null and b/public/styling/fonts/glyphicons/flat-ui-icons-regular.woff differ diff --git a/public/styling/fonts/glyphicons/selection.json b/public/styling/fonts/glyphicons/selection.json new file mode 100644 index 0000000..f1471f2 --- /dev/null +++ b/public/styling/fonts/glyphicons/selection.json @@ -0,0 +1,2106 @@ +{ + "IcoMoonType": "selection", + "icons": [ + { + "icon": { + "paths": [ + "M128 256l384 512 384-512h-768z" + ], + "grid": 16, + "tags": [ + "triangle-down" + ] + }, + "properties": { + "order": 1, + "id": 64, + "prevSize": 16, + "code": 58881, + "name": "triangle-down", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 1 + }, + { + "icon": { + "paths": [ + "M896 704h-768l384-384 384 384z" + ], + "grid": 16, + "tags": [ + "triangle-up-small" + ] + }, + "properties": { + "order": 2, + "id": 69, + "prevSize": 16, + "code": 58882, + "name": "triangle-up-small", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 2 + }, + { + "icon": { + "paths": [ + "M512 704l-384-384h768l-384 384z" + ], + "grid": 16, + "tags": [ + "triangle-down-small" + ] + }, + "properties": { + "order": 3, + "id": 65, + "prevSize": 16, + "code": 58883, + "name": "triangle-down-small", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 3 + }, + { + "icon": { + "paths": [ + "M896 960l-768-448 768-448v896z" + ], + "grid": 16, + "tags": [ + "triangle-left-large" + ] + }, + "properties": { + "order": 4, + "id": 66, + "prevSize": 16, + "code": 58884, + "name": "triangle-left-large", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 4 + }, + { + "icon": { + "paths": [ + "M128 64l768 448-768 448v-896z" + ], + "grid": 16, + "tags": [ + "triangle-right-large" + ] + }, + "properties": { + "order": 5, + "id": 67, + "prevSize": 16, + "code": 58885, + "name": "triangle-right-large", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 5 + }, + { + "icon": { + "paths": [ + "M224.96 511.232l447.168-447.232 128 131.008-321.152 318.016 321.152 320.896-128.256 128.256-446.912-450.944z" + ], + "grid": 16, + "tags": [ + "arrow-left" + ] + }, + "properties": { + "order": 6, + "id": 1, + "prevSize": 16, + "code": 58886, + "name": "arrow-left", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 6 + }, + { + "icon": { + "paths": [ + "M353.152 962.112l-128.192-128.256 321.088-320.896-321.152-317.952 128-131.008 447.168 447.232-446.912 450.88z" + ], + "grid": 16, + "tags": [ + "arrow-right" + ] + }, + "properties": { + "order": 7, + "id": 2, + "prevSize": 16, + "code": 58887, + "name": "arrow-right", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 7 + }, + { + "icon": { + "paths": [ + "M928 608.064h-320v319.936c0 35.392-28.608 64-64 64h-64c-35.328 0-64-28.608-64-64v-319.936h-320c-35.328 0-64-28.736-64-64.064v-64.064c0-35.328 28.672-63.872 64-63.872h320v-320.064c0-35.328 28.672-64 64-64h64c35.392 0 64 28.672 64 64v320.064h320c35.392 0 64 28.544 64 63.872v64.064c0 35.328-28.608 64.064-64 64.064z" + ], + "grid": 16, + "tags": [ + "plus" + ] + }, + "properties": { + "order": 8, + "id": 36, + "prevSize": 16, + "code": 58888, + "name": "plus", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 8 + }, + { + "icon": { + "paths": [ + "M919.808 195.968c12.48 12.416 12.48 32.832 0 45.248l-248.896 249.024c-12.352 12.416-12.352 32.832 0 45.312l248.768 249.088c12.48 12.416 12.48 32.832 0 45.248l-90.624 90.432c-12.352 12.416-32.768 12.416-45.248 0l-248.64-249.088c-12.416-12.416-32.832-12.416-45.248 0l-248.896 248.896c-12.416 12.48-32.832 12.48-45.248 0l-90.496-90.624c-12.416-12.352-12.416-32.768 0-45.248l248.96-248.896c12.416-12.416 12.416-32.832 0-45.312l-248.768-249.024c-12.416-12.48-12.416-32.832 0-45.248l90.56-90.496c12.416-12.416 32.832-12.416 45.248 0l248.64 249.024c12.416 12.48 32.832 12.48 45.248 0.064l248.832-248.96c12.48-12.352 32.896-12.352 45.248 0l90.56 90.56z" + ], + "grid": 16, + "tags": [ + "cross" + ] + }, + "properties": { + "order": 9, + "id": 13, + "prevSize": 16, + "code": 58889, + "name": "cross", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 9 + }, + { + "icon": { + "paths": [ + "M923.136 137.408c-12.352-12.544-32.768-12.544-45.12 0l-476.16 474.496c-12.48 12.544-32.832 12.544-45.248 0l-208.64-212.736c-6.144-6.208-14.272-9.408-22.336-9.472-8.256 0-16.576 3.008-22.848 9.472l-92.16 83.008c-6.144 6.272-9.472 14.144-9.472 22.336 0 8.32 3.328 17.024 9.472 23.232l210.368 220.992c12.416 12.48 32.832 33.024 45.248 45.632l90.432 91.264c12.416 12.48 32.768 12.48 45.248 0l611.712-611.328c12.48-12.48 12.48-33.088 0-45.632l-90.496-91.264z" + ], + "grid": 16, + "tags": [ + "check" + ] + }, + "properties": { + "order": 10, + "id": 8, + "prevSize": 16, + "code": 58890, + "name": "check", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 10 + }, + { + "icon": { + "paths": [ + "M512 0c-281.6 0-512 230.4-512 512s230.4 512 512 512 512-230.4 512-512c0-281.6-230.4-512-512-512zM512 819.2c-168.96 0-307.2-138.24-307.2-307.2 0-168.96 138.24-307.2 307.2-307.2 168.96 0 307.2 138.24 307.2 307.2 0 168.96-138.24 307.2-307.2 307.2z" + ], + "grid": 16, + "tags": [ + "radio-unchecked" + ] + }, + "properties": { + "order": 11, + "id": 63, + "prevSize": 16, + "code": 58891, + "name": "radio-unchecked", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 11 + }, + { + "icon": { + "paths": [ + "M512 0c-281.6 0-512 230.4-512 512s230.4 512 512 512 512-230.4 512-512c0-281.6-230.4-512-512-512zM512 819.2c-168.96 0-307.2-138.24-307.2-307.2 0-168.96 138.24-307.2 307.2-307.2 168.96 0 307.2 138.24 307.2 307.2 0 168.96-138.24 307.2-307.2 307.2zM512 358.4c-87.040 0-153.6 66.56-153.6 153.6s66.56 153.6 153.6 153.6 153.6-66.56 153.6-153.6c0-87.040-66.56-153.6-153.6-153.6z" + ], + "grid": 16, + "tags": [ + "radio-checked" + ] + }, + "properties": { + "order": 12, + "id": 61, + "prevSize": 16, + "code": 58892, + "name": "radio-checked", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 12 + }, + { + "icon": { + "paths": [ + "M256 0h512c143.36 0 256 112.64 256 256v512c0 143.36-112.64 256-256 256h-512c-143.36 0-256-112.64-256-256v-512c0-143.36 112.64-256 256-256z" + ], + "grid": 16, + "tags": [ + "checkbox-unchecked" + ] + }, + "properties": { + "order": 13, + "id": 54, + "prevSize": 16, + "code": 58893, + "name": "checkbox-unchecked", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 13 + }, + { + "icon": { + "paths": [ + "M768 0h-512c-143.36 0-256 112.64-256 256v512c0 143.36 112.64 256 256 256h512c143.36 0 256-112.64 256-256v-512c0-143.36-112.64-256-256-256zM844.8 409.6l-368.64 368.64c-5.12 5.12-20.48 5.12-25.6 0l-56.32-56.32c-5.12-5.12-20.48-20.48-25.6-25.6l-128-133.12c-5.12-5.12-5.12-10.24-5.12-15.36s0-10.24 5.12-15.36l56.32-51.2c5.12 0 10.24-5.12 10.24-5.12 5.12 0 10.24 0 15.36 5.12l122.88 128c5.12 5.12 20.48 5.12 25.6 0l286.72-286.72c5.12-5.12 20.48-5.12 25.6 0l56.32 56.32c10.24 10.24 10.24 20.48 5.12 30.72z" + ], + "grid": 16, + "tags": [ + "checkbox-checked" + ] + }, + "properties": { + "order": 14, + "id": 52, + "prevSize": 16, + "code": 58894, + "name": "checkbox-checked", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 14 + }, + { + "icon": { + "paths": [ + "M512 0c-282.752 0-512 229.248-512 512s229.248 512 512 512c282.752 0 512-229.248 512-512 0-282.752-229.248-512-512-512zM512 831.936c-35.776 0-64.768-28.544-64.768-63.808 0-35.2 28.992-63.808 64.768-63.808 35.776 0 64.768 28.608 64.768 63.808 0 35.264-28.992 63.808-64.768 63.808zM576.768 572.224c0 37.056-28.992 67.072-64.768 67.072-35.776 0-64.768-30.080-64.768-67.072v-313.088c0-37.056 28.992-67.072 64.768-67.072 35.776 0 64.768 30.080 64.768 67.072v313.088z" + ], + "grid": 16, + "tags": [ + "alert-circle" + ], + "width": 1024 + }, + "properties": { + "order": 15, + "id": 0, + "prevSize": 16, + "code": 58896, + "name": "alert-circle", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 16 + }, + { + "icon": { + "paths": [ + "M512 1024c-282.752 0-512-229.248-512-512 0-282.688 229.248-512 512-512 282.752 0 512 229.248 512 512 0 282.752-229.248 512-512 512zM512 831.936c35.776 0 64.768-28.544 64.768-63.808 0-35.2-28.992-63.808-64.768-63.808-35.776 0-64.768 28.608-64.768 63.808 0 35.264 28.992 63.808 64.768 63.808zM650.752 235.712c-33.92-27.904-82.24-43.456-140.032-43.456-42.56 0-78.912 7.68-110.144 20.16-16.576 6.72-69.632 39.68-80.64 48.896l32.384 48.32c5.312 9.344 13.952 14.080 25.92 14.080 4.992 0 10.624-1.984 16.96-5.888 4.608-2.88 41.088-21.696 56.512-26.368 32.32-9.6 67.84-5.696 84.16-0.64 22.272 6.848 38.4 19.904 47.36 37.76 5.888 11.776 13.376 44.16-4.224 74.432-14.656 25.088-37.568 44.16-62.848 61.056-13.504 9.216-26.048 18.624-37.376 28.416-0.512 0-1.792 0.96-4.672 3.52 1.408-1.216 3.264-2.304 4.672-3.52 3.2-0.128-30.784 43.328-30.784 83.52 0 42.88 0 64 0 64h128v-64c0-33.28 16.128-51.968 16.448-56.704 11.008-7.872 61.056-46.144 72.96-59.904 22.208-25.6 38.592-59.392 38.592-107.008 0-48.832-19.392-88.832-53.248-116.672z" + ], + "grid": 16, + "tags": [ + "question-circle" + ] + }, + "properties": { + "order": 16, + "id": 39, + "prevSize": 16, + "code": 58897, + "name": "question-circle", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 17 + }, + { + "icon": { + "paths": [ + "M512 0c-282.752 0-512 229.184-512 511.936 0 282.816 229.248 512.064 512 512.064 282.752 0 512-229.248 512-512.064 0-282.752-229.248-511.936-512-511.936zM842.88 407.872l-367.296 367.232c-7.488 7.488-19.712 7.488-27.136 0l-54.272-54.784c-7.424-7.552-19.712-19.904-27.136-27.392l-126.336-132.8c-3.712-3.712-5.696-8.96-5.696-13.888 0-4.992 1.984-9.728 5.696-13.504l55.36-49.92c3.776-3.84 8.768-5.632 13.696-5.632 4.864 0.064 9.728 1.984 13.44 5.632l125.248 127.872c7.488 7.616 19.648 7.616 27.136 0l285.888-285.12c7.424-7.488 19.712-7.488 27.136 0l54.336 54.912c7.424 7.488 7.424 19.84-0.064 27.392z" + ], + "grid": 16, + "tags": [ + "check-circle" + ] + }, + "properties": { + "order": 17, + "id": 9, + "prevSize": 16, + "code": 58898, + "name": "check-circle", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 18 + }, + { + "icon": { + "paths": [ + "M874.048 149.952c-199.936-200-524.096-199.936-724.096 0-199.936 199.872-199.936 524.096 0.064 724.032 199.936 199.936 524.096 199.936 724.032 0.064 200-199.936 200-524.16 0-724.096zM747.2 650.944c27.52 27.52 28.224 71.296 1.728 97.856-26.56 26.56-70.4 25.728-97.792-1.728l-139.072-139.008-139.584 139.584c-27.52 27.456-71.296 28.224-97.792 1.728-26.56-26.56-25.728-70.4 1.664-97.856l139.648-139.584-139.648-139.648c-27.456-27.392-28.224-71.168-1.664-97.728 26.496-26.56 70.336-25.792 97.792 1.664l139.584 139.584 139.072-139.072c27.456-27.456 71.232-28.224 97.792-1.664 26.496 26.56 25.728 70.336-1.728 97.792l-139.008 139.072 139.008 139.008z" + ], + "grid": 16, + "tags": [ + "cross-circle" + ] + }, + "properties": { + "order": 18, + "id": 14, + "prevSize": 16, + "code": 58899, + "name": "cross-circle", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 19 + }, + { + "icon": { + "paths": [ + "M512-0.064c-282.752 0-512 229.312-512 512.064 0 282.816 229.248 512.064 512 512.064s512-229.248 512-512.064c0-282.752-229.248-512.064-512-512.064zM764.224 576.704h-187.392v187.52c0 36.992-28.992 67.072-64.768 67.072s-64.768-30.080-64.768-67.072v-187.52h-188.16c-36.992 0-67.072-28.928-67.072-64.704s30.080-64.768 67.072-64.768h188.16v-188.16c0-37.056 28.992-67.072 64.768-67.072s64.768 30.016 64.768 67.072v188.16h187.456c37.056 0 67.072 29.056 67.072 64.768s-30.016 64.704-67.136 64.704z" + ], + "grid": 16, + "tags": [ + "plus-circle" + ] + }, + "properties": { + "order": 19, + "id": 37, + "prevSize": 16, + "code": 58900, + "name": "plus-circle", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 20 + }, + { + "icon": { + "paths": [ + "M288 0h-192c-35.328 0-64 28.608-64 64v896c0 35.392 28.672 64 64 64h192c35.328 0 64-28.608 64-64v-896c0-35.392-28.672-64-64-64zM928 0h-192c-35.392 0-64 28.608-64 64v896c0 35.392 28.608 64 64 64h192c35.392 0 64-28.608 64-64v-896c0-35.392-28.608-64-64-64z" + ], + "grid": 16, + "tags": [ + "pause" + ] + }, + "properties": { + "order": 20, + "id": 33, + "prevSize": 16, + "code": 58901, + "name": "pause", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 21 + }, + { + "icon": { + "paths": [ + "M880 484.224l-832-480c-9.856-5.696-22.144-5.696-32 0-9.856 5.76-16 16.32-16 27.776v960c0 11.456 6.144 22.016 16 27.712 4.928 2.88 10.496 4.288 16 4.288s11.072-1.408 16-4.288l832-480c9.856-5.696 16-16.256 16-27.712s-6.144-22.016-16-27.776z" + ], + "grid": 16, + "tags": [ + "play" + ] + }, + "properties": { + "order": 21, + "id": 35, + "prevSize": 16, + "code": 58902, + "name": "play", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 22 + }, + { + "icon": { + "paths": [ + "M493.184 64c-48.384 0-63.040 27.84-63.040 27.84s-183.104 216.192-266.56 216.192c-82.176 0-81.344 0-81.344 0-45.44 0-82.24 36.416-82.24 81.28v244.096c0 44.928 36.8 81.28 82.176 81.28 0 0 1.344 0 82.176 0 81.024 0 269.568 218.88 269.568 218.88 14.912 15.488 35.904 25.152 59.264 25.152 45.376 0 82.176-36.352 82.176-81.28v-732.096c0-44.928-36.8-81.344-82.176-81.344zM843.968 142.272l-47.424 70.976c86.656 70.4 142.208 177.728 142.208 298.176s-55.488 227.84-142.208 298.112l47.424 70.976c109.44-85.888 180.032-219.136 180.032-369.088 0-150.016-70.592-283.2-180.032-369.152zM748.8 284.672l-47.872 71.68c41.344 38.912 67.392 93.76 67.392 155.072s-26.048 116.096-67.392 155.072l47.872 71.616c63.872-54.72 104.576-136 104.576-226.688 0-90.816-40.704-171.968-104.576-226.752z" + ], + "grid": 16, + "tags": [ + "volume" + ] + }, + "properties": { + "order": 22, + "id": 49, + "prevSize": 16, + "code": 58903, + "name": "volume", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 23 + }, + { + "icon": { + "paths": [ + "M492.8 64c-51.2 0-64 25.6-64 25.6s-179.2 217.6-262.4 217.6c-83.2 0-83.2 0-83.2 0-44.8 0-83.2 38.4-83.2 83.2v243.2c0 44.8 38.4 83.2 83.2 83.2 0 0 0 0 83.2 0 83.2 0 268.8 217.6 268.8 217.6 12.8 12.8 32 25.6 57.6 25.6 44.8 0 83.2-38.4 83.2-83.2v-729.6c0-44.8-38.4-83.2-83.2-83.2z" + ], + "grid": 16, + "tags": [ + "mute" + ] + }, + "properties": { + "order": 23, + "id": 96, + "prevSize": 16, + "code": 58904, + "name": "mute", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 24 + }, + { + "icon": { + "paths": [ + "M832 320l-213.056 208.448-125.696-125.696 210.752-210.688-160-160.064h448v448l-160-160zM526.976 617.472l-206.976 202.496 167.488 172.032h-455.488v-452.288l160 164.288 210.752-210.752 124.224 124.224z" + ], + "grid": 16, + "tags": [ + "resize" + ] + }, + "properties": { + "order": 24, + "id": 97, + "prevSize": 16, + "code": 58905, + "name": "resize", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 25 + }, + { + "icon": { + "paths": [ + "M991.936 96.64h-959.872c-17.6 0-32 15.36-32 34.176v124.672c0 18.048 14.4 32.832 32 32.832h959.872c17.6 0 32-14.72 32-32.832v-124.672c0-18.816-14.4-34.176-32-34.176zM991.936 416.64h-959.872c-17.6 0-32 15.36-32 34.24v124.608c0 18.112 14.4 32.832 32 32.832h959.872c17.6 0 32-14.72 32-32.832v-124.672c0-18.816-14.4-34.176-32-34.176zM991.936 736.64h-959.872c-17.6 0-32 15.36-32 34.24v124.608c0 17.984 14.4 32.768 32 32.768h959.872c17.6 0 32-14.72 32-32.768v-124.608c0-18.88-14.4-34.24-32-34.24z" + ], + "grid": 16, + "tags": [ + "list" + ] + }, + "properties": { + "order": 25, + "id": 26, + "prevSize": 16, + "code": 58906, + "name": "list", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 26 + }, + { + "icon": { + "paths": [ + "M352 64h-320c-19.2 0-32 12.8-32 32v320c0 19.2 12.8 32 32 32h320c19.2 0 32-12.8 32-32v-320c0-19.2-12.8-32-32-32z", + "M352 576h-320c-19.2 0-32 12.8-32 32v320c0 19.2 12.8 32 32 32h320c19.2 0 32-12.8 32-32v-320c0-19.2-12.8-32-32-32z", + "M992 64h-448c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h448c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 320h-448c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h448c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 576h-448c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h448c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 832h-448c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h448c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z" + ], + "grid": 16, + "tags": [ + "list-thumbnailed" + ] + }, + "properties": { + "order": 26, + "id": 60, + "prevSize": 16, + "code": 58907, + "name": "list-thumbnailed", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 27 + }, + { + "icon": { + "paths": [ + "M288 64h-192c-19.2 0-32 12.8-32 32v192c0 19.2 12.8 32 32 32h192c19.2 0 32-12.8 32-32v-192c0-19.2-12.8-32-32-32zM288 384h-192c-19.2 0-32 12.8-32 32v192c0 19.2 12.8 32 32 32h192c19.2 0 32-12.8 32-32v-192c0-19.2-12.8-32-32-32zM608 64h-192c-19.2 0-32 12.8-32 32v192c0 19.2 12.8 32 32 32h192c19.2 0 32-12.8 32-32v-192c0-19.2-12.8-32-32-32zM608 384h-192c-19.2 0-32 12.8-32 32v192c0 19.2 12.8 32 32 32h192c19.2 0 32-12.8 32-32v-192c0-19.2-12.8-32-32-32zM928 64h-192c-19.2 0-32 12.8-32 32v192c0 19.2 12.8 32 32 32h192c19.2 0 32-12.8 32-32v-192c0-19.2-12.8-32-32-32zM928 384h-192c-19.2 0-32 12.8-32 32v192c0 19.2 12.8 32 32 32h192c19.2 0 32-12.8 32-32v-192c0-19.2-12.8-32-32-32zM288 704h-192c-19.2 0-32 12.8-32 32v192c0 19.2 12.8 32 32 32h192c19.2 0 32-12.8 32-32v-192c0-19.2-12.8-32-32-32zM608 704h-192c-19.2 0-32 12.8-32 32v192c0 19.2 12.8 32 32 32h192c19.2 0 32-12.8 32-32v-192c0-19.2-12.8-32-32-32zM928 704h-192c-19.2 0-32 12.8-32 32v192c0 19.2 12.8 32 32 32h192c19.2 0 32-12.8 32-32v-192c0-19.2-12.8-32-32-32z" + ], + "grid": 16, + "tags": [ + "list-small-thumbnails" + ] + }, + "properties": { + "order": 27, + "id": 59, + "prevSize": 16, + "code": 58908, + "name": "list-small-thumbnails", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 28 + }, + { + "icon": { + "paths": [ + "M416 0h-384c-19.2 0-32 12.8-32 32v384c0 19.2 12.8 32 32 32h384c19.2 0 32-12.8 32-32v-384c0-19.2-12.8-32-32-32zM992 0h-384c-19.2 0-32 12.8-32 32v384c0 19.2 12.8 32 32 32h384c19.2 0 32-12.8 32-32v-384c0-19.2-12.8-32-32-32zM416 576h-384c-19.2 0-32 12.8-32 32v384c0 19.2 12.8 32 32 32h384c19.2 0 32-12.8 32-32v-384c0-19.2-12.8-32-32-32zM992 576h-384c-19.2 0-32 12.8-32 32v384c0 19.2 12.8 32 32 32h384c19.2 0 32-12.8 32-32v-384c0-19.2-12.8-32-32-32z" + ], + "grid": 16, + "tags": [ + "list-large-thumbnails" + ] + }, + "properties": { + "order": 28, + "id": 57, + "prevSize": 16, + "code": 58909, + "name": "list-large-thumbnails", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 29 + }, + { + "icon": { + "paths": [ + "M992 64h-960c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h960c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 320h-960c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h960c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 576h-960c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h960c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 832h-960c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h960c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z" + ], + "grid": 16, + "tags": [ + "list-columned" + ] + }, + "properties": { + "order": 29, + "id": 56, + "prevSize": 16, + "code": 58911, + "name": "list-columned", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 31 + }, + { + "icon": { + "paths": [ + "M992 128h-640c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h640c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 448h-640c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h640c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 768h-640c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h640c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M256 192c0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128 0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128z", + "M256 512c0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128 0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128z", + "M256 832c0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128 0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128z" + ], + "grid": 16, + "tags": [ + "list-bulleted" + ] + }, + "properties": { + "order": 30, + "id": 55, + "prevSize": 16, + "code": 58912, + "name": "list-bulleted", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 32 + }, + { + "icon": { + "paths": [ + "M896 0h-768c-70.656 0-128 57.344-128 128v768c0 70.656 57.344 128 128 128h768c70.656 0 128-57.344 128-128v-768c0-70.656-57.344-128-128-128zM384 64.064c35.328 0 64 28.608 64 63.936 0 35.392-28.672 64-64 64s-64-28.608-64-64c0-35.328 28.672-63.936 64-63.936zM192 64.064c35.328 0 64 28.608 64 63.936 0 35.392-28.672 64-64 64s-64-28.608-64-64c0-35.328 28.672-63.936 64-63.936zM896.064 896h-768.064v-640h768.064v640z" + ], + "grid": 16, + "tags": [ + "window" + ] + }, + "properties": { + "order": 31, + "id": 50, + "prevSize": 16, + "code": 58913, + "name": "window", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 33 + }, + { + "icon": { + "paths": [ + "M938.752 192.256h-106.688v-106.624c0-47.104-38.208-85.312-85.312-85.312h-661.44c-47.104 0-85.312 38.208-85.312 85.312v660.672c0 47.168 37.248 85.376 83.136 85.376h108.864v106.688c0 47.104 37.248 85.312 83.136 85.312h665.792c45.952 0 83.2-38.208 83.2-85.312v-660.736c-0.064-47.104-38.272-85.376-85.376-85.376zM384 64.384c35.328 0 64 28.608 64 63.936 0 35.392-28.672 64-64 64s-64-28.608-64-64c0-35.328 28.672-63.936 64-63.936zM192 64.384c35.328 0 64 28.608 64 63.936 0 35.392-28.672 64-64 64s-64-28.608-64-64c0-35.328 28.672-63.936 64-63.936zM128 704.32l-0.064-448h576.064v448h-576zM896 896.32h-576v-64.64h428.864c45.952 0 83.2-38.208 83.2-85.376v-297.984h63.936v448z" + ], + "grid": 16, + "tags": [ + "windows" + ] + }, + "properties": { + "order": 32, + "id": 51, + "prevSize": 16, + "code": 58914, + "name": "windows", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 34 + }, + { + "icon": { + "paths": [ + "M768 768.064c-121.6 0-197.888-68.736-256-144.448-58.112 75.712-134.4 144.448-256 144.448-102.848 0-256-68.224-256-256.064 0-187.776 153.152-256 256-256 121.6 0 197.888 68.672 256 144.448 58.112-75.776 134.4-144.448 256-144.448 102.912 0 256 68.224 256 256 0 187.84-153.088 256.064-256 256.064zM256 384c-29.632 0.512-128 11.136-128 128 0 121.856 106.624 128 128 128 78.272 0 123.264-47.808 178.752-128-55.488-80.128-100.48-128-178.752-128zM589.248 512c55.424 80.128 100.352 127.872 178.432 128 30.336-0.448 128.32-11.264 128.32-128 0-121.856-106.624-128-128-128-78.272 0-123.264 47.872-178.752 128z" + ], + "grid": 16, + "tags": [ + "loop" + ] + }, + "properties": { + "order": 33, + "id": 29, + "prevSize": 16, + "code": 58915, + "name": "loop", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 35 + }, + { + "icon": { + "paths": [ + "M800 448c-22.976 0-59.328 0-96 0v128c22.656 0 44.8 0 64 0 12.096 0 23.296 0 32 0 123.712 0 224 100.288 224 224s-100.288 224-224 224-224-100.224-224-224c0-22.976 0-59.264 0-96h-128c0 22.656 0 44.864 0 64 0 12.096 0 23.232 0 32 0 123.776-100.288 224-224 224s-224-100.224-224-224 100.288-224 224-224c22.976 0 59.328 0 96 0v-128c-22.592 0-44.864 0-64 0-12.096 0-23.232 0-32 0-123.712 0-224-100.224-224-224 0-123.712 100.288-224 224-224s224 100.288 224 224c0 22.976 0 59.328 0 96h128c0-22.592 0-44.864 0-64 0-12.096 0-23.232 0-32 0-123.712 100.288-224 224-224s224 100.288 224 224c0 123.776-100.288 224-224 224zM320 224c0-52.992-43.008-96-96-96s-96 43.008-96 96c0 53.056 43.008 96 96 96 7.744 0 19.52 0 32 0 29.568 0 64 0 64 0s0-69.056 0-96zM320 768c0-29.504 0-64 0-64s-69.056 0-96 0c-52.992 0-96 43.008-96 96s43.008 96 96 96 96-43.008 96-96c0-7.744 0-19.52 0-32zM704 800c0 52.992 43.008 96 96 96s96-43.008 96-96-43.008-96-96-96c-7.744 0-19.52 0-32 0-29.568 0-64 0-64 0s0 69.12 0 96zM576 448h-128v128h128v-128zM800 128c-52.992 0-96 43.008-96 96 0 7.744 0 19.456 0 32 0 29.632 0 64 0 64s69.056 0 96 0c52.992 0 96-42.944 96-96 0-52.992-43.008-96-96-96z" + ], + "grid": 16, + "tags": [ + "cmd" + ] + }, + "properties": { + "order": 34, + "id": 11, + "prevSize": 16, + "code": 58916, + "name": "cmd", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 36 + }, + { + "icon": { + "paths": [ + "M801.984 553.6c-28.672-17.664-65.408-7.232-81.92 23.36-0.576 1.024-0.576 2.24-1.152 3.264l-1.472-0.96c-41.984 74.432-117.696 124.736-205.184 124.736s-163.136-50.304-205.184-124.736l-1.408 0.832c-0.704-1.6-0.704-3.456-1.6-5.12-16.576-30.528-53.312-41.024-82.048-23.36s-38.528 56.832-21.952 87.36c1.28 2.24 3.264 3.648 4.672 5.696l-1.088 0.704c53.12 94.208 143.104 161.6 248.576 180.608v70.016h-120.064c-33.152 0-60.032 28.672-60.032 64 0 35.392 26.88 64 60.032 64h360.128c33.216 0 60.032-28.608 60.032-64 0-35.328-26.816-64-60.032-64h-120v-69.952c105.472-19.008 195.456-86.528 248.576-180.672l-0.384-0.256c1.088-1.472 2.624-2.432 3.456-4.096 16.64-30.656 6.784-69.76-21.952-87.424zM512.256 640c99.456 0 180.032-85.952 180.032-192v-256c0-106.048-80.64-192-180.032-192-99.456 0-180.096 85.952-180.096 192v256c0 106.048 80.64 192 180.096 192z" + ], + "grid": 16, + "tags": [ + "mic" + ] + }, + "properties": { + "order": 35, + "id": 31, + "prevSize": 16, + "code": 58917, + "name": "mic", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 37 + }, + { + "icon": { + "paths": [ + "M948.544 513.152c100.48-102.784 100.352-269.312 0-372.032-51.392-52.48-118.976-78.144-186.24-76.992-94.144 1.536-249.344 128.96-249.344 128.96s-159.616-129.216-256-129.088c-65.728 0.128-131.392 25.856-181.504 77.056-100.416 102.784-100.48 269.248 0 372.032l436.544 446.336 436.544-446.272z" + ], + "grid": 16, + "tags": [ + "heart" + ] + }, + "properties": { + "order": 36, + "id": 21, + "prevSize": 16, + "code": 58918, + "name": "heart", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 38 + }, + { + "icon": { + "paths": [ + "M512.128 527.936c-87.872 0-159.104-73.728-159.104-164.8 0-91.136 71.232-164.864 159.104-164.864s159.104 73.728 159.104 164.864c0 91.008-71.232 164.8-159.104 164.8zM512.128-0.384c-194.496 0-352.128 163.328-352.128 364.8 0 190.272 159.488 435.776 265.984 555.264 39.808 44.544 86.144 104.704 86.144 104.704s49.792-60.352 92.48-106.304c106.368-114.496 259.648-344.448 259.648-553.6 0-201.536-157.632-364.864-352.128-364.864z" + ], + "grid": 16, + "tags": [ + "location" + ] + }, + "properties": { + "order": 37, + "id": 27, + "prevSize": 16, + "code": 58919, + "name": "location", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 39 + }, + { + "icon": { + "paths": [ + "M960.512 249.728c-21.76-35.968-48.576-71.168-81.344-103.808-33.216-32.896-68.992-59.968-105.6-81.6l64.32-64.32c0 0 93.056 0 139.648 46.528 46.464 46.592 46.464 139.648 46.464 139.648l-63.488 63.552zM387.2 831.232h-194.432v-194.432l23.36-23.36c39.552 18.56 78.784 44.928 114.176 80.32 35.392 35.328 61.696 74.688 80.32 114.176l-23.424 23.296zM906.752 303.488l-440 448.32c-22.72-37.632-50.688-74.304-84.992-108.352-34.688-34.432-72.064-62.72-110.336-85.312l449.152-440.896c37.824 17.856 75.456 42.944 109.312 76.864s59.008 71.424 76.864 109.376zM128 128v767.936h768v-319.936l128-127.936v482.88c0 51.392-41.6 93.056-93.056 93.056h-837.888c-51.392 0-93.056-41.664-93.056-93.056v-837.824c0-51.456 41.664-93.12 93.056-93.12h482.944l-128 128h-320z" + ], + "grid": 16, + "tags": [ + "new" + ] + }, + "properties": { + "order": 38, + "id": 32, + "prevSize": 16, + "code": 58920, + "name": "new", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 40 + }, + { + "icon": { + "paths": [ + "M960.256 863.936v0.768l-256.256-256.256v127.488c0 70.72-57.344 128.064-128 128.064h-448c-70.656 0-128-57.344-128-128.064v-447.872c0-70.72 57.344-128.064 128-128.064h448c70.656 0 128 57.344 128 128.064v128.576l256-256v-0.64c35.392 0 64 28.608 64 64v576c0 35.264-28.544 63.808-63.744 63.936z" + ], + "grid": 16, + "tags": [ + "video" + ] + }, + "properties": { + "order": 39, + "id": 48, + "prevSize": 16, + "code": 58921, + "name": "video", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 41 + }, + { + "icon": { + "paths": [ + "M897.024 192h-147.84l-42.88-90.624c-9.792-21.312-45.056-37.376-79.36-37.376h-244.8c-34.304 0-69.568 16.064-79.424 37.376l-41.856 90.624h-132.864c-128 0-128 64-128 64v640c0 0 0 64 128 64h768c128 0 128-64 128-64v-640c0 0 0-64-126.976-64zM512 831.936c-141.376 0-256-114.496-256-255.872 0-141.44 114.624-256.064 256-256.064s256 114.624 256 256.064c0 141.376-114.624 255.872-256 255.872zM512 416c-88.384 0-160 71.616-160 160 0 88.32 71.616 160 160 160s160-71.68 160-160c0-88.384-71.616-160-160-160z" + ], + "grid": 16, + "tags": [ + "photo" + ] + }, + "properties": { + "order": 40, + "id": 34, + "prevSize": 16, + "code": 58922, + "name": "photo", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 42 + }, + { + "icon": { + "paths": [ + "M512.064 0c-282.688 0-511.872 229.184-511.872 511.936 0 282.816 229.184 511.936 511.872 511.936 282.752 0 511.936-229.12 511.936-511.936 0-282.752-229.184-511.936-511.936-511.936zM678.976 691.52l-14.848 14.976c-12.416 12.352-33.344 12.992-46.464 1.28l-171.52-147.52c-13.12-11.712-23.040-35.712-22.208-53.248l17.856-283.072c0.896-17.6 16-31.936 33.664-31.936h21.056c17.6 0 32.704 14.336 33.536 31.936l14.656 231.808c0.896 17.536 11.2 42.688 22.848 55.808l112.768 133.568c11.648 12.992 11.136 33.984-1.344 46.4z" + ], + "grid": 16, + "tags": [ + "time" + ] + }, + "properties": { + "order": 41, + "id": 43, + "prevSize": 16, + "code": 58923, + "name": "time", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 43 + }, + { + "icon": { + "paths": [ + "M512.064 160c-338.944 0-512.96 352.896-512.96 352.896s131.328 352.96 512.96 352.96c345.472 0 512.832-351.616 512.832-351.616s-168.64-354.24-512.832-354.24zM512.832 733.504c-123.968 0-213.504-96.576-213.504-220.608 0-124.096 89.536-220.544 213.504-220.544 123.904 0 213.44 96.448 213.44 220.544 0 124.032-89.6 220.608-213.44 220.608zM512.832 380.544c-70.784 0.128-128.128 61.44-128.128 132.352 0 70.848 57.344 132.352 128.128 132.352s128.064-61.504 128.064-132.352c0-70.912-57.28-132.544-128.064-132.352z" + ], + "grid": 16, + "tags": [ + "eye" + ] + }, + "properties": { + "order": 42, + "id": 18, + "prevSize": 16, + "code": 58924, + "name": "eye", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 44 + }, + { + "icon": { + "paths": [ + "M1024 933.248c0 50.176-41.6 90.752-93.12 90.752h-291.264v-351.68c0-53.056-38.016-96.128-85.056-96.128h-85.12c-46.976 0-85.12 43.072-85.12 96.128v351.68h-291.264c-51.392 0-93.056-40.576-93.056-90.752v-478.976c0-23.36 9.344-44.48 24.192-60.544l-0.96-1.856 425.92-372.992c34.304-25.152 89.984-25.152 124.288 0l427.264 372.992-0.448 2.368c14.592 16.064 23.744 36.928 23.744 60.032v478.976z" + ], + "grid": 16, + "tags": [ + "home" + ] + }, + "properties": { + "order": 43, + "id": 22, + "prevSize": 16, + "code": 58926, + "name": "home", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 46 + }, + { + "icon": { + "paths": [ + "M896 1024h-192v-128h192.064v-640h-768.064v640h192v128h-192c-70.656 0-128-57.344-128-128v-768c0-70.656 57.344-128 128-128h768c70.656 0 128 57.344 128 128v768c0 70.656-57.344 128-128 128zM192 64.064c-35.392 0-64 28.608-64 63.936 0 35.392 28.608 64 64 64s64-28.608 64-64c0-35.328-28.608-63.936-64-63.936zM384 64.064c-35.392 0-64 28.608-64 63.936 0 35.392 28.608 64 64 64s64-28.608 64-64c0-35.328-28.608-63.936-64-63.936zM271.936 759.296c-22.208-23.232-22.208-60.864 0-84.16l196.928-209.408c6.144-6.464 13.44-10.496 21.12-13.44 0.064-0.064 0.192-0.064 0.32-0.128 5.888-2.24 11.84-3.456 17.984-3.712 2.24-0.192 4.416-0.384 6.656-0.256 2.752 0.192 5.376 1.024 8 1.6 11.328 2.24 22.272 6.72 30.976 15.872l196.864 209.408c22.272 23.296 22.272 60.928 0 84.16-22.272 23.104-58.304 23.104-80.576 0l-94.208-119.232v319.936c0 34.176-32.064 64.064-64.64 64.064-32.512 0-63.36-29.888-63.36-64.064v-319.936l-95.488 119.296c-22.272 23.168-58.304 23.168-80.576 0z" + ], + "grid": 16, + "tags": [ + "upload" + ] + }, + "properties": { + "order": 44, + "id": 46, + "prevSize": 16, + "code": 58927, + "name": "upload", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 47 + }, + { + "icon": { + "paths": [ + "M723.392 606.4c-11.328-11.456-15.104-32.704-8.384-47.296 0 0 47.232-102.464 47.232-177.728 0-210.624-170.432-381.376-380.736-381.376s-380.8 170.752-380.8 381.312c0 210.624 170.496 381.376 380.8 381.376 75.2 0 177.408-47.36 177.408-47.36 14.656-6.784 35.968-2.944 47.232 8.448l291.456 291.776c11.456 11.392 30.080 11.392 41.344 0l75.776-75.904c11.456-11.456 11.456-30.144 0-41.472l-291.328-291.776zM381.504 586.624c-113.088 0-205.056-92.032-205.056-205.312 0-113.216 92.032-205.312 205.056-205.312s204.992 92.096 204.992 205.312c0 113.28-91.904 205.312-204.992 205.312z" + ], + "grid": 16, + "tags": [ + "search" + ] + }, + "properties": { + "order": 45, + "id": 40, + "prevSize": 16, + "code": 58928, + "name": "search", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 48 + }, + { + "icon": { + "paths": [ + "M449.024 363.712c106.56 0 193.024-81.344 193.024-181.888-0.064-100.416-86.464-181.824-193.024-181.824s-193.024 81.408-193.024 181.824c0 100.48 86.464 181.888 193.024 181.888zM600.32 376.32c-42.56 29.44-94.592 47.424-151.296 47.424-56.96 0-109.12-18.112-151.744-47.744-173.248 37.312-297.28 136.832-297.28 254.016v258.88c0 17.152 14.4 31.104 32 31.104h64c17.6 0 32-12.608 32-28.096 0-8.96 0-201.856 0-201.856 0-16.64 9.536-9.984 21.376-9.984 11.776 0 21.312 9.024 21.312 19.968l0.32 179.968c0.896 10.368 9.6 84.416 20.544 86.592 0 0 66.56 57.344 256.448 57.344 191.232 0 256.448-57.344 256.448-57.344 10.944-2.112 19.712-76.16 20.544-86.592l0.32-179.968c0-11.008 9.536-19.968 21.376-19.968 11.776 0 21.312 9.024 21.312 19.968 0 0 0 182.912 0 191.872 0 15.488 14.4 28.096 32 28.096h64c17.6 0 32-14.016 32-31.104v-258.88c0-116.864-123.392-216.128-295.68-253.696z" + ], + "grid": 16, + "tags": [ + "user" + ] + }, + "properties": { + "order": 46, + "id": 47, + "prevSize": 16, + "code": 58929, + "name": "user", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 49 + }, + { + "icon": { + "paths": [ + "M896 96c-50.496 0-768 0-768 0-50.496 0-128 41.152-128 90.944v18.112c0 0 432.768 361.856 512 361.856s512-360.704 512-360.704v-19.2c0-49.856-77.504-91.008-128-91.008zM0 351.040v512.896c0 0 0 64.064 128 64.064h768c128.192 0 128-64.064 128-64.064v-514.496c0 0-364.16 324.992-512 324.992-146.304 0-512-323.392-512-323.392z" + ], + "grid": 16, + "tags": [ + "mail" + ] + }, + "properties": { + "order": 47, + "id": 30, + "prevSize": 16, + "code": 58930, + "name": "mail", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 50 + }, + { + "icon": { + "paths": [ + "M896 1024h-768c-35.328 0-64-28.608-64-64.064v-447.936c0-35.328 28.672-64 64-64h64v-128c0-176.704 143.232-320 320-320s320 143.296 320 320v128h64c35.392 0 64 28.672 64 64v447.936c0 35.456-28.608 64.064-64 64.064zM704 320c0-105.984-85.952-192-192-192s-192 86.016-192 192v128h384v-128z" + ], + "grid": 16, + "tags": [ + "lock" + ] + }, + "properties": { + "order": 48, + "id": 28, + "prevSize": 16, + "code": 58931, + "name": "lock", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 51 + }, + { + "icon": { + "paths": [ + "M767.872 172.992l-0.128 0.064c-0.896-0.64-1.6-1.536-2.624-2.24-29.184-20.032-68.992-12.608-89.024 16.704-19.968 29.312-12.48 69.312 16.64 89.344 0.768 0.64 1.536 0.896 2.24 1.28l-0.256 0.448c82.88 58.048 137.28 154.496 137.28 263.744 0 177.536-143.296 321.472-320 321.472s-320-143.936-320-321.472c0-109.248 54.4-205.696 137.28-263.744l-0.256-0.448c0.704-0.384 1.472-0.64 2.24-1.216 29.184-20.032 36.608-60.032 16.64-89.344-20.032-29.312-59.84-36.8-89.024-16.704-0.96 0.704-1.728 1.536-2.688 2.24l-0.064-0.128c-116.032 81.408-192.128 216.32-192.128 369.344 0 248.576 200.576 450.176 448 450.176s448-201.6 448-450.176c0-153.024-76.096-287.936-192.128-369.344zM512 608c35.392 0 64-28.608 64-64v-447.936c0-35.392-28.608-64.064-64-64.064-35.328 0-64 28.672-64 64.064v447.936c0 35.392 28.672 64 64 64z" + ], + "grid": 16, + "tags": [ + "power" + ] + }, + "properties": { + "order": 49, + "id": 38, + "prevSize": 16, + "code": 58932, + "name": "power", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 52 + }, + { + "icon": { + "paths": [ + "M320 384c-35.328 0-64 28.608-64 64s28.672 64 64 64 64-28.608 64-64-28.672-64-64-64zM512 576c-35.328 0-64 28.608-64 64s28.672 64 64 64 64-28.608 64-64-28.672-64-64-64zM320 576c-35.328 0-64 28.608-64 64s28.672 64 64 64 64-28.608 64-64-28.672-64-64-64zM896 64.064h-128c0-35.392-28.608-64.064-64-64.064s-64 28.672-64 64.064h-256c0-35.392-28.672-64.064-64-64.064s-64 28.672-64 64.064h-128c-70.656 0-128 57.28-128 127.936v640c0 70.72 57.344 128 128 128h768c70.656 0 128-57.28 128-128v-640c0-70.656-57.344-127.936-128-127.936zM896 832h-768v-640h128c0 35.392 28.672 64 64 64s64-28.608 64-64h256c0 35.392 28.608 64 64 64s64-28.608 64-64h128v640zM704 384c-35.392 0-64 28.608-64 64s28.608 64 64 64 64-28.608 64-64-28.608-64-64-64zM512 384c-35.328 0-64 28.608-64 64s28.672 64 64 64 64-28.608 64-64-28.672-64-64-64zM704 576c-35.392 0-64 28.608-64 64s28.608 64 64 64 64-28.608 64-64-28.608-64-64-64z" + ], + "grid": 16, + "tags": [ + "calendar" + ] + }, + "properties": { + "order": 50, + "id": 5, + "prevSize": 16, + "code": 58933, + "name": "calendar", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 53 + }, + { + "icon": { + "paths": [ + "M918.272 432.96c-17.344-2.56-35.968-18.304-41.344-35.008l-26.112-63.232c-8.128-15.552-6.272-39.872 4.352-53.952l42.112-56.192c10.624-14.080 9.728-36.352-1.984-49.536l-46.272-46.4c-13.12-11.712-35.52-12.544-49.6-1.984l-56.128 42.24c-14.144 10.496-38.4 12.48-54.016 4.288l-63.168-26.048c-16.832-5.312-32.64-24-35.008-41.472l-9.984-69.504c-2.496-17.408-18.816-33.152-36.352-34.944 0 0-10.816-1.216-32.768-1.216s-32.768 1.216-32.768 1.216c-17.536 1.792-33.92 17.536-36.352 34.944l-9.984 69.504c-2.432 17.472-18.176 36.16-35.008 41.472l-63.168 26.048c-15.552 8.192-39.808 6.208-53.888-4.288l-56.256-42.24c-14.016-10.624-36.416-9.728-49.6 1.984l-46.208 46.272c-11.648 13.184-12.544 35.52-1.984 49.6l42.176 56.192c10.56 14.080 12.48 38.4 4.288 53.952l-26.048 63.296c-5.376 16.704-24 32.448-41.408 35.008l-69.504 9.792c-17.472 2.56-33.216 18.88-35.008 36.416 0 0-1.152 10.88-1.152 32.832 0 21.952 1.152 32.896 1.152 32.896 1.856 17.472 17.6 33.792 35.008 36.288l69.504 9.856c17.408 2.496 36.032 18.304 41.408 35.008l26.112 63.232c8.192 15.616 6.272 39.808-4.288 53.888l-42.176 56.256c-10.56 14.144-13.12 33.28-5.632 42.496 7.424 9.216 28.864 32.064 28.928 32.064 0 0.128 7.232 6.72 16 14.656 8.768 8.064 44.48 19.2 58.56 8.64l56.256-42.112c14.080-10.624 38.336-12.544 53.888-4.352l63.040 25.984c16.832 5.44 32.576 24 35.008 41.472l9.984 69.504c2.432 17.344 18.816 33.28 36.288 35.072 0 0 10.88 1.152 32.832 1.152s32.768-1.152 32.768-1.152c17.472-1.792 33.856-17.664 36.352-35.072l9.984-69.504c2.368-17.472 18.112-36.032 35.008-41.472l63.104-25.984c15.616-8.192 39.872-6.272 54.016 4.224l56.256 42.24c14.144 10.56 36.352 9.664 49.6-1.92l46.272-46.336c11.648-13.184 12.48-35.52 1.856-49.6l-42.112-56.256c-10.624-14.080-12.48-38.272-4.352-53.888l26.112-63.232c5.376-16.768 24-32.512 41.344-35.008l69.504-9.856c17.344-2.496 33.152-18.816 35.008-36.288 0 0 1.152-10.88 1.152-32.896 0-21.952-1.152-32.832-1.152-32.832-1.856-17.536-17.6-33.856-35.008-36.416l-69.44-9.792zM512 640c-70.656 0-128-57.344-128-128 0-70.72 57.344-128 128-128 70.592 0 128 57.344 128 128 0 70.656-57.344 128-128 128z" + ], + "grid": 16, + "tags": [ + "gear" + ] + }, + "properties": { + "order": 51, + "id": 20, + "prevSize": 16, + "code": 58934, + "name": "gear", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 54 + }, + { + "icon": { + "paths": [ + "M768 262.976v0h128c35.392 0 64 28.672 64 64v640c0 35.392-28.608 64-64 64h-672c-88.384 0-160-71.616-160-160v-703.936c0-88.384 71.616-160.064 160-160.064h672c35.392 0 64 28.672 64 64 0 35.392-28.608 64.064-64 64.064h-640c-35.328 0-64 28.608-64 64s28.672 64 64 64h128v256l64-64 64 64v-256h256z" + ], + "grid": 16, + "tags": [ + "bookmark" + ] + }, + "properties": { + "order": 52, + "id": 3, + "prevSize": 16, + "code": 58935, + "name": "bookmark", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 55 + }, + { + "icon": { + "paths": [ + "M0 896v-192h128v192.128h640v-768.128h-640v192h-128v-192c0-70.656 57.344-128 128-128h640c70.72 0 128 57.344 128 128v768c0 70.72-57.28 128-128 128h-640c-70.656 0-128-57.28-128-128zM264.768 272c23.232-22.272 60.864-22.272 84.096 0l209.408 196.8c6.528 6.208 10.496 13.568 13.504 21.184 0.064 0.128 0.064 0.192 0.128 0.32 2.24 5.824 3.456 11.84 3.648 17.984 0.256 2.24 0.448 4.416 0.256 6.72-0.128 2.688-1.024 5.248-1.664 7.936-2.176 11.264-6.656 22.208-15.872 30.976l-209.408 196.8c-23.232 22.272-60.864 22.272-84.096 0-23.168-22.272-23.168-58.24 0-80.512l119.232-94.208h-320c-34.112 0-64-32.064-64-64.64 0-32.512 29.888-63.36 64-63.36h320l-119.232-95.552c-23.232-22.144-23.232-58.304 0-80.448z" + ], + "grid": 16, + "tags": [ + "exit" + ] + }, + "properties": { + "order": 53, + "id": 16, + "prevSize": 16, + "code": 58936, + "name": "exit", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 56 + }, + { + "icon": { + "paths": [ + "M928 256h-64v640c0 0-1.984 128-128 128 0 0-318.016 0-448 0s-128-128-128-128v-640h-64c-35.328 0-64-28.672-64-64s28.672-64 64-64h320v-32c0-53.056 42.944-96 96-96 52.992 0 96 42.944 96 96v32h320c35.392 0 64 28.608 64 64s-28.608 64-64 64zM736 256h-448v640h448v-640zM416 320c35.328 0 64 28.672 64 64v384c0 35.392-28.672 64-64 64s-64-28.608-64-64v-384c0-35.328 28.672-64 64-64zM608 320c35.392 0 64 28.672 64 64v384c0 35.392-28.608 64-64 64s-64-28.608-64-64v-384c0-35.328 28.608-64 64-64z" + ], + "grid": 16, + "tags": [ + "trash" + ] + }, + "properties": { + "order": 54, + "id": 44, + "prevSize": 16, + "code": 58937, + "name": "trash", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 57 + }, + { + "icon": { + "paths": [ + "M896 192c0 0-278.016-0.064-320-0.064s-89.984-127.936-128-127.936-320 0-320 0c-70.656 0-128 57.28-128 128v640.064c0 126.656 128 128 128 128h768c70.656 0 128-57.344 128-128v-512c0-70.72-57.344-128.064-128-128.064zM896.064 832.064h-768.064v-640.064c0 0 214.016 0 254.016 0s89.984 128 128 128c40 0 386.048 0 386.048 0v512.064z" + ], + "grid": 16, + "tags": [ + "folder" + ] + }, + "properties": { + "order": 55, + "id": 19, + "prevSize": 16, + "code": 58938, + "name": "folder", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 58 + }, + { + "icon": { + "paths": [ + "M895.424-0.064h-767.872c-127.296 0-127.552 128.064-127.552 128.064v511.936c0 0 0.704 128.064 128 128.064h256c0 0 53.568 1.472 73.344 23.936l289.344 226.496c4.736 3.776 7.616 5.632 10.432 5.632 8 0 10.368-5.504 10.368-14.592v-214.336c0-15.104 9.984-27.2 23.424-27.2h105.088c125.312 0 128-128.064 128-128.064v-511.872c0 0-1.28-128.064-128.576-128.064zM896 639.936h-256v128l-164.608-128h-347.392v-511.936h768v511.936z" + ], + "grid": 16, + "tags": [ + "bubble" + ] + }, + "properties": { + "order": 56, + "id": 4, + "prevSize": 16, + "code": 58939, + "name": "bubble", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 59 + }, + { + "icon": { + "paths": [ + "M0 383.552v-107.712c0-45.952 38.208-83.136 85.312-83.136h107.392v-90.432c0-21.056 21.568-102.208 48.192-102.208h96.384c26.624 0 48.192 81.152 48.192 102.208v90.432h319.232v-90.432c0-21.056 21.632-102.208 48.192-102.208h96.384c26.624 0 48.192 81.152 48.192 102.208v90.432h41.28c47.168 0 85.376 37.184 85.376 83.136v107.776h-1024.128zM1024.064 448.64v492.224c0 45.952-38.208 83.2-85.376 83.2h-853.376c-47.104 0-85.312-37.248-85.312-83.2v-492.224h1024.064z" + ], + "grid": 16, + "tags": [ + "calendar-solid" + ] + }, + "properties": { + "order": 57, + "id": 6, + "prevSize": 16, + "code": 58941, + "name": "calendar-solid", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 61 + }, + { + "icon": { + "paths": [ + "M32 512.064c288-32.064 448-192.064 480-480.064 32.064 288 192.064 448 480.128 480.064-288.064 32-448.064 192-480.128 480-32-288-192-448-480-480z" + ], + "grid": 16, + "tags": [ + "star" + ] + }, + "properties": { + "order": 58, + "id": 45, + "prevSize": 16, + "code": 58942, + "name": "star", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 62 + }, + { + "icon": { + "paths": [ + "M1024 512l-380.8 128-10.304 384-245.696-304.96-387.2 109.376 228.992-316.416-228.992-316.416 387.2 109.312 245.696-304.896 10.304 384 380.8 128z" + ], + "grid": 16, + "tags": [ + "star-2" + ] + }, + "properties": { + "order": 59, + "id": 41, + "prevSize": 16, + "code": 58943, + "name": "star-2", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 63 + }, + { + "icon": { + "paths": [ + "M768 736.448c35.392 0 64-28.672 64-64.064s-28.608-64.064-64-64.064-64 28.672-64 64.064 28.608 64.064 64 64.064zM938.752 96h-853.376c-47.168 0-85.376 38.208-85.376 85.376v661.184c0 47.168 38.208 85.44 85.376 85.44h853.376c47.104 0 85.312-38.272 85.312-85.44v-661.184c0-47.168-38.208-85.376-85.312-85.376zM896.064 799.808h-768.064v-255.552h768.064v255.552zM896.064 352.128h-768.064v-128.064h768.064v128.064z" + ], + "grid": 16, + "tags": [ + "credit-card" + ] + }, + "properties": { + "order": 60, + "id": 12, + "prevSize": 16, + "code": 58944, + "name": "credit-card", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 64 + }, + { + "icon": { + "paths": [ + "M939.712 84.288c-112.448-112.448-294.784-112.448-407.296 0.064l-448 448c-112.512 112.512-112.512 294.848-0.064 407.296s294.784 112.512 407.296 0l94.848-92.16c-51.008-1.152-97.536-17.728-136.96-44.672l-48.448 46.4c-62.528 62.528-163.84 62.528-226.304 0-62.464-62.464-62.464-163.84 0.064-226.304l448-448c62.528-62.528 163.84-62.528 226.24 0 62.528 62.528 62.592 163.776 0.064 226.24l-223.232 224.768c-18.752 18.752-49.152 18.752-67.904 0s-18.752-49.152 0-67.904l168.576-170.176c12.48-12.48 12.544-32.768 0-45.248l-45.248-45.248c-12.48-12.48-32.768-12.48-45.248 0l-168.576 170.176c-68.736 68.736-68.736 180.16 0 248.896 68.736 68.736 180.16 68.736 248.896 0l223.232-224.832c112.448-112.448 112.448-294.848 0.064-407.296z" + ], + "grid": 16, + "tags": [ + "clip" + ] + }, + "properties": { + "order": 61, + "id": 10, + "prevSize": 16, + "code": 58945, + "name": "clip", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 65 + }, + { + "icon": { + "paths": [ + "M939.648 84.352c-54.464-54.4-126.784-84.352-203.648-84.352-76.928 0-149.248 29.952-203.648 84.352 0 0-181.696 181.632-192.128 191.936-54.208 54.336-84.096 126.72-84.224 204.096 0.128 76.8 30.080 148.992 84.352 203.264l23.36 23.424c6.272 6.272 14.528 9.344 22.656 9.344 8.192 0 16.384-3.136 22.656-9.344l45.248-45.248c12.48-12.48 12.48-32.768 0-45.248l-23.424-23.424c-61.376-61.376-62.208-162.048-1.792-224.512 1.856-1.856 193.856-193.792 193.856-193.792 30.208-30.208 70.336-46.848 113.088-46.848s82.88 16.64 113.152 46.784v0.064c62.528 62.592 62.528 163.776 0 226.24l-9.856 9.856c15.424 41.6 24.64 86.208 24.704 133.056 0 8.512-1.216 16.704-1.664 25.024l77.312-77.376c112.448-112.512 112.384-294.912 0-407.296zM660.16 316.864c-6.208-6.272-14.464-9.344-22.592-9.344-8.256 0-16.448 3.136-22.656 9.344l-45.248 45.248c-12.544 12.48-12.544 32.768 0 45.248l23.36 23.424c61.376 61.376 62.272 162.048 1.856 224.512-1.856 1.856-193.856 193.792-193.856 193.792-30.144 30.272-70.272 46.912-113.088 46.912-42.688 0-82.816-16.64-113.088-46.784v-0.064c-62.528-62.592-62.528-163.776-0.064-226.24l9.92-9.856c-15.488-41.6-24.704-86.208-24.704-133.056 0-8.512 1.152-16.704 1.664-25.024l-77.312 77.376c-112.512 112.512-112.448 294.848 0 407.232 54.464 54.464 126.784 84.416 203.648 84.416s149.184-29.952 203.648-84.352c0 0 181.696-181.632 192.128-191.936 54.208-54.336 84.096-126.72 84.224-204.096-0.128-76.8-30.144-148.992-84.352-203.264l-23.488-23.488z" + ], + "grid": 16, + "tags": [ + "link" + ] + }, + "properties": { + "order": 62, + "id": 25, + "prevSize": 16, + "code": 58946, + "name": "link", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 66 + }, + { + "icon": { + "paths": [ + "M1012.736 475.84l-241.216-352c-11.968-17.408-31.68-27.84-52.8-27.84h-654.72c-35.392 0-64 28.672-64 64v704c0 35.328 28.608 64 64 64h654.72c21.12 0 40.896-10.368 52.8-27.84l241.216-352c15.040-21.76 15.040-50.56 0-72.32zM736 608c-52.992 0-96-43.008-96-96s43.008-96 96-96 96 43.008 96 96-43.008 96-96 96z" + ], + "grid": 16, + "tags": [ + "tag" + ] + }, + "properties": { + "order": 63, + "id": 42, + "prevSize": 16, + "code": 58947, + "name": "tag", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 67 + }, + { + "icon": { + "paths": [ + "M842.752 0h-660.544c-47.552 0-86.208 38.144-86.208 64v853.376c0 68.416 38.656 106.624 86.208 106.624h660.544c47.040 0 85.248-38.208 85.248-85.312v-853.376c0-47.168-38.208-85.312-85.248-85.312zM544 832h-256c-35.392 0-64-28.608-64-64s28.608-64 64-64h256c35.392 0 64 28.608 64 64s-28.608 64-64 64zM736 576h-448c-35.392 0-64-28.608-64-64s28.608-64 64-64h448c35.392 0 64 28.608 64 64s-28.608 64-64 64zM736 320h-448c-35.392 0-64-28.608-64-64s28.608-64 64-64h448c35.392 0 64 28.608 64 64s-28.608 64-64 64z" + ], + "grid": 16, + "tags": [ + "document" + ] + }, + "properties": { + "order": 64, + "id": 15, + "prevSize": 16, + "code": 58948, + "name": "document", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 68 + }, + { + "icon": { + "paths": [ + "M938.752 928h-853.376c-47.168 0-85.376-37.248-85.376-83.264v-665.472c0-46.016 38.208-83.264 85.376-83.264h853.376c47.104 0 85.312 37.248 85.312 83.264v665.472c0 46.016-38.208 83.264-85.312 83.264zM896.064 224h-768.064v511.808c0 0 64-64.064 128-128.064 64-64.064 128 0 128 0l64 64c0 0 118.72-120.768 192-192.128 66.88-66.944 128 0 128 0l128 128.128 0.064-383.744zM320 480c-35.328 0-64-28.672-64-63.936 0-35.392 28.672-64.064 64-64.064s64 28.672 64 64.064c0 35.264-28.672 63.936-64 63.936z" + ], + "grid": 16, + "tags": [ + "image" + ] + }, + "properties": { + "order": 65, + "id": 23, + "prevSize": 16, + "code": 58949, + "name": "image", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 69 + }, + { + "icon": { + "paths": [ + "M928 1024h-832c-51.2 0-96-44.8-96-96v-832c0-51.2 44.8-96 96-96h825.6c57.6 0 102.4 44.8 102.4 96v825.6c0 57.6-44.8 102.4-96 102.4zM748.8 192c-121.6 0-172.8 83.2-172.8 166.4v89.6h-64v128h64v384h128v-384h128v-128h-128v-70.4c0-38.4 6.4-57.6 51.2-57.6h76.8v-121.6s-38.4-6.4-83.2-6.4z" + ], + "grid": 16, + "tags": [ + "facebook" + ] + }, + "properties": { + "order": 66, + "id": 75, + "prevSize": 16, + "code": 58950, + "name": "facebook", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 70 + }, + { + "icon": { + "paths": [ + "M1017.6 313.6c0-83.2-64-147.2-147.2-147.2-115.2-6.4-236.8-6.4-358.4-6.4-121.6 0-243.2 0-358.4 6.4-83.2 0-147.2 64-147.2 147.2-6.4 70.4-6.4 134.4-6.4 198.4s0 128 6.4 198.4c0 83.2 64 147.2 147.2 147.2 115.2 6.4 236.8 6.4 358.4 6.4 121.6 0 243.2 0 358.4-6.4 83.2 0 147.2-64 147.2-147.2 6.4-64 6.4-128 6.4-198.4 0-64 0-128-6.4-198.4zM384 736v-448l320 224-320 224z" + ], + "grid": 16, + "tags": [ + "youtube" + ] + }, + "properties": { + "order": 67, + "id": 95, + "prevSize": 16, + "code": 58951, + "name": "youtube", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 71 + }, + { + "icon": { + "paths": [ + "M876.8 64c-147.2-6.4-243.2 76.8-294.4 243.2 25.6-12.8 51.2-19.2 76.8-19.2 51.2 0 76.8 32 70.4 89.6 0 38.4-25.6 89.6-70.4 153.6-38.4 70.4-70.4 102.4-96 102.4-25.6 0-51.2-51.2-76.8-160-6.4-25.6-19.2-108.8-38.4-236.8-19.2-115.2-70.4-172.8-147.2-160-32 0-83.2 32-153.6 96-44.8 38.4-96 83.2-147.2 128l51.2 64c44.8-32 70.4-51.2 76.8-51.2 38.4 0 70.4 57.6 96 166.4 32 108.8 57.6 211.2 83.2 313.6 38.4 108.8 89.6 166.4 153.6 166.4 96 0 211.2-89.6 352-275.2 134.4-179.2 204.8-313.6 211.2-416 6.4-134.4-44.8-204.8-147.2-204.8z" + ], + "grid": 16, + "tags": [ + "vimeo" + ] + }, + "properties": { + "order": 68, + "id": 90, + "prevSize": 16, + "code": 58952, + "name": "vimeo", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 72 + }, + { + "icon": { + "paths": [ + "M1024 192c-38.4 19.2-76.8 25.6-121.6 32 44.8-25.6 76.8-64 89.6-115.2-38.4 25.6-83.2 38.4-134.4 51.2-38.4-38.4-96-64-153.6-64-108.8 0-204.8 96-204.8 211.2 0 19.2 0 32 6.4 44.8-172.8-6.4-332.8-89.6-435.2-217.6-19.2 32-25.6 64-25.6 102.4 0 70.4 38.4 134.4 96 172.8-32 0-64-12.8-96-25.6 0 102.4 70.4 185.6 166.4 204.8-19.2 12.8-38.4 12.8-57.6 12.8-12.8 0-25.6 0-38.4-6.4 25.6 83.2 102.4 147.2 198.4 147.2-70.4 57.6-160 89.6-262.4 89.6h-51.2c96 64 204.8 96 320 96 384 0 595.2-320 595.2-595.2v-25.6c44.8-32 83.2-70.4 108.8-115.2z" + ], + "grid": 16, + "tags": [ + "twitter" + ] + }, + "properties": { + "order": 69, + "id": 89, + "prevSize": 16, + "code": 58953, + "name": "twitter", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 73 + }, + { + "icon": { + "paths": [ + "M179.2 902.4c76.8-115.2 211.2-185.6 358.4-185.6 134.4 0 256 64 339.2 160 89.6-96 147.2-224 147.2-364.8 0-281.6-230.4-512-512-512s-512 230.4-512 512c0 153.6 70.4 294.4 179.2 390.4zM787.2 665.6c-6.4 19.2-19.2 19.2-38.4 12.8-70.4-32-147.2-51.2-224-51.2-83.2 0-160 19.2-230.4 51.2-6.4 6.4-25.6 6.4-32-19.2-6.4-12.8 6.4-25.6 12.8-32 76.8-38.4 160-57.6 249.6-57.6s172.8 19.2 243.2 51.2c12.8 12.8 25.6 25.6 19.2 44.8zM832 537.6c-6.4 6.4-12.8 12.8-25.6 12.8h-6.4c-83.2-38.4-179.2-64-275.2-64s-185.6 19.2-268.8 57.6h-6.4c-12.8 0-19.2-6.4-25.6-12.8l-6.4-12.8c0-6.4 6.4-19.2 12.8-19.2 89.6-38.4 192-64 300.8-64 108.8 0 211.2 25.6 300.8 64v38.4zM185.6 326.4c102.4-44.8 217.6-64 339.2-64 115.2 0 230.4 25.6 332.8 64 12.8 6.4 25.6 19.2 25.6 38.4 0 25.6-19.2 44.8-44.8 44.8h-6.4c-96-38.4-198.4-57.6-307.2-57.6s-211.2 19.2-307.2 51.2h-6.4c-25.6 0-44.8-19.2-44.8-44.8 0-6.4 6.4-25.6 19.2-32zM537.6 883.2c-89.6 0-166.4 44.8-211.2 108.8 57.6 19.2 121.6 32 185.6 32 83.2 0 160-19.2 224-51.2-44.8-57.6-115.2-89.6-198.4-89.6z" + ], + "grid": 16, + "tags": [ + "spotify" + ] + }, + "properties": { + "order": 70, + "id": 87, + "prevSize": 16, + "code": 58954, + "name": "spotify", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 74 + }, + { + "icon": { + "paths": [ + "M512 0c-281.6 0-512 230.4-512 512 0 211.2 128 390.4 307.2 467.2 0-38.4 0-76.8 6.4-115.2 12.8-38.4 64-281.6 64-281.6s-12.8-32-12.8-76.8c0-76.8 44.8-134.4 96-134.4s70.4 32 70.4 76.8-32 115.2-44.8 179.2c-12.8 57.6 25.6 96 83.2 96 96 0 160-121.6 160-275.2 0-115.2-76.8-198.4-211.2-198.4-153.6 0-249.6 115.2-249.6 243.2 0 44.8 12.8 76.8 32 102.4 6.4 12.8 12.8 12.8 6.4 25.6 0 6.4-6.4 32-12.8 38.4-6.4 12.8-12.8 19.2-25.6 12.8-70.4-32-102.4-108.8-102.4-198.4 0-147.2 121.6-320 364.8-320 198.4 0 326.4 140.8 326.4 294.4 0 198.4-108.8 352-275.2 352-57.6 0-108.8-32-128-64 0 0-32 115.2-38.4 140.8-12.8 38.4-32 76.8-51.2 108.8 51.2 32 96 38.4 147.2 38.4 281.6 0 512-230.4 512-512s-230.4-512-512-512z" + ], + "grid": 16, + "tags": [ + "pinterest" + ] + }, + "properties": { + "order": 71, + "id": 85, + "prevSize": 16, + "code": 58956, + "name": "pinterest", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 76 + }, + { + "icon": { + "paths": [ + "M256 44.8c-134.4 51.2-224 147.2-249.6 288-12.8 83.2-6.4 172.8 32 249.6 6.4 19.2 19.2 32 32 51.2l19.2 19.2c12.8-6.4 25.6-6.4 32-12.8 44.8-25.6 76.8-64 115.2-96-128-153.6 6.4-332.8 172.8-377.6 160-38.4 371.2 25.6 416 192 19.2 64 6.4 140.8-44.8 192-25.6 25.6-64 44.8-102.4 51.2-25.6 6.4-44.8 6.4-70.4 0-12.8-6.4-25.6-6.4-38.4-6.4-19.2-6.4-38.4-6.4-38.4-25.6v-268.8c0-19.2 0-12.8-12.8-19.2-12.8 0-25.6 0-38.4-6.4-38.4 0-83.2 0-121.6 6.4-12.8 0-19.2 0-19.2 19.2v140.8l6.4 294.4c0 32 0 102.4-32 115.2-38.4 19.2-70.4-19.2-108.8-25.6 6.4 51.2-25.6 147.2 32 172.8 51.2 25.6 115.2 32 172.8 12.8 115.2-38.4 153.6-172.8 140.8-275.2 179.2 51.2 377.6-38.4 454.4-198.4 57.6-115.2 32-262.4-51.2-358.4-166.4-185.6-480-224-697.6-134.4z" + ], + "grid": 16, + "tags": [ + "path" + ] + }, + "properties": { + "order": 72, + "id": 83, + "prevSize": 16, + "code": 58957, + "name": "path", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 77 + }, + { + "icon": { + "paths": [ + "M928 1024h-832c-51.2 0-96-44.8-96-96v-832c0-51.2 44.8-96 96-96h825.6c57.6 0 102.4 44.8 102.4 96v825.6c0 57.6-44.8 102.4-96 102.4zM262.4 192c-44.8 0-76.8 32-76.8 76.8 0 38.4 25.6 76.8 70.4 76.8 44.8 0 70.4-32 70.4-76.8 6.4-44.8-19.2-76.8-64-76.8zM339.2 390.4h-147.2v441.6h147.2v-441.6zM876.8 582.4c0-134.4-64-204.8-160-204.8-76.8 0-108.8 44.8-128 70.4v-64h-153.6v441.6h147.2v-236.8c0-12.8 0-25.6 6.4-32 12.8-25.6 32-51.2 76.8-51.2 51.2 0 70.4 38.4 70.4 96v230.4h147.2v-249.6z" + ], + "grid": 16, + "tags": [ + "linkedin" + ] + }, + "properties": { + "order": 73, + "id": 82, + "prevSize": 16, + "code": 58958, + "name": "linkedin", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 78 + }, + { + "icon": { + "paths": [ + "M0 870.4v0zM236.8 563.2c89.6 0 153.6-96 140.8-211.2-19.2-121.6-108.8-217.6-198.4-217.6-89.6-6.4-153.6 89.6-140.8 211.2 19.2 115.2 108.8 217.6 198.4 217.6zM1024 256v-83.2c0-96-76.8-172.8-166.4-172.8h-684.8c-96 0-172.8 76.8-172.8 166.4 57.6-51.2 140.8-96 224-96h358.4l-83.2 70.4h-108.8c70.4 25.6 115.2 115.2 115.2 204.8 0 76.8-44.8 140.8-102.4 185.6-57.6 44.8-70.4 64-70.4 102.4 0 32 64 89.6 96 108.8 96 64 128 128 128 230.4 0 19.2 0 32-6.4 51.2h307.2c96 0 172.8-76.8 172.8-172.8v-531.2h-192v192h-64v-192h-198.4v-64h192v-192h64v192h192zM185.6 768h64c-25.6-25.6-51.2-57.6-51.2-96 0-25.6 6.4-44.8 19.2-64h-32c-76.8-6.4-140.8-32-185.6-70.4v275.2c51.2-32 115.2-44.8 185.6-44.8zM6.4 889.6v-19.2c-6.4 6.4-6.4 12.8 0 19.2zM454.4 953.6c-12.8-57.6-70.4-89.6-140.8-140.8-25.6-6.4-57.6-12.8-89.6-12.8-89.6 0-172.8 32-217.6 89.6 12.8 76.8 83.2 134.4 166.4 134.4h288v-32c0-12.8 0-25.6-6.4-38.4z" + ], + "grid": 16, + "tags": [ + "google-plus" + ] + }, + "properties": { + "order": 74, + "id": 78, + "prevSize": 16, + "code": 58959, + "name": "google-plus", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 79 + }, + { + "icon": { + "paths": [ + "M512 0c-281.6 0-512 230.4-512 512s230.4 512 512 512 512-230.4 512-512-230.4-512-512-512zM825.6 262.4c51.2 64 83.2 140.8 83.2 230.4-57.6-12.8-115.2-19.2-166.4-19.2-38.4 0-76.8 6.4-115.2 12.8l-25.6-64c83.2-32 160-83.2 224-160zM512 115.2c96 0 179.2 32 249.6 89.6-51.2 64-121.6 108.8-198.4 140.8-51.2-108.8-102.4-179.2-134.4-224 25.6-6.4 51.2-6.4 83.2-6.4zM332.8 153.6c32 32 83.2 102.4 147.2 217.6-121.6 38.4-243.2 44.8-320 44.8h-38.4c32-115.2 108.8-211.2 211.2-262.4zM115.2 512c12.8-6.4 25.6-6.4 44.8-6.4 83.2 0 217.6-6.4 364.8-51.2 6.4 19.2 12.8 32 25.6 51.2-102.4 32-179.2 83.2-230.4 134.4-51.2 51.2-89.6 96-108.8 128-64-70.4-96-160-96-256zM512 908.8c-89.6 0-172.8-32-236.8-76.8 12.8-25.6 44.8-70.4 89.6-115.2 51.2-44.8 115.2-96 204.8-128 32 83.2 57.6 185.6 76.8 294.4-38.4 19.2-83.2 25.6-134.4 25.6zM736 838.4c-19.2-102.4-44.8-185.6-76.8-268.8 25.6-6.4 51.2-6.4 83.2-6.4 44.8 0 102.4 6.4 153.6 19.2-12.8 108.8-70.4 198.4-160 256z" + ], + "grid": 16, + "tags": [ + "dribbble" + ] + }, + "properties": { + "order": 75, + "id": 73, + "prevSize": 16, + "code": 58960, + "name": "dribbble", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 80 + }, + { + "icon": { + "paths": [ + "M921.6 281.6h-256v-64h256v64zM499.2 544c12.8 25.6 25.6 57.6 25.6 96s-6.4 70.4-25.6 102.4l-51.2 51.2c-19.2 12.8-44.8 25.6-70.4 32s-57.6 6.4-89.6 6.4h-288v-640h307.2c76.8 0 134.4 25.6 166.4 70.4 19.2 25.6 25.6 57.6 25.6 96s-12.8 70.4-32 96c-6.4 12.8-19.2 25.6-44.8 32 32 12.8 57.6 32 76.8 57.6zM147.2 441.6h134.4c25.6 0 51.2-6.4 70.4-12.8 19.2-12.8 25.6-32 25.6-57.6 0-32-12.8-51.2-32-57.6-25.6-6.4-51.2-12.8-83.2-12.8h-115.2v140.8zM390.4 627.2c0-32-12.8-57.6-38.4-70.4-12.8-6.4-38.4-12.8-64-12.8h-140.8v172.8h134.4c25.6 0 51.2-6.4 64-12.8 25.6-6.4 44.8-32 44.8-76.8zM1017.6 524.8c6.4 19.2 6.4 51.2 6.4 89.6h-332.8c0 44.8 19.2 76.8 44.8 96 19.2 12.8 38.4 19.2 64 19.2s51.2-6.4 64-19.2c19.2-6.4 25.6-19.2 32-32h121.6c0 25.6-19.2 57.6-44.8 83.2-38.4 44.8-96 64-172.8 64-57.6 0-115.2-19.2-160-57.6-44.8-32-70.4-96-70.4-179.2 0-76.8 19.2-140.8 64-185.6 44.8-44.8 96-64 166.4-64 38.4 0 76.8 6.4 108.8 19.2 32 12.8 57.6 38.4 76.8 70.4 19.2 32 25.6 64 32 96zM902.4 537.6c0-32-12.8-57.6-32-70.4-19.2-19.2-44.8-25.6-70.4-25.6-32 0-51.2 6.4-70.4 25.6-19.2 19.2-25.6 38.4-32 70.4h204.8z" + ], + "grid": 16, + "tags": [ + "behance" + ] + }, + "properties": { + "order": 76, + "id": 72, + "prevSize": 16, + "code": 58961, + "name": "behance", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 81 + }, + { + "icon": { + "paths": [ + "M565.888 412.672l69.824 33.728 105.408-33.728v-61.184c0-126.080-102.784-228.608-229.12-228.608s-229.056 102.592-229.056 228.608v321.024c0 29.632-24.192 53.696-53.824 53.696s-53.824-24.064-53.824-53.696v-134.4h-175.296v134.4c0 126.080 102.72 228.608 229.12 228.608 126.336 0 229.12-102.592 229.12-228.608v-321.024c0-29.568 24.192-53.696 53.824-53.696 29.696 0 53.888 24.128 53.888 53.696l-0.064 61.184zM848.704 538.112v134.4c0 29.632-24.128 53.696-53.824 53.696-29.696 0-53.888-24.064-53.888-53.696v-137.088l-105.344 33.728-69.824-33.728v137.088c0 126.080 102.784 228.608 229.12 228.608s229.056-102.592 229.056-228.608v-134.4h-175.296z" + ], + "grid": 16, + "tags": [ + "stumbleupon" + ] + }, + "properties": { + "order": 77, + "id": 98, + "prevSize": 16, + "code": 58962, + "name": "stumbleupon", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 82 + }, + { + "icon": { + "paths": [ + "M608 652.8c-19.2 19.2 0 51.2 0 51.2l128 217.6s19.2 25.6 38.4 25.6 38.4-12.8 38.4-12.8l102.4-147.2s12.8-19.2 12.8-32c0-25.6-32-32-32-32l-243.2-76.8c-6.4 0-25.6-6.4-44.8 6.4zM595.2 544c12.8 19.2 44.8 12.8 44.8 12.8l243.2-70.4s32-12.8 38.4-32c6.4-19.2-6.4-38.4-6.4-38.4l-108.8-134.4s-12.8-19.2-32-19.2c-25.6 0-38.4 25.6-38.4 25.6l-140.8 217.6s-6.4 19.2 0 38.4zM480 460.8c32-6.4 38.4-51.2 38.4-51.2v-345.6c-6.4 0-6.4-38.4-25.6-51.2-32-19.2-44.8-6.4-51.2-6.4l-198.4 70.4s-19.2 6.4-32 25.6c-12.8 25.6 12.8 57.6 12.8 57.6l211.2 288s19.2 19.2 44.8 12.8zM435.2 601.6c0-25.6-32-44.8-32-44.8l-217.6-108.8s-32-12.8-44.8-6.4c-19.2 12.8-25.6 25.6-32 32l-12.8 172.8s0 32 6.4 44.8c12.8 19.2 44.8 6.4 44.8 6.4l256-57.6c12.8 0 25.6-6.4 32-38.4zM492.8 697.6c-19.2-12.8-44.8 6.4-44.8 6.4l-172.8 185.6s-19.2 25.6-12.8 44.8c6.4 19.2 12.8 25.6 25.6 32l172.8 51.2s19.2 6.4 38.4 0c19.2 0 12.8-32 12.8-32l6.4-256s0-25.6-25.6-32z" + ], + "grid": 16, + "tags": [ + "yelp" + ] + }, + "properties": { + "order": 78, + "id": 94, + "prevSize": 16, + "code": 58963, + "name": "yelp", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 83 + }, + { + "icon": { + "paths": [ + "M518.4 544l115.2 313.6v6.4c-38.4 12.8-83.2 19.2-128 19.2-38.4 0-76.8-6.4-108.8-12.8l121.6-326.4zM896 512c0 140.8-76.8 256-192 326.4l115.2-332.8c19.2-51.2 32-96 32-134.4v-38.4c32 51.2 44.8 115.2 44.8 179.2zM128 512c0-51.2 12.8-108.8 32-153.6l185.6 486.4c-128-57.6-217.6-185.6-217.6-332.8zM192 307.2c70.4-102.4 185.6-166.4 320-166.4 102.4 0 192 38.4 262.4 96h-6.4c-38.4 0-64 32-64 64s19.2 57.6 38.4 89.6c12.8 25.6 32 57.6 32 102.4 0 32-12.8 70.4-32 121.6l-38.4 128-140.8-403.2c25.6 0 44.8-6.4 44.8-6.4 19.2 0 19.2-32 0-32 0 0-64 6.4-102.4 6.4-38.4 0-102.4-6.4-102.4-6.4-19.2 0-25.6 32 0 32 0 0 19.2 0 38.4 6.4l57.6 160-83.2 243.2-140.8-403.2c25.6-6.4 44.8-6.4 44.8-6.4 19.2 0 19.2-32 0-32 0 0-64 6.4-102.4 6.4h-25.6zM851.2 0h-678.4c-96 0-172.8 76.8-172.8 172.8v678.4c0 96 76.8 172.8 172.8 172.8h678.4c96 0 172.8-76.8 172.8-172.8v-678.4c0-96-76.8-172.8-172.8-172.8zM960 512c0 249.6-198.4 448-448 448s-448-198.4-448-448 198.4-448 448-448 448 198.4 448 448z" + ], + "grid": 16, + "tags": [ + "wordpress" + ] + }, + "properties": { + "order": 79, + "id": 93, + "prevSize": 16, + "code": 58964, + "name": "wordpress", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 84 + }, + { + "icon": { + "paths": [ + "M409.6 897.506v-343.341h493.929v439.718l-493.929-96.376zM409.6 120.471l493.929-90.353v439.718h-493.929v-349.365zM331.294 469.835h-331.294v-271.059l331.294-60.235v331.294zM331.294 879.435l-331.294-66.259v-259.012h331.294v325.271z" + ], + "width": 904, + "grid": 16, + "tags": [ + "windows-8" + ] + }, + "properties": { + "order": 80, + "id": 92, + "prevSize": 16, + "code": 58965, + "name": "windows-8", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 85 + }, + { + "icon": { + "paths": [ + "M64 192c19.2 128 128 659.2 377.6 812.8 38.4 25.6 83.2 19.2 115.2-6.4 121.6-102.4 243.2-275.2 275.2-358.4 64 6.4 108.8-12.8 108.8-12.8v-128h-115.2c-140.8 0-236.8-166.4-179.2-313.6 38.4-102.4 108.8-25.6 121.6 0 12.8 32 6.4 115.2-6.4 172.8 19.2 51.2 140.8 76.8 166.4 38.4 32-96 44.8-262.4-38.4-352-57.6-38.4-198.4-70.4-300.8-6.4s-102.4 204.8-96 275.2c6.4 70.4 32 217.6 172.8 300.8 12.8 12.8-153.6 230.4-160 217.6-185.6-179.2-249.6-544-262.4-640h-179.2z" + ], + "grid": 16, + "tags": [ + "vine" + ] + }, + "properties": { + "order": 81, + "id": 91, + "prevSize": 16, + "code": 58966, + "name": "vine", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 86 + }, + { + "icon": { + "paths": [ + "M576 448v236.8c0 57.6 0 96 6.4 108.8 6.4 19.2 19.2 32 38.4 44.8 25.6 12.8 51.2 19.2 76.8 19.2 51.2 0 83.2-6.4 134.4-38.4v153.6c-44.8 19.2-83.2 32-115.2 38.4-38.4 12.8-76.8 12.8-115.2 12.8-44.8 0-76.8-6.4-108.8-19.2-38.4-12.8-64-32-89.6-51.2-25.6-19.2-44.8-44.8-51.2-70.4-12.8-25.6-12.8-57.6-12.8-108.8v-352h-147.2v-147.2c38.4-12.8 83.2-32 115.2-57.6 25.6-25.6 51.2-51.2 70.4-89.6 19.2-32 32-76.8 38.4-128h160v256h256v192h-256z" + ], + "grid": 16, + "tags": [ + "tumblr" + ] + }, + "properties": { + "order": 82, + "id": 88, + "prevSize": 16, + "code": 58967, + "name": "tumblr", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 87 + }, + { + "icon": { + "paths": [ + "M646.4 723.2h-192l-64 300.8h-262.4l25.6-108.8h-153.6l198.4-915.2h448c134.4 0 288 96 236.8 313.6-38.4 192-192 300.8-371.2 300.8h-185.6l-64 300.8h-44.8l-12.8 44.8h134.4l64-300.8h243.2c76.8 0 147.2-25.6 198.4-64l32-25.6c51.2-51.2 83.2-115.2 102.4-192 12.8-76.8 6.4-140.8-32-185.6-19.2-19.2-38.4-38.4-64-51.2 96 38.4 166.4 134.4 134.4 288-38.4 179.2-192 294.4-371.2 294.4zM492.8 435.2c70.4 0 134.4-57.6 153.6-128 19.2-70.4-25.6-128-89.6-128h-128l-64 256h128z" + ], + "grid": 16, + "tags": [ + "paypal" + ] + }, + "properties": { + "order": 83, + "id": 84, + "prevSize": 16, + "code": 58968, + "name": "paypal", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 88 + }, + { + "icon": { + "paths": [ + "M780.8 800c-204.8 0-275.2-89.6-313.6-204.8l-38.4-121.6c-25.6-89.6-64-153.6-166.4-153.6-70.4 0-147.2 51.2-147.2 198.4 0 115.2 57.6 185.6 140.8 185.6 89.6 0 153.6-70.4 153.6-70.4l44.8 102.4s-64 64-198.4 64c-166.4 0-256-96-256-275.2 0-192 89.6-300.8 262.4-300.8 153.6 0 236.8 57.6 281.6 211.2l38.4 121.6c25.6 89.6 76.8 147.2 198.4 147.2 76.8 0 121.6-19.2 121.6-64 0-32-19.2-57.6-76.8-76.8l-76.8-19.2c-96-25.6-134.4-76.8-134.4-153.6 0-128 102.4-172.8 211.2-172.8 121.6 0 192 44.8 204.8 153.6l-115.2 12.8c-6.4-51.2-38.4-70.4-89.6-70.4s-83.2 25.6-83.2 64 12.8 57.6 64 70.4l76.8 19.2c89.6 25.6 140.8 70.4 140.8 166.4 0 121.6-96 166.4-243.2 166.4z" + ], + "grid": 16, + "tags": [ + "lastfm" + ] + }, + "properties": { + "order": 84, + "id": 81, + "prevSize": 16, + "code": 58969, + "name": "lastfm", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 89 + }, + { + "icon": { + "paths": [ + "M928 0h-832c-51.2 0-96 44.8-96 96v825.6c0 57.6 44.8 102.4 96 102.4h825.6c57.6 0 96-44.8 96-96v-832c6.4-51.2-38.4-96-89.6-96zM512 313.6c108.8 0 198.4 89.6 198.4 198.4s-89.6 198.4-198.4 198.4-198.4-89.6-198.4-198.4 89.6-198.4 198.4-198.4zM896 857.6c0 19.2-19.2 38.4-38.4 38.4h-691.2c-19.2 0-38.4-19.2-38.4-38.4v-409.6h89.6c-6.4 25.6-6.4 51.2-6.4 76.8 0 166.4 128 307.2 300.8 307.2s300.8-140.8 300.8-307.2c0-25.6-6.4-51.2-12.8-76.8h96v409.6zM896 281.6c0 19.2-19.2 38.4-38.4 38.4h-115.2c-19.2 0-38.4-19.2-38.4-38.4v-115.2c0-19.2 19.2-38.4 38.4-38.4h115.2c19.2 0 38.4 19.2 38.4 38.4v115.2z" + ], + "grid": 16, + "tags": [ + "instagram" + ] + }, + "properties": { + "order": 85, + "id": 80, + "prevSize": 16, + "code": 58970, + "name": "instagram", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 90 + }, + { + "icon": { + "paths": [ + "M896 768l-384-512-384 512h768z" + ], + "grid": 16, + "tags": [ + "triangle-up" + ] + }, + "properties": { + "order": 86, + "id": 68, + "prevSize": 16, + "code": 58880, + "name": "triangle-up", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M512 0c-282.752 0-512 229.248-512 512 0 282.688 229.248 512 512 512 282.816 0 512-229.248 512-512 0-282.752-229.184-512-512-512zM576.768 764.864c0 37.056-28.992 67.072-64.768 67.072s-64.768-30.016-64.768-67.072v-313.088c0-37.056 28.992-67.072 64.768-67.072s64.768 30.016 64.768 67.072v313.088zM512 319.68c-35.776 0-64.768-28.608-64.768-63.872s28.992-63.744 64.768-63.744 64.768 28.544 64.768 63.808-28.992 63.808-64.768 63.808z" + ], + "grid": 16, + "tags": [ + "info-circle" + ] + }, + "properties": { + "order": 87, + "id": 24, + "prevSize": 16, + "code": 58895, + "name": "info-circle", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 15 + }, + { + "icon": { + "paths": [ + "M992 64h-768c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h768c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 320h-768c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h768c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 576h-768c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h768c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M992 832h-768c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h768c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M96 64h-64c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h64c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M96 320h-64c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h64c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M96 576h-64c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h64c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z", + "M96 832h-64c-19.2 0-32 12.8-32 32v64c0 19.2 12.8 32 32 32h64c19.2 0 32-12.8 32-32v-64c0-19.2-12.8-32-32-32z" + ], + "grid": 16, + "tags": [ + "list-numbered" + ] + }, + "properties": { + "order": 88, + "id": 58, + "prevSize": 16, + "code": 58910, + "name": "list-numbered", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 30 + }, + { + "icon": { + "paths": [ + "M457.856 791.936l289.28 226.496c4.736 3.776 7.616 5.632 10.368 5.632 8 0 10.496-5.504 10.496-14.528v-214.4c0-15.104 9.984-27.136 23.36-27.136h105.152c127.488 0 127.36-61.44 127.36-61.44v-640.064c0 0 0-66.56-127.872-66.56h-767.936c-128 0-128 66.56-128 66.56v640.064c0 0-0.064 61.44 128.448 61.44h256c0 0 53.568 1.472 73.344 23.936z" + ], + "grid": 16, + "tags": [ + "chat" + ] + }, + "properties": { + "order": 89, + "id": 7, + "prevSize": 16, + "code": 58925, + "name": "chat", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 45 + }, + { + "icon": { + "paths": [ + "M896 896.128h-768v-768h320v-128l-358.976-0.064c-49.152 0-89.024 39.936-89.024 89.088v845.952c0 49.152 39.872 89.024 89.024 89.024h845.952c49.152 0 89.024-39.872 89.024-89.024v-358.976h-128v320zM1024 64c0-14.656-6.080-27.52-14.72-38.272-1.344-1.728-2.048-3.712-3.584-5.312-0.192-0.128-0.256-0.384-0.384-0.576-0.384-0.32-0.448-0.832-0.832-1.216-4.096-4.096-9.152-6.528-13.952-9.28-2.112-1.216-3.84-3.008-6.080-3.968-8.704-3.776-17.92-5.376-27.264-5.12-0.128 0-0.256-0.064-0.384-0.064h-313.024c-36.992-0.064-67.008 28.544-67.008 63.808 0 35.2 30.080 63.808 67.136 63.808h161.216l-402.56 403.328c-24.832 24.768-24.832 64.768 0 89.472 24.832 24.768 65.024 24.768 89.792 0l403.968-403.52v163.2c0 37.056 28.608 67.072 63.872 67.072 35.264 0 63.808-30.016 63.808-67.072v-313.024c0-0.64-0.32-1.152-0.32-1.728 0-0.512 0.32-1.024 0.32-1.536z" + ], + "grid": 16, + "tags": [ + "export" + ] + }, + "properties": { + "order": 90, + "id": 17, + "prevSize": 16, + "code": 58940, + "name": "export", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 60 + }, + { + "icon": { + "paths": [ + "M979.2 588.8c6.4-25.6 6.4-51.2 6.4-76.8 0-262.4-211.2-473.6-473.6-473.6-25.6 0-51.2 0-76.8 6.4-38.4-32-89.6-44.8-147.2-44.8-160 0-288 128-288 288 0 57.6 12.8 108.8 44.8 153.6-6.4 19.2-6.4 44.8-6.4 70.4 0 262.4 211.2 473.6 473.6 473.6 25.6 0 51.2 0 76.8-6.4 44.8 25.6 96 44.8 153.6 44.8 160 0 288-128 288-288-6.4-57.6-19.2-108.8-51.2-147.2zM736 729.6c-19.2 32-51.2 51.2-89.6 70.4-38.4 19.2-83.2 25.6-134.4 25.6-64 0-115.2-12.8-160-32-32-12.8-51.2-38.4-70.4-64-19.2-32-25.6-57.6-25.6-83.2 0-12.8 6.4-25.6 19.2-38.4 12.8-12.8 25.6-19.2 44.8-19.2 12.8 0 25.6 6.4 38.4 12.8 6.4 6.4 12.8 19.2 19.2 38.4 6.4 19.2 19.2 32 25.6 44.8 6.4 12.8 19.2 25.6 38.4 32 19.2 6.4 38.4 12.8 64 12.8 38.4 0 70.4-6.4 89.6-25.6 25.6-19.2 32-38.4 32-57.6 0-19.2-6.4-32-19.2-44.8-6.4-19.2-19.2-25.6-38.4-32-19.2-6.4-51.2-12.8-83.2-19.2-44.8-12.8-83.2-25.6-115.2-38.4-32-12.8-57.6-32-76.8-51.2-19.2-25.6-25.6-57.6-25.6-89.6 0-32 12.8-64 32-89.6 19.2-25.6 44.8-44.8 83.2-57.6 38.4-12.8 76.8-19.2 128-19.2 38.4 0 70.4 6.4 102.4 12.8 25.6 6.4 51.2 19.2 70.4 38.4 19.2 12.8 32 32 44.8 44.8s12.8 32 12.8 51.2c0 12.8-6.4 25.6-19.2 38.4-12.8 12.8-25.6 19.2-44.8 19.2-12.8 0-25.6-6.4-32-12.8-6.4-6.4-19.2-19.2-25.6-32-12.8-25.6-25.6-38.4-44.8-51.2-12.8-12.8-38.4-19.2-76.8-19.2-32 0-57.6 6.4-76.8 19.2-19.2 12.8-32 25.6-32 44.8 0 12.8 6.4 19.2 12.8 32l25.6 19.2c12.8 6.4 25.6 12.8 38.4 12.8 12.8 6.4 32 6.4 64 12.8 32 12.8 64 25.6 96 32 32 6.4 51.2 19.2 76.8 32 19.2 12.8 38.4 32 51.2 51.2 6.4 25.6 12.8 51.2 12.8 76.8 0 38.4-12.8 70.4-32 102.4z" + ], + "grid": 16, + "tags": [ + "skype" + ] + }, + "properties": { + "order": 91, + "id": 86, + "prevSize": 16, + "code": 58955, + "name": "skype", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 75 + }, + { + "icon": { + "paths": [ + "M64 0l64 896 384 128 384-128 64-896h-896zM780.8 300.8h-428.8l12.8 115.2h409.6l-32 352-230.4 64-230.4-64-12.8-179.2h115.2v89.6l128 32 128-32 12.8-147.2h-390.4l-32-345.6h563.2l-12.8 115.2z" + ], + "grid": 16, + "tags": [ + "html5" + ] + }, + "properties": { + "order": 92, + "id": 79, + "prevSize": 16, + "code": 58971, + "name": "html5", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 91 + }, + { + "icon": { + "paths": [ + "M0 524.8c0 44.8 6.4 89.6 12.8 128s19.2 70.4 38.4 96c12.8 25.6 32 51.2 57.6 70.4s51.2 38.4 76.8 51.2c25.6 12.8 57.6 25.6 96 32l108.8 19.2s76.8 6.4 121.6 6.4 83.2 0 121.6-6.4 70.4-6.4 108.8-19.2c38.4-6.4 70.4-19.2 96-32s51.2-32 76.8-51.2c25.6-19.2 44.8-44.8 57.6-70.4 12.8-25.6 25.6-57.6 38.4-96 12.8-38.4 12.8-83.2 12.8-128 0-83.2-25.6-153.6-83.2-217.6l6.4-25.6c0-12.8 6.4-25.6 6.4-44.8v-64l-19.2-76.8h-32c-12.8 0-25.6 6.4-44.8 6.4-19.2 6.4-38.4 12.8-64 25.6l-76.8 51.2c-51.2-12.8-121.6-19.2-204.8-19.2s-153.6 6.4-198.4 19.2c-32-19.2-57.6-32-83.2-44.8-25.6-12.8-44.8-19.2-64-25.6l-38.4-12.8h-38.4l-19.2 76.8c-6.4 25.6-6.4 44.8 0 64 0 19.2 6.4 32 6.4 44.8 0 12.8 6.4 19.2 6.4 25.6-57.6 64-83.2 134.4-83.2 217.6zM128 652.8c0-44.8 19.2-89.6 64-134.4 12.8-12.8 25.6-19.2 44.8-25.6 19.2-6.4 38.4-12.8 57.6-12.8h64c19.2 0 44.8 0 76.8 6.4h153.6c25.6 0 51.2-6.4 70.4-6.4h64c19.2 0 44.8 6.4 57.6 12.8 19.2 6.4 32 12.8 44.8 25.6 44.8 38.4 64 83.2 64 134.4 0 25.6-6.4 51.2-12.8 76.8l-25.6 57.6c-12.8 12.8-25.6 25.6-44.8 38.4-19.2 12.8-38.4 19.2-57.6 25.6-19.2 6.4-44.8 12.8-70.4 12.8-32 0-57.6 6.4-76.8 6.4-25.6-6.4-57.6-6.4-89.6-6.4h-89.6c-25.6 0-51.2 0-76.8-6.4-32 0-51.2-6.4-70.4-12.8-19.2-6.4-38.4-12.8-57.6-25.6-25.6-12.8-44.8-19.2-51.2-38.4-12.8-12.8-19.2-32-25.6-57.6-12.8-19.2-12.8-44.8-12.8-70.4zM640 640c0 51.2 25.6 96 64 96s64-44.8 64-96-25.6-96-64-96c-32 0-64 44.8-64 96zM256 640c0 51.2 32 96 64 96s64-44.8 64-96-25.6-96-64-96-64 44.8-64 96z" + ], + "grid": 16, + "tags": [ + "github" + ] + }, + "properties": { + "order": 93, + "id": 77, + "prevSize": 16, + "code": 58972, + "name": "github", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 92 + }, + { + "icon": { + "paths": [ + "M985.6 595.2l-390.4 390.4c-44.8 44.8-121.6 44.8-166.4 0l-396.8-390.4c-44.8-44.8-44.8-121.6 0-166.4l390.4-390.4c51.2-51.2 128-51.2 172.8-6.4l179.2 179.2-262.4 268.8-102.4-102.4c-32-32-83.2-32-108.8 0l-83.2 83.2c-32 32-32 76.8 0 108.8l236.8 236.8c25.6 25.6 57.6 25.6 83.2 19.2 12.8-6.4 19.2-6.4 25.6-19.2l396.8-403.2 19.2 19.2c57.6 51.2 57.6 128 6.4 172.8zM550.4 736c-12.8 12.8-44.8 12.8-44.8 12.8s-32 0-38.4-12.8l-179.2-185.6c-12.8-12.8-12.8-38.4 0-57.6l51.2-51.2c12.8-12.8 44.8-12.8 57.6 0l115.2 121.6 352-352c12.8-12.8 44.8-12.8 57.6 0l51.2 51.2c12.8 12.8 12.8 44.8 0 57.6l-422.4 416z" + ], + "grid": 16, + "tags": [ + "foursquare" + ] + }, + "properties": { + "order": 94, + "id": 76, + "prevSize": 16, + "code": 58973, + "name": "foursquare", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 93 + }, + { + "icon": { + "paths": [ + "M512 211.2l211.2-179.2 300.8 198.4-204.8 166.4-307.2-185.6zM1024 563.2l-300.8 198.4-211.2-172.8 300.8-185.6 211.2 160zM300.8 761.6l-300.8-198.4 204.8-166.4 307.2 192-211.2 172.8zM-0 230.4l300.8-198.4 211.2 179.2-300.8 192-211.2-172.8zM512 627.2l211.2 179.2 89.6-57.6v64l-300.8 179.2-300.8-179.2v-64l89.6 51.2 211.2-172.8z" + ], + "grid": 16, + "tags": [ + "dropbox" + ] + }, + "properties": { + "order": 95, + "id": 74, + "prevSize": 16, + "code": 58974, + "name": "dropbox", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 94 + }, + { + "icon": { + "paths": [ + "M864 710.4c-38.4 0-64-32-64-64v-256c0-38.4 32-64 64-64 38.4 0 64 32 64 64v256c0 32-25.6 64-64 64zM697.6 857.6h-38.4v108.8c0 38.4-25.6 64-57.6 64s-57.6-25.6-57.6-64v-108.8h-70.4v108.8c0 38.4-25.6 64-57.6 64s-57.6-25.6-57.6-64v-108.8h-32c-19.2 0-38.4-19.2-38.4-44.8v-428.8h448v422.4c0 32-12.8 51.2-38.4 51.2zM736 326.4h-448c0-89.6 32-153.6 76.8-192l-70.4-83.2c-6.4-12.8-6.4-25.6 0-38.4 12.8-12.8 25.6-12.8 38.4 0l83.2 96c32-12.8 64-19.2 96-19.2s70.4 6.4 96 19.2l83.2-96c12.8-12.8 25.6-12.8 38.4 0s12.8 32 0 38.4l-70.4 83.2c44.8 32 76.8 102.4 76.8 192zM441.6 198.4c-12.8 0-25.6 12.8-25.6 32s12.8 32 25.6 32 25.6-12.8 25.6-32-12.8-32-25.6-32zM582.4 198.4c-12.8 0-25.6 12.8-25.6 32s12.8 32 25.6 32 25.6-19.2 25.6-32-12.8-32-25.6-32zM160 710.4c-38.4 0-64-32-64-64v-256c0-38.4 25.6-64 64-64s64 32 64 64v256c0 32-25.6 64-64 64z" + ], + "grid": 16, + "tags": [ + "android" + ] + }, + "properties": { + "order": 96, + "id": 70, + "prevSize": 16, + "code": 58975, + "name": "android", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 95 + }, + { + "icon": { + "paths": [ + "M921.6 748.8c-32 153.6-115.2 211.2-147.2 249.6-32 25.6-121.6 25.6-153.6 6.4-38.4-25.6-134.4-25.6-166.4 0-44.8 32-115.2 19.2-128 12.8-256-179.2-352-716.8 12.8-774.4 64-12.8 134.4 32 134.4 32 51.2 25.6 70.4 12.8 115.2-6.4 96-44.8 243.2-44.8 313.6 76.8-147.2 96-153.6 294.4 19.2 403.2zM716.8 0c12.8 70.4-64 224-204.8 230.4-12.8-38.4 32-217.6 204.8-230.4z" + ], + "grid": 16, + "tags": [ + "apple" + ] + }, + "properties": { + "order": 97, + "id": 71, + "prevSize": 16, + "code": 58976, + "name": "apple", + "ligatures": "" + }, + "setIdx": 0, + "iconIdx": 96 + } + ], + "height": 1024, + "metadata": { + "name": "flat-ui-icons", + "url": "http://designmodo.com/flat", + "designer": "Sergey Shmidt", + "designerURL": "http://designmodo.com", + "license": "Attribution-NonCommercial-NoDerivs 3.0 Unported", + "licenseURL": "http://creativecommons.org/licenses/by-nc-nd/3.0/" + }, + "preferences": { + "showGlyphs": true, + "showQuickUse": false, + "fontPref": { + "prefix": "fui-", + "metadata": { + "fontFamily": "flat-ui-icons", + "majorVersion": 1, + "minorVersion": 1, + "fontURL": "http://designmodo.com/flat", + "designer": "Sergey Shmidt", + "designerURL": "http://designmodo.com", + "license": "Attribution-NonCommercial-NoDerivs 3.0 Unported", + "licenseURL": "http://creativecommons.org/licenses/by-nc-nd/3.0/" + }, + "metrics": { + "emSize": 1024, + "baseline": 6.25, + "whitespace": 50 + }, + "showMetrics": true, + "showMetadata": true, + "showVersion": true, + "includeMetadata": true, + "resetPoint": 58880 + }, + "imagePref": {}, + "historySize": 100, + "showCodes": true, + "gridSize": 16, + "showGrid": true, + "showLiga": false + } +} \ No newline at end of file diff --git a/public/styling/fonts/lato/lato-black.eot b/public/styling/fonts/lato/lato-black.eot new file mode 100644 index 0000000..a571b9a Binary files /dev/null and b/public/styling/fonts/lato/lato-black.eot differ diff --git a/public/styling/fonts/lato/lato-black.svg b/public/styling/fonts/lato/lato-black.svg new file mode 100644 index 0000000..cab16d3 --- /dev/null +++ b/public/styling/fonts/lato/lato-black.svg @@ -0,0 +1,4691 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/styling/fonts/lato/lato-black.ttf b/public/styling/fonts/lato/lato-black.ttf new file mode 100644 index 0000000..d52a2e4 Binary files /dev/null and b/public/styling/fonts/lato/lato-black.ttf differ diff --git a/public/styling/fonts/lato/lato-black.woff b/public/styling/fonts/lato/lato-black.woff new file mode 100644 index 0000000..dc1cc18 Binary files /dev/null and b/public/styling/fonts/lato/lato-black.woff differ diff --git a/public/styling/fonts/lato/lato-bold.eot b/public/styling/fonts/lato/lato-bold.eot new file mode 100644 index 0000000..0028ce7 Binary files /dev/null and b/public/styling/fonts/lato/lato-bold.eot differ diff --git a/public/styling/fonts/lato/lato-bold.svg b/public/styling/fonts/lato/lato-bold.svg new file mode 100644 index 0000000..468cd2d --- /dev/null +++ b/public/styling/fonts/lato/lato-bold.svg @@ -0,0 +1,5085 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/styling/fonts/lato/lato-bold.ttf b/public/styling/fonts/lato/lato-bold.ttf new file mode 100644 index 0000000..9367582 Binary files /dev/null and b/public/styling/fonts/lato/lato-bold.ttf differ diff --git a/public/styling/fonts/lato/lato-bold.woff b/public/styling/fonts/lato/lato-bold.woff new file mode 100644 index 0000000..239b427 Binary files /dev/null and b/public/styling/fonts/lato/lato-bold.woff differ diff --git a/public/styling/fonts/lato/lato-bolditalic.eot b/public/styling/fonts/lato/lato-bolditalic.eot new file mode 100644 index 0000000..389bb12 Binary files /dev/null and b/public/styling/fonts/lato/lato-bolditalic.eot differ diff --git a/public/styling/fonts/lato/lato-bolditalic.svg b/public/styling/fonts/lato/lato-bolditalic.svg new file mode 100644 index 0000000..406f521 --- /dev/null +++ b/public/styling/fonts/lato/lato-bolditalic.svg @@ -0,0 +1,4514 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/styling/fonts/lato/lato-bolditalic.ttf b/public/styling/fonts/lato/lato-bolditalic.ttf new file mode 100644 index 0000000..e686a10 Binary files /dev/null and b/public/styling/fonts/lato/lato-bolditalic.ttf differ diff --git a/public/styling/fonts/lato/lato-bolditalic.woff b/public/styling/fonts/lato/lato-bolditalic.woff new file mode 100644 index 0000000..52c1d89 Binary files /dev/null and b/public/styling/fonts/lato/lato-bolditalic.woff differ diff --git a/public/styling/fonts/lato/lato-italic.eot b/public/styling/fonts/lato/lato-italic.eot new file mode 100644 index 0000000..b1d7eef Binary files /dev/null and b/public/styling/fonts/lato/lato-italic.eot differ diff --git a/public/styling/fonts/lato/lato-italic.svg b/public/styling/fonts/lato/lato-italic.svg new file mode 100644 index 0000000..18846f3 --- /dev/null +++ b/public/styling/fonts/lato/lato-italic.svg @@ -0,0 +1,4514 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/styling/fonts/lato/lato-italic.ttf b/public/styling/fonts/lato/lato-italic.ttf new file mode 100644 index 0000000..b8beadb Binary files /dev/null and b/public/styling/fonts/lato/lato-italic.ttf differ diff --git a/public/styling/fonts/lato/lato-italic.woff b/public/styling/fonts/lato/lato-italic.woff new file mode 100644 index 0000000..e8476f9 Binary files /dev/null and b/public/styling/fonts/lato/lato-italic.woff differ diff --git a/public/styling/fonts/lato/lato-light.eot b/public/styling/fonts/lato/lato-light.eot new file mode 100644 index 0000000..31d0660 Binary files /dev/null and b/public/styling/fonts/lato/lato-light.eot differ diff --git a/public/styling/fonts/lato/lato-light.svg b/public/styling/fonts/lato/lato-light.svg new file mode 100644 index 0000000..47df121 --- /dev/null +++ b/public/styling/fonts/lato/lato-light.svg @@ -0,0 +1,4691 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/styling/fonts/lato/lato-light.ttf b/public/styling/fonts/lato/lato-light.ttf new file mode 100644 index 0000000..3e0bf3e Binary files /dev/null and b/public/styling/fonts/lato/lato-light.ttf differ diff --git a/public/styling/fonts/lato/lato-light.woff b/public/styling/fonts/lato/lato-light.woff new file mode 100644 index 0000000..1b23b5e Binary files /dev/null and b/public/styling/fonts/lato/lato-light.woff differ diff --git a/public/styling/fonts/lato/lato-regular.eot b/public/styling/fonts/lato/lato-regular.eot new file mode 100644 index 0000000..519ae5d Binary files /dev/null and b/public/styling/fonts/lato/lato-regular.eot differ diff --git a/public/styling/fonts/lato/lato-regular.svg b/public/styling/fonts/lato/lato-regular.svg new file mode 100644 index 0000000..7a51d42 --- /dev/null +++ b/public/styling/fonts/lato/lato-regular.svg @@ -0,0 +1,4691 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/styling/fonts/lato/lato-regular.ttf b/public/styling/fonts/lato/lato-regular.ttf new file mode 100644 index 0000000..83866f7 Binary files /dev/null and b/public/styling/fonts/lato/lato-regular.ttf differ diff --git a/public/styling/fonts/lato/lato-regular.woff b/public/styling/fonts/lato/lato-regular.woff new file mode 100644 index 0000000..5ab1771 Binary files /dev/null and b/public/styling/fonts/lato/lato-regular.woff differ diff --git a/public/styling/icons8-algorithm-64.png b/public/styling/icons8-algorithm-64.png new file mode 100644 index 0000000..63602b2 Binary files /dev/null and b/public/styling/icons8-algorithm-64.png differ diff --git a/public/styling/icons8-gem-stone-48.png b/public/styling/icons8-gem-stone-48.png new file mode 100644 index 0000000..bd7f8db Binary files /dev/null and b/public/styling/icons8-gem-stone-48.png differ diff --git a/public/styling/navbar.png b/public/styling/navbar.png new file mode 100644 index 0000000..873a6cf Binary files /dev/null and b/public/styling/navbar.png differ diff --git a/public/styling/path.png b/public/styling/path.png new file mode 100644 index 0000000..2ade4ab Binary files /dev/null and b/public/styling/path.png differ diff --git a/public/styling/pokemonweight.png b/public/styling/pokemonweight.png new file mode 100644 index 0000000..b7b5888 Binary files /dev/null and b/public/styling/pokemonweight.png differ diff --git a/public/styling/spaceshiptwo-down.svg b/public/styling/spaceshiptwo-down.svg new file mode 100644 index 0000000..351d4b9 --- /dev/null +++ b/public/styling/spaceshiptwo-down.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/public/styling/spaceshiptwo-left.svg b/public/styling/spaceshiptwo-left.svg new file mode 100644 index 0000000..351d4b9 --- /dev/null +++ b/public/styling/spaceshiptwo-left.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/public/styling/spaceshiptwo-right.svg b/public/styling/spaceshiptwo-right.svg new file mode 100644 index 0000000..351d4b9 --- /dev/null +++ b/public/styling/spaceshiptwo-right.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/public/styling/spaceshiptwo-up.svg b/public/styling/spaceshiptwo-up.svg new file mode 100644 index 0000000..351d4b9 --- /dev/null +++ b/public/styling/spaceshiptwo-up.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/public/styling/triangletwo-down.svg b/public/styling/triangletwo-down.svg new file mode 100644 index 0000000..b497fc3 --- /dev/null +++ b/public/styling/triangletwo-down.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/public/styling/triangletwo-left.svg b/public/styling/triangletwo-left.svg new file mode 100644 index 0000000..b21a5e4 --- /dev/null +++ b/public/styling/triangletwo-left.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/public/styling/triangletwo-right.svg b/public/styling/triangletwo-right.svg new file mode 100644 index 0000000..8260003 --- /dev/null +++ b/public/styling/triangletwo-right.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + diff --git a/public/styling/triangletwo-up.svg b/public/styling/triangletwo-up.svg new file mode 100644 index 0000000..e6048e4 --- /dev/null +++ b/public/styling/triangletwo-up.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/public/styling/walls.gif b/public/styling/walls.gif new file mode 100644 index 0000000..6796921 Binary files /dev/null and b/public/styling/walls.gif differ diff --git a/public/styling/wallsandweights.png b/public/styling/wallsandweights.png new file mode 100644 index 0000000..f6607ec Binary files /dev/null and b/public/styling/wallsandweights.png differ diff --git a/public/styling/weight.svg b/public/styling/weight.svg new file mode 100644 index 0000000..aa8f706 --- /dev/null +++ b/public/styling/weight.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thumbnail.jpeg b/thumbnail.jpeg new file mode 100644 index 0000000..ad138b2 Binary files /dev/null and b/thumbnail.jpeg differ