diff --git a/app/encounter-builder/current-encounter.controller.js b/app/encounter-builder/current-encounter.controller.js index 12d2174f..607dc550 100644 --- a/app/encounter-builder/current-encounter.controller.js +++ b/app/encounter-builder/current-encounter.controller.js @@ -15,6 +15,7 @@ vm.isPool = vm.encounter.type == 'pool'; vm.newEncounter = newEncounter; vm.partyInfo = partyInfo; + vm.totalMonsters = 10; vm.launchImpInit = integration.launchImpInit; @@ -22,7 +23,7 @@ function generateRandom(difficulty) { difficulty = difficulty || lastDifficulty; - encounter.generateRandom(vm.filters, difficulty); + encounter.generateRandom(vm.filters, difficulty, vm.totalMonsters); lastDifficulty = difficulty; } diff --git a/app/encounter-builder/current-encounter.html b/app/encounter-builder/current-encounter.html index 9f6b09cb..dfc15ef5 100644 --- a/app/encounter-builder/current-encounter.html +++ b/app/encounter-builder/current-encounter.html @@ -15,6 +15,12 @@

+

+ No more than + + monsters +

Create an encounter by clicking the Random encounter button or by adding monsters from the monsters table.

diff --git a/app/encounter-builder/current-encounter.scss b/app/encounter-builder/current-encounter.scss index 2e2b6a23..f57f829c 100644 --- a/app/encounter-builder/current-encounter.scss +++ b/app/encounter-builder/current-encounter.scss @@ -65,6 +65,11 @@ text-overflow: ellipsis; } + &--total-monsters { + display: inline; + width: 4em; + } + &--btns { margin-top: 0.5rem; display: flex; diff --git a/app/services/encounter.service.js b/app/services/encounter.service.js index 3f686de4..8b9b0563 100644 --- a/app/services/encounter.service.js +++ b/app/services/encounter.service.js @@ -131,10 +131,10 @@ encounter.reference = null; } - function generateRandom(filters, targetDifficulty) { + function generateRandom(filters, targetDifficulty, maxMonsters) { targetDifficulty = targetDifficulty || 'medium'; var totalTargetExp = partyInfo.totalPartyExpLevels[targetDifficulty]; - var monsters = randomEncounter.getRandomEncounter(partyInfo.totalPlayerCount, totalTargetExp, filters), + var monsters = randomEncounter.getRandomEncounter(partyInfo.totalPlayerCount, totalTargetExp, filters, maxMonsters), i; encounter.reset(); diff --git a/app/services/randomencounter.service.js b/app/services/randomencounter.service.js index 74c02570..12b68e3c 100644 --- a/app/services/randomencounter.service.js +++ b/app/services/randomencounter.service.js @@ -14,10 +14,10 @@ // targetTotalExp: The experience target value. Takes into account player count, player level, and target difficulty already. // filters: Any filters that should be applied when making the encounter // - getRandomEncounter: function (playerCount, targetTotalExp, filters) { + getRandomEncounter: function (playerCount, targetTotalExp, filters, maxMonsters) { var fudgeFactor = 1.1, // The algorithm is conservative in spending exp, so this tries to get it closer to the actual medium value baseExpBudget = targetTotalExp * fudgeFactor, - encounterTemplate = getEncounterTemplate(), + encounterTemplate = getEncounterTemplate(maxMonsters), multiplier = miscLib.getMultiplier(playerCount, encounterTemplate.total), availableExp = baseExpBudget / multiplier, monster, @@ -54,9 +54,10 @@ return randomEncounter; - function getEncounterTemplate() { + function getEncounterTemplate(maxMonsters) { var templates = [ [ 1 ], + [ 1, 1 ], [ 1, 2 ], [ 1, 5 ], [ 1, 1, 1 ], @@ -65,8 +66,14 @@ [ 2, 2 ], [ 2, 4 ], [ 8 ], - ], - groups = JSON.parse(JSON.stringify(templates[Math.floor(Math.random() * templates.length)])), + ]; + if (maxMonsters) { + templates = templates.filter(function(t) { + let sum = t.reduce(function (a, b) { return a+b; }); + return sum <= maxMonsters; + }); + } + var groups = JSON.parse(JSON.stringify(templates[Math.floor(Math.random() * templates.length)])), total = groups.reduce(function (a, b) { return a+b; }); // Silly hack to clone object diff --git a/build/index.html b/build/index.html deleted file mode 100755 index d37edf27..00000000 --- a/build/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - Kobold Fight Club: The first rule of KFC is 'Yip yip!' - - - - - - - - - - - -
- - - - - - - - - - - - - - - diff --git a/build/js/app-8eea88e7b9.js b/build/js/app-8eea88e7b9.js deleted file mode 100644 index 6a7122ca..00000000 --- a/build/js/app-8eea88e7b9.js +++ /dev/null @@ -1,3464 +0,0 @@ -(function () { - /* global requirejs */ - "use strict"; - - // polyfill for older browsers that don't support Number.parseInt natively - if ( !Number.parseInt ) { - Number.parseInt = window.parseInt; - } - - var myApp = angular - .module("app", [ - "ui.router", - "ngTouch", - "angularUtils.directives.dirPagination", - "LocalStorageModule" - ]); - - myApp.config(function(localStorageServiceProvider) { - localStorageServiceProvider - .setPrefix(''); - }); - - myApp.run(serviceInitialization); - - serviceInitialization.$inject = ['encounter', 'players', 'partyInfo']; - - function serviceInitialization(encounter, players, partyInfo) { - partyInfo.initialize(); - encounter.initialize(); - players.initialize(); - } -})(); - -(function() { - 'use strict'; - - angular - .module('app') - .run(appRun); - - appRun.$inject = ['routerHelper']; - - function appRun(routerHelper) { - var otherwise = "/encounter-builder"; - routerHelper.configureStates(getStates(), otherwise); - } - - function getStates() { - return [ - { - state: "battle-setup", - config: { - url: "/battle-setup", - templateUrl: "app/battle-setup/battle-setup.html", - controller: 'BattleSetupController', - controllerAs: "vm" - } - }, - { - state: "battle-tracker", - config: { - url: "/fight", - templateUrl: "app/battle-tracker/battle-tracker.html", - controller: 'BattleTrackerController', - controllerAs: "vm" - } - }, - { - state: "encounter-builder", - config: { - url: "/encounter-builder", - templateUrl: "app/encounter-builder/encounter-builder.html", - controller: 'EncounterBuilderController', - controllerAs: "vm" - } - }, - { - state: "encounter-manager", - config: { - url: "/encounter-manager", - templateUrl: "app/encounter-manager/encounter-manager.html", - controller: 'EncounterManagerController', - controllerAs: "vm" - } - }, - { - state: "players", - config: { - url: "/players", - templateUrl: "app/players/players.html", - controller: 'PlayersController', - controllerAs: "vm" - } - }, - { - state: "players.manage", - config: { - url: "/manage", - templateUrl: "app/players/manage.html", - controller: 'ManagePlayersController', - controllerAs: "vm" - } - }, - { - state: "players.edit", - config: { - url: "/edit", - templateUrl: "app/players/edit.html", - controller: 'EditPlayersController', - controllerAs: "vm" - } - }, - { - state: "about", - config: { - url: "/about", - templateUrl: "app/about/about.html", - controller: angular.noop, - controllerAs: "vm" - } - }, - { - state: "test", - config: { - url: "/test", - templateUrl: "app/test.html", - controller: 'TestController', - controllerAs: "vm" - } - } - ]; - } - -})(); - - -(function() { - 'use strict'; - - angular - .module('app') - .controller('BattleSetupController', BattleSetupController); - - BattleSetupController.$inject = ['$state', 'actionQueue', 'combat', 'combatConstants', 'integration']; - - function BattleSetupController($state, actionQueue, combat, combatConstants, integration) { - var vm = this; - - vm.combat = combat; - - vm.launchImpInit = integration.launchImpInit; - - activate(); - - //////////////// - - function activate() { - var combatState = combat.init(), - forward; - - if ( combatState & combatConstants.NO_PLAYERS ) { - actionQueue.unshift("players.manage", "You must select a party"); - forward = true; - } - - if ( combatState & combatConstants.NO_MONSTERS ) { - actionQueue.unshift("encounter-manager", "You must select an encounter"); - forward = true; - } - - if ( forward ) { - // In the end, send them back here - actionQueue.queue("battle-setup"); - - actionQueue.next($state); - } - } - } -})(); - -(function() { -'use strict'; - - angular - .module('app') - .component('combatantSetup', { - templateUrl: 'app/battle-setup/combatant-setup.html', - controller: 'combatantSetupController', - controllerAs: "vm", - bindings: { - combatant: '<' - }, - }); -})(); -(function() { -'use strict'; - - angular - .module('app') - .controller('combatantSetupController', CombatantSetupController); - - CombatantSetupController.$inject = ['combat']; - function CombatantSetupController(combat) { - var vm = this; - vm.combat = combat; - - activate(); - - //////////////// - - function activate() { } - } -})(); -(function() { -'use strict'; - - angular - .module('app') - .controller('BattleTrackerController', BattleTrackerController); - - BattleTrackerController.$inject = ['$state', 'combat']; - - function BattleTrackerController($state, combat) { - var vm = this; - vm.combat = combat; - - activate(); - - //////////////// - - function activate() { - if ( !combat.combatants || !combat.combatants.length ) { - $state.go("encounter-builder"); - } - - combat.begin(); - } - } -})(); -(function() { -'use strict'; - - angular - .module('app') - .component('combatant', { - templateUrl: 'app/battle-tracker/combatant.html', - controller: CombatantController, - controllerAs: 'vm', - bindings: { - combatant: '<' - }, - }); - - CombatantController.$inject = ['combat']; - function CombatantController(combat) { - var vm = this; - vm.combat = combat; - - activate(); - - //////////////// - - function activate() { } - } -})(); -(function () { - "use strict"; - - angular.module("app") - .constant("combatConstants", { - READY : 1, - NO_MONSTERS : 2, - NO_PLAYERS : 4 - }) - .constant("AppVersion", 1); -})(); -(function() { - 'use strict'; - - angular - .module('app') - .component('difficultyLegend', { - bindings: { - showHeader: '<' - }, - controllerAs: 'vm', - templateUrl: 'app/common/difficulty-legend.html' - }); -})(); -(function() { -'use strict'; - - angular - .module('app') - .controller('NumberInputController', NumberInputController); - - NumberInputController.$inject = []; - - function NumberInputController() { - var vm = this; - vm.modify = modify; - vm.hideNegative = hideNegative; - - activate(); - - //////////////// - - function activate() { } - - function modify(amt) { - vm.value += amt; - - if ( vm.nonNegative && vm.value < 0 ) { - vm.value = 0; - } - } - - function hideNegative() { - return vm.nonNegative && vm.value === 0; - } - } -})(); -(function() { - "use strict"; - - angular.module('app') - .directive('numberInput', NumberInput); - - function NumberInput() { - return { - restrict: "E", - scope: {}, - bindToController: { - value: '=model', - mods: '=buttons', - nonNegative: '=nonNegative' - }, - templateUrl: "app/common/number-input.html", - controller: 'NumberInputController', - controllerAs: 'vm' - }; - } -})(); - -(function() { - 'use strict'; - - angular - .module('app') - .component('currentEncounter', { - bindings: { - filters: '<' - }, - controller: 'CurrentEncounterController', - controllerAs: 'vm', - templateUrl: 'app/encounter-builder/current-encounter.html' - }); -})(); -(function() { -'use strict'; - - angular - .module('app') - .controller('CurrentEncounterController', CurrentEncounterController); - - CurrentEncounterController.$inject = ['encounter','partyInfo', 'integration']; - function CurrentEncounterController(encounter, partyInfo, integration) { - var vm = this; - - vm.encounter = encounter; - vm.generateRandom = generateRandom; - vm.randomButtonText = randomButtonText; - vm.isPool = vm.encounter.type == 'pool'; - vm.newEncounter = newEncounter; - vm.partyInfo = partyInfo; - - vm.launchImpInit = integration.launchImpInit; - - var lastDifficulty = "medium"; - - function generateRandom(difficulty) { - difficulty = difficulty || lastDifficulty; - encounter.generateRandom(vm.filters, difficulty); - lastDifficulty = difficulty; - } - - function newEncounter() { - vm.encounter.reset(); - vm.isPool = false; - } - - function randomButtonText() { - return "Random " + _.capitalize(lastDifficulty); - } - } -})(); -(function () { - "use strict"; - - angular.module("app") - .controller("EncounterBuilderController", EncounterBuilderController); - - EncounterBuilderController.$inject = ['$scope', 'store', 'actionQueue', 'encounter', 'monsters', 'sources']; - - function EncounterBuilderController($scope, store, actionQueue, encounter, monsters, sources) { - var vm = this; - - vm.encounter = encounter; - vm.getMonsterQtyString = getMonsterQtyString; - - activate(); - - function activate() { - // There's no way to tell when they're done building an encounter, so clear the queue if they ever make it here. - actionQueue.clear(); - - vm.filters = { - source: sources.filters, - pageSize: 10, - }; - - store.get("5em-filters").then(function (frozen) { - if (frozen) { - vm.filters = frozen; - } - }) - .finally(function() { - $scope.$watch("vm.filters", function () { - store.set("5em-filters", vm.filters); - }, true); - }); - } - - function getMonsterQtyString() { - var qty = Object.keys(vm.encounter.groups).reduce(function (sum, key) { - return sum + vm.encounter.groups[key].qty; - }, 0); - - if ( qty === 1 ) { - return "1 enemy"; - } - - return qty + " enemies"; - }; - } -})(); - -(function() { - 'use strict'; - - angular - .module('app') - .component('groupInfo', { - controller: 'GroupInfoController', - controllerAs: 'vm', - templateUrl: 'app/encounter-builder/group-info.html' - }); -})(); -(function() { -'use strict'; - - angular - .module('app') - .controller('GroupInfoController', GroupInfoController); - - GroupInfoController.$inject = ['encounter', 'playerLevels', 'partyInfo']; - function GroupInfoController(encounter, playerLevels, partyInfo) { - var vm = this; - - vm.encounter = encounter; - vm.partyInfo = partyInfo; - vm.addPartyLevel = addPartyLevel; - - function addPartyLevel() { - partyInfo.partyLevels.push({ - level: playerLevels[1], - playerCount: 1 - }); - - partyInfo.freeze(); - } - } -})(); -(function() { -'use strict'; - - // Usage: - // - // Creates: - // - - angular - .module('app') - .component('monsterTable', { - templateUrl: 'app/encounter-builder/monster-table.html', - controller: 'monsterTableController', - controllerAs: 'vm', - bindings: { - filters: '<' - }, - }); -})(); -(function() { -'use strict'; - - angular.module('app') - .controller('monsterTableController', MonsterTableController); - - MonsterTableController.$inject = ['encounter', 'monsters', 'sources']; - function MonsterTableController(encounter, monsters, sources) { - var vm = this; - - vm.encounter = encounter; - vm.monsters = monsters.all; - vm.sources = sources; - vm.dangerZone = dangerZone; - - //////////////// - - vm.$onInit = function() { }; - vm.$onChanges = function(changesObj) { }; - vm.$onDestory = function() { }; - - function dangerZone(monster) { - if ( !monster ) { - return null; - } - - var threat = encounter.threat, - monsterExp = monster.cr.exp; - - if ( monsterExp > threat.deadly ) { - return "deadly"; - } else if ( monsterExp > threat.hard ) { - return "hard"; - } else if ( monsterExp > threat.medium ) { - return "medium"; - } else if ( monsterExp > threat.easy ) { - return "easy"; - } else if ( monsterExp > threat.pair ) { - return "pair"; - } else if ( monsterExp > threat.group ) { - return "group"; - } else { - return "trivial"; - } - }; - } -})(); - -(function() { -'use strict'; - - // Usage: - // - // Creates: - // - - angular - .module('app') - .component('partyLevelSelector', { - templateUrl: 'app/encounter-builder/party-level-selector.html', - controller: 'PartyLevelSelectorController', - controllerAs: 'vm', - bindings: { - partyLevel: '=', - first: '<' - }, - }); -})(); -(function() { -'use strict'; - - angular - .module('app') - .controller('PartyLevelSelectorController', PartyLevelSelectorController); - - PartyLevelSelectorController.inject = ['playerLevels', 'partyInfo']; - function PartyLevelSelectorController(playerLevels, partyInfo) { - var vm = this; - - vm.levels = playerLevels; - vm.save = save; - vm.addPartyLevel = addPartyLevel; - vm.removePartyLevel = removePartyLevel; - - function save() { - partyInfo.freeze(); - } - - function addPartyLevel() { - partyInfo.partyLevels.push({ - level: playerLevels[1], - playerCount: 1 - }); - - partyInfo.freeze(); - } - - function removePartyLevel(partyLevel) { - var index = partyInfo.partyLevels.indexOf(partyLevel); - partyInfo.partyLevels.splice(index, 1); - - partyInfo.freeze(); - } - } -})(); -(function() { -'use strict'; - - angular - .module('app') - .component('searchControls', { - templateUrl: 'app/encounter-builder/search.html', - controller: 'SearchController', - controllerAs: 'vm', - bindings: { - filters: '<', - }, - }); -})(); - -(function() { -'use strict'; - - angular - .module('app') - .controller('SearchController', SearchController); - - SearchController.$inject = ["$scope", "metaInfo", "sheetManager", "sources", "library"]; - function SearchController($scope, metaInfo, sheetManager, sources, library) { - var vm = this; - - vm.alignments = metaInfo.alignments; - vm.crList = metaInfo.crList; - vm.environments = metaInfo.environments; - vm.sizes = metaInfo.sizes; - vm.sourceNames = sources.all; - vm.types = metaInfo.types; - vm.legendaryList = metaInfo.legendaryList; - vm.encounters = library.encounters; - vm.sortChoices = metaInfo.sortChoices; - window.sources = sources; - - // Cache sorted data to avoid infinite digest - var contentCacheKey; - var contentCache; - $scope.getContent = function () { - var metadata = sheetManager.getSheetMetaData(); - var metadataKeys = Object.keys(metadata); - var cacheKey = metadataKeys - .sort() - .map(function (sheetId) { - return sheetId + metadata[sheetId].timestamp; - }) - .join("|"); - - if ( contentCacheKey !== cacheKey ) { - contentCacheKey = cacheKey; - - contentCache = metadataKeys - .map(function (sheetId) { - var data = metadata[sheetId]; - var date = (new Date(data.timestamp)); - return { - name: data.name, - id: sheetId, - custom: data.custom, - updated: [date.toLocaleDateString(), date.toLocaleTimeString()].join(" "), - }; - }) - .sort(function (a, b) { - var aCustom = !!a.custom; - var bCustom = !!b.custom; - - if ( aCustom !== bCustom ) { - // true is "greater than" false, so custom is sorted to bottom - return (aCustom > bCustom) ? 1 : -1; - } - - return (a.name > b.name) ? 1 : -1; - }); - } - return contentCache; - }; - - vm.resetFilters = resetFilters; - vm.updateSourceFilters = updateSourceFilters; - - $scope.$on("custom-source-added", function (event, sourceName) { - // Custom content should be enabled by default - vm.filters.source[sourceName] = true; - }); - - $scope.addCustom = function () { - var added = sheetManager.addContent($scope.customName, $scope.customUrl); - - if ( added ) { - $scope.customName = null; - $scope.customUrl = null; - } - }; - - $scope.removeCustom = sheetManager.removeContent; - - function resetFilters() { - vm.filters.size = null; - vm.filters.type = null; - vm.filters.alignment = null; - vm.filters.minCr = null; - vm.filters.maxCr = null; - vm.filters.environment = null; - vm.filters.legendary = null; - } - - function updateSourceFilters({ type, enabled }) { - sources.sourcesByType[type].forEach(name => vm.filters.source[name] = enabled); - } - - let sourceSections = []; - let sourceSectionKey; - $scope.getSourceSections = function () { - let key = sources.all.join(); - - if ( key !== sourceSectionKey ) { - sourceSectionKey = key; - - sourceSections = Object.keys(sources.sourcesByType).map(sourceType => ({ - name: sourceType, - sources: sources.sourcesByType[sourceType].slice().sort(), - })); - - sourceSections.sort((a, b) => { - let aName = a.name; - let bName = b.name; - let aIsOfficial = aName.match(/Official/); - let bIsOfficial = bName.match(/Official/); - - // Sort official types to the top, then sort by name - if ( aIsOfficial && !bIsOfficial ) { - return -1; - } else if ( !aIsOfficial && bIsOfficial ) { - return 1; - } else { - if ( aName > bName ) { - return 1; - } else { - return -1; - } - } - }); - } - - return sourceSections; - } - } -})(); - -(function() { - 'use strict'; - - angular - .module('app') - .controller('EncounterManagerController', EncounterManagerController); - - EncounterManagerController.$inject = ['$scope', '$state', 'actionQueue', 'encounter', 'library', 'monsters']; - - function EncounterManagerController($scope, $state, actionQueue, encounter, library, monsters) { - var vm = this; - - vm.encounter = encounter; - vm.library = library; - vm.monsters = monsters; - - vm.save = save; - - activate(); - - /////////////////// - - function activate() { - var placeholder = []; - - Object.keys(encounter.groups).forEach(function (id) { - placeholder.push([ - (encounter.groups[id].qty > 1) ? encounter.groups[id].qty + "x" : "", - encounter.groups[id].monster.name, - ].join(" ").trim()); - }); - - vm.newEncounter = { - placeholder: placeholder.join(", "), - name: "", - }; - } - - function save(type) { - var newLibraryEntry = { - name: vm.newEncounter.name || vm.newEncounter.placeholder, - type: type || 'encounter', - groups: {}, - }; - - Object.keys(encounter.groups).forEach(function (id) { - newLibraryEntry.groups[id] = (type == 'pool') ? 1 : encounter.groups[id].qty; - }); - - encounter.reference = library.store(newLibraryEntry); - encounter.reset(newLibraryEntry); - } - - vm.load = function (storedEncounter) { - encounter.reset(storedEncounter); - - if ( !actionQueue.next($state) ) { - $state.go("encounter-builder"); - } - }; - - vm.remove = function ( storedEncounter ) { - library.remove(storedEncounter); - - if ( angular.equals(encounter.reference, storedEncounter) ) { - encounter.reference = null; - } - }; - } -})(); -(function() { -'use strict'; - - // Usage: - // - // Creates: - // - - angular - .module('app') - .component('managerRow', { - templateUrl:'app/encounter-manager/manager-row.html', - controller: 'managerRowController', - controllerAs: 'vm', - bindings: { - storedEncounter: '<' - } - }); -})(); -(function() { - /* global _ */ - 'use strict'; - - angular - .module('app') - .controller('managerRowController', ManagerRowController); - - ManagerRowController.$inject = ['$state', 'encounter', 'monsters', 'actionQueue', 'library']; - function ManagerRowController($state, encounter, monsters, actionQueue, library) { - var vm = this; - - vm.calculateExp = calculateExp; - vm.load = load; - vm.remove = remove; - vm.encounter = encounter; - vm.monsters = monsters; - - activate(); - - //////////////// - - function activate() { } - - function calculateExp(storedEncounter) { - var exp = 0; - - _.forEach(storedEncounter.groups, function (value, id) { - // If we start on this page, byId won't be populated yet. Will get filled out - // correctly on a later digest cycle - if ( monsters.byId[id] ) { - exp += monsters.byId[id].cr.exp * storedEncounter.groups[id]; - } - }); - - return exp; - } - - function load(storedEncounter) { - encounter.reset(storedEncounter); - - if ( !actionQueue.next($state) ) { - $state.go("encounter-builder"); - } - } - - function remove( storedEncounter ) { - library.remove(storedEncounter); - - if ( angular.equals(encounter.reference, storedEncounter) ) { - encounter.reference = null; - } - } - } -})(); - -(function() { - "use strict"; - - angular.module("app") - .filter("countHiddenMonstersFilter", CountHiddenMonsters); - - CountHiddenMonsters.$inject = ["monsterFactory"]; - - function CountHiddenMonsters(monsterLib) { - return function ( input, filters ) { - if (!input) return 0; - var output = 0, i; - - for ( i = 0; i < input.length; i++ ) { - if ( monsterLib.checkIsMonsterFoundAndFiltered(input[i], filters) ) { - output++; - } - } - - return output; - }; - } -})(); - -(function() { - "use strict"; - - angular.module("app") - .filter("monstersFilter", SortAndFilterMonsters); - - SortAndFilterMonsters.$inject = ["monsterFactory"]; - - function SortAndFilterMonsters(monsterLib) { - return function ( input, filters ) { - if (!input) return []; - var output = [], i; - - for ( i = 0; i < input.length; i++ ) { - if ( monsterLib.checkMonster(input[i], filters) ) { - output.push(input[i]); - } - } - - // Monsters are already sorted by name - if ( filters.sort === "size" ) { - output.sort(function (a, b) { - return a.sizeSort - b.sizeSort; - }); - } else if ( filters.sort === "type" ) { - output.sort(function (a, b) { - return (a.type > b.type) ? 1 : -1; - }); - } else if ( filters.sort === "alignment" ) { - output.sort(function (a, b) { - return ((a.alignment||{text:"zzzzzzz"}).text > (b.alignment||{text:"zzzzzzz"}).text) ? 1 : -1; - }); - } else if ( filters.sort === "cr" ) { - output.sort(function (a, b) { - return a.cr.numeric - b.cr.numeric; - }); - } - - return output; - }; - } -})(); - -(function() { - "use strict"; - - angular.module("app") - .filter("positive", function PositiveFilter() { - return function ( input ) { - input = input || ''; - var output = [], - i; - - for ( i = 0; i < input.length; i++ ) { - if ( input[i] > 0 ) { - output.push(input[i]); - } - } - - return output; - }; - }) - .filter("negative", function NegativeFilter() { - return function ( input ) { - input = input || ''; - var output = [], - i; - - for ( i = 0; i < input.length; i++ ) { - if ( input[i] < 0 ) { - output.push(input[i]); - } - } - - return output; - }; - }); -})(); - -(function() { - 'use strict'; - - angular.module('app') - .filter('sortEncounter', SortEncounter); - - function SortEncounter() { - return function (items) { - var sorted = []; - - Object.keys(items).forEach(function (key) { - sorted.push(items[key]); - }); - - sorted.sort(function (a, b) { - return (a.monster.name > b.monster.name) ? 1 : -1; - }); - - return sorted; - }; - } -})(); -(function() { - "use strict"; - - angular.module("app") - .service("alignments", AlignmentsService); - - function AlignmentsService() { - var i = 0, - lg = Math.pow(2, i++), - ng = Math.pow(2, i++), - cg = Math.pow(2, i++), - ln = Math.pow(2, i++), - n = Math.pow(2, i++), - cn = Math.pow(2, i++), - le = Math.pow(2, i++), - ne = Math.pow(2, i++), - ce = Math.pow(2, i++), - unaligned = Math.pow(2, i++); - var alignments = { - any: { - text: "any", - flags: lg | ng | cg | ln | n | cn | le | ne | ce - }, - any_chaotic: { - text: "any chaotic", - flags: cg | cn | ce - }, - any_evil: { - text: "any evil", - flags: le | ne | ce - }, - any_good: { - text: "any good", - flags: lg | ng | cg - }, - any_lawful: { - text: "any lawful", - flags: lg | ln | le - }, - any_neutral: { - text: "any neutral", - flags: ng | ln | n | cn | ne - }, - non_chaotic: { - text: "non-chaotic", - flags: lg | ng | ln | n | le | ne | unaligned - }, - non_evil: { - text: "non-evil", - flags: lg | ng | cg | ln | n | cn | unaligned - }, - non_good: { - text: "non-good", - flags: ln | n | cn | le | ne | ce | unaligned - }, - non_lawful: { - text: "non-lawful", - flags: ng | cg | n | cn | ne | ce | unaligned - }, - unaligned: { - text: "unaligned", - flags: unaligned - }, - lg: { flags: lg, text: "lawful good" }, - ng: { flags: ng, text: "neutral good" }, - cg: { flags: cg, text: "chaotic good" }, - ln: { flags: ln, text: "lawful neutral" }, - n: { flags: n, text: "neutral" }, - cn: { flags: cn, text: "chaotic neutral" }, - le: { flags: le, text: "lawful evil" }, - ne: { flags: ne, text: "neutral evil" }, - ce: { flags: ce, text: "chaotic evil" }, - }; - - Object.keys(alignments).forEach(function (alignmentKey) { - var alignment = alignments[alignmentKey]; - alignment.regex = new RegExp(alignment.text.replace(/[- ]/, "[- ]?"), "i"); - }); - - return alignments; - } -})(); - -(function () { - "use strict"; - - angular.module("app") - .service("crInfo", CrInfoService); - - function CrInfoService() { - return { - "0": { string: "0", numeric: 0, exp: 10 }, - "1/8": { string: "1/8", numeric: 0.125, exp: 25 }, - "1/4": { string: "1/4", numeric: 0.25, exp: 50 }, - "1/2": { string: "1/2", numeric: 0.5, exp: 100 }, - "1": { string: "1", numeric: 1, exp: 200 }, - "2": { string: "2", numeric: 2, exp: 450 }, - "3": { string: "3", numeric: 3, exp: 700 }, - "4": { string: "4", numeric: 4, exp: 1100 }, - "5": { string: "5", numeric: 5, exp: 1800 }, - "6": { string: "6", numeric: 6, exp: 2300 }, - "7": { string: "7", numeric: 7, exp: 2900 }, - "8": { string: "8", numeric: 8, exp: 3900 }, - "9": { string: "9", numeric: 9, exp: 5000 }, - "10": { string: "10", numeric: 10, exp: 5900 }, - "11": { string: "11", numeric: 11, exp: 7200 }, - "12": { string: "12", numeric: 12, exp: 8400 }, - "13": { string: "13", numeric: 13, exp: 10000 }, - "14": { string: "14", numeric: 14, exp: 11500 }, - "15": { string: "15", numeric: 15, exp: 13000 }, - "16": { string: "16", numeric: 16, exp: 15000 }, - "17": { string: "17", numeric: 17, exp: 18000 }, - "18": { string: "18", numeric: 18, exp: 20000 }, - "19": { string: "19", numeric: 19, exp: 22000 }, - "20": { string: "20", numeric: 20, exp: 25000 }, - "21": { string: "21", numeric: 21, exp: 33000 }, - "22": { string: "22", numeric: 22, exp: 41000 }, - "23": { string: "23", numeric: 23, exp: 50000 }, - "24": { string: "24", numeric: 24, exp: 62000 }, - "25": { string: "25", numeric: 25, exp: 75000 }, - "26": { string: "26", numeric: 26, exp: 90000 }, - "27": { string: "27", numeric: 27, exp: 105000 }, - "28": { string: "28", numeric: 28, exp: 120000 }, - "29": { string: "29", numeric: 29, exp: 135000 }, - "30": { string: "30", numeric: 30, exp: 155000 }, - }; - } -})(); - -(function() { -'use strict'; - - angular - .module('app') - .value('playerLevels', { - 1: { level: 1, budget: 300, easy: 25, medium: 50, hard: 75, deadly: 100 }, - 2: { level: 2, budget: 600, easy: 50, medium: 100, hard: 150, deadly: 200 }, - 3: { level: 3, budget: 1200, easy: 75, medium: 150, hard: 225, deadly: 400 }, - 4: { level: 4, budget: 1700, easy: 125, medium: 250, hard: 375, deadly: 500 }, - 5: { level: 5, budget: 3500, easy: 250, medium: 500, hard: 750, deadly: 1100 }, - 6: { level: 6, budget: 4000, easy: 300, medium: 600, hard: 900, deadly: 1400 }, - 7: { level: 7, budget: 5000, easy: 350, medium: 750, hard: 1100, deadly: 1700 }, - 8: { level: 8, budget: 6000, easy: 450, medium: 900, hard: 1400, deadly: 2100 }, - 9: { level: 9, budget: 7500, easy: 550, medium: 1100, hard: 1600, deadly: 2400 }, - 10: { level: 10, budget: 9000, easy: 600, medium: 1200, hard: 1900, deadly: 2800 }, - 11: { level: 11, budget: 10500, easy: 800, medium: 1600, hard: 2400, deadly: 3600 }, - 12: { level: 12, budget: 11500, easy: 1000, medium: 2000, hard: 3000, deadly: 4500 }, - 13: { level: 13, budget: 13500, easy: 1100, medium: 2200, hard: 3400, deadly: 5100 }, - 14: { level: 14, budget: 15000, easy: 1250, medium: 2500, hard: 3800, deadly: 5700 }, - 15: { level: 15, budget: 18000, easy: 1400, medium: 2800, hard: 4300, deadly: 6400 }, - 16: { level: 16, budget: 20000, easy: 1600, medium: 3200, hard: 4800, deadly: 7200 }, - 17: { level: 17, budget: 25000, easy: 2000, medium: 3900, hard: 5900, deadly: 8800 }, - 18: { level: 18, budget: 27000, easy: 2100, medium: 4200, hard: 6300, deadly: 9500 }, - 19: { level: 19, budget: 30000, easy: 2400, medium: 4900, hard: 7300, deadly: 10900 }, - 20: { level: 20, budget: 40000, easy: 2800, medium: 5700, hard: 8500, deadly: 12700 } - }); -})(); -(function() { - "use strict"; - - angular.module("app") - .factory("monsterFactory", MonsterFactory); - - MonsterFactory.$inject = ["alignments", "crInfo", "library"]; - function MonsterFactory(alignments, crInfo, library) { - var factory = { - checkMonster: checkMonster, - checkIsMonsterFoundAndFiltered: checkIsMonsterFoundAndFiltered, - Monster: Monster, - }; - - function Monster(args) { - var monster = this; - monster.sheetId = args.sheetId; - // guid is deprecated. Still need to work out plan to get rid of it, but for the time - // being we can at least make it so new things don't need one by falling back to fid if - // guid isn't supplied - monster.id = args.guid || args.fid; - monster.fid = args.fid; - monster.name = args.name; - monster.section = args.section; - ["ac", "hp", "init"].forEach(function (key) { - // Try to parse each of these into a number, but if that fails then just give the - // original string value, which presumably is either an empty string or something - // complicated - var parsed = Number.parseInt(args[key]); - - if ( isNaN(parsed) ) { - parsed = args[key]; - } - - monster[key] = parsed; - }); - monster.cr = crInfo[args.cr]; - monster.type = args.type; - monster.tags = args.tags ? args.tags.split(/\s*,\s*/).sort() : null; - monster.size = args.size; - monster.alignment = parseAlignment(args.alignment); - monster.environments = (args.environment || "").split(/\s*,\s*/).sort(); - // Special, legendary, lair, and unique are stored in spreadsheet as strings to make it - // easy to read a row, but should be translated to booleans - monster.special = !!args.special; - monster.legendary = !!args.legendary; - monster.lair = !!args.lair; - monster.unique = !!args.unique; - monster.sources = args.sources - .split(/\s*,\s*/) - .map(function (rawSource) { - var sourceMatch = rawSource.match(/([^:]*): (.*)/); - - if ( !sourceMatch ) { - // Just a source with no page or URL - return { name: rawSource }; - } - - var name = sourceMatch[1]; - var where = sourceMatch[2]; - var out = { - name: name, - }; - - if ( where.match(/^\d+$/) ) { - out.page = Number.parseInt(where, 10); - } else { - out.url = where; - } - - return out; - }); - - monster.sizeSort = parseSize(monster.size); - monster.searchable = [ - monster.name, - monster.section, - monster.type, - monster.size, - (monster.alignment) ? monster.alignment.text : "", - ].concat( - monster.cr.string - ).concat( - monster.tags - ).join("|").toLowerCase(); - } - - function parseAlignment(alignmentString) { - var flags = (alignmentString || "") - // alignmentString should be a string of alignments, seperated by commas, "or", or - // commas followed by "or" (I'm pro-Oxford comma) - .split(/\s*(,|or|,\s*or)\s*/i) - .reduce(function (total, current) { - return total | parseSingleAlignmentFlags(current); - }, 0); - - if ( !flags ) { - console.warn("Couldn't parse alignments: ", alignmentString); - flags = alignments.unaligned.flags; - } - - return { - text: alignmentString, - flags: flags, - }; - } - - function parseSingleAlignmentFlags(alignment) { - var flags; - - alignmentTestOrder.some(function (alignmentDefinition) { - if ( alignment.match(alignmentDefinition.regex) ) { - flags = alignmentDefinition.flags; - return true; - } - }); - - return flags; - } - - // Check "neutral" and "any" last, since those are substrings found in more specific - // alignments - var alignmentTestOrder = [ - alignments.any_chaotic, - alignments.any_evil, - alignments.any_good, - alignments.any_lawful, - alignments.any_neutral, - alignments.non_chaotic, - alignments.non_evil, - alignments.non_good, - alignments.non_lawful, - alignments.unaligned, - alignments.lg, - alignments.ng, - alignments.cg, - alignments.ln, - alignments.cn, - alignments.le, - alignments.ne, - alignments.ce, - alignments.n, - alignments.any, - ]; - - function parseSize(size) { - switch ( size ) { - case "Tiny": return 1; - case "Small": return 2; - case "Medium": return 3; - case "Large": return 4; - case "Huge": return 5; - case "Gargantuan": return 6; - default: return -1; - } - } - - var regexCache = { - "": new RegExp(""), - }; - var poolCache = { - }; - var lastRegex = regexCache[""]; - function checkMonster(monster, filters, args) { - return !isFiltered(monster, filters, args) && isNameMatched(monster, filters); - } - - function checkIsMonsterFoundAndFiltered(monster, filters, args) { - return isNameMatched(monster, filters) && isFiltered(monster, filters, args); - } - - function isFiltered(monster, filters, args) { - args = args || {}; - - var legendaryMap = { - 'Legendary': 'legendary', - 'Legendary (in lair)': 'lair', - 'Ordinary': false - }; - - if (filters.legendary) { - var legendaryFilter = legendaryMap[filters.legendary]; - - if (legendaryFilter) { - if (!monster[legendaryFilter]) return true; - } else { - if (monster.legendary || monster.lair) return true; - } - } - - if ( filters.type && monster.type !== filters.type ) { - return true; - } - - if ( filters.size && monster.size !== filters.size ) { - return true; - } - - if ( args.nonUnique && monster.unique ) { - return true; - } - - if ( filters.alignment ) { - if ( !monster.alignment ) { - return true; - } - - if ( ! (filters.alignment.flags & monster.alignment.flags) ) { - return true; - } - } - - if ( !args.skipCrCheck ) { - if ( filters.minCr && monster.cr.numeric < filters.minCr ) { - return true; - } - - if ( filters.maxCr && monster.cr.numeric > filters.maxCr ) { - return true; - } - } - - if ( filters.environment && monster.environments.indexOf(filters.environment) === -1 ) { - return true; - } - - if ( filters.pool ) { - let pool = poolCache[filters.pool]; - if (!pool) { - pool = library.encounters.filter(encounter => encounter.type == 'pool' && encounter.name == filters.pool)[0]; - poolCache[filters.pool] = pool; - } - if ( pool && !pool.groups[monster.id] ) { - return true; - } - } - - if ( !isInSource(monster, filters.source) ) { - return true; - } - - return false; - } - - function isNameMatched(monster, filters) { - if ( filters.search ) { - let checkRegex = filters.search.match(/^\/(.*?)\/?$/); - if ( checkRegex ) { - let regex; - let raw = checkRegex[1]; - try { - // Two goals here. - // 1. Avoid making new RegExp objects every time this function is run - // 2. Maintain results while user is typing even if it might not be a valid regex after every keystroke - - // First check the cache to avoid remaking regex objects every time this - // function is called (can be tens of thousands of times per keystroke) - - // If no cache hit, try to make a new regex. If that fails, we'll catch and - // use the last good regex we have. - - // Finally, if we sucessfully get a cache hit or create a new regex, we'll - // set lastRegex to this for future runs - regex = regexCache[raw] || new RegExp(raw, "i"); - - if ( regex ) { - // This regex is good, so save it for the future - lastRegex = regex; - } - } catch (ex) { - // We know this doesn't give a good regex, so avoid trying again - regexCache[raw] = null; - } - - regex = regex || lastRegex; - - if ( !monster.searchable.match(regex) ) { - return false; - } - } else if ( monster.searchable.indexOf(filters.search.toLowerCase()) === -1 ) { - return false; - } - } - - return true; - } - - function isInSource(monster, sources) { - if ( !monster || !monster.sources) { - return false; - } - - for ( var i = 0; i < monster.sources.length; i++ ) { - if ( sources[monster.sources[i].name] ) { - return true; - } - } - - return false; - } - - return factory; - } -})(); - -(function() { -'use strict'; - - // Usage: - // - // Creates: - // - - angular - .module('app') - .component('navbar', { - templateUrl: 'app/navbar/navbar.html', - controller: NavbarController, - controllerAs: "vm", - bindings: { - }, - }); - - function NavbarController() { - var vm = this; - } -})(); -(function() { -'use strict'; - - angular - .module('app') - .controller('EditPlayersController', EditPlayersController); - - EditPlayersController.$inject = ['players']; - - function EditPlayersController(players) { - var vm = this; - vm.players = players; - - activate(); - - //////////////// - - function activate() { } - } -})(); -(function() { -'use strict'; - - angular - .module('app') - .controller('ManagePlayersController', ManagePlayersController); - - ManagePlayersController.$inject = ['$state', 'actionQueue', 'players']; - - function ManagePlayersController($state, actionQueue, players) { - var vm = this; - - vm.players = players; - - vm.select = function (party) { - players.selectParty(party); - - actionQueue.next($state); - }; - - activate(); - - //////////////// - - function activate() { - // If there aren't any parties, send them to edit - if ( !players.parties || !players.parties.length ) { - $state.go("players.edit"); - return; - } - } - } -})(); -(function() { -'use strict'; - - angular - .module('app') - .controller('PlayersController', PlayersController); - - PlayersController.$inject = []; - - function PlayersController() { - var vm = this; - - activate(); - - //////////////// - - function activate() { } - } -})(); - -(function() { - "use strict"; - - angular.module("app") - .factory("actionQueue", ActionQueueService); - - - function ActionQueueService() { - var actionQueue = { - actions: [], - currentInstruction: "", - clear: function () { - actionQueue.actions.length = 0; - actionQueue.currentInstruction = ""; - }, - next: function ($state) { - if ( actionQueue.actions.length ) { - var current = actionQueue.actions.shift(); - actionQueue.currentInstruction = current.message || ""; - - $state.go(current.state); - return true; - } - - return false; - }, - queue: function (nextState, message) { - actionQueue.actions.push({ state: nextState, message: message }); - }, - unshift: function (nextState, message) { - // First check to make sure this state isn't already in the queue - var i = 0; - while ( i < actionQueue.actions.length ) { - if ( actionQueue.actions[i].state === nextState ) { - actionQueue.actions.splice(i, 1); - } else { - i++; - } - } - - actionQueue.actions.unshift({ state: nextState, message: message }); - } - }; - - return actionQueue; - } -})(); - -(function() { - "use strict"; - - angular.module("app") - .factory("combat", CombatService); - - CombatService.$inject = ['store', 'encounter', 'integration', 'players', 'monsters', 'combatConstants']; - - function CombatService(store, encounter, integration, players, monsters, constants) { - var combat = { - active: 0, - combatants: [], - delta: 0, - addMonster: function (monster, qty) { - qty = qty || 1; - - var i, name; - - for ( i = 0; i < qty; i++ ) { - name = [ monster.name ]; - - if ( qty > 1 ) { - name.push( i + 1 ); - } - - combat.combatants.push({ - type: "enemy", - name: name.join(" "), - ac: monster.ac, - hp: monster.hp, - initiativeMod: monster.init, - initiative: 10 + monster.init, - id: monster.id, - }); - } - }, - addLair: function () { - combat.combatants.push({ - type: "lair", - name: "Lair", - iniativeMod: 0, - initiative: 20, - fixedInitiative: true, - noHp: true, - }); - }, - addPlayer: function (player) { - combat.combatants.push({ - type: "player", - name: player.name, - initiativeMod: player.initiativeMod, - advantageOnInitiative: player.advantageOnInitiative, - initiative: player.initiative, - hp: player.hp, - damage: player.damage, - }); - }, - applyDelta: function (combatant, multiplier) { - multiplier = multiplier || 1; - // Make sure damage is initialized - combatant.damage = combatant.damage || 0; - - combatant.damage += combat.delta * multiplier; - combat.delta = 0; - - // Damage can't reduce you below 0 - if ( combatant.damage > combatant.hp ) { - combatant.damage = combatant.hp; - } - - // Damage can't be negative - if ( combatant.damage < 0 ) { - combatant.damage = 0; - } - - if ( combatant.type === "player" ) { - players.setDamage(combatant.name, combatant.damage); - } - }, - begin: function () { - combat.combatants.sort(function (a, b) { - return b.initiative - a.initiative; - }); - - if (combat.combatants.length > 0) { - combat.combatants[combat.active].active = true; - } - }, - init: function () { - combat.combatants.length = 0; - combat.active = 0; - combat.delta = 0; - - var monsterIds = Object.keys(encounter.groups), - lair = false, - i, monster, qty, player, - retValue = 0; - - if ( ! monsterIds.length ) { - // If there aren't any monsters, we can't run an encounter - retValue |= constants.NO_MONSTERS; - } - - if ( ! players.selectedParty ) { - // If there aren't any players, we can't run the encounter either... - retValue |= constants.NO_PLAYERS; - } - - if ( retValue ) { - return retValue; - } - - for ( i = 0; i < players.selectedParty.length; i++ ) { - player = players.selectedParty[i]; - combat.addPlayer({ - name: player.name, - initiativeMod: player.initiativeMod, - advantageOnInitiative: player.advantageOnInitiative, - initiative: player.initiativeMod + 10, - hp: player.hp, - damage: player.damage, - }); - } - - for ( i = 0; i < monsterIds.length; i++ ) { - monster = monsters.byId[monsterIds[i]]; - qty = encounter.groups[monsterIds[i]].qty; - lair = lair || monster.lair; - - combat.addMonster(monster, qty); - } - - if ( lair ) { - combat.addLair(); - } - - return constants.READY; - }, - nextTurn: function () { - combat.combatants[combat.active].active = false; - combat.active = ( combat.active + 1 ) % combat.combatants.length; - combat.combatants[combat.active].active = true; - }, - rollInitiative: function (combatant) { - var initRoll = _.random(1, 20); - if (combatant.advantageOnInitiative) { - var secondRoll = _.random(1, 20); - if (secondRoll > initRoll) initRoll = secondRoll; - } - combatant.initiative = initRoll + combatant.initiativeMod; - combatant.initiativeRolled = true; - }, - }; - - combat.init(); - - return combat; - } -})(); - -(function () { - "use strict"; - - angular.module("app") - .factory("encounter", EncounterService); - - EncounterService.$inject = ['$rootScope', 'randomEncounter', 'store', 'monsters', 'players', 'misc', 'playerLevels', 'partyInfo']; - - function EncounterService($rootScope, randomEncounter, store, monsters, players, misc, playerLevels, partyInfo) { - var encounter = { - groups: {}, - reference: null, - - // Methods - add: add, - generateRandom: generateRandom, - initialize: initialize, - randomize: randomize, - remove: remove, - reset: reset, - thaw: thaw, - freeze: freeze, - - // Properties - get adjustedExp() { - var qty = encounter.qty, - exp = encounter.exp, - multiplier = misc.getMultiplier(partyInfo.totalPlayerCount, qty); - - if (!_.isNumber(exp)) return 0; - - return Math.floor(exp * multiplier); - }, - - get difficulty() { - var exp = encounter.adjustedExp, - levels = partyInfo.totalPartyExpLevels; - - if ( exp === 0 ) { - return false; - } - - if ( exp < ( levels.easy ) ) { - return ''; - } else if ( exp < ( levels.medium ) ) { - return "Easy"; - } else if ( exp < ( levels.hard ) ) { - return "Medium"; - } else if ( exp < ( levels.deadly ) ) { - return "Hard"; - } else { - return "Deadly"; - } - }, - - get exp() { - if (_.isEmpty(encounter.groups)) return undefined; - - var exp = 0; - - _.forEach(encounter.groups, function(group) { - exp += (group.monster.cr.exp * group.qty); - }); - - return exp; - }, - - get qty() { - var qty = 0; - - _.forEach(encounter.groups, function(group) { - qty += group.qty; - }); - - return qty; - }, - - get threat() { - var count = partyInfo.totalPlayerCount, - levels = partyInfo.totalPartyExpLevels, - mediumExp = levels.medium, - singleMultiplier = 1, - pairMultiplier = 1.5, - groupMultiplier = 2, - trivialMultiplier = 2.5; - - if ( count < 3 ) { - // For small groups, increase multiplier - singleMultiplier = 1.5; - pairMultiplier = 2; - groupMultiplier = 2.5; - trivialMultiplier = 3; - } else if ( count > 5 ) { - // For large groups, reduce multiplier - singleMultiplier = 0.5; - pairMultiplier = 1; - groupMultiplier = 1.5; - trivialMultiplier = 2; - } - - return { - deadly : levels.deadly / singleMultiplier, - hard : levels.hard / singleMultiplier, - medium : mediumExp / singleMultiplier, - easy : levels.easy / singleMultiplier, - pair : mediumExp / ( 2 * pairMultiplier ), - group : mediumExp / ( 4 * groupMultiplier ), - trivial: mediumExp / ( 8 * trivialMultiplier ), - }; - } - }; - - return encounter; - - function initialize() { - thaw(); - } - - function add(monster, qty) { - if ( typeof qty === "undefined" ) { - qty = 1; - } - - encounter.groups[monster.id] = encounter.groups[monster.id] || { - qty: 0, - monster: monster, - }; - - encounter.groups[monster.id].qty += qty; - - encounter.reference = null; - } - - function generateRandom(filters, targetDifficulty) { - targetDifficulty = targetDifficulty || 'medium'; - var totalTargetExp = partyInfo.totalPartyExpLevels[targetDifficulty]; - var monsters = randomEncounter.getRandomEncounter(partyInfo.totalPlayerCount, totalTargetExp, filters), - i; - - encounter.reset(); - - for ( i = 0; i < monsters.length; i++ ) { - encounter.add( monsters[i].monster, monsters[i].qty ); - } - } - - function randomize(monster, filters) { - var monsterList = randomEncounter.getShuffledMonsterList(monster.cr.string), - qty = encounter.groups[monster.id].qty; - - while ( monsterList.length ) { - // Make sure we don't roll a monster we already have - if ( encounter.groups[monsterList[0].name] ) { - monsterList.shift(); - continue; - } - - if ( monsters.check( monsterList[0], filters, { skipCrCheck: true } ) ) { - encounter.remove(monster, true); - encounter.add( monsterList[0], qty ); - return; - } else { - monsterList.shift(); - } - } - } - - function remove(monster, removeAll) { - encounter.groups[monster.id].qty--; - - if ( encounter.groups[monster.id].qty === 0 ) { - delete encounter.groups[monster.id]; - } else if ( removeAll ) { - // Removing all is implemented by recurively calling this function until the - // qty is 0 - encounter.remove(monster, true); - } - - encounter.reference = null; - } - - function reset(storedEncounter) { - encounter.reference = null; - encounter.groups = {}; - - if (storedEncounter) { - encounter.type = storedEncounter.type || 'encounter'; - Object.keys(storedEncounter.groups).forEach(function (id) { - encounter.add( - monsters.byId[id], - storedEncounter.groups[id], - { skipFreeze: true } - ); - }); - - encounter.reference = storedEncounter; - } - } - - function freeze() { - var o = { - groups: {} - }; - - Object.keys(encounter.groups).forEach(function (monsterId) { - o.groups[monsterId] = encounter.groups[monsterId].qty; - }); - - store.set("5em-encounter", o); - } - - function thaw() { - encounter.reset(); - - return store.get("5em-encounter").then(function (frozen) { - if ( !frozen ) { - return; - } - - }); - } - } -})(); - -(function() { - "use strict"; - - angular.module("app") - .factory("integration", ExportService); - - - // var payload = [{ "Name": "Nemo", "HP": { "Value": 10 } }, { "Name": "Fat Goblin", "HP": { "Value": 20 }, "Id": "mm.goblin"}, { "Id": "mm.goblin"}]; - var target = "https://www.improved-initiative.com/launchencounter/"; - ExportService.$inject = ["$document", "encounter", "players"]; - function ExportService($document, encounter, players) { - function launchImpInit() { - var payload = generatePayload({ - monsters: encounter.groups || [], - players: players.selectedParty || [], - }); - - console.log(payload); - - openWindow({ - document: $document, - target: target, - data: { Combatants: payload }, - }); - } - - window.encounter = encounter; - window.players = players; - - return { - launchImpInit: launchImpInit, - }; - } - - function generatePayload(args) { - var combatants = []; - - Object.keys(args.monsters).forEach(function (guid) { - var monsterGroup = args.monsters[guid]; - var monster = monsterGroup.monster; - var qty = monsterGroup.qty; - - var i; - for ( i = 1; i <= qty; i++ ) { - - combatants.push({ - Name: monster.name, - HP: { Value: monster.hp }, - TotalInitiativeModifier: monster.init, - AC: { Value: monster.ac }, - Player: "npc", - Id: monster.fid, - }); - } - }); - - args.players.forEach(function (player) { - combatants.push({ - Name: player.name, - TotalInitiativeModifier: player.initiativeMod, - HP: { Value: player.hp }, - Player: "player", - }); - }); - - return combatants; - } - - function openWindow(args) { - var form = document.createElement("form"); - form.style.display = "none"; - form.setAttribute("method", "POST"); - // form.setAttribute("target", "self"); - form.setAttribute("action", args.target); - - Object.keys(args.data).forEach(function (key) { - var textarea = document.createElement("input"); - textarea.setAttribute("type", "hidden"); - textarea.setAttribute("name", key); - textarea.setAttribute("value", JSON.stringify(args.data[key])); - - form.appendChild(textarea); - }); - - args.document[0].body.appendChild(form); - form.submit(); - form.parentNode.removeChild(form); - } -})(); - -(function() { - "use strict"; - - angular.module("app") - .factory("library", LibraryService); - - LibraryService.$inject = ["$rootScope", "store"]; - - function LibraryService($rootScope, store) { - var library = { - encounters: [], - remove: function (storedEncounter) { - library.encounters.splice(library.encounters.indexOf(storedEncounter), 1); - - freeze(); - }, - store: function (encounter) { - for ( var i = 0; i < library.encounters.length; i++ ) { - if ( angular.equals(encounter, library.encounters[i]) ) { - return library.encounters[i]; - } - } - - library.encounters.push(encounter); - freeze(); - - return encounter; - } - }; - - thaw(); - - function freeze() { - store.set("5em-library", library.encounters); - } - - function thaw() { - store.get("5em-library").then(function(frozen) { - if (frozen) { - for ( var i = 0; i < frozen.length; i++ ) { - library.encounters.push(frozen[i]); - } - } - }); - } - - return library; - } -})(); - -(function() { - "use strict"; - - angular.module("app") - .factory("metaInfo", MetaInfoService); - - MetaInfoService.$inject = ['misc', 'alignments', 'crInfo']; - - function MetaInfoService(miscLib, alignments, crInfo) { - var metaInfo = { - alignments: alignments, - crInfo: crInfo, - crList: [ - crInfo["0"], crInfo["1/8"], crInfo["1/4"], crInfo["1/2"], - crInfo["1"], crInfo["2"], crInfo["3"], crInfo["4"], - crInfo["5"], crInfo["6"], crInfo["7"], crInfo["8"], - crInfo["9"], crInfo["10"], crInfo["11"], crInfo["12"], - crInfo["13"], crInfo["14"], crInfo["15"], crInfo["16"], - crInfo["17"], crInfo["18"], crInfo["19"], crInfo["20"], - crInfo["21"], crInfo["22"], crInfo["23"], crInfo["24"], - crInfo["25"], crInfo["26"], crInfo["27"], crInfo["28"], - crInfo["29"], crInfo["30"], - ], - legendaryList: [ - "Ordinary", - "Legendary", - "Legendary (in lair)" - ], - environments: [ - "aquatic", - "arctic", - "cave", - "coast", - "desert", - "dungeon", - "forest", - "grassland", - "mountain", - "planar", - "ruins", - "swamp", - "underground", - "urban", - ], - tags: miscLib.tags, - sizes: [ - "Tiny", - "Small", - "Medium", - "Large", - "Huge", - "Gargantuan", - ], - types: [ - "Aberration", - "Beast", - "Celestial", - "Construct", - "Dragon", - "Elemental", - "Fey", - "Fiend", - "Giant", - "Humanoid", - "Monstrosity", - "Ooze", - "Plant", - "Undead", - ], - sortChoices: [ - { value: 'name', text: 'Name' }, - { value: 'cr', text: 'CR' }, - { value: 'size', text: 'Size' }, - { value: 'type', text: 'Type' }, - { value: 'alignment', text: 'Alignment' }, - ], - }; - - return metaInfo; - } -})(); -(function() { - "use strict"; - - angular.module("app") - .factory('misc', MiscService); - - function MiscService() { - - var crs = [], - sourceFilters = {}, - sources = [], - sourcesByType = {}, - shortNames = {}, - tags = {}, - i; - - crs.push({ text: "0", value: 0 }); - crs.push({ text: "1/8", value: 0.125 }); - crs.push({ text: "1/4", value: 0.25 }); - crs.push({ text: "1/2", value: 0.5 }); - for ( i = 1; i < 25; i++ ) { - crs.push({ text: i.toString(), value: i }); - } - - var service = { - getMultiplier: getMultiplier, - sourceFilters: sourceFilters, - sources: sources, - sourcesByType: sourcesByType, - shortNames: shortNames, - tags: tags, - }; - - return service; - - ////// - - function getMultiplier(playerCount, monsterCount) { - var multiplierCategory, - multipliers = [ - 0.5, - 1, - 1.5, - 2, - 2.5, - 3, - 4, - 5, - ]; - - if ( monsterCount === 0 ) { - return 0; - } else if ( monsterCount === 1 ) { - multiplierCategory = 1; - } else if ( monsterCount === 2 ) { - multiplierCategory = 2; - } else if ( monsterCount < 7 ) { - multiplierCategory = 3; - } else if ( monsterCount < 11 ) { - multiplierCategory = 4; - } else if ( monsterCount < 15 ) { - multiplierCategory = 5; - } else { - multiplierCategory = 6; - } - - if ( playerCount < 3 ) { - // Increase multiplier for parties of one and two - multiplierCategory++; - } else if ( playerCount > 5 ) { - // Decrease multiplier for parties of six through eight - multiplierCategory--; - } - - return multipliers[multiplierCategory]; - } - } -})(); - -(function() { - "use strict"; - - angular.module("app").factory("monsters", Monsters); - - var all = []; - var byId = {}; - var byCr = {}; - var loaded = {}; - var sourcesById = {}; - - Monsters.$inject = ["$rootScope", "misc", "monsterFactory"]; - function Monsters($rootScope, miscLib, monsterFactory) { - function loadSheet(args) { - var sheets = args.sheets; - var sheetId = args.sheetId; - var custom = args.custom; - - if ( loaded[sheetId] ) { - // Don't allow a source to be loaded multiple times - return; - } - - loaded[sheetId] = true; - - loadMonsters({ - $rootScope: $rootScope, - miscLib: miscLib, - monsterFactory: monsterFactory, - sheetId: sheetId, - custom: custom, - sheets: sheets, - }); - } - - return { - all: all, - byCr: byCr, - byId: byId, - check: monsterFactory.checkMonster, - loadSheet: loadSheet, - removeSheet: removeSheet.bind(null, miscLib), - }; - } - - function loadMonsters(args) { - var $rootScope = args.$rootScope; - var miscLib = args.miscLib; - var monsterFactory = args.monsterFactory; - var sheetId = args.sheetId; - var custom = args.custom; - var sheets = args.sheets; - - sheets.Monsters.forEach(function (monsterData) { - monsterData.sheetId = sheetId; - var monster = new monsterFactory.Monster(monsterData); - - if ( byId[monster.id] ) { - console.warn("Duplicate ID", monster.id, monster.fid); - return; - } - - all.push(monster); - byId[monster.id] = monster; - - if ( ! byCr[monster.cr.string] ) { - byCr[monster.cr.string] = []; - } - - byCr[monster.cr.string].push(monster); - }); - - sourcesById[sheetId] = []; - sheets.Sources.forEach(function (sourceData) { - var name = sourceData.name; - var shortName = sourceData.shortname; - var initialState = custom || !!(sourceData.defaultselected || "").match(/yes/i); - - if ( miscLib.sourceFilters[name] !== undefined ) { - console.warn("Duplicate source", name); - return; - } - - sourcesById[sheetId].push(name); - miscLib.sources.push(name); - miscLib.sourceFilters[name] = initialState; - miscLib.shortNames[name] = shortName; - - if ( !miscLib.sourcesByType[sourceData.type] ) { - miscLib.sourcesByType[sourceData.type] = []; - } - - miscLib.sourcesByType[sourceData.type].push(name); - - if ( custom ) { - $rootScope.$broadcast("custom-source-added", name); - } - }); - - miscLib.sources.sort(); - - all.sort(function (a, b) { - return (a.name > b.name) ? 1 : -1; - }); - } - - function removeSheet(miscLib, id) { - var i = 0; - var monsterId; - var crString; - var crIndex; - - // No longer mark sheet as loaded - delete loaded[id]; - - // Loop through all the monsters and remove them from all and byCr - while ( all[i] ) { - if ( all[i].sheetId === id ) { - monsterId = all[i].id; - delete byId[monsterId]; - crString = all[i].cr.string; - crIndex = byCr[crString].indexOf(all[i]); - if ( crIndex !== -1 ) { - byCr[crString].splice(crIndex, 1); - } - all.splice(i, 1); - } else { - i++; - } - } - - if ( !sourcesById[id] ) { - return; - } - - // Loop through sources and remove them - sourcesById[id].forEach(function (sourceName) { - i = miscLib.sources.indexOf(sourceName); - miscLib.sources.splice(i, 1); - delete miscLib.sourceFilters[name]; - delete miscLib.shortNames[name]; - }); - - delete sourcesById[id]; - } -})(); - -(function() { -/* global _ */ -'use strict'; - - angular - .module('app') - .factory('partyInfo', PartyInfo); - - PartyInfo.inject = ['playerLevels', 'store']; - - function PartyInfo(playerLevels, store) { - var service = { - // Variables - partyLevels: [ - { - level: playerLevels[1], - playerCount: 4 - } - ], - - // Methods - initialize: initialize, - freeze: freeze, - thaw: thaw, - - // Properties - get totalPlayerCount() { - return _.sum(_.map(service.partyLevels, function (pl) { return pl.playerCount; })); - }, - - get totalPartyExpLevels() { - var result = _.reduce(service.partyLevels, function(accum, curLevel) { - var curExpLevels = getExpLevels(curLevel); - - return { - easy: accum.easy + curExpLevels.easy, - medium: accum.medium + curExpLevels.medium, - hard: accum.hard + curExpLevels.hard, - deadly: accum.deadly + curExpLevels.deadly, - budget: accum.budget + curExpLevels.budget - }; - }, { easy: 0, medium: 0, hard: 0, deadly: 0, budget: 0}); - return result; - } - }; - - return service; - - function getExpLevels(partyLevel) { - return { - easy: partyLevel.playerCount * partyLevel.level.easy, - medium: partyLevel.playerCount * partyLevel.level.medium, - hard: partyLevel.playerCount * partyLevel.level.hard, - deadly: partyLevel.playerCount * partyLevel.level.deadly, - budget: partyLevel.playerCount * partyLevel.level.budget - }; - } - - //////////////// - function initialize() { - thaw(); - } - - function freeze() { - var o =_.map(service.partyLevels, function (pl) { - return { - level: pl.level.level, - playerCount: pl.playerCount - }; - }); - - store.set("5em-party-info", o); - } - - function thaw() { - if (store.hasKey('5em-party-info')) { - return store.get("5em-party-info").then(loadPartyInfoFromStore); - } else { - return store.get("5em-encounter").then(loadFromEncounterStoreAndConvert); - } - } - - /* - Token: 5em-party-info - Type: Array - Example: - [ - { - level: 4, - playerCount: 4 - } - ] - */ - function loadPartyInfoFromStore(frozenDataArray) { - if ( !frozenDataArray ) { - return; - } - - service.partyLevels = []; - - _.forEach(frozenDataArray, function(frozenData) { - service.partyLevels.push({ - level: playerLevels[frozenData.level], - playerCount: frozenData.playerCount - }); - }); - } - - function loadFromEncounterStoreAndConvert(frozenData) { - if ( !frozenData ) { - return; - } - - service.partyLevels = [{ - level: playerLevels[frozenData.partyLevel], - playerCount: frozenData.playerCount - }]; - - var newFrozenData = [ - { - level: frozenData.partyLevel, - playerCount: frozenData.playerCount - } - ]; - store.set("5em-party-info", newFrozenData); - - if (store.hasKey("5em-current-encounter")) { - store.remove("5em-encounter"); - } - } - } -})(); - -(function () { - "use strict"; - - angular.module("app") - .factory("players", PlayersService); - - PlayersService.$inject = ["$rootScope", "store"]; - - function PlayersService($rootScope, store) { - var players = { - selectedParty: null, - selectParty: function (party) { - players.selectedParty = party; - }, - setDamage: function (name, damage) { - for ( var i = 0; i < players.selectedParty.length; i++ ) { - if ( players.selectedParty[i].name === name ) { - players.selectedParty[i].damage = damage; - rawDirty = true; - freeze(); - return; - } - } - }, - initialize: initialize - }, - rawDirty = true, - rawText = "", - partiesDirty, - parties = []; - - window.players = players; - - Object.defineProperty(players, "raw", { - get: function () { - if ( rawDirty ) { - compileRaw(); - } - - return rawText; - }, - set: function (value) { - rawText = value; - partiesDirty = true; - }, - }); - - Object.defineProperty(players, "parties", { - get: function () { - - if ( partiesDirty ) { - compileParties(); - } - - return parties; - } - }); - - function compileParties() { - var i, j, m; - partiesDirty = false; - parties = rawText.split(/\n\n+/); - - for ( i = 0; i < parties.length; i++ ) { - parties[i] = parties[i].split("\n"); - for ( j = 0; j < parties[i].length; j++ ) { - // 1: Name - // 2: Initiative mod - // 3: Remaining HP (optional) - // 4: Max HP - // 1 2 3 4 - m = parties[i][j].match(/(.*?)\s+([-+]?\d+[!]?)\s+(?:(\d+)\s*\/\s*)?(\d+)\s*$/); - - if ( m ) { - parties[i][j] = { - name: m[1], - initiativeMod: parseInt(m[2].replace(/!$/, '')), - advantageOnInitiative: m[2].endsWith('!'), - damage: (m[3]) ? m[4] - m[3] : 0, - hp: parseInt(m[4]), - }; - } - } - - } - - rawDirty = true; - freeze(); - } - - function compileRaw() { - var i, j, newRaw = [], p; - rawDirty = false; - - for ( i = 0; i < players.parties.length; i++ ) { - newRaw[i] = []; - - for ( j = 0; j < players.parties[i].length; j++ ) { - p = players.parties[i][j]; - newRaw[i].push([ - p.name, - ((p.initiativeMod >= 0) ? "+" + p.initiativeMod : p.initiativeMod) + (p.advantageOnInitiative ? '!' : ''), - p.hp - p.damage, - "/", - p.hp, - ].join(" ")); - } - - newRaw[i] = newRaw[i].join("\n"); - } - - rawText = newRaw.join("\n\n"); - } - - function initialize() { - thaw(); - } - - function freeze() { - store.set("5em-players", parties); - } - - function thaw() { - store.get("5em-players").then(function (frozen) { - if (frozen) { - parties = frozen; - partiesDirty = false; - rawDirty = true; - } - }); - } - - return players; - } -})(); - -(function() { - "use strict"; - - angular.module("app") - .factory("randomEncounter", RandomEncounterService); - - RandomEncounterService.$inject = ["monsterFactory", "misc", "shuffle", "metaInfo", "monsters"]; - - function RandomEncounterService(monsterLib, miscLib, shuffle, metaInfo, monsters) { - var randomEncounter = { - // - // getRandomEncounter - // playerCount: Count of total number of players in party - // targetTotalExp: The experience target value. Takes into account player count, player level, and target difficulty already. - // filters: Any filters that should be applied when making the encounter - // - getRandomEncounter: function (playerCount, targetTotalExp, filters) { - var fudgeFactor = 1.1, // The algorithm is conservative in spending exp, so this tries to get it closer to the actual medium value - baseExpBudget = targetTotalExp * fudgeFactor, - encounterTemplate = getEncounterTemplate(), - multiplier = miscLib.getMultiplier(playerCount, encounterTemplate.total), - availableExp = baseExpBudget / multiplier, - monster, - monsterGroups = [], - currentGroup, targetExp; - - while ( encounterTemplate.groups[0] ) { - // Exp should be shared as equally as possible between groups - targetExp = availableExp / encounterTemplate.groups.length; - currentGroup = encounterTemplate.groups.shift(); - - // We need to find a monster who, in the correct number, is close to the target exp - targetExp /= currentGroup; - - monster = getBestMonster(targetExp, filters); - - monsterGroups.push({ - monster: monster, - qty: currentGroup, - }); - - // Finally, subtract the actual exp value - availableExp -= currentGroup * monster.cr.exp; - } - - return monsterGroups; - }, - getShuffledMonsterList: function (crString) { - var list = monsters.byCr[crString].slice(0); - - return shuffle(list); - }, - }; - - return randomEncounter; - - function getEncounterTemplate() { - var templates = [ - [ 1 ], - [ 1, 2 ], - [ 1, 5 ], - [ 1, 1, 1 ], - [ 1, 1, 2 ], - [ 1, 2, 3 ], - [ 2, 2 ], - [ 2, 4 ], - [ 8 ], - ], - groups = JSON.parse(JSON.stringify(templates[Math.floor(Math.random() * templates.length)])), - total = groups.reduce(function (a, b) { return a+b; }); - - // Silly hack to clone object - return { - total: total, - groups: groups, - }; - } - - function getBestMonster(targetExp, filters) { - var bestBelow = 0, - bestAbove, - crIndex, - currentIndex, - step = -1, - monsterList, - i; - - for ( i = 1; i < metaInfo.crList.length; i++ ) { - if ( metaInfo.crList[i].exp < targetExp ) { - bestBelow = i; - } else { - bestAbove = i; - break; - } - } - - if ( (targetExp - metaInfo.crList[bestBelow].exp) < (metaInfo.crList[bestAbove].exp - targetExp) ) { - crIndex = bestBelow; - } else { - crIndex = bestAbove; - } - - currentIndex = crIndex; - - monsterList = randomEncounter.getShuffledMonsterList(metaInfo.crList[crIndex].string); - - while ( true ) { - if ( monsterLib.checkMonster(monsterList[0], filters, { skipCrCheck: true, nonUnique: true }) ) { - return monsterList[0]; - } else { - monsterList.shift(); - } - - // If we run through all the monsters from this level, check a different level - if ( monsterList.length === 0 ) { - // there were no monsters found lower than target exp, so we have to start checking higher - if ( currentIndex === 0 ) { - // Reset currentIndex - currentIndex = crIndex; - // Start looking up instead of down - step = 1; - } - - currentIndex += step; - monsterList = randomEncounter.getShuffledMonsterList(metaInfo.crList[currentIndex].string); - } - } - } - } -})(); -(function() { - "use strict"; - - angular.module("app").factory("googleSheetLoader", googleSheetService); - - googleSheetService.$inject = ["$q"]; - function googleSheetService($q) { - // Loads a published google sheet by ID. Example usage: - // googleSheetService(sheetId).then(function (data) {}) - - // data will be an object. The keys of this object are names of sheets from the workbook - // (e.g. "Sheet1"). The value for each of those keys is an array of objects. Each of those - // objects is one row from that sheet, with keys based on the header row from that sheet. - - // Example: - // { - // "Sheet1": [ - // { "name": "Ancient Red Dragon", "alignment": "Chaotic evil" } - // ] - // } - - // Two important things to note: - - // 1: The column names from the header row will have illegal characters like spaces removed, - // and will be entirely lowercased - - // 2: Empty cells will be omitted from the individual objects lacking entries for those - // cells - return { - loadIndex: partialLoader.bind(null, $q), - }; - } - - // Heavily modified version of my gs-loader script - var partialLoader = (function () { - var jsonpcount = 0; - var sheets = {}; - - // Get AJAX using jsonp - function getSheetsJsonp($q, url) { - var callbackName = "__jsonpcallback" + jsonpcount++; - - var deferred = $q.defer(); - - window[callbackName] = function jsonpCallback(data) { - var timestamp = data.feed.updated.$t; - deferred.resolve({ - timestamp: timestamp, - data: data.feed.entry - }); - delete window[callbackName]; - }; - - var script = document.createElement("script"); - script.src = url + "?alt=json-in-script&callback=" + callbackName; - script.addEventListener("load", function () { - this.parentNode.removeChild(this); - }, false); - - document.head.appendChild(script); - - return deferred.promise; - } - - function parseLine(ws, data) { - data.forEach(function (line) { - var parsedObject = {}; - Object.keys(line).forEach(function (key) { - var val = line[key].$t; - - if ( !val ) { return; } - - // The fields that contain the cell values are named "gsx$colName" - var match = key.match(/^gsx\$(.+)/); - - if ( !match ) { return; } - - var col = match[1]; - - parsedObject[col] = val; - - }); - ws.push(parsedObject); - }); - } - - function loadIndex($q, id) { - var url = "https://spreadsheets.google.com/feeds/worksheets/" + id + "/public/full"; - - // Step 1: Get a list of all the worksheets in the spreadsheet - return getSheetsJsonp($q, url) - .then(function (indexData) { - return { - timestamp: indexData.timestamp, - loadSheets: loadSheets.bind(null, $q, indexData.data), - }; - }); - } - - function loadSheets($q, indexData) { - var worksheetPromises = []; - var worksheets = {}; - - indexData.forEach(function (worksheet) { - var name = worksheet.title.$t; - var ws = worksheets[name] = []; - - // Step 2: For each worksheet, parse its listfeed - worksheet.link.some(function (link) { - if ( link.rel.match(/listfeed/) ) { - worksheetPromises.push( - getSheetsJsonp($q, link.href) - .then(function (sheetData) { - // Don't care about timestamp of individual sheets - return sheetData.data; - }) - .then(parseLine.bind(null, ws)) - ); - return true; - } - }); - }); - - return $q.all(worksheetPromises) - .then(function () { - return worksheets; - }); - } - - // Cache results for each id - function load($q, id, args) { - args = args || {}; - if ( args.noCache ) { - delete sheets[id]; - } - - sheets[id] = sheets[id] || loadIndex($q, id); - - return sheets[id]; - } - - return load; - }()); -})(); - -(function() { -"use strict"; - -angular.module("app").factory("sheetManager", sheetManager); - -var sheetMetaData = { - "1I5W-x8QOcP2siGCPIhWWzKGWt4vyBivYLbmkv_G1B24": { name: "Official", timestamp: 0 }, - "1YR8NBDp8BP4Lz-CWChh6-8dOPN7aYV_dRD6g9ZBvNqM": { name: "Third-Party", timestamp: 0 }, - "1x6xC8fHZ6N6M2wOuwPTNdn0ObCPtdqeIBtXaLjHBMYQ": { name: "Community", timestamp: 0 }, -}; -var remove = ["19ngAA7d1eYKiBtKTsg8Qcsq_zhDSBzEMxXS45eCdd7I"]; -var sheetMetaStorageKey = "5em-sheet-meta"; -var sheetCachePartialKey = "5em-sheet-cache"; -var legacySheetDataKey = "5em-custom-content"; -var logging = false; - -function generateCacheId(sheetId) { - return [sheetCachePartialKey, sheetId].join(":"); -} - -function loadFromCache(args) { - if (logging) console.log("Loading from cache"); - var store = args.store; - var sheetId = args.sheetId; - var cacheId = generateCacheId(sheetId); - - return store.get(cacheId); -} - -function loadLive(args) { - if (logging) console.log("Loading live"); - var store = args.store; - var sheetId = args.sheetId; - var googleSheetLoader = args.googleSheetLoader; - var timestamp = args.timestamp; - - return googleSheetLoader.loadIndex(sheetId) - .then(function (sheetIndex) { - var remoteTimestamp = Date.parse(sheetIndex.timestamp); - if (logging) console.log("Loaded sheetIndex, remote timestamp:", remoteTimestamp); - - if ( remoteTimestamp > timestamp ) { - if (logging) console.log("We're out of date", timestamp); - // We're out of date, load remotely - return sheetIndex.loadSheets() - .then(function (sheetData) { - if (logging) console.log("Sheet data loaded", sheetData); - updateTimestamp({ - store: store, - sheetId: sheetId, - timestamp: remoteTimestamp, - }); - - var cacheId = generateCacheId(sheetId); - store.set(cacheId, sheetData); - return sheetData; - }); - } else { - if (logging) console.log("We're fresh", timestamp); - // Our data are fresh, load from cache - return loadFromCache({ - store: store, - sheetId: sheetId, - }); - } - }) - .catch(function () { - if (logging) console.log("There was an error live loading"); - return loadFromCache({ - store: store, - sheetId: sheetId, - }); - }) - ; -} - -function updateTimestamp(args) { - var store = args.store; - var sheetId = args.sheetId; - var timestamp = args.timestamp; - - sheetMetaData[sheetId].timestamp = timestamp; - saveMetaData(store); -} - -function insertSheet(args) { - var sheetId = args.sheetId; - var store = args.store; - var googleSheetLoader = args.googleSheetLoader; - var monsters = args.monsters; - var custom = args.custom; - var name = args.name; - - if (logging) console.log("Processing sheet", args); - var sheetPromise; - if ( !sheetMetaData[sheetId] ) { - sheetMetaData[sheetId] = { - name: name, - timestamp: 0, - custom: custom, - }; - saveMetaData(store); - } - var timestamp = sheetMetaData[sheetId].timestamp; - - if ( navigator.onLine ) { - if (logging) console.log("We're online"); - sheetPromise = loadLive({ - store: store, - sheetId: sheetId, - googleSheetLoader: googleSheetLoader, - timestamp: timestamp, - }); - } else { - if (logging) console.log("We're offline"); - sheetPromise = loadFromCache({ - store: store, - sheetId: sheetId, - }); - } - - sheetPromise.then(function (sheets) { - if (logging) console.log("Got sheets!", sheets); - monsters.loadSheet({ - sheets: sheets, - sheetId: sheetId, - custom: custom, - }); - }); -} - -function saveMetaData(store) { - if (logging) console.log("Storing sheetMetaData", sheetMetaData); - store.set(sheetMetaStorageKey, sheetMetaData); -} - -sheetManager.$inject = ["$q", "googleSheetLoader", "monsters", "store"]; -function sheetManager($q, googleSheetLoader, monsters, store) { - $q.all([ - store.get(sheetMetaStorageKey).catch(function () { return null; }), - store.get(legacySheetDataKey).catch(function () { return []; }), - ]) - .then(function (stored) { - var cachedMetaData = stored[0]; - var legacySheetData = stored[1]; - // sheetMetaData is initialized to default values; if we have cached data, overwrite the - // defaults - if ( cachedMetaData ) { - // integrate in all the default IDs in case any are new since last time metadata were cached - Object.keys(sheetMetaData).forEach(function (sheetId) { - if ( !cachedMetaData[sheetId] ) { - cachedMetaData[sheetId] = sheetMetaData[sheetId]; - } - }); - sheetMetaData = cachedMetaData; - } - - // For compatibility reasons, may need to remove access to some sheets - remove.forEach(function (sheetId) { - delete sheetMetaData[sheetId]; - }); - - // Integrate legacy data into the sheetMetaData - (legacySheetData || []).forEach(function (legacyData) { - sheetMetaData[legacyData.id] = { - name: legacyData.name, - timestamp: 0, - custom: true, - }; - }); - - // Clear out legacy data now that they've been integrated - store.set(legacySheetDataKey, []); - - // Finally, parse the sheets! - Object.keys(sheetMetaData).forEach(function (sheetId) { - var timestamp = sheetMetaData[sheetId].timestamp; - var custom = sheetMetaData[sheetId].custom; - // If it's a custom sheet and it's never been loaded before, enable it by default - var enbleByDefault = custom && !timestamp; - - insertSheet({ - sheetId: sheetId, - store: store, - googleSheetLoader: googleSheetLoader, - monsters: monsters, - custom: enbleByDefault, - }); - }); - }); - - return { - addContent: function (name, url) { - if ( !name || !url ) { - console.log("No name or URL"); - return; - } - - var idMatch = url.match(/\b([-a-z0-9_]{44})\b/i); - - if ( !idMatch ) { - console.log("No id"); - return; - } - - var id = idMatch[1]; - - if ( sheetMetaData[id] ) { - console.log("Duplicate ID"); - return; - } - - insertSheet({ - sheetId: id, - name: name, - custom: true, - store: store, - googleSheetLoader: googleSheetLoader, - monsters: monsters, - }); - - return true; - }, - getSheetMetaData: function () { - return sheetMetaData; - }, - removeContent: function (id) { - if ( !sheetMetaData[id] ) { - return; - } - - delete sheetMetaData[id]; - saveMetaData(store); - monsters.removeSheet(id); - }, - }; -} -}()); - -(function() { - "use strict"; - - angular.module("app") - .factory('sources', SourcesService); - - SourcesService.$inject = ["misc"]; - - function SourcesService(misc) { - return { - all: misc.sources, - filters: misc.sourceFilters, - shortNames: misc.shortNames, - sourcesByType: misc.sourcesByType, - }; - } -})(); - -(function() { - "use strict"; - - angular.module("app") - .factory("store", StoreService); - - StoreService.$inject = ['$q', 'localStorageService']; - - function StoreService($q, localStorageService) { - var store = { - get: function (key) { - return $q(function(resolve, reject) { - var data; - - try { - data = localStorageService.get(key); - resolve(data); - } catch (ex) { - data = undefined; - reject("Unable to parse stored value for " + key); - } - }); - }, - set: function (key, data) { - localStorageService.set(key, data); - }, - remove: function (key) { - return localStorageService.remove(key); - }, - hasKey: function (key) { - return _.indexOf(localStorageService.keys(), key) >= 0; - } - }; - - return store; - }; -})(); - -(function() { - 'use strict'; - - angular.module("app") - .controller('TestController', TestController); - - TestController.$inject = ['misc', 'AppVersion', 'combatConstants', - 'sources', - 'store', - 'shuffle', - 'players', - 'library', - 'actionQueue', - 'crInfo', - 'alignments', - 'monsterFactory', - 'metaInfo', - 'monsterData', - 'randomEncounter', - 'encounter', - 'filters' - ]; - - function TestController(miscLib, appVersion) { - var vm = this; - vm.appVersion = appVersion; - } -})(); -(function() { - 'use strict'; - - angular - .module('app') - .factory('logger', logger); - - logger.$inject = ['$log']; - - /* @ngInject */ - function logger($log) { - var service = { - error: error, - info: info, - success: success, - warning: warning, - - // straight to console; bypass toastr - log: $log.log - }; - - return service; - ///////////////////// - - function error(message, data, title) { - $log.error('Error: ' + message, data); - } - - function info(message, data, title) { - $log.info('Info: ' + message, data); - } - - function success(message, data, title) { - $log.info('Success: ' + message, data); - } - - function warning(message, data, title) { - $log.warn('Warning: ' + message, data); - } - } -} ()); - -/* Help configure the state-base ui.router */ -(function() { - 'use strict'; - - angular - .module('app') - .provider('routerHelper', routerHelperProvider); - - routerHelperProvider.$inject = ['$locationProvider', '$stateProvider', '$urlRouterProvider']; - /* @ngInject */ - function routerHelperProvider($locationProvider, $stateProvider, $urlRouterProvider) { - /* jshint validthis:true */ - this.$get = RouterHelper; - - //$locationProvider.html5Mode(true); - - RouterHelper.$inject = ['$state']; - - /* @ngInject */ - function RouterHelper($state) { - var hasOtherwise = false; - - var service = { - configureStates: configureStates, - getStates: getStates - }; - - return service; - - /////////////// - - function configureStates(states, otherwisePath) { - states.forEach(function(state) { - $stateProvider.state(state.state, state.config); - }); - if (otherwisePath && !hasOtherwise) { - hasOtherwise = true; - $urlRouterProvider.otherwise(otherwisePath); - } - } - - function getStates() { return $state.get(); } - } - } -})(); - -(function () { - "use strict"; - - angular.module("app") - .factory('shuffle', Shuffle); - - // via http://bost.ocks.org/mike/shuffle/ - - function Shuffle() { - return function (array) { - var m = array.length, t, i; - - while (m) { - i = Math.floor(Math.random() * m--); - - t = array[m]; - array[m] = array[i]; - array[i] = t; - } - - return array; - }; - } -})(); - -angular.module('app').run(['$templateCache', function($templateCache) {$templateCache.put('app/test.html','
This is version {{vm.appVersion}}
'); -$templateCache.put('app/about/about.html','

Contact us if you have questions or issues

Questions, comments, suggestions?

See the FAQ

Via Reddit

Asmor\'s Official Subreddit

Contact the Maintainers Directly

Site Owner:
Ian Toltz
itoltz@gmail.com
/u/Asmor
Site Contributor:
Joe Barzilai
jabber3@gmail.com
/u/jabber3
Logo by:
Jin The Blue

Want to Contribute?

Join us on the Kobold Github

Kobold Fight Club is not associated with Wizards of the Coast.

'); -$templateCache.put('app/battle-setup/battle-setup.html','
'); -$templateCache.put('app/battle-setup/combatant-setup.html','
Initiative Mod: +{{ vm.combatant.initiativeMod }} (A) Initiative: {{ vm.combatant.initiative }} HP:{{ vm.combatant.hp - vm.combatant.damage }} / {{ vm.combatant.hp }}
'); -$templateCache.put('app/battle-tracker/battle-tracker.html','
'); -$templateCache.put('app/battle-tracker/combatant.html','
{{ vm.combatant.name }} Initiative: {{ vm.combatant.initiative }} HP: {{ vm.combatant.hp - vm.combatant.damage }} / {{ vm.combatant.hp }}
'); -$templateCache.put('app/common/difficulty-legend.html','

Legend

'); -$templateCache.put('app/common/number-input.html',' {{ vm.value }} '); -$templateCache.put('app/encounter-builder/current-encounter.html','

Encounter Info Random Encounter Table

Create an encounter by clicking the Random encounter button or by adding monsters from the monsters table.

{{ group.monster.name }}
CR: {{ group.monster.cr.string }} XP: {{ group.monster.cr.exp | number}}
{{ source.name }} p.{{ source.page }} [Link]
Difficulty: {{ vm.encounter.difficulty }}
Total XP: {{ vm.encounter.exp | number }} ({{ (vm.encounter.exp / vm.partyInfo.totalPlayerCount) | number:0 }} per player) Adjusted XP: {{ vm.encounter.adjustedExp | number }} ({{ (vm.encounter.adjustedExp / vm.partyInfo.totalPlayerCount) | number:0 }} per player)
'); -$templateCache.put('app/encounter-builder/encounter-builder.html','
{{ vm.getMonsterQtyString() }}, {{ vm.encounter.exp }} exp ({{ vm.encounter.difficulty }}) Browse monsters Manage encounter
'); -$templateCache.put('app/encounter-builder/group-info.html','

Group Info

'); -$templateCache.put('app/encounter-builder/monster-table.html','
NameCRSizeTypeAlignmentSource
{{ vm.monsters | countHiddenMonstersFilter:vm.filters }} monsters hidden by filters or in unselected sources
{{ monster.name }}
Section: {{ monster.section }}
CR {{ monster.cr.string }}Size: {{ monster.size }}Type: {{ monster.type }} ({{ monster.tags.join(", ") }})Alignment: {{ monster.alignment.text }}Source(s):
{{ vm.sources.shortNames[source.name] }} {{ source.name }} p.{{ source.page }} [Link]
'); -$templateCache.put('app/encounter-builder/party-level-selector.html','
'); -$templateCache.put('app/encounter-builder/search.html',''); -$templateCache.put('app/encounter-manager/encounter-manager.html','
You don\'t have any encounters saved.
{{ group.qty }}x {{ group.monster.name }}

Encounters

Random Encounter Tables

'); -$templateCache.put('app/encounter-manager/manager-row.html','
{{ vm.storedEncounter.name }}
Exp: {{ vm.calculateExp(vm.storedEncounter) }}
Active
{{ qty }}x {{ vm.monsters.byId[id].name }}
'); -$templateCache.put('app/navbar/navbar.html',''); -$templateCache.put('app/players/edit.html','

One character per line. Blank line to separate different parties. Add an exclamation point (!) to an initiative modifier to indicate advantage. Format:
<CHARACTER NAME> <INITIATIVE MOD> <MAX HP>
<CHARACTER NAME> <INITIATIVE MOD> <CURRENT HP> / <MAX HP>

'); -$templateCache.put('app/players/manage.html','
Selected
{{ player.name }} Initiative: +{{ player.initiativeMod }} (Adv) HP: {{ player.hp - player.damage }} / {{ player.hp }}
'); -$templateCache.put('app/players/players.html','
');}]); \ No newline at end of file diff --git a/build/styles/styles-4508b73e9d.css b/build/styles/styles-4508b73e9d.css deleted file mode 100644 index e060c9d6..00000000 --- a/build/styles/styles-4508b73e9d.css +++ /dev/null @@ -1,7963 +0,0 @@ -@charset "UTF-8"; -* { - padding: 0; - margin: 0; - font-family: 'Open Sans', sans-serif; } - -body { - padding-top: 70px; } - -table { - border-collapse: collapse; } - -td { - vertical-align: top; } - -ul { - list-style-type: none; } - -input[type=number] { - /* Remove controls from Firefox */ - -moz-appearance: textfield; - /* Remove controls from Safari and Chrome */ } - input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; - /* Removes leftover margin */ } - -/*! - * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url("../thirdparty/font-awesome-4.1.0/fonts/fontawesome-webfont.eot?v=4.1.0"); - src: url("../thirdparty/font-awesome-4.1.0/fonts/fontawesome-webfont.eot?#iefix&v=4.1.0") format("embedded-opentype"), url("../thirdparty/font-awesome-4.1.0/fonts/fontawesome-webfont.woff?v=4.1.0") format("woff"), url("../thirdparty/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf?v=4.1.0") format("truetype"), url("../thirdparty/font-awesome-4.1.0/fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular") format("svg"); - font-weight: normal; - font-style: normal; } - -.fa { - display: inline-block; - font-family: FontAwesome; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } - -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333em; - line-height: 0.75em; - vertical-align: -15%; } - -.fa-2x { - font-size: 2em; } - -.fa-3x { - font-size: 3em; } - -.fa-4x { - font-size: 4em; } - -.fa-5x { - font-size: 5em; } - -.fa-fw { - width: 1.28571em; - text-align: center; } - -.fa-ul { - padding-left: 0; - margin-left: 2.14286em; - list-style-type: none; } - .fa-ul > li { - position: relative; } - -.fa-li { - position: absolute; - left: -2.14286em; - width: 2.14286em; - top: 0.14286em; - text-align: center; } - .fa-li.fa-lg { - left: -1.85714em; } - -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eee; - border-radius: .1em; } - -.pull-right { - float: right; } - -.pull-left { - float: left; } - -.fa.pull-left { - margin-right: .3em; } - -.fa.pull-right { - margin-left: .3em; } - -.fa-spin { - -webkit-animation: spin 2s infinite linear; - -moz-animation: spin 2s infinite linear; - -o-animation: spin 2s infinite linear; - animation: spin 2s infinite linear; } - -@-moz-keyframes spin { - 0% { - -moz-transform: rotate(0deg); } - 100% { - -moz-transform: rotate(359deg); } } - -@-webkit-keyframes spin { - 0% { - -webkit-transform: rotate(0deg); } - 100% { - -webkit-transform: rotate(359deg); } } - -@-o-keyframes spin { - 0% { - -o-transform: rotate(0deg); } - 100% { - -o-transform: rotate(359deg); } } - -@keyframes spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); } } - -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -ms-transform: rotate(90deg); - -o-transform: rotate(90deg); - transform: rotate(90deg); } - -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); } - -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -moz-transform: rotate(270deg); - -ms-transform: rotate(270deg); - -o-transform: rotate(270deg); - transform: rotate(270deg); } - -.fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0); - -webkit-transform: scale(-1, 1); - -moz-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - -o-transform: scale(-1, 1); - transform: scale(-1, 1); } - -.fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: scale(1, -1); - -moz-transform: scale(1, -1); - -ms-transform: scale(1, -1); - -o-transform: scale(1, -1); - transform: scale(1, -1); } - -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; } - -.fa-stack-1x, .fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; } - -.fa-stack-1x { - line-height: inherit; } - -.fa-stack-2x { - font-size: 2em; } - -.fa-inverse { - color: #fff; } - -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: ""; } - -.fa-music:before { - content: ""; } - -.fa-search:before { - content: ""; } - -.fa-envelope-o:before { - content: ""; } - -.fa-heart:before { - content: ""; } - -.fa-star:before { - content: ""; } - -.fa-star-o:before { - content: ""; } - -.fa-user:before { - content: ""; } - -.fa-film:before { - content: ""; } - -.fa-th-large:before { - content: ""; } - -.fa-th:before { - content: ""; } - -.fa-th-list:before { - content: ""; } - -.fa-check:before { - content: ""; } - -.fa-times:before { - content: ""; } - -.fa-search-plus:before { - content: ""; } - -.fa-search-minus:before { - content: ""; } - -.fa-power-off:before { - content: ""; } - -.fa-signal:before { - content: ""; } - -.fa-gear:before, -.fa-cog:before { - content: ""; } - -.fa-trash-o:before { - content: ""; } - -.fa-home:before { - content: ""; } - -.fa-file-o:before { - content: ""; } - -.fa-clock-o:before { - content: ""; } - -.fa-road:before { - content: ""; } - -.fa-download:before { - content: ""; } - -.fa-arrow-circle-o-down:before { - content: ""; } - -.fa-arrow-circle-o-up:before { - content: ""; } - -.fa-inbox:before { - content: ""; } - -.fa-play-circle-o:before { - content: ""; } - -.fa-rotate-right:before, -.fa-repeat:before { - content: ""; } - -.fa-refresh:before { - content: ""; } - -.fa-list-alt:before { - content: ""; } - -.fa-lock:before { - content: ""; } - -.fa-flag:before { - content: ""; } - -.fa-headphones:before { - content: ""; } - -.fa-volume-off:before { - content: ""; } - -.fa-volume-down:before { - content: ""; } - -.fa-volume-up:before { - content: ""; } - -.fa-qrcode:before { - content: ""; } - -.fa-barcode:before { - content: ""; } - -.fa-tag:before { - content: ""; } - -.fa-tags:before { - content: ""; } - -.fa-book:before { - content: ""; } - -.fa-bookmark:before { - content: ""; } - -.fa-print:before { - content: ""; } - -.fa-camera:before { - content: ""; } - -.fa-font:before { - content: ""; } - -.fa-bold:before { - content: ""; } - -.fa-italic:before { - content: ""; } - -.fa-text-height:before { - content: ""; } - -.fa-text-width:before { - content: ""; } - -.fa-align-left:before { - content: ""; } - -.fa-align-center:before { - content: ""; } - -.fa-align-right:before { - content: ""; } - -.fa-align-justify:before { - content: ""; } - -.fa-list:before { - content: ""; } - -.fa-dedent:before, -.fa-outdent:before { - content: ""; } - -.fa-indent:before { - content: ""; } - -.fa-video-camera:before { - content: ""; } - -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: ""; } - -.fa-pencil:before { - content: ""; } - -.fa-map-marker:before { - content: ""; } - -.fa-adjust:before { - content: ""; } - -.fa-tint:before { - content: ""; } - -.fa-edit:before, -.fa-pencil-square-o:before { - content: ""; } - -.fa-share-square-o:before { - content: ""; } - -.fa-check-square-o:before { - content: ""; } - -.fa-arrows:before { - content: ""; } - -.fa-step-backward:before { - content: ""; } - -.fa-fast-backward:before { - content: ""; } - -.fa-backward:before { - content: ""; } - -.fa-play:before { - content: ""; } - -.fa-pause:before { - content: ""; } - -.fa-stop:before { - content: ""; } - -.fa-forward:before { - content: ""; } - -.fa-fast-forward:before { - content: ""; } - -.fa-step-forward:before { - content: ""; } - -.fa-eject:before { - content: ""; } - -.fa-chevron-left:before { - content: ""; } - -.fa-chevron-right:before { - content: ""; } - -.fa-plus-circle:before { - content: ""; } - -.fa-minus-circle:before { - content: ""; } - -.fa-times-circle:before { - content: ""; } - -.fa-check-circle:before { - content: ""; } - -.fa-question-circle:before { - content: ""; } - -.fa-info-circle:before { - content: ""; } - -.fa-crosshairs:before { - content: ""; } - -.fa-times-circle-o:before { - content: ""; } - -.fa-check-circle-o:before { - content: ""; } - -.fa-ban:before { - content: ""; } - -.fa-arrow-left:before { - content: ""; } - -.fa-arrow-right:before { - content: ""; } - -.fa-arrow-up:before { - content: ""; } - -.fa-arrow-down:before { - content: ""; } - -.fa-mail-forward:before, -.fa-share:before { - content: ""; } - -.fa-expand:before { - content: ""; } - -.fa-compress:before { - content: ""; } - -.fa-plus:before { - content: ""; } - -.fa-minus:before { - content: ""; } - -.fa-asterisk:before { - content: ""; } - -.fa-exclamation-circle:before { - content: ""; } - -.fa-gift:before { - content: ""; } - -.fa-leaf:before { - content: ""; } - -.fa-fire:before { - content: ""; } - -.fa-eye:before { - content: ""; } - -.fa-eye-slash:before { - content: ""; } - -.fa-warning:before, -.fa-exclamation-triangle:before { - content: ""; } - -.fa-plane:before { - content: ""; } - -.fa-calendar:before { - content: ""; } - -.fa-random:before { - content: ""; } - -.fa-comment:before { - content: ""; } - -.fa-magnet:before { - content: ""; } - -.fa-chevron-up:before { - content: ""; } - -.fa-chevron-down:before { - content: ""; } - -.fa-retweet:before { - content: ""; } - -.fa-shopping-cart:before { - content: ""; } - -.fa-folder:before { - content: ""; } - -.fa-folder-open:before { - content: ""; } - -.fa-arrows-v:before { - content: ""; } - -.fa-arrows-h:before { - content: ""; } - -.fa-bar-chart-o:before { - content: ""; } - -.fa-twitter-square:before { - content: ""; } - -.fa-facebook-square:before { - content: ""; } - -.fa-camera-retro:before { - content: ""; } - -.fa-key:before { - content: ""; } - -.fa-gears:before, -.fa-cogs:before { - content: ""; } - -.fa-comments:before { - content: ""; } - -.fa-thumbs-o-up:before { - content: ""; } - -.fa-thumbs-o-down:before { - content: ""; } - -.fa-star-half:before { - content: ""; } - -.fa-heart-o:before { - content: ""; } - -.fa-sign-out:before { - content: ""; } - -.fa-linkedin-square:before { - content: ""; } - -.fa-thumb-tack:before { - content: ""; } - -.fa-external-link:before { - content: ""; } - -.fa-sign-in:before { - content: ""; } - -.fa-trophy:before { - content: ""; } - -.fa-github-square:before { - content: ""; } - -.fa-upload:before { - content: ""; } - -.fa-lemon-o:before { - content: ""; } - -.fa-phone:before { - content: ""; } - -.fa-square-o:before { - content: ""; } - -.fa-bookmark-o:before { - content: ""; } - -.fa-phone-square:before { - content: ""; } - -.fa-twitter:before { - content: ""; } - -.fa-facebook:before { - content: ""; } - -.fa-github:before { - content: ""; } - -.fa-unlock:before { - content: ""; } - -.fa-credit-card:before { - content: ""; } - -.fa-rss:before { - content: ""; } - -.fa-hdd-o:before { - content: ""; } - -.fa-bullhorn:before { - content: ""; } - -.fa-bell:before { - content: ""; } - -.fa-certificate:before { - content: ""; } - -.fa-hand-o-right:before { - content: ""; } - -.fa-hand-o-left:before { - content: ""; } - -.fa-hand-o-up:before { - content: ""; } - -.fa-hand-o-down:before { - content: ""; } - -.fa-arrow-circle-left:before { - content: ""; } - -.fa-arrow-circle-right:before { - content: ""; } - -.fa-arrow-circle-up:before { - content: ""; } - -.fa-arrow-circle-down:before { - content: ""; } - -.fa-globe:before { - content: ""; } - -.fa-wrench:before { - content: ""; } - -.fa-tasks:before { - content: ""; } - -.fa-filter:before { - content: ""; } - -.fa-briefcase:before { - content: ""; } - -.fa-arrows-alt:before { - content: ""; } - -.fa-group:before, -.fa-users:before { - content: ""; } - -.fa-chain:before, -.fa-link:before { - content: ""; } - -.fa-cloud:before { - content: ""; } - -.fa-flask:before { - content: ""; } - -.fa-cut:before, -.fa-scissors:before { - content: ""; } - -.fa-copy:before, -.fa-files-o:before { - content: ""; } - -.fa-paperclip:before { - content: ""; } - -.fa-save:before, -.fa-floppy-o:before { - content: ""; } - -.fa-square:before { - content: ""; } - -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: ""; } - -.fa-list-ul:before { - content: ""; } - -.fa-list-ol:before { - content: ""; } - -.fa-strikethrough:before { - content: ""; } - -.fa-underline:before { - content: ""; } - -.fa-table:before { - content: ""; } - -.fa-magic:before { - content: ""; } - -.fa-truck:before { - content: ""; } - -.fa-pinterest:before { - content: ""; } - -.fa-pinterest-square:before { - content: ""; } - -.fa-google-plus-square:before { - content: ""; } - -.fa-google-plus:before { - content: ""; } - -.fa-money:before { - content: ""; } - -.fa-caret-down:before { - content: ""; } - -.fa-caret-up:before { - content: ""; } - -.fa-caret-left:before { - content: ""; } - -.fa-caret-right:before { - content: ""; } - -.fa-columns:before { - content: ""; } - -.fa-unsorted:before, -.fa-sort:before { - content: ""; } - -.fa-sort-down:before, -.fa-sort-desc:before { - content: ""; } - -.fa-sort-up:before, -.fa-sort-asc:before { - content: ""; } - -.fa-envelope:before { - content: ""; } - -.fa-linkedin:before { - content: ""; } - -.fa-rotate-left:before, -.fa-undo:before { - content: ""; } - -.fa-legal:before, -.fa-gavel:before { - content: ""; } - -.fa-dashboard:before, -.fa-tachometer:before { - content: ""; } - -.fa-comment-o:before { - content: ""; } - -.fa-comments-o:before { - content: ""; } - -.fa-flash:before, -.fa-bolt:before { - content: ""; } - -.fa-sitemap:before { - content: ""; } - -.fa-umbrella:before { - content: ""; } - -.fa-paste:before, -.fa-clipboard:before { - content: ""; } - -.fa-lightbulb-o:before { - content: ""; } - -.fa-exchange:before { - content: ""; } - -.fa-cloud-download:before { - content: ""; } - -.fa-cloud-upload:before { - content: ""; } - -.fa-user-md:before { - content: ""; } - -.fa-stethoscope:before { - content: ""; } - -.fa-suitcase:before { - content: ""; } - -.fa-bell-o:before { - content: ""; } - -.fa-coffee:before { - content: ""; } - -.fa-cutlery:before { - content: ""; } - -.fa-file-text-o:before { - content: ""; } - -.fa-building-o:before { - content: ""; } - -.fa-hospital-o:before { - content: ""; } - -.fa-ambulance:before { - content: ""; } - -.fa-medkit:before { - content: ""; } - -.fa-fighter-jet:before { - content: ""; } - -.fa-beer:before { - content: ""; } - -.fa-h-square:before { - content: ""; } - -.fa-plus-square:before { - content: ""; } - -.fa-angle-double-left:before { - content: ""; } - -.fa-angle-double-right:before { - content: ""; } - -.fa-angle-double-up:before { - content: ""; } - -.fa-angle-double-down:before { - content: ""; } - -.fa-angle-left:before { - content: ""; } - -.fa-angle-right:before { - content: ""; } - -.fa-angle-up:before { - content: ""; } - -.fa-angle-down:before { - content: ""; } - -.fa-desktop:before { - content: ""; } - -.fa-laptop:before { - content: ""; } - -.fa-tablet:before { - content: ""; } - -.fa-mobile-phone:before, -.fa-mobile:before { - content: ""; } - -.fa-circle-o:before { - content: ""; } - -.fa-quote-left:before { - content: ""; } - -.fa-quote-right:before { - content: ""; } - -.fa-spinner:before { - content: ""; } - -.fa-circle:before { - content: ""; } - -.fa-mail-reply:before, -.fa-reply:before { - content: ""; } - -.fa-github-alt:before { - content: ""; } - -.fa-folder-o:before { - content: ""; } - -.fa-folder-open-o:before { - content: ""; } - -.fa-smile-o:before { - content: ""; } - -.fa-frown-o:before { - content: ""; } - -.fa-meh-o:before { - content: ""; } - -.fa-gamepad:before { - content: ""; } - -.fa-keyboard-o:before { - content: ""; } - -.fa-flag-o:before { - content: ""; } - -.fa-flag-checkered:before { - content: ""; } - -.fa-terminal:before { - content: ""; } - -.fa-code:before { - content: ""; } - -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: ""; } - -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: ""; } - -.fa-location-arrow:before { - content: ""; } - -.fa-crop:before { - content: ""; } - -.fa-code-fork:before { - content: ""; } - -.fa-unlink:before, -.fa-chain-broken:before { - content: ""; } - -.fa-question:before { - content: ""; } - -.fa-info:before { - content: ""; } - -.fa-exclamation:before { - content: ""; } - -.fa-superscript:before { - content: ""; } - -.fa-subscript:before { - content: ""; } - -.fa-eraser:before { - content: ""; } - -.fa-puzzle-piece:before { - content: ""; } - -.fa-microphone:before { - content: ""; } - -.fa-microphone-slash:before { - content: ""; } - -.fa-shield:before { - content: ""; } - -.fa-calendar-o:before { - content: ""; } - -.fa-fire-extinguisher:before { - content: ""; } - -.fa-rocket:before { - content: ""; } - -.fa-maxcdn:before { - content: ""; } - -.fa-chevron-circle-left:before { - content: ""; } - -.fa-chevron-circle-right:before { - content: ""; } - -.fa-chevron-circle-up:before { - content: ""; } - -.fa-chevron-circle-down:before { - content: ""; } - -.fa-html5:before { - content: ""; } - -.fa-css3:before { - content: ""; } - -.fa-anchor:before { - content: ""; } - -.fa-unlock-alt:before { - content: ""; } - -.fa-bullseye:before { - content: ""; } - -.fa-ellipsis-h:before { - content: ""; } - -.fa-ellipsis-v:before { - content: ""; } - -.fa-rss-square:before { - content: ""; } - -.fa-play-circle:before { - content: ""; } - -.fa-ticket:before { - content: ""; } - -.fa-minus-square:before { - content: ""; } - -.fa-minus-square-o:before { - content: ""; } - -.fa-level-up:before { - content: ""; } - -.fa-level-down:before { - content: ""; } - -.fa-check-square:before { - content: ""; } - -.fa-pencil-square:before { - content: ""; } - -.fa-external-link-square:before { - content: ""; } - -.fa-share-square:before { - content: ""; } - -.fa-compass:before { - content: ""; } - -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: ""; } - -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: ""; } - -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: ""; } - -.fa-euro:before, -.fa-eur:before { - content: ""; } - -.fa-gbp:before { - content: ""; } - -.fa-dollar:before, -.fa-usd:before { - content: ""; } - -.fa-rupee:before, -.fa-inr:before { - content: ""; } - -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: ""; } - -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: ""; } - -.fa-won:before, -.fa-krw:before { - content: ""; } - -.fa-bitcoin:before, -.fa-btc:before { - content: ""; } - -.fa-file:before { - content: ""; } - -.fa-file-text:before { - content: ""; } - -.fa-sort-alpha-asc:before { - content: ""; } - -.fa-sort-alpha-desc:before { - content: ""; } - -.fa-sort-amount-asc:before { - content: ""; } - -.fa-sort-amount-desc:before { - content: ""; } - -.fa-sort-numeric-asc:before { - content: ""; } - -.fa-sort-numeric-desc:before { - content: ""; } - -.fa-thumbs-up:before { - content: ""; } - -.fa-thumbs-down:before { - content: ""; } - -.fa-youtube-square:before { - content: ""; } - -.fa-youtube:before { - content: ""; } - -.fa-xing:before { - content: ""; } - -.fa-xing-square:before { - content: ""; } - -.fa-youtube-play:before { - content: ""; } - -.fa-dropbox:before { - content: ""; } - -.fa-stack-overflow:before { - content: ""; } - -.fa-instagram:before { - content: ""; } - -.fa-flickr:before { - content: ""; } - -.fa-adn:before { - content: ""; } - -.fa-bitbucket:before { - content: ""; } - -.fa-bitbucket-square:before { - content: ""; } - -.fa-tumblr:before { - content: ""; } - -.fa-tumblr-square:before { - content: ""; } - -.fa-long-arrow-down:before { - content: ""; } - -.fa-long-arrow-up:before { - content: ""; } - -.fa-long-arrow-left:before { - content: ""; } - -.fa-long-arrow-right:before { - content: ""; } - -.fa-apple:before { - content: ""; } - -.fa-windows:before { - content: ""; } - -.fa-android:before { - content: ""; } - -.fa-linux:before { - content: ""; } - -.fa-dribbble:before { - content: ""; } - -.fa-skype:before { - content: ""; } - -.fa-foursquare:before { - content: ""; } - -.fa-trello:before { - content: ""; } - -.fa-female:before { - content: ""; } - -.fa-male:before { - content: ""; } - -.fa-gittip:before { - content: ""; } - -.fa-sun-o:before { - content: ""; } - -.fa-moon-o:before { - content: ""; } - -.fa-archive:before { - content: ""; } - -.fa-bug:before { - content: ""; } - -.fa-vk:before { - content: ""; } - -.fa-weibo:before { - content: ""; } - -.fa-renren:before { - content: ""; } - -.fa-pagelines:before { - content: ""; } - -.fa-stack-exchange:before { - content: ""; } - -.fa-arrow-circle-o-right:before { - content: ""; } - -.fa-arrow-circle-o-left:before { - content: ""; } - -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: ""; } - -.fa-dot-circle-o:before { - content: ""; } - -.fa-wheelchair:before { - content: ""; } - -.fa-vimeo-square:before { - content: ""; } - -.fa-turkish-lira:before, -.fa-try:before { - content: ""; } - -.fa-plus-square-o:before { - content: ""; } - -.fa-space-shuttle:before { - content: ""; } - -.fa-slack:before { - content: ""; } - -.fa-envelope-square:before { - content: ""; } - -.fa-wordpress:before { - content: ""; } - -.fa-openid:before { - content: ""; } - -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: ""; } - -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: ""; } - -.fa-yahoo:before { - content: ""; } - -.fa-google:before { - content: ""; } - -.fa-reddit:before { - content: ""; } - -.fa-reddit-square:before { - content: ""; } - -.fa-stumbleupon-circle:before { - content: ""; } - -.fa-stumbleupon:before { - content: ""; } - -.fa-delicious:before { - content: ""; } - -.fa-digg:before { - content: ""; } - -.fa-pied-piper-square:before, -.fa-pied-piper:before { - content: ""; } - -.fa-pied-piper-alt:before { - content: ""; } - -.fa-drupal:before { - content: ""; } - -.fa-joomla:before { - content: ""; } - -.fa-language:before { - content: ""; } - -.fa-fax:before { - content: ""; } - -.fa-building:before { - content: ""; } - -.fa-child:before { - content: ""; } - -.fa-paw:before { - content: ""; } - -.fa-spoon:before { - content: ""; } - -.fa-cube:before { - content: ""; } - -.fa-cubes:before { - content: ""; } - -.fa-behance:before { - content: ""; } - -.fa-behance-square:before { - content: ""; } - -.fa-steam:before { - content: ""; } - -.fa-steam-square:before { - content: ""; } - -.fa-recycle:before { - content: ""; } - -.fa-automobile:before, -.fa-car:before { - content: ""; } - -.fa-cab:before, -.fa-taxi:before { - content: ""; } - -.fa-tree:before { - content: ""; } - -.fa-spotify:before { - content: ""; } - -.fa-deviantart:before { - content: ""; } - -.fa-soundcloud:before { - content: ""; } - -.fa-database:before { - content: ""; } - -.fa-file-pdf-o:before { - content: ""; } - -.fa-file-word-o:before { - content: ""; } - -.fa-file-excel-o:before { - content: ""; } - -.fa-file-powerpoint-o:before { - content: ""; } - -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: ""; } - -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: ""; } - -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: ""; } - -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: ""; } - -.fa-file-code-o:before { - content: ""; } - -.fa-vine:before { - content: ""; } - -.fa-codepen:before { - content: ""; } - -.fa-jsfiddle:before { - content: ""; } - -.fa-life-bouy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: ""; } - -.fa-circle-o-notch:before { - content: ""; } - -.fa-ra:before, -.fa-rebel:before { - content: ""; } - -.fa-ge:before, -.fa-empire:before { - content: ""; } - -.fa-git-square:before { - content: ""; } - -.fa-git:before { - content: ""; } - -.fa-hacker-news:before { - content: ""; } - -.fa-tencent-weibo:before { - content: ""; } - -.fa-qq:before { - content: ""; } - -.fa-wechat:before, -.fa-weixin:before { - content: ""; } - -.fa-send:before, -.fa-paper-plane:before { - content: ""; } - -.fa-send-o:before, -.fa-paper-plane-o:before { - content: ""; } - -.fa-history:before { - content: ""; } - -.fa-circle-thin:before { - content: ""; } - -.fa-header:before { - content: ""; } - -.fa-paragraph:before { - content: ""; } - -.fa-sliders:before { - content: ""; } - -.fa-share-alt:before { - content: ""; } - -.fa-share-alt-square:before { - content: ""; } - -.fa-bomb:before { - content: ""; } - -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; } - -body { - margin: 0; } - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; } - -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; } - -audio:not([controls]) { - display: none; - height: 0; } - -[hidden], -template { - display: none; } - -a { - background-color: transparent; } - -a:active, -a:hover { - outline: 0; } - -abbr[title] { - border-bottom: 1px dotted; } - -b, -strong { - font-weight: bold; } - -dfn { - font-style: italic; } - -h1 { - font-size: 2em; - margin: 0.67em 0; } - -mark { - background: #ff0; - color: #000; } - -small { - font-size: 80%; } - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; } - -sup { - top: -0.5em; } - -sub { - bottom: -0.25em; } - -img { - border: 0; } - -svg:not(:root) { - overflow: hidden; } - -figure { - margin: 1em 40px; } - -hr { - box-sizing: content-box; - height: 0; } - -pre { - overflow: auto; } - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; } - -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; } - -button { - overflow: visible; } - -button, -select { - text-transform: none; } - -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; } - -button[disabled], -html input[disabled] { - cursor: default; } - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; } - -input { - line-height: normal; } - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; - padding: 0; } - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; } - -input[type="search"] { - -webkit-appearance: textfield; - box-sizing: content-box; } - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; } - -legend { - border: 0; - padding: 0; } - -textarea { - overflow: auto; } - -optgroup { - font-weight: bold; } - -table { - border-collapse: collapse; - border-spacing: 0; } - -td, -th { - padding: 0; } - -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - background: transparent !important; - color: #000 !important; - box-shadow: none !important; - text-shadow: none !important; } - a, - a:visited { - text-decoration: underline; } - a[href]:after { - content: " (" attr(href) ")"; } - abbr[title]:after { - content: " (" attr(title) ")"; } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; } - thead { - display: table-header-group; } - tr, - img { - page-break-inside: avoid; } - img { - max-width: 100% !important; } - p, - h2, - h3 { - orphans: 3; - widows: 3; } - h2, - h3 { - page-break-after: avoid; } - .navbar { - display: none; } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; } - .label { - border: 1px solid #000; } - .table { - border-collapse: collapse !important; } - .table td, - .table th { - background-color: #fff !important; } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; } } - -@font-face { - font-family: 'Glyphicons Halflings'; - src: url("../fonts/bootstrap/glyphicons-halflings-regular.eot"); - src: url("../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"), url("../fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); } - -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } - -.glyphicon-asterisk:before { - content: "\002a"; } - -.glyphicon-plus:before { - content: "\002b"; } - -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; } - -.glyphicon-minus:before { - content: "\2212"; } - -.glyphicon-cloud:before { - content: "\2601"; } - -.glyphicon-envelope:before { - content: "\2709"; } - -.glyphicon-pencil:before { - content: "\270f"; } - -.glyphicon-glass:before { - content: "\e001"; } - -.glyphicon-music:before { - content: "\e002"; } - -.glyphicon-search:before { - content: "\e003"; } - -.glyphicon-heart:before { - content: "\e005"; } - -.glyphicon-star:before { - content: "\e006"; } - -.glyphicon-star-empty:before { - content: "\e007"; } - -.glyphicon-user:before { - content: "\e008"; } - -.glyphicon-film:before { - content: "\e009"; } - -.glyphicon-th-large:before { - content: "\e010"; } - -.glyphicon-th:before { - content: "\e011"; } - -.glyphicon-th-list:before { - content: "\e012"; } - -.glyphicon-ok:before { - content: "\e013"; } - -.glyphicon-remove:before { - content: "\e014"; } - -.glyphicon-zoom-in:before { - content: "\e015"; } - -.glyphicon-zoom-out:before { - content: "\e016"; } - -.glyphicon-off:before { - content: "\e017"; } - -.glyphicon-signal:before { - content: "\e018"; } - -.glyphicon-cog:before { - content: "\e019"; } - -.glyphicon-trash:before { - content: "\e020"; } - -.glyphicon-home:before { - content: "\e021"; } - -.glyphicon-file:before { - content: "\e022"; } - -.glyphicon-time:before { - content: "\e023"; } - -.glyphicon-road:before { - content: "\e024"; } - -.glyphicon-download-alt:before { - content: "\e025"; } - -.glyphicon-download:before { - content: "\e026"; } - -.glyphicon-upload:before { - content: "\e027"; } - -.glyphicon-inbox:before { - content: "\e028"; } - -.glyphicon-play-circle:before { - content: "\e029"; } - -.glyphicon-repeat:before { - content: "\e030"; } - -.glyphicon-refresh:before { - content: "\e031"; } - -.glyphicon-list-alt:before { - content: "\e032"; } - -.glyphicon-lock:before { - content: "\e033"; } - -.glyphicon-flag:before { - content: "\e034"; } - -.glyphicon-headphones:before { - content: "\e035"; } - -.glyphicon-volume-off:before { - content: "\e036"; } - -.glyphicon-volume-down:before { - content: "\e037"; } - -.glyphicon-volume-up:before { - content: "\e038"; } - -.glyphicon-qrcode:before { - content: "\e039"; } - -.glyphicon-barcode:before { - content: "\e040"; } - -.glyphicon-tag:before { - content: "\e041"; } - -.glyphicon-tags:before { - content: "\e042"; } - -.glyphicon-book:before { - content: "\e043"; } - -.glyphicon-bookmark:before { - content: "\e044"; } - -.glyphicon-print:before { - content: "\e045"; } - -.glyphicon-camera:before { - content: "\e046"; } - -.glyphicon-font:before { - content: "\e047"; } - -.glyphicon-bold:before { - content: "\e048"; } - -.glyphicon-italic:before { - content: "\e049"; } - -.glyphicon-text-height:before { - content: "\e050"; } - -.glyphicon-text-width:before { - content: "\e051"; } - -.glyphicon-align-left:before { - content: "\e052"; } - -.glyphicon-align-center:before { - content: "\e053"; } - -.glyphicon-align-right:before { - content: "\e054"; } - -.glyphicon-align-justify:before { - content: "\e055"; } - -.glyphicon-list:before { - content: "\e056"; } - -.glyphicon-indent-left:before { - content: "\e057"; } - -.glyphicon-indent-right:before { - content: "\e058"; } - -.glyphicon-facetime-video:before { - content: "\e059"; } - -.glyphicon-picture:before { - content: "\e060"; } - -.glyphicon-map-marker:before { - content: "\e062"; } - -.glyphicon-adjust:before { - content: "\e063"; } - -.glyphicon-tint:before { - content: "\e064"; } - -.glyphicon-edit:before { - content: "\e065"; } - -.glyphicon-share:before { - content: "\e066"; } - -.glyphicon-check:before { - content: "\e067"; } - -.glyphicon-move:before { - content: "\e068"; } - -.glyphicon-step-backward:before { - content: "\e069"; } - -.glyphicon-fast-backward:before { - content: "\e070"; } - -.glyphicon-backward:before { - content: "\e071"; } - -.glyphicon-play:before { - content: "\e072"; } - -.glyphicon-pause:before { - content: "\e073"; } - -.glyphicon-stop:before { - content: "\e074"; } - -.glyphicon-forward:before { - content: "\e075"; } - -.glyphicon-fast-forward:before { - content: "\e076"; } - -.glyphicon-step-forward:before { - content: "\e077"; } - -.glyphicon-eject:before { - content: "\e078"; } - -.glyphicon-chevron-left:before { - content: "\e079"; } - -.glyphicon-chevron-right:before { - content: "\e080"; } - -.glyphicon-plus-sign:before { - content: "\e081"; } - -.glyphicon-minus-sign:before { - content: "\e082"; } - -.glyphicon-remove-sign:before { - content: "\e083"; } - -.glyphicon-ok-sign:before { - content: "\e084"; } - -.glyphicon-question-sign:before { - content: "\e085"; } - -.glyphicon-info-sign:before { - content: "\e086"; } - -.glyphicon-screenshot:before { - content: "\e087"; } - -.glyphicon-remove-circle:before { - content: "\e088"; } - -.glyphicon-ok-circle:before { - content: "\e089"; } - -.glyphicon-ban-circle:before { - content: "\e090"; } - -.glyphicon-arrow-left:before { - content: "\e091"; } - -.glyphicon-arrow-right:before { - content: "\e092"; } - -.glyphicon-arrow-up:before { - content: "\e093"; } - -.glyphicon-arrow-down:before { - content: "\e094"; } - -.glyphicon-share-alt:before { - content: "\e095"; } - -.glyphicon-resize-full:before { - content: "\e096"; } - -.glyphicon-resize-small:before { - content: "\e097"; } - -.glyphicon-exclamation-sign:before { - content: "\e101"; } - -.glyphicon-gift:before { - content: "\e102"; } - -.glyphicon-leaf:before { - content: "\e103"; } - -.glyphicon-fire:before { - content: "\e104"; } - -.glyphicon-eye-open:before { - content: "\e105"; } - -.glyphicon-eye-close:before { - content: "\e106"; } - -.glyphicon-warning-sign:before { - content: "\e107"; } - -.glyphicon-plane:before { - content: "\e108"; } - -.glyphicon-calendar:before { - content: "\e109"; } - -.glyphicon-random:before { - content: "\e110"; } - -.glyphicon-comment:before { - content: "\e111"; } - -.glyphicon-magnet:before { - content: "\e112"; } - -.glyphicon-chevron-up:before { - content: "\e113"; } - -.glyphicon-chevron-down:before { - content: "\e114"; } - -.glyphicon-retweet:before { - content: "\e115"; } - -.glyphicon-shopping-cart:before { - content: "\e116"; } - -.glyphicon-folder-close:before { - content: "\e117"; } - -.glyphicon-folder-open:before { - content: "\e118"; } - -.glyphicon-resize-vertical:before { - content: "\e119"; } - -.glyphicon-resize-horizontal:before { - content: "\e120"; } - -.glyphicon-hdd:before { - content: "\e121"; } - -.glyphicon-bullhorn:before { - content: "\e122"; } - -.glyphicon-bell:before { - content: "\e123"; } - -.glyphicon-certificate:before { - content: "\e124"; } - -.glyphicon-thumbs-up:before { - content: "\e125"; } - -.glyphicon-thumbs-down:before { - content: "\e126"; } - -.glyphicon-hand-right:before { - content: "\e127"; } - -.glyphicon-hand-left:before { - content: "\e128"; } - -.glyphicon-hand-up:before { - content: "\e129"; } - -.glyphicon-hand-down:before { - content: "\e130"; } - -.glyphicon-circle-arrow-right:before { - content: "\e131"; } - -.glyphicon-circle-arrow-left:before { - content: "\e132"; } - -.glyphicon-circle-arrow-up:before { - content: "\e133"; } - -.glyphicon-circle-arrow-down:before { - content: "\e134"; } - -.glyphicon-globe:before { - content: "\e135"; } - -.glyphicon-wrench:before { - content: "\e136"; } - -.glyphicon-tasks:before { - content: "\e137"; } - -.glyphicon-filter:before { - content: "\e138"; } - -.glyphicon-briefcase:before { - content: "\e139"; } - -.glyphicon-fullscreen:before { - content: "\e140"; } - -.glyphicon-dashboard:before { - content: "\e141"; } - -.glyphicon-paperclip:before { - content: "\e142"; } - -.glyphicon-heart-empty:before { - content: "\e143"; } - -.glyphicon-link:before { - content: "\e144"; } - -.glyphicon-phone:before { - content: "\e145"; } - -.glyphicon-pushpin:before { - content: "\e146"; } - -.glyphicon-usd:before { - content: "\e148"; } - -.glyphicon-gbp:before { - content: "\e149"; } - -.glyphicon-sort:before { - content: "\e150"; } - -.glyphicon-sort-by-alphabet:before { - content: "\e151"; } - -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; } - -.glyphicon-sort-by-order:before { - content: "\e153"; } - -.glyphicon-sort-by-order-alt:before { - content: "\e154"; } - -.glyphicon-sort-by-attributes:before { - content: "\e155"; } - -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; } - -.glyphicon-unchecked:before { - content: "\e157"; } - -.glyphicon-expand:before { - content: "\e158"; } - -.glyphicon-collapse-down:before { - content: "\e159"; } - -.glyphicon-collapse-up:before { - content: "\e160"; } - -.glyphicon-log-in:before { - content: "\e161"; } - -.glyphicon-flash:before { - content: "\e162"; } - -.glyphicon-log-out:before { - content: "\e163"; } - -.glyphicon-new-window:before { - content: "\e164"; } - -.glyphicon-record:before { - content: "\e165"; } - -.glyphicon-save:before { - content: "\e166"; } - -.glyphicon-open:before { - content: "\e167"; } - -.glyphicon-saved:before { - content: "\e168"; } - -.glyphicon-import:before { - content: "\e169"; } - -.glyphicon-export:before { - content: "\e170"; } - -.glyphicon-send:before { - content: "\e171"; } - -.glyphicon-floppy-disk:before { - content: "\e172"; } - -.glyphicon-floppy-saved:before { - content: "\e173"; } - -.glyphicon-floppy-remove:before { - content: "\e174"; } - -.glyphicon-floppy-save:before { - content: "\e175"; } - -.glyphicon-floppy-open:before { - content: "\e176"; } - -.glyphicon-credit-card:before { - content: "\e177"; } - -.glyphicon-transfer:before { - content: "\e178"; } - -.glyphicon-cutlery:before { - content: "\e179"; } - -.glyphicon-header:before { - content: "\e180"; } - -.glyphicon-compressed:before { - content: "\e181"; } - -.glyphicon-earphone:before { - content: "\e182"; } - -.glyphicon-phone-alt:before { - content: "\e183"; } - -.glyphicon-tower:before { - content: "\e184"; } - -.glyphicon-stats:before { - content: "\e185"; } - -.glyphicon-sd-video:before { - content: "\e186"; } - -.glyphicon-hd-video:before { - content: "\e187"; } - -.glyphicon-subtitles:before { - content: "\e188"; } - -.glyphicon-sound-stereo:before { - content: "\e189"; } - -.glyphicon-sound-dolby:before { - content: "\e190"; } - -.glyphicon-sound-5-1:before { - content: "\e191"; } - -.glyphicon-sound-6-1:before { - content: "\e192"; } - -.glyphicon-sound-7-1:before { - content: "\e193"; } - -.glyphicon-copyright-mark:before { - content: "\e194"; } - -.glyphicon-registration-mark:before { - content: "\e195"; } - -.glyphicon-cloud-download:before { - content: "\e197"; } - -.glyphicon-cloud-upload:before { - content: "\e198"; } - -.glyphicon-tree-conifer:before { - content: "\e199"; } - -.glyphicon-tree-deciduous:before { - content: "\e200"; } - -.glyphicon-cd:before { - content: "\e201"; } - -.glyphicon-save-file:before { - content: "\e202"; } - -.glyphicon-open-file:before { - content: "\e203"; } - -.glyphicon-level-up:before { - content: "\e204"; } - -.glyphicon-copy:before { - content: "\e205"; } - -.glyphicon-paste:before { - content: "\e206"; } - -.glyphicon-alert:before { - content: "\e209"; } - -.glyphicon-equalizer:before { - content: "\e210"; } - -.glyphicon-king:before { - content: "\e211"; } - -.glyphicon-queen:before { - content: "\e212"; } - -.glyphicon-pawn:before { - content: "\e213"; } - -.glyphicon-bishop:before { - content: "\e214"; } - -.glyphicon-knight:before { - content: "\e215"; } - -.glyphicon-baby-formula:before { - content: "\e216"; } - -.glyphicon-tent:before { - content: "\26fa"; } - -.glyphicon-blackboard:before { - content: "\e218"; } - -.glyphicon-bed:before { - content: "\e219"; } - -.glyphicon-apple:before { - content: "\f8ff"; } - -.glyphicon-erase:before { - content: "\e221"; } - -.glyphicon-hourglass:before { - content: "\231b"; } - -.glyphicon-lamp:before { - content: "\e223"; } - -.glyphicon-duplicate:before { - content: "\e224"; } - -.glyphicon-piggy-bank:before { - content: "\e225"; } - -.glyphicon-scissors:before { - content: "\e226"; } - -.glyphicon-bitcoin:before { - content: "\e227"; } - -.glyphicon-btc:before { - content: "\e227"; } - -.glyphicon-xbt:before { - content: "\e227"; } - -.glyphicon-yen:before { - content: "\00a5"; } - -.glyphicon-jpy:before { - content: "\00a5"; } - -.glyphicon-ruble:before { - content: "\20bd"; } - -.glyphicon-rub:before { - content: "\20bd"; } - -.glyphicon-scale:before { - content: "\e230"; } - -.glyphicon-ice-lolly:before { - content: "\e231"; } - -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; } - -.glyphicon-education:before { - content: "\e233"; } - -.glyphicon-option-horizontal:before { - content: "\e234"; } - -.glyphicon-option-vertical:before { - content: "\e235"; } - -.glyphicon-menu-hamburger:before { - content: "\e236"; } - -.glyphicon-modal-window:before { - content: "\e237"; } - -.glyphicon-oil:before { - content: "\e238"; } - -.glyphicon-grain:before { - content: "\e239"; } - -.glyphicon-sunglasses:before { - content: "\e240"; } - -.glyphicon-text-size:before { - content: "\e241"; } - -.glyphicon-text-color:before { - content: "\e242"; } - -.glyphicon-text-background:before { - content: "\e243"; } - -.glyphicon-object-align-top:before { - content: "\e244"; } - -.glyphicon-object-align-bottom:before { - content: "\e245"; } - -.glyphicon-object-align-horizontal:before { - content: "\e246"; } - -.glyphicon-object-align-left:before { - content: "\e247"; } - -.glyphicon-object-align-vertical:before { - content: "\e248"; } - -.glyphicon-object-align-right:before { - content: "\e249"; } - -.glyphicon-triangle-right:before { - content: "\e250"; } - -.glyphicon-triangle-left:before { - content: "\e251"; } - -.glyphicon-triangle-bottom:before { - content: "\e252"; } - -.glyphicon-triangle-top:before { - content: "\e253"; } - -.glyphicon-console:before { - content: "\e254"; } - -.glyphicon-superscript:before { - content: "\e255"; } - -.glyphicon-subscript:before { - content: "\e256"; } - -.glyphicon-menu-left:before { - content: "\e257"; } - -.glyphicon-menu-right:before { - content: "\e258"; } - -.glyphicon-menu-down:before { - content: "\e259"; } - -.glyphicon-menu-up:before { - content: "\e260"; } - -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } - -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } - -html { - font-size: 10px; - -webkit-tap-highlight-color: transparent; } - -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857; - color: #333333; - background-color: #fff; } - -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; } - -a { - color: #337ab7; - text-decoration: none; } - a:hover, a:focus { - color: #23527c; - text-decoration: underline; } - a:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; } - -figure { - margin: 0; } - -img { - vertical-align: middle; } - -.img-responsive { - display: block; - max-width: 100%; - height: auto; } - -.img-rounded { - border-radius: 6px; } - -.img-thumbnail { - padding: 4px; - line-height: 1.42857; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; } - -.img-circle { - border-radius: 50%; } - -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eeeeee; } - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; } - -.sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; } - -[role="button"] { - cursor: pointer; } - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; } - h1 small, - h1 .small, h2 small, - h2 .small, h3 small, - h3 .small, h4 small, - h4 .small, h5 small, - h5 .small, h6 small, - h6 .small, - .h1 small, - .h1 .small, .h2 small, - .h2 .small, .h3 small, - .h3 .small, .h4 small, - .h4 .small, .h5 small, - .h5 .small, .h6 small, - .h6 .small { - font-weight: normal; - line-height: 1; - color: #777777; } - -h1, .h1, -h2, .h2, -h3, .h3 { - margin-top: 20px; - margin-bottom: 10px; } - h1 small, - h1 .small, .h1 small, - .h1 .small, - h2 small, - h2 .small, .h2 small, - .h2 .small, - h3 small, - h3 .small, .h3 small, - .h3 .small { - font-size: 65%; } - -h4, .h4, -h5, .h5, -h6, .h6 { - margin-top: 10px; - margin-bottom: 10px; } - h4 small, - h4 .small, .h4 small, - .h4 .small, - h5 small, - h5 .small, .h5 small, - .h5 .small, - h6 small, - h6 .small, .h6 small, - .h6 .small { - font-size: 75%; } - -h1, .h1 { - font-size: 36px; } - -h2, .h2 { - font-size: 30px; } - -h3, .h3 { - font-size: 24px; } - -h4, .h4 { - font-size: 18px; } - -h5, .h5 { - font-size: 14px; } - -h6, .h6 { - font-size: 12px; } - -p { - margin: 0 0 10px; } - -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; } - @media (min-width: 768px) { - .lead { - font-size: 21px; } } - -small, -.small { - font-size: 85%; } - -mark, -.mark { - background-color: #fcf8e3; - padding: .2em; } - -.text-left { - text-align: left; } - -.text-right { - text-align: right; } - -.text-center { - text-align: center; } - -.text-justify { - text-align: justify; } - -.text-nowrap { - white-space: nowrap; } - -.text-lowercase { - text-transform: lowercase; } - -.text-uppercase, .initialism { - text-transform: uppercase; } - -.text-capitalize { - text-transform: capitalize; } - -.text-muted { - color: #777777; } - -.text-primary { - color: #337ab7; } - -a.text-primary:hover, -a.text-primary:focus { - color: #286090; } - -.text-success { - color: #3c763d; } - -a.text-success:hover, -a.text-success:focus { - color: #2b542c; } - -.text-info { - color: #31708f; } - -a.text-info:hover, -a.text-info:focus { - color: #245269; } - -.text-warning { - color: #8a6d3b; } - -a.text-warning:hover, -a.text-warning:focus { - color: #66512c; } - -.text-danger { - color: #a94442; } - -a.text-danger:hover, -a.text-danger:focus { - color: #843534; } - -.bg-primary { - color: #fff; } - -.bg-primary { - background-color: #337ab7; } - -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #286090; } - -.bg-success { - background-color: #dff0d8; } - -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; } - -.bg-info { - background-color: #d9edf7; } - -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; } - -.bg-warning { - background-color: #fcf8e3; } - -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; } - -.bg-danger { - background-color: #f2dede; } - -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; } - -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eeeeee; } - -ul, -ol { - margin-top: 0; - margin-bottom: 10px; } - ul ul, - ul ol, - ol ul, - ol ol { - margin-bottom: 0; } - -.list-unstyled { - padding-left: 0; - list-style: none; } - -.list-inline { - padding-left: 0; - list-style: none; - margin-left: -5px; } - .list-inline > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; } - -dl { - margin-top: 0; - margin-bottom: 20px; } - -dt, -dd { - line-height: 1.42857; } - -dt { - font-weight: bold; } - -dd { - margin-left: 0; } - -.dl-horizontal dd:before, .dl-horizontal dd:after { - content: " "; - display: table; } - -.dl-horizontal dd:after { - clear: both; } - -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - .dl-horizontal dd { - margin-left: 180px; } } - -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777777; } - -.initialism { - font-size: 90%; } - -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eeeeee; } - blockquote p:last-child, - blockquote ul:last-child, - blockquote ol:last-child { - margin-bottom: 0; } - blockquote footer, - blockquote small, - blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857; - color: #777777; } - blockquote footer:before, - blockquote small:before, - blockquote .small:before { - content: '\2014 \00A0'; } - -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eeeeee; - border-left: 0; - text-align: right; } - .blockquote-reverse footer:before, - .blockquote-reverse small:before, - .blockquote-reverse .small:before, - blockquote.pull-right footer:before, - blockquote.pull-right small:before, - blockquote.pull-right .small:before { - content: ''; } - .blockquote-reverse footer:after, - .blockquote-reverse small:after, - .blockquote-reverse .small:after, - blockquote.pull-right footer:after, - blockquote.pull-right small:after, - blockquote.pull-right .small:after { - content: '\00A0 \2014'; } - -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857; } - -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } - -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; } - -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); } - kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - box-shadow: none; } - -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857; - word-break: break-all; - word-wrap: break-word; - color: #333333; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; } - pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; } - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; } - -.container { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; } - .container:before, .container:after { - content: " "; - display: table; } - .container:after { - clear: both; } - @media (min-width: 768px) { - .container { - width: 750px; } } - @media (min-width: 992px) { - .container { - width: 970px; } } - @media (min-width: 1200px) { - .container { - width: 1170px; } } - -.container-fluid { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; } - .container-fluid:before, .container-fluid:after { - content: " "; - display: table; } - .container-fluid:after { - clear: both; } - -.row { - margin-left: -15px; - margin-right: -15px; } - .row:before, .row:after { - content: " "; - display: table; } - .row:after { - clear: both; } - -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; } - -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; } - -.col-xs-1 { - width: 8.33333%; } - -.col-xs-2 { - width: 16.66667%; } - -.col-xs-3 { - width: 25%; } - -.col-xs-4 { - width: 33.33333%; } - -.col-xs-5 { - width: 41.66667%; } - -.col-xs-6 { - width: 50%; } - -.col-xs-7 { - width: 58.33333%; } - -.col-xs-8 { - width: 66.66667%; } - -.col-xs-9 { - width: 75%; } - -.col-xs-10 { - width: 83.33333%; } - -.col-xs-11 { - width: 91.66667%; } - -.col-xs-12 { - width: 100%; } - -.col-xs-pull-0 { - right: auto; } - -.col-xs-pull-1 { - right: 8.33333%; } - -.col-xs-pull-2 { - right: 16.66667%; } - -.col-xs-pull-3 { - right: 25%; } - -.col-xs-pull-4 { - right: 33.33333%; } - -.col-xs-pull-5 { - right: 41.66667%; } - -.col-xs-pull-6 { - right: 50%; } - -.col-xs-pull-7 { - right: 58.33333%; } - -.col-xs-pull-8 { - right: 66.66667%; } - -.col-xs-pull-9 { - right: 75%; } - -.col-xs-pull-10 { - right: 83.33333%; } - -.col-xs-pull-11 { - right: 91.66667%; } - -.col-xs-pull-12 { - right: 100%; } - -.col-xs-push-0 { - left: auto; } - -.col-xs-push-1 { - left: 8.33333%; } - -.col-xs-push-2 { - left: 16.66667%; } - -.col-xs-push-3 { - left: 25%; } - -.col-xs-push-4 { - left: 33.33333%; } - -.col-xs-push-5 { - left: 41.66667%; } - -.col-xs-push-6 { - left: 50%; } - -.col-xs-push-7 { - left: 58.33333%; } - -.col-xs-push-8 { - left: 66.66667%; } - -.col-xs-push-9 { - left: 75%; } - -.col-xs-push-10 { - left: 83.33333%; } - -.col-xs-push-11 { - left: 91.66667%; } - -.col-xs-push-12 { - left: 100%; } - -.col-xs-offset-0 { - margin-left: 0%; } - -.col-xs-offset-1 { - margin-left: 8.33333%; } - -.col-xs-offset-2 { - margin-left: 16.66667%; } - -.col-xs-offset-3 { - margin-left: 25%; } - -.col-xs-offset-4 { - margin-left: 33.33333%; } - -.col-xs-offset-5 { - margin-left: 41.66667%; } - -.col-xs-offset-6 { - margin-left: 50%; } - -.col-xs-offset-7 { - margin-left: 58.33333%; } - -.col-xs-offset-8 { - margin-left: 66.66667%; } - -.col-xs-offset-9 { - margin-left: 75%; } - -.col-xs-offset-10 { - margin-left: 83.33333%; } - -.col-xs-offset-11 { - margin-left: 91.66667%; } - -.col-xs-offset-12 { - margin-left: 100%; } - -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; } - .col-sm-1 { - width: 8.33333%; } - .col-sm-2 { - width: 16.66667%; } - .col-sm-3 { - width: 25%; } - .col-sm-4 { - width: 33.33333%; } - .col-sm-5 { - width: 41.66667%; } - .col-sm-6 { - width: 50%; } - .col-sm-7 { - width: 58.33333%; } - .col-sm-8 { - width: 66.66667%; } - .col-sm-9 { - width: 75%; } - .col-sm-10 { - width: 83.33333%; } - .col-sm-11 { - width: 91.66667%; } - .col-sm-12 { - width: 100%; } - .col-sm-pull-0 { - right: auto; } - .col-sm-pull-1 { - right: 8.33333%; } - .col-sm-pull-2 { - right: 16.66667%; } - .col-sm-pull-3 { - right: 25%; } - .col-sm-pull-4 { - right: 33.33333%; } - .col-sm-pull-5 { - right: 41.66667%; } - .col-sm-pull-6 { - right: 50%; } - .col-sm-pull-7 { - right: 58.33333%; } - .col-sm-pull-8 { - right: 66.66667%; } - .col-sm-pull-9 { - right: 75%; } - .col-sm-pull-10 { - right: 83.33333%; } - .col-sm-pull-11 { - right: 91.66667%; } - .col-sm-pull-12 { - right: 100%; } - .col-sm-push-0 { - left: auto; } - .col-sm-push-1 { - left: 8.33333%; } - .col-sm-push-2 { - left: 16.66667%; } - .col-sm-push-3 { - left: 25%; } - .col-sm-push-4 { - left: 33.33333%; } - .col-sm-push-5 { - left: 41.66667%; } - .col-sm-push-6 { - left: 50%; } - .col-sm-push-7 { - left: 58.33333%; } - .col-sm-push-8 { - left: 66.66667%; } - .col-sm-push-9 { - left: 75%; } - .col-sm-push-10 { - left: 83.33333%; } - .col-sm-push-11 { - left: 91.66667%; } - .col-sm-push-12 { - left: 100%; } - .col-sm-offset-0 { - margin-left: 0%; } - .col-sm-offset-1 { - margin-left: 8.33333%; } - .col-sm-offset-2 { - margin-left: 16.66667%; } - .col-sm-offset-3 { - margin-left: 25%; } - .col-sm-offset-4 { - margin-left: 33.33333%; } - .col-sm-offset-5 { - margin-left: 41.66667%; } - .col-sm-offset-6 { - margin-left: 50%; } - .col-sm-offset-7 { - margin-left: 58.33333%; } - .col-sm-offset-8 { - margin-left: 66.66667%; } - .col-sm-offset-9 { - margin-left: 75%; } - .col-sm-offset-10 { - margin-left: 83.33333%; } - .col-sm-offset-11 { - margin-left: 91.66667%; } - .col-sm-offset-12 { - margin-left: 100%; } } - -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; } - .col-md-1 { - width: 8.33333%; } - .col-md-2 { - width: 16.66667%; } - .col-md-3 { - width: 25%; } - .col-md-4 { - width: 33.33333%; } - .col-md-5 { - width: 41.66667%; } - .col-md-6 { - width: 50%; } - .col-md-7 { - width: 58.33333%; } - .col-md-8 { - width: 66.66667%; } - .col-md-9 { - width: 75%; } - .col-md-10 { - width: 83.33333%; } - .col-md-11 { - width: 91.66667%; } - .col-md-12 { - width: 100%; } - .col-md-pull-0 { - right: auto; } - .col-md-pull-1 { - right: 8.33333%; } - .col-md-pull-2 { - right: 16.66667%; } - .col-md-pull-3 { - right: 25%; } - .col-md-pull-4 { - right: 33.33333%; } - .col-md-pull-5 { - right: 41.66667%; } - .col-md-pull-6 { - right: 50%; } - .col-md-pull-7 { - right: 58.33333%; } - .col-md-pull-8 { - right: 66.66667%; } - .col-md-pull-9 { - right: 75%; } - .col-md-pull-10 { - right: 83.33333%; } - .col-md-pull-11 { - right: 91.66667%; } - .col-md-pull-12 { - right: 100%; } - .col-md-push-0 { - left: auto; } - .col-md-push-1 { - left: 8.33333%; } - .col-md-push-2 { - left: 16.66667%; } - .col-md-push-3 { - left: 25%; } - .col-md-push-4 { - left: 33.33333%; } - .col-md-push-5 { - left: 41.66667%; } - .col-md-push-6 { - left: 50%; } - .col-md-push-7 { - left: 58.33333%; } - .col-md-push-8 { - left: 66.66667%; } - .col-md-push-9 { - left: 75%; } - .col-md-push-10 { - left: 83.33333%; } - .col-md-push-11 { - left: 91.66667%; } - .col-md-push-12 { - left: 100%; } - .col-md-offset-0 { - margin-left: 0%; } - .col-md-offset-1 { - margin-left: 8.33333%; } - .col-md-offset-2 { - margin-left: 16.66667%; } - .col-md-offset-3 { - margin-left: 25%; } - .col-md-offset-4 { - margin-left: 33.33333%; } - .col-md-offset-5 { - margin-left: 41.66667%; } - .col-md-offset-6 { - margin-left: 50%; } - .col-md-offset-7 { - margin-left: 58.33333%; } - .col-md-offset-8 { - margin-left: 66.66667%; } - .col-md-offset-9 { - margin-left: 75%; } - .col-md-offset-10 { - margin-left: 83.33333%; } - .col-md-offset-11 { - margin-left: 91.66667%; } - .col-md-offset-12 { - margin-left: 100%; } } - -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; } - .col-lg-1 { - width: 8.33333%; } - .col-lg-2 { - width: 16.66667%; } - .col-lg-3 { - width: 25%; } - .col-lg-4 { - width: 33.33333%; } - .col-lg-5 { - width: 41.66667%; } - .col-lg-6 { - width: 50%; } - .col-lg-7 { - width: 58.33333%; } - .col-lg-8 { - width: 66.66667%; } - .col-lg-9 { - width: 75%; } - .col-lg-10 { - width: 83.33333%; } - .col-lg-11 { - width: 91.66667%; } - .col-lg-12 { - width: 100%; } - .col-lg-pull-0 { - right: auto; } - .col-lg-pull-1 { - right: 8.33333%; } - .col-lg-pull-2 { - right: 16.66667%; } - .col-lg-pull-3 { - right: 25%; } - .col-lg-pull-4 { - right: 33.33333%; } - .col-lg-pull-5 { - right: 41.66667%; } - .col-lg-pull-6 { - right: 50%; } - .col-lg-pull-7 { - right: 58.33333%; } - .col-lg-pull-8 { - right: 66.66667%; } - .col-lg-pull-9 { - right: 75%; } - .col-lg-pull-10 { - right: 83.33333%; } - .col-lg-pull-11 { - right: 91.66667%; } - .col-lg-pull-12 { - right: 100%; } - .col-lg-push-0 { - left: auto; } - .col-lg-push-1 { - left: 8.33333%; } - .col-lg-push-2 { - left: 16.66667%; } - .col-lg-push-3 { - left: 25%; } - .col-lg-push-4 { - left: 33.33333%; } - .col-lg-push-5 { - left: 41.66667%; } - .col-lg-push-6 { - left: 50%; } - .col-lg-push-7 { - left: 58.33333%; } - .col-lg-push-8 { - left: 66.66667%; } - .col-lg-push-9 { - left: 75%; } - .col-lg-push-10 { - left: 83.33333%; } - .col-lg-push-11 { - left: 91.66667%; } - .col-lg-push-12 { - left: 100%; } - .col-lg-offset-0 { - margin-left: 0%; } - .col-lg-offset-1 { - margin-left: 8.33333%; } - .col-lg-offset-2 { - margin-left: 16.66667%; } - .col-lg-offset-3 { - margin-left: 25%; } - .col-lg-offset-4 { - margin-left: 33.33333%; } - .col-lg-offset-5 { - margin-left: 41.66667%; } - .col-lg-offset-6 { - margin-left: 50%; } - .col-lg-offset-7 { - margin-left: 58.33333%; } - .col-lg-offset-8 { - margin-left: 66.66667%; } - .col-lg-offset-9 { - margin-left: 75%; } - .col-lg-offset-10 { - margin-left: 83.33333%; } - .col-lg-offset-11 { - margin-left: 91.66667%; } - .col-lg-offset-12 { - margin-left: 100%; } } - -table { - background-color: transparent; } - -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777777; - text-align: left; } - -th { - text-align: left; } - -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; } - .table > thead > tr > th, - .table > thead > tr > td, - .table > tbody > tr > th, - .table > tbody > tr > td, - .table > tfoot > tr > th, - .table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857; - vertical-align: top; - border-top: 1px solid #ddd; } - .table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; } - .table > caption + thead > tr:first-child > th, - .table > caption + thead > tr:first-child > td, - .table > colgroup + thead > tr:first-child > th, - .table > colgroup + thead > tr:first-child > td, - .table > thead:first-child > tr:first-child > th, - .table > thead:first-child > tr:first-child > td { - border-top: 0; } - .table > tbody + tbody { - border-top: 2px solid #ddd; } - .table .table { - background-color: #fff; } - -.table-condensed > thead > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > th, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > th, -.table-condensed > tfoot > tr > td { - padding: 5px; } - -.table-bordered { - border: 1px solid #ddd; } - .table-bordered > thead > tr > th, - .table-bordered > thead > tr > td, - .table-bordered > tbody > tr > th, - .table-bordered > tbody > tr > td, - .table-bordered > tfoot > tr > th, - .table-bordered > tfoot > tr > td { - border: 1px solid #ddd; } - .table-bordered > thead > tr > th, - .table-bordered > thead > tr > td { - border-bottom-width: 2px; } - -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; } - -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; } - -table col[class*="col-"] { - position: static; - float: none; - display: table-column; } - -table td[class*="col-"], -table th[class*="col-"] { - position: static; - float: none; - display: table-cell; } - -.table > thead > tr > td.active, -.table > thead > tr > th.active, -.table > thead > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr > td.active, -.table > tbody > tr > th.active, -.table > tbody > tr.active > td, -.table > tbody > tr.active > th, -.table > tfoot > tr > td.active, -.table > tfoot > tr > th.active, -.table > tfoot > tr.active > td, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; } - -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; } - -.table > thead > tr > td.success, -.table > thead > tr > th.success, -.table > thead > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr > td.success, -.table > tbody > tr > th.success, -.table > tbody > tr.success > td, -.table > tbody > tr.success > th, -.table > tfoot > tr > td.success, -.table > tfoot > tr > th.success, -.table > tfoot > tr.success > td, -.table > tfoot > tr.success > th { - background-color: #dff0d8; } - -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; } - -.table > thead > tr > td.info, -.table > thead > tr > th.info, -.table > thead > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr > td.info, -.table > tbody > tr > th.info, -.table > tbody > tr.info > td, -.table > tbody > tr.info > th, -.table > tfoot > tr > td.info, -.table > tfoot > tr > th.info, -.table > tfoot > tr.info > td, -.table > tfoot > tr.info > th { - background-color: #d9edf7; } - -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; } - -.table > thead > tr > td.warning, -.table > thead > tr > th.warning, -.table > thead > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr > td.warning, -.table > tbody > tr > th.warning, -.table > tbody > tr.warning > td, -.table > tbody > tr.warning > th, -.table > tfoot > tr > td.warning, -.table > tfoot > tr > th.warning, -.table > tfoot > tr.warning > td, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; } - -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; } - -.table > thead > tr > td.danger, -.table > thead > tr > th.danger, -.table > thead > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr > td.danger, -.table > tbody > tr > th.danger, -.table > tbody > tr.danger > td, -.table > tbody > tr.danger > th, -.table > tfoot > tr > td.danger, -.table > tfoot > tr > th.danger, -.table > tfoot > tr.danger > td, -.table > tfoot > tr.danger > th { - background-color: #f2dede; } - -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; } - -.table-responsive { - overflow-x: auto; - min-height: 0.01%; } - @media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; } - .table-responsive > .table { - margin-bottom: 0; } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; } - .table-responsive > .table-bordered { - border: 0; } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; } } - -fieldset { - padding: 0; - margin: 0; - border: 0; - min-width: 0; } - -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333333; - border: 0; - border-bottom: 1px solid #e5e5e5; } - -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; } - -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } - -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; } - -input[type="file"] { - display: block; } - -input[type="range"] { - display: block; - width: 100%; } - -select[multiple], -select[size] { - height: auto; } - -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; } - -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857; - color: #555555; } - -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857; - color: #555555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; - -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; - transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; } - .form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); } - .form-control::-moz-placeholder { - color: #999; - opacity: 1; } - .form-control:-ms-input-placeholder { - color: #999; } - .form-control::-webkit-input-placeholder { - color: #999; } - .form-control::-ms-expand { - border: 0; - background-color: transparent; } - .form-control[disabled], .form-control[readonly], - fieldset[disabled] .form-control { - background-color: #eeeeee; - opacity: 1; } - .form-control[disabled], - fieldset[disabled] .form-control { - cursor: not-allowed; } - -textarea.form-control { - height: auto; } - -input[type="search"] { - -webkit-appearance: none; } - -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 34px; } - input[type="date"].input-sm, .input-group-sm > input[type="date"].form-control, - .input-group-sm > input[type="date"].input-group-addon, - .input-group-sm > .input-group-btn > input[type="date"].btn, - .input-group-sm input[type="date"], - input[type="time"].input-sm, - .input-group-sm > input[type="time"].form-control, - .input-group-sm > input[type="time"].input-group-addon, - .input-group-sm > .input-group-btn > input[type="time"].btn, - .input-group-sm - input[type="time"], - input[type="datetime-local"].input-sm, - .input-group-sm > input[type="datetime-local"].form-control, - .input-group-sm > input[type="datetime-local"].input-group-addon, - .input-group-sm > .input-group-btn > input[type="datetime-local"].btn, - .input-group-sm - input[type="datetime-local"], - input[type="month"].input-sm, - .input-group-sm > input[type="month"].form-control, - .input-group-sm > input[type="month"].input-group-addon, - .input-group-sm > .input-group-btn > input[type="month"].btn, - .input-group-sm - input[type="month"] { - line-height: 30px; } - input[type="date"].input-lg, .input-group-lg > input[type="date"].form-control, - .input-group-lg > input[type="date"].input-group-addon, - .input-group-lg > .input-group-btn > input[type="date"].btn, - .input-group-lg input[type="date"], - input[type="time"].input-lg, - .input-group-lg > input[type="time"].form-control, - .input-group-lg > input[type="time"].input-group-addon, - .input-group-lg > .input-group-btn > input[type="time"].btn, - .input-group-lg - input[type="time"], - input[type="datetime-local"].input-lg, - .input-group-lg > input[type="datetime-local"].form-control, - .input-group-lg > input[type="datetime-local"].input-group-addon, - .input-group-lg > .input-group-btn > input[type="datetime-local"].btn, - .input-group-lg - input[type="datetime-local"], - input[type="month"].input-lg, - .input-group-lg > input[type="month"].form-control, - .input-group-lg > input[type="month"].input-group-addon, - .input-group-lg > .input-group-btn > input[type="month"].btn, - .input-group-lg - input[type="month"] { - line-height: 46px; } } - -.form-group { - margin-bottom: 15px; } - -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; } - .radio label, - .checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; } - -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-left: -20px; - margin-top: 4px \9; } - -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; } - -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; - cursor: pointer; } - -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; } - -input[type="radio"][disabled], input[type="radio"].disabled, -fieldset[disabled] input[type="radio"], -input[type="checkbox"][disabled], -input[type="checkbox"].disabled, -fieldset[disabled] -input[type="checkbox"] { - cursor: not-allowed; } - -.radio-inline.disabled, -fieldset[disabled] .radio-inline, -.checkbox-inline.disabled, -fieldset[disabled] -.checkbox-inline { - cursor: not-allowed; } - -.radio.disabled label, -fieldset[disabled] .radio label, -.checkbox.disabled label, -fieldset[disabled] -.checkbox label { - cursor: not-allowed; } - -.form-control-static { - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; - min-height: 34px; } - .form-control-static.input-lg, .input-group-lg > .form-control-static.form-control, - .input-group-lg > .form-control-static.input-group-addon, - .input-group-lg > .input-group-btn > .form-control-static.btn, .form-control-static.input-sm, .input-group-sm > .form-control-static.form-control, - .input-group-sm > .form-control-static.input-group-addon, - .input-group-sm > .input-group-btn > .form-control-static.btn { - padding-left: 0; - padding-right: 0; } - -.input-sm, .input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; } - -select.input-sm, .input-group-sm > select.form-control, -.input-group-sm > select.input-group-addon, -.input-group-sm > .input-group-btn > select.btn { - height: 30px; - line-height: 30px; } - -textarea.input-sm, .input-group-sm > textarea.form-control, -.input-group-sm > textarea.input-group-addon, -.input-group-sm > .input-group-btn > textarea.btn, -select[multiple].input-sm, -.input-group-sm > select[multiple].form-control, -.input-group-sm > select[multiple].input-group-addon, -.input-group-sm > .input-group-btn > select[multiple].btn { - height: auto; } - -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; } - -.form-group-sm select.form-control { - height: 30px; - line-height: 30px; } - -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; } - -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 6px 10px; - font-size: 12px; - line-height: 1.5; } - -.input-lg, .input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33333; - border-radius: 6px; } - -select.input-lg, .input-group-lg > select.form-control, -.input-group-lg > select.input-group-addon, -.input-group-lg > .input-group-btn > select.btn { - height: 46px; - line-height: 46px; } - -textarea.input-lg, .input-group-lg > textarea.form-control, -.input-group-lg > textarea.input-group-addon, -.input-group-lg > .input-group-btn > textarea.btn, -select[multiple].input-lg, -.input-group-lg > select[multiple].form-control, -.input-group-lg > select[multiple].input-group-addon, -.input-group-lg > .input-group-btn > select[multiple].btn { - height: auto; } - -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33333; - border-radius: 6px; } - -.form-group-lg select.form-control { - height: 46px; - line-height: 46px; } - -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; } - -.form-group-lg .form-control-static { - height: 46px; - min-height: 38px; - padding: 11px 16px; - font-size: 18px; - line-height: 1.33333; } - -.has-feedback { - position: relative; } - .has-feedback .form-control { - padding-right: 42.5px; } - -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; } - -.input-lg + .form-control-feedback, .input-group-lg > .form-control + .form-control-feedback, -.input-group-lg > .input-group-addon + .form-control-feedback, -.input-group-lg > .input-group-btn > .btn + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; } - -.input-sm + .form-control-feedback, .input-group-sm > .form-control + .form-control-feedback, -.input-group-sm > .input-group-addon + .form-control-feedback, -.input-group-sm > .input-group-btn > .btn + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; } - -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; } - -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } - .has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; } - -.has-success .input-group-addon { - color: #3c763d; - border-color: #3c763d; - background-color: #dff0d8; } - -.has-success .form-control-feedback { - color: #3c763d; } - -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; } - -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } - .has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; } - -.has-warning .input-group-addon { - color: #8a6d3b; - border-color: #8a6d3b; - background-color: #fcf8e3; } - -.has-warning .form-control-feedback { - color: #8a6d3b; } - -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; } - -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } - .has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; } - -.has-error .input-group-addon { - color: #a94442; - border-color: #a94442; - background-color: #f2dede; } - -.has-error .form-control-feedback { - color: #a94442; } - -.has-feedback label ~ .form-control-feedback { - top: 25px; } - -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; } - -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; } - -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; } - .form-inline .form-control-static { - display: inline-block; } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; } - .form-inline .input-group > .form-control { - width: 100%; } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; } - .form-inline .has-feedback .form-control-feedback { - top: 0; } } - -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: 7px; } - -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; } - -.form-horizontal .form-group { - margin-left: -15px; - margin-right: -15px; } - .form-horizontal .form-group:before, .form-horizontal .form-group:after { - content: " "; - display: table; } - .form-horizontal .form-group:after { - clear: both; } - -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - margin-bottom: 0; - padding-top: 7px; } } - -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; } - -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 11px; - font-size: 18px; } } - -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 12px; } } - -.btn { - display: inline-block; - margin-bottom: 0; - font-weight: normal; - text-align: center; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - .btn:focus, .btn.focus, .btn:active:focus, .btn:active.focus, .btn.active:focus, .btn.active.focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; } - .btn:hover, .btn:focus, .btn.focus { - color: #333; - text-decoration: none; } - .btn:active, .btn.active { - outline: 0; - background-image: none; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } - .btn.disabled, .btn[disabled], - fieldset[disabled] .btn { - cursor: not-allowed; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; } - -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; } - -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; } - .btn-default:focus, .btn-default.focus { - color: #333; - background-color: #e6e6e6; - border-color: #8c8c8c; } - .btn-default:hover { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; } - .btn-default:active, .btn-default.active, - .open > .btn-default.dropdown-toggle { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; } - .btn-default:active:hover, .btn-default:active:focus, .btn-default:active.focus, .btn-default.active:hover, .btn-default.active:focus, .btn-default.active.focus, - .open > .btn-default.dropdown-toggle:hover, - .open > .btn-default.dropdown-toggle:focus, - .open > .btn-default.dropdown-toggle.focus { - color: #333; - background-color: #d4d4d4; - border-color: #8c8c8c; } - .btn-default:active, .btn-default.active, - .open > .btn-default.dropdown-toggle { - background-image: none; } - .btn-default.disabled:hover, .btn-default.disabled:focus, .btn-default.disabled.focus, .btn-default[disabled]:hover, .btn-default[disabled]:focus, .btn-default[disabled].focus, - fieldset[disabled] .btn-default:hover, - fieldset[disabled] .btn-default:focus, - fieldset[disabled] .btn-default.focus { - background-color: #fff; - border-color: #ccc; } - .btn-default .badge { - color: #fff; - background-color: #333; } - -.btn-primary { - color: #fff; - background-color: #337ab7; - border-color: #2e6da4; } - .btn-primary:focus, .btn-primary.focus { - color: #fff; - background-color: #286090; - border-color: #122b40; } - .btn-primary:hover { - color: #fff; - background-color: #286090; - border-color: #204d74; } - .btn-primary:active, .btn-primary.active, - .open > .btn-primary.dropdown-toggle { - color: #fff; - background-color: #286090; - border-color: #204d74; } - .btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus, - .open > .btn-primary.dropdown-toggle:hover, - .open > .btn-primary.dropdown-toggle:focus, - .open > .btn-primary.dropdown-toggle.focus { - color: #fff; - background-color: #204d74; - border-color: #122b40; } - .btn-primary:active, .btn-primary.active, - .open > .btn-primary.dropdown-toggle { - background-image: none; } - .btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled].focus, - fieldset[disabled] .btn-primary:hover, - fieldset[disabled] .btn-primary:focus, - fieldset[disabled] .btn-primary.focus { - background-color: #337ab7; - border-color: #2e6da4; } - .btn-primary .badge { - color: #337ab7; - background-color: #fff; } - -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; } - .btn-success:focus, .btn-success.focus { - color: #fff; - background-color: #449d44; - border-color: #255625; } - .btn-success:hover { - color: #fff; - background-color: #449d44; - border-color: #398439; } - .btn-success:active, .btn-success.active, - .open > .btn-success.dropdown-toggle { - color: #fff; - background-color: #449d44; - border-color: #398439; } - .btn-success:active:hover, .btn-success:active:focus, .btn-success:active.focus, .btn-success.active:hover, .btn-success.active:focus, .btn-success.active.focus, - .open > .btn-success.dropdown-toggle:hover, - .open > .btn-success.dropdown-toggle:focus, - .open > .btn-success.dropdown-toggle.focus { - color: #fff; - background-color: #398439; - border-color: #255625; } - .btn-success:active, .btn-success.active, - .open > .btn-success.dropdown-toggle { - background-image: none; } - .btn-success.disabled:hover, .btn-success.disabled:focus, .btn-success.disabled.focus, .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled].focus, - fieldset[disabled] .btn-success:hover, - fieldset[disabled] .btn-success:focus, - fieldset[disabled] .btn-success.focus { - background-color: #5cb85c; - border-color: #4cae4c; } - .btn-success .badge { - color: #5cb85c; - background-color: #fff; } - -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; } - .btn-info:focus, .btn-info.focus { - color: #fff; - background-color: #31b0d5; - border-color: #1b6d85; } - .btn-info:hover { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; } - .btn-info:active, .btn-info.active, - .open > .btn-info.dropdown-toggle { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; } - .btn-info:active:hover, .btn-info:active:focus, .btn-info:active.focus, .btn-info.active:hover, .btn-info.active:focus, .btn-info.active.focus, - .open > .btn-info.dropdown-toggle:hover, - .open > .btn-info.dropdown-toggle:focus, - .open > .btn-info.dropdown-toggle.focus { - color: #fff; - background-color: #269abc; - border-color: #1b6d85; } - .btn-info:active, .btn-info.active, - .open > .btn-info.dropdown-toggle { - background-image: none; } - .btn-info.disabled:hover, .btn-info.disabled:focus, .btn-info.disabled.focus, .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled].focus, - fieldset[disabled] .btn-info:hover, - fieldset[disabled] .btn-info:focus, - fieldset[disabled] .btn-info.focus { - background-color: #5bc0de; - border-color: #46b8da; } - .btn-info .badge { - color: #5bc0de; - background-color: #fff; } - -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; } - .btn-warning:focus, .btn-warning.focus { - color: #fff; - background-color: #ec971f; - border-color: #985f0d; } - .btn-warning:hover { - color: #fff; - background-color: #ec971f; - border-color: #d58512; } - .btn-warning:active, .btn-warning.active, - .open > .btn-warning.dropdown-toggle { - color: #fff; - background-color: #ec971f; - border-color: #d58512; } - .btn-warning:active:hover, .btn-warning:active:focus, .btn-warning:active.focus, .btn-warning.active:hover, .btn-warning.active:focus, .btn-warning.active.focus, - .open > .btn-warning.dropdown-toggle:hover, - .open > .btn-warning.dropdown-toggle:focus, - .open > .btn-warning.dropdown-toggle.focus { - color: #fff; - background-color: #d58512; - border-color: #985f0d; } - .btn-warning:active, .btn-warning.active, - .open > .btn-warning.dropdown-toggle { - background-image: none; } - .btn-warning.disabled:hover, .btn-warning.disabled:focus, .btn-warning.disabled.focus, .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled].focus, - fieldset[disabled] .btn-warning:hover, - fieldset[disabled] .btn-warning:focus, - fieldset[disabled] .btn-warning.focus { - background-color: #f0ad4e; - border-color: #eea236; } - .btn-warning .badge { - color: #f0ad4e; - background-color: #fff; } - -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; } - .btn-danger:focus, .btn-danger.focus { - color: #fff; - background-color: #c9302c; - border-color: #761c19; } - .btn-danger:hover { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; } - .btn-danger:active, .btn-danger.active, - .open > .btn-danger.dropdown-toggle { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; } - .btn-danger:active:hover, .btn-danger:active:focus, .btn-danger:active.focus, .btn-danger.active:hover, .btn-danger.active:focus, .btn-danger.active.focus, - .open > .btn-danger.dropdown-toggle:hover, - .open > .btn-danger.dropdown-toggle:focus, - .open > .btn-danger.dropdown-toggle.focus { - color: #fff; - background-color: #ac2925; - border-color: #761c19; } - .btn-danger:active, .btn-danger.active, - .open > .btn-danger.dropdown-toggle { - background-image: none; } - .btn-danger.disabled:hover, .btn-danger.disabled:focus, .btn-danger.disabled.focus, .btn-danger[disabled]:hover, .btn-danger[disabled]:focus, .btn-danger[disabled].focus, - fieldset[disabled] .btn-danger:hover, - fieldset[disabled] .btn-danger:focus, - fieldset[disabled] .btn-danger.focus { - background-color: #d9534f; - border-color: #d43f3a; } - .btn-danger .badge { - color: #d9534f; - background-color: #fff; } - -.btn-link { - color: #337ab7; - font-weight: normal; - border-radius: 0; } - .btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled], - fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; } - .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active { - border-color: transparent; } - .btn-link:hover, .btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; } - .btn-link[disabled]:hover, .btn-link[disabled]:focus, - fieldset[disabled] .btn-link:hover, - fieldset[disabled] .btn-link:focus { - color: #777777; - text-decoration: none; } - -.btn-lg, .btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33333; - border-radius: 6px; } - -.btn-sm, .btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; } - -.btn-xs, .btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; } - -.btn-block { - display: block; - width: 100%; } - -.btn-block + .btn-block { - margin-top: 5px; } - -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; } - -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; } - .fade.in { - opacity: 1; } - -.collapse { - display: none; } - .collapse.in { - display: block; } - -tr.collapse.in { - display: table-row; } - -tbody.collapse.in { - display: table-row-group; } - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-property: height, visibility; - transition-property: height, visibility; - -webkit-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; } - -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; } - -.dropup, -.dropdown { - position: relative; } - -.dropdown-toggle:focus { - outline: 0; } - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - font-size: 14px; - text-align: left; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; } - .dropdown-menu.pull-right { - right: 0; - left: auto; } - .dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; } - .dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857; - color: #333333; - white-space: nowrap; } - -.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { - text-decoration: none; - color: #262626; - background-color: #f5f5f5; } - -.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - outline: 0; - background-color: #337ab7; } - -.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { - color: #777777; } - -.dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: not-allowed; } - -.open > .dropdown-menu { - display: block; } - -.open > a { - outline: 0; } - -.dropdown-menu-right { - left: auto; - right: 0; } - -.dropdown-menu-left { - left: 0; - right: auto; } - -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857; - color: #777777; - white-space: nowrap; } - -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; } - -.pull-right > .dropdown-menu { - right: 0; - left: auto; } - -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; - content: ""; } - -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; } - -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; } - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; } } - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; } - .btn-group > .btn, - .btn-group-vertical > .btn { - position: relative; - float: left; } - .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, - .btn-group-vertical > .btn:hover, - .btn-group-vertical > .btn:focus, - .btn-group-vertical > .btn:active, - .btn-group-vertical > .btn.active { - z-index: 2; } - -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; } - -.btn-toolbar { - margin-left: -5px; } - .btn-toolbar:before, .btn-toolbar:after { - content: " "; - display: table; } - .btn-toolbar:after { - clear: both; } - .btn-toolbar .btn, - .btn-toolbar .btn-group, - .btn-toolbar .input-group { - float: left; } - .btn-toolbar > .btn, - .btn-toolbar > .btn-group, - .btn-toolbar > .input-group { - margin-left: 5px; } - -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; } - -.btn-group > .btn:first-child { - margin-left: 0; } - .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - -.btn-group > .btn-group { - float: left; } - -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; } - -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; } - -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; } - -.btn-group > .btn-lg + .dropdown-toggle, .btn-group-lg.btn-group > .btn + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; } - -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } - .btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; } - -.btn .caret { - margin-left: 0; } - -.btn-lg .caret, .btn-group-lg > .btn .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; } - -.dropup .btn-lg .caret, .dropup .btn-group-lg > .btn .caret { - border-width: 0 5px 5px; } - -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; } - -.btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after { - content: " "; - display: table; } - -.btn-group-vertical > .btn-group:after { - clear: both; } - -.btn-group-vertical > .btn-group > .btn { - float: none; } - -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; } - -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; } - -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-right-radius: 0; - border-top-left-radius: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; } - -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; } - -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; } - -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; } - .btn-group-justified > .btn, - .btn-group-justified > .btn-group { - float: none; - display: table-cell; - width: 1%; } - .btn-group-justified > .btn-group .btn { - width: 100%; } - .btn-group-justified > .btn-group .dropdown-menu { - left: auto; } - -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; } - -.input-group { - position: relative; - display: table; - border-collapse: separate; } - .input-group[class*="col-"] { - float: none; - padding-left: 0; - padding-right: 0; } - .input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; } - .input-group .form-control:focus { - z-index: 3; } - -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; } - .input-group-addon:not(:first-child):not(:last-child), - .input-group-btn:not(:first-child):not(:last-child), - .input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; } - -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; } - -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555555; - text-align: center; - background-color: #eeeeee; - border: 1px solid #ccc; - border-radius: 4px; } - .input-group-addon.input-sm, - .input-group-sm > .input-group-addon, - .input-group-sm > .input-group-btn > .input-group-addon.btn { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; } - .input-group-addon.input-lg, - .input-group-lg > .input-group-addon, - .input-group-lg > .input-group-btn > .input-group-addon.btn { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; } - .input-group-addon input[type="radio"], - .input-group-addon input[type="checkbox"] { - margin-top: 0; } - -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - -.input-group-addon:first-child { - border-right: 0; } - -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - -.input-group-addon:last-child { - border-left: 0; } - -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; } - .input-group-btn > .btn { - position: relative; } - .input-group-btn > .btn + .btn { - margin-left: -1px; } - .input-group-btn > .btn:hover, .input-group-btn > .btn:focus, .input-group-btn > .btn:active { - z-index: 2; } - .input-group-btn:first-child > .btn, - .input-group-btn:first-child > .btn-group { - margin-right: -1px; } - .input-group-btn:last-child > .btn, - .input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; } - -.nav { - margin-bottom: 0; - padding-left: 0; - list-style: none; } - .nav:before, .nav:after { - content: " "; - display: table; } - .nav:after { - clear: both; } - .nav > li { - position: relative; - display: block; } - .nav > li > a { - position: relative; - display: block; - padding: 10px 15px; } - .nav > li > a:hover, .nav > li > a:focus { - text-decoration: none; - background-color: #eeeeee; } - .nav > li.disabled > a { - color: #777777; } - .nav > li.disabled > a:hover, .nav > li.disabled > a:focus { - color: #777777; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; } - .nav .open > a, .nav .open > a:hover, .nav .open > a:focus { - background-color: #eeeeee; - border-color: #337ab7; } - .nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; } - .nav > li > a > img { - max-width: none; } - -.nav-tabs { - border-bottom: 1px solid #ddd; } - .nav-tabs > li { - float: left; - margin-bottom: -1px; } - .nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; } - .nav-tabs > li > a:hover { - border-color: #eeeeee #eeeeee #ddd; } - .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { - color: #555555; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; - cursor: default; } - -.nav-pills > li { - float: left; } - .nav-pills > li > a { - border-radius: 4px; } - .nav-pills > li + li { - margin-left: 2px; } - .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { - color: #fff; - background-color: #337ab7; } - -.nav-stacked > li { - float: none; } - .nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; } - -.nav-justified, .nav-tabs.nav-justified { - width: 100%; } - .nav-justified > li, .nav-tabs.nav-justified > li { - float: none; } - .nav-justified > li > a, .nav-tabs.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; } - .nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; } - @media (min-width: 768px) { - .nav-justified > li, .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; } - .nav-justified > li > a, .nav-tabs.nav-justified > li > a { - margin-bottom: 0; } } - -.nav-tabs-justified, .nav-tabs.nav-justified { - border-bottom: 0; } - .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; } - .nav-tabs-justified > .active > a, .nav-tabs.nav-justified > .active > a, - .nav-tabs-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus, .nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; } - @media (min-width: 768px) { - .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; } - .nav-tabs-justified > .active > a, .nav-tabs.nav-justified > .active > a, - .nav-tabs-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus, .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; } } - -.tab-content > .tab-pane { - display: none; } - -.tab-content > .active { - display: block; } - -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-radius: 0; } - -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; } - .navbar:before, .navbar:after { - content: " "; - display: table; } - .navbar:after { - clear: both; } - @media (min-width: 768px) { - .navbar { - border-radius: 4px; } } - -.navbar-header:before, .navbar-header:after { - content: " "; - display: table; } - -.navbar-header:after { - clear: both; } - -@media (min-width: 768px) { - .navbar-header { - float: left; } } - -.navbar-collapse { - overflow-x: visible; - padding-right: 15px; - padding-left: 15px; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; } - .navbar-collapse:before, .navbar-collapse:after { - content: " "; - display: table; } - .navbar-collapse:after { - clear: both; } - .navbar-collapse.in { - overflow-y: auto; } - @media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - box-shadow: none; } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; } - .navbar-collapse.in { - overflow-y: visible; } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-left: 0; - padding-right: 0; } } - -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; } - @media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; } } - -.container > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-header, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; } - @media (min-width: 768px) { - .container > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-header, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; } } - -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; } - @media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; } } - -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; } - @media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; } } - -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; } - -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; } - -.navbar-brand { - float: left; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; - height: 50px; } - .navbar-brand:hover, .navbar-brand:focus { - text-decoration: none; } - .navbar-brand > img { - display: block; } - @media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; } } - -.navbar-toggle { - position: relative; - float: right; - margin-right: 15px; - padding: 9px 10px; - margin-top: 8px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; } - .navbar-toggle:focus { - outline: 0; } - .navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; } - .navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; } - @media (min-width: 768px) { - .navbar-toggle { - display: none; } } - -.navbar-nav { - margin: 7.5px -15px; } - .navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; } - @media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; } - .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; } } - @media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; } - .navbar-nav > li { - float: left; } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; } } - -.navbar-form { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - margin-top: 8px; - margin-bottom: 8px; } - @media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; } - .navbar-form .form-control-static { - display: inline-block; } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; } - .navbar-form .input-group > .form-control { - width: 100%; } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; } - .navbar-form .has-feedback .form-control-feedback { - top: 0; } } - @media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; } - .navbar-form .form-group:last-child { - margin-bottom: 0; } } - @media (min-width: 768px) { - .navbar-form { - width: auto; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - -webkit-box-shadow: none; - box-shadow: none; } } - -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; } - -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; } - .navbar-btn.btn-sm, .btn-group-sm > .navbar-btn.btn { - margin-top: 10px; - margin-bottom: 10px; } - .navbar-btn.btn-xs, .btn-group-xs > .navbar-btn.btn { - margin-top: 14px; - margin-bottom: 14px; } - -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; } - @media (min-width: 768px) { - .navbar-text { - float: left; - margin-left: 15px; - margin-right: 15px; } } - -@media (min-width: 768px) { - .navbar-left { - float: left !important; } - .navbar-right { - float: right !important; - margin-right: -15px; } - .navbar-right ~ .navbar-right { - margin-right: 0; } } - -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; } - .navbar-default .navbar-brand { - color: #777; } - .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; } - .navbar-default .navbar-text { - color: #777; } - .navbar-default .navbar-nav > li > a { - color: #777; } - .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; } - .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; } - .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; } - .navbar-default .navbar-toggle { - border-color: #ddd; } - .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { - background-color: #ddd; } - .navbar-default .navbar-toggle .icon-bar { - background-color: #888; } - .navbar-default .navbar-collapse, - .navbar-default .navbar-form { - border-color: #e7e7e7; } - .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { - background-color: #e7e7e7; - color: #555; } - @media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - 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: #555; - background-color: #e7e7e7; } - .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: #ccc; - background-color: transparent; } } - .navbar-default .navbar-link { - color: #777; } - .navbar-default .navbar-link:hover { - color: #333; } - .navbar-default .btn-link { - color: #777; } - .navbar-default .btn-link:hover, .navbar-default .btn-link:focus { - color: #333; } - .navbar-default .btn-link[disabled]:hover, .navbar-default .btn-link[disabled]:focus, - fieldset[disabled] .navbar-default .btn-link:hover, - fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; } - -.navbar-inverse { - background-color: #222; - border-color: #090909; } - .navbar-inverse .navbar-brand { - color: #9d9d9d; } - .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; } - .navbar-inverse .navbar-text { - color: #9d9d9d; } - .navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; } - .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; } - .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #090909; } - .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; } - .navbar-inverse .navbar-toggle { - border-color: #333; } - .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { - background-color: #333; } - .navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; } - .navbar-inverse .navbar-collapse, - .navbar-inverse .navbar-form { - border-color: #101010; } - .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { - background-color: #090909; - color: #fff; } - @media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #090909; } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #090909; } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - 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: #fff; - background-color: #090909; } - .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: #444; - background-color: transparent; } } - .navbar-inverse .navbar-link { - color: #9d9d9d; } - .navbar-inverse .navbar-link:hover { - color: #fff; } - .navbar-inverse .btn-link { - color: #9d9d9d; } - .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus { - color: #fff; } - .navbar-inverse .btn-link[disabled]:hover, .navbar-inverse .btn-link[disabled]:focus, - fieldset[disabled] .navbar-inverse .btn-link:hover, - fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; } - -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; } - .breadcrumb > li { - display: inline-block; } - .breadcrumb > li + li:before { - content: "/ "; - padding: 0 5px; - color: #ccc; } - .breadcrumb > .active { - color: #777777; } - -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; } - .pagination > li { - display: inline; } - .pagination > li > a, - .pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - line-height: 1.42857; - text-decoration: none; - color: #337ab7; - background-color: #fff; - border: 1px solid #ddd; - margin-left: -1px; } - .pagination > li:first-child > a, - .pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; } - .pagination > li:last-child > a, - .pagination > li:last-child > span { - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; } - .pagination > li > a:hover, .pagination > li > a:focus, - .pagination > li > span:hover, - .pagination > li > span:focus { - z-index: 2; - color: #23527c; - background-color: #eeeeee; - border-color: #ddd; } - .pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus, - .pagination > .active > span, - .pagination > .active > span:hover, - .pagination > .active > span:focus { - z-index: 3; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; - cursor: default; } - .pagination > .disabled > span, - .pagination > .disabled > span:hover, - .pagination > .disabled > span:focus, - .pagination > .disabled > a, - .pagination > .disabled > a:hover, - .pagination > .disabled > a:focus { - color: #777777; - background-color: #fff; - border-color: #ddd; - cursor: not-allowed; } - -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33333; } - -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-bottom-left-radius: 6px; - border-top-left-radius: 6px; } - -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-bottom-right-radius: 6px; - border-top-right-radius: 6px; } - -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; } - -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - -.pager { - padding-left: 0; - margin: 20px 0; - list-style: none; - text-align: center; } - .pager:before, .pager:after { - content: " "; - display: table; } - .pager:after { - clear: both; } - .pager li { - display: inline; } - .pager li > a, - .pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; } - .pager li > a:hover, - .pager li > a:focus { - text-decoration: none; - background-color: #eeeeee; } - .pager .next > a, - .pager .next > span { - float: right; } - .pager .previous > a, - .pager .previous > span { - float: left; } - .pager .disabled > a, - .pager .disabled > a:hover, - .pager .disabled > a:focus, - .pager .disabled > span { - color: #777777; - background-color: #fff; - cursor: not-allowed; } - -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; } - .label:empty { - display: none; } - .btn .label { - position: relative; - top: -1px; } - -a.label:hover, a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; } - -.label-default { - background-color: #777777; } - .label-default[href]:hover, .label-default[href]:focus { - background-color: #5e5e5e; } - -.label-primary { - background-color: #337ab7; } - .label-primary[href]:hover, .label-primary[href]:focus { - background-color: #286090; } - -.label-success { - background-color: #5cb85c; } - .label-success[href]:hover, .label-success[href]:focus { - background-color: #449d44; } - -.label-info { - background-color: #5bc0de; } - .label-info[href]:hover, .label-info[href]:focus { - background-color: #31b0d5; } - -.label-warning { - background-color: #f0ad4e; } - .label-warning[href]:hover, .label-warning[href]:focus { - background-color: #ec971f; } - -.label-danger { - background-color: #d9534f; } - .label-danger[href]:hover, .label-danger[href]:focus { - background-color: #c9302c; } - -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - color: #fff; - line-height: 1; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: #777777; - border-radius: 10px; } - .badge:empty { - display: none; } - .btn .badge { - position: relative; - top: -1px; } - .btn-xs .badge, .btn-group-xs > .btn .badge, - .btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; } - .list-group-item.active > .badge, - .nav-pills > .active > a > .badge { - color: #337ab7; - background-color: #fff; } - .list-group-item > .badge { - float: right; } - .list-group-item > .badge + .badge { - margin-right: 5px; } - .nav-pills > li > a > .badge { - margin-left: 3px; } - -a.badge:hover, a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; } - -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eeeeee; } - .jumbotron h1, - .jumbotron .h1 { - color: inherit; } - .jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; } - .jumbotron > hr { - border-top-color: #d5d5d5; } - .container .jumbotron, - .container-fluid .jumbotron { - border-radius: 6px; - padding-left: 15px; - padding-right: 15px; } - .jumbotron .container { - max-width: 100%; } - @media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; } - .container .jumbotron, - .container-fluid .jumbotron { - padding-left: 60px; - padding-right: 60px; } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; } } - -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border 0.2s ease-in-out; - -o-transition: border 0.2s ease-in-out; - transition: border 0.2s ease-in-out; } - .thumbnail > img, - .thumbnail a > img { - display: block; - max-width: 100%; - height: auto; - margin-left: auto; - margin-right: auto; } - .thumbnail .caption { - padding: 9px; - color: #333333; } - -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #337ab7; } - -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; } - .alert h4 { - margin-top: 0; - color: inherit; } - .alert .alert-link { - font-weight: bold; } - .alert > p, - .alert > ul { - margin-bottom: 0; } - .alert > p + p { - margin-top: 5px; } - -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; } - .alert-dismissable .close, - .alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; } - -.alert-success { - background-color: #dff0d8; - border-color: #d6e9c6; - color: #3c763d; } - .alert-success hr { - border-top-color: #c9e2b3; } - .alert-success .alert-link { - color: #2b542c; } - -.alert-info { - background-color: #d9edf7; - border-color: #bce8f1; - color: #31708f; } - .alert-info hr { - border-top-color: #a6e1ec; } - .alert-info .alert-link { - color: #245269; } - -.alert-warning { - background-color: #fcf8e3; - border-color: #faebcc; - color: #8a6d3b; } - .alert-warning hr { - border-top-color: #f7e1b5; } - .alert-warning .alert-link { - color: #66512c; } - -.alert-danger { - background-color: #f2dede; - border-color: #ebccd1; - color: #a94442; } - .alert-danger hr { - border-top-color: #e4b9c0; } - .alert-danger .alert-link { - color: #843534; } - -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; } - to { - background-position: 0 0; } } - -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; } - to { - background-position: 0 0; } } - -.progress { - overflow: hidden; - height: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } - -.progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #337ab7; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; } - -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 40px 40px; } - -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; } - -.progress-bar-success { - background-color: #5cb85c; } - .progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } - -.progress-bar-info { - background-color: #5bc0de; } - .progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } - -.progress-bar-warning { - background-color: #f0ad4e; } - .progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } - -.progress-bar-danger { - background-color: #d9534f; } - .progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } - -.media { - margin-top: 15px; } - .media:first-child { - margin-top: 0; } - -.media, -.media-body { - zoom: 1; - overflow: hidden; } - -.media-body { - width: 10000px; } - -.media-object { - display: block; } - .media-object.img-thumbnail { - max-width: none; } - -.media-right, -.media > .pull-right { - padding-left: 10px; } - -.media-left, -.media > .pull-left { - padding-right: 10px; } - -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; } - -.media-middle { - vertical-align: middle; } - -.media-bottom { - vertical-align: bottom; } - -.media-heading { - margin-top: 0; - margin-bottom: 5px; } - -.media-list { - padding-left: 0; - list-style: none; } - -.list-group { - margin-bottom: 20px; - padding-left: 0; } - -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; } - .list-group-item:first-child { - border-top-right-radius: 4px; - border-top-left-radius: 4px; } - .list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; } - -a.list-group-item, -button.list-group-item { - color: #555; } - a.list-group-item .list-group-item-heading, - button.list-group-item .list-group-item-heading { - color: #333; } - a.list-group-item:hover, a.list-group-item:focus, - button.list-group-item:hover, - button.list-group-item:focus { - text-decoration: none; - color: #555; - background-color: #f5f5f5; } - -button.list-group-item { - width: 100%; - text-align: left; } - -.list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus { - background-color: #eeeeee; - color: #777777; - cursor: not-allowed; } - .list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading { - color: inherit; } - .list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text { - color: #777777; } - -.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; } - .list-group-item.active .list-group-item-heading, - .list-group-item.active .list-group-item-heading > small, - .list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading, - .list-group-item.active:hover .list-group-item-heading > small, - .list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading, - .list-group-item.active:focus .list-group-item-heading > small, - .list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; } - .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text { - color: #c7ddef; } - -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; } - -a.list-group-item-success, -button.list-group-item-success { - color: #3c763d; } - a.list-group-item-success .list-group-item-heading, - button.list-group-item-success .list-group-item-heading { - color: inherit; } - a.list-group-item-success:hover, a.list-group-item-success:focus, - button.list-group-item-success:hover, - button.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; } - a.list-group-item-success.active, a.list-group-item-success.active:hover, a.list-group-item-success.active:focus, - button.list-group-item-success.active, - button.list-group-item-success.active:hover, - button.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; } - -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; } - -a.list-group-item-info, -button.list-group-item-info { - color: #31708f; } - a.list-group-item-info .list-group-item-heading, - button.list-group-item-info .list-group-item-heading { - color: inherit; } - a.list-group-item-info:hover, a.list-group-item-info:focus, - button.list-group-item-info:hover, - button.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; } - a.list-group-item-info.active, a.list-group-item-info.active:hover, a.list-group-item-info.active:focus, - button.list-group-item-info.active, - button.list-group-item-info.active:hover, - button.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; } - -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; } - -a.list-group-item-warning, -button.list-group-item-warning { - color: #8a6d3b; } - a.list-group-item-warning .list-group-item-heading, - button.list-group-item-warning .list-group-item-heading { - color: inherit; } - a.list-group-item-warning:hover, a.list-group-item-warning:focus, - button.list-group-item-warning:hover, - button.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; } - a.list-group-item-warning.active, a.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus, - button.list-group-item-warning.active, - button.list-group-item-warning.active:hover, - button.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; } - -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; } - -a.list-group-item-danger, -button.list-group-item-danger { - color: #a94442; } - a.list-group-item-danger .list-group-item-heading, - button.list-group-item-danger .list-group-item-heading { - color: inherit; } - a.list-group-item-danger:hover, a.list-group-item-danger:focus, - button.list-group-item-danger:hover, - button.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; } - a.list-group-item-danger.active, a.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus, - button.list-group-item-danger.active, - button.list-group-item-danger.active:hover, - button.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; } - -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; } - -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; } - -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); } - -.panel-body { - padding: 15px; } - .panel-body:before, .panel-body:after { - content: " "; - display: table; } - .panel-body:after { - clear: both; } - -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-right-radius: 3px; - border-top-left-radius: 3px; } - .panel-heading > .dropdown .dropdown-toggle { - color: inherit; } - -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; } - .panel-title > a, - .panel-title > small, - .panel-title > .small, - .panel-title > small > a, - .panel-title > .small > a { - color: inherit; } - -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; } - -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; } - .panel > .list-group .list-group-item, - .panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; } - .panel > .list-group:first-child .list-group-item:first-child, - .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-right-radius: 3px; - border-top-left-radius: 3px; } - .panel > .list-group:last-child .list-group-item:last-child, - .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; } - -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; } - -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; } - -.list-group + .panel-footer { - border-top-width: 0; } - -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; } - .panel > .table caption, - .panel > .table-responsive > .table caption, - .panel > .panel-collapse > .table caption { - padding-left: 15px; - padding-right: 15px; } - -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-right-radius: 3px; - border-top-left-radius: 3px; } - .panel > .table:first-child > thead:first-child > tr:first-child, - .panel > .table:first-child > tbody:first-child > tr:first-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; } - .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, - .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, - .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, - .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; } - .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, - .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, - .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, - .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; } - -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; } - .panel > .table:last-child > tbody:last-child > tr:last-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; } - .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, - .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; } - .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, - .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; } - -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; } - -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; } - -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; } - .panel > .table-bordered > thead > tr > th:first-child, - .panel > .table-bordered > thead > tr > td:first-child, - .panel > .table-bordered > tbody > tr > th:first-child, - .panel > .table-bordered > tbody > tr > td:first-child, - .panel > .table-bordered > tfoot > tr > th:first-child, - .panel > .table-bordered > tfoot > tr > td:first-child, - .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, - .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, - .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, - .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; } - .panel > .table-bordered > thead > tr > th:last-child, - .panel > .table-bordered > thead > tr > td:last-child, - .panel > .table-bordered > tbody > tr > th:last-child, - .panel > .table-bordered > tbody > tr > td:last-child, - .panel > .table-bordered > tfoot > tr > th:last-child, - .panel > .table-bordered > tfoot > tr > td:last-child, - .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, - .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, - .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, - .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; } - .panel > .table-bordered > thead > tr:first-child > td, - .panel > .table-bordered > thead > tr:first-child > th, - .panel > .table-bordered > tbody > tr:first-child > td, - .panel > .table-bordered > tbody > tr:first-child > th, - .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, - .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, - .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, - .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; } - .panel > .table-bordered > tbody > tr:last-child > td, - .panel > .table-bordered > tbody > tr:last-child > th, - .panel > .table-bordered > tfoot > tr:last-child > td, - .panel > .table-bordered > tfoot > tr:last-child > th, - .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, - .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, - .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, - .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; } - -.panel > .table-responsive { - border: 0; - margin-bottom: 0; } - -.panel-group { - margin-bottom: 20px; } - .panel-group .panel { - margin-bottom: 0; - border-radius: 4px; } - .panel-group .panel + .panel { - margin-top: 5px; } - .panel-group .panel-heading { - border-bottom: 0; } - .panel-group .panel-heading + .panel-collapse > .panel-body, - .panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; } - .panel-group .panel-footer { - border-top: 0; } - .panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; } - -.panel-default { - border-color: #ddd; } - .panel-default > .panel-heading { - color: #333333; - background-color: #f5f5f5; - border-color: #ddd; } - .panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; } - .panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333333; } - .panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; } - -.panel-primary { - border-color: #337ab7; } - .panel-primary > .panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; } - .panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #337ab7; } - .panel-primary > .panel-heading .badge { - color: #337ab7; - background-color: #fff; } - .panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #337ab7; } - -.panel-success { - border-color: #d6e9c6; } - .panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; } - .panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; } - .panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; } - .panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; } - -.panel-info { - border-color: #bce8f1; } - .panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; } - .panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; } - .panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; } - .panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; } - -.panel-warning { - border-color: #faebcc; } - .panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; } - .panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; } - .panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; } - .panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; } - -.panel-danger { - border-color: #ebccd1; } - .panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; } - .panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; } - .panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; } - .panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; } - -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; } - .embed-responsive .embed-responsive-item, - .embed-responsive iframe, - .embed-responsive embed, - .embed-responsive object, - .embed-responsive video { - position: absolute; - top: 0; - left: 0; - bottom: 0; - height: 100%; - width: 100%; - border: 0; } - -.embed-responsive-16by9 { - padding-bottom: 56.25%; } - -.embed-responsive-4by3 { - padding-bottom: 75%; } - -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } - .well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); } - -.well-lg { - padding: 24px; - border-radius: 6px; } - -.well-sm { - padding: 9px; - border-radius: 3px; } - -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - opacity: 0.2; - filter: alpha(opacity=20); } - .close:hover, .close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); } - -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; } - -.modal-open { - overflow: hidden; } - -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - -webkit-overflow-scrolling: touch; - outline: 0; } - .modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -moz-transition: -moz-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; } - .modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); } - -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; } - -.modal-dialog { - position: relative; - width: auto; - margin: 10px; } - -.modal-content { - position: relative; - background-color: #fff; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; - outline: 0; } - -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; } - .modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); } - .modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); } - -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; } - .modal-header:before, .modal-header:after { - content: " "; - display: table; } - .modal-header:after { - clear: both; } - -.modal-header .close { - margin-top: -2px; } - -.modal-title { - margin: 0; - line-height: 1.42857; } - -.modal-body { - position: relative; - padding: 15px; } - -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; } - .modal-footer:before, .modal-footer:after { - content: " "; - display: table; } - .modal-footer:after { - clear: both; } - .modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; } - .modal-footer .btn-group .btn + .btn { - margin-left: -1px; } - .modal-footer .btn-block + .btn-block { - margin-left: 0; } - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; } - -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); } - .modal-sm { - width: 300px; } } - -@media (min-width: 992px) { - .modal-lg { - width: 900px; } } - -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 12px; - opacity: 0; - filter: alpha(opacity=0); } - .tooltip.in { - opacity: 0.9; - filter: alpha(opacity=90); } - .tooltip.top { - margin-top: -3px; - padding: 5px 0; } - .tooltip.right { - margin-left: 3px; - padding: 0 5px; } - .tooltip.bottom { - margin-top: 3px; - padding: 5px 0; } - .tooltip.left { - margin-left: -3px; - padding: 0 5px; } - -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 4px; } - -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; } - -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; } - -.tooltip.top-left .tooltip-arrow { - bottom: 0; - right: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; } - -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; } - -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; } - -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; } - -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; } - -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; } - -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; } - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 14px; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); } - .popover.top { - margin-top: -10px; } - .popover.right { - margin-left: 10px; } - .popover.bottom { - margin-top: 10px; } - .popover.left { - margin-left: -10px; } - -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; } - -.popover-content { - padding: 9px 14px; } - -.popover > .arrow, .popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; } - -.popover > .arrow { - border-width: 11px; } - -.popover > .arrow:after { - border-width: 10px; - content: ""; } - -.popover.top > .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; } - .popover.top > .arrow:after { - content: " "; - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #fff; } - -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999999; - border-right-color: rgba(0, 0, 0, 0.25); } - .popover.right > .arrow:after { - content: " "; - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #fff; } - -.popover.bottom > .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; } - .popover.bottom > .arrow:after { - content: " "; - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #fff; } - -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999999; - border-left-color: rgba(0, 0, 0, 0.25); } - .popover.left > .arrow:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: #fff; - bottom: -10px; } - -.carousel { - position: relative; } - -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; } - .carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; } - .carousel-inner > .item > img, - .carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; - line-height: 1; } - @media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - -moz-transition: -moz-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - -moz-perspective: 1000px; - perspective: 1000px; } - .carousel-inner > .item.next, .carousel-inner > .item.active.right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - left: 0; } - .carousel-inner > .item.prev, .carousel-inner > .item.active.left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; } - .carousel-inner > .item.next.left, .carousel-inner > .item.prev.right, .carousel-inner > .item.active { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - left: 0; } } - .carousel-inner > .active, - .carousel-inner > .next, - .carousel-inner > .prev { - display: block; } - .carousel-inner > .active { - left: 0; } - .carousel-inner > .next, - .carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; } - .carousel-inner > .next { - left: 100%; } - .carousel-inner > .prev { - left: -100%; } - .carousel-inner > .next.left, - .carousel-inner > .prev.right { - left: 0; } - .carousel-inner > .active.left { - left: -100%; } - .carousel-inner > .active.right { - left: 100%; } - -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 15%; - opacity: 0.5; - filter: alpha(opacity=50); - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); - background-color: transparent; } - .carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); } - .carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); } - .carousel-control:hover, .carousel-control:focus { - outline: 0; - color: #fff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); } - .carousel-control .icon-prev, - .carousel-control .icon-next, - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; } - .carousel-control .icon-prev, - .carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; } - .carousel-control .icon-next, - .carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; } - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 20px; - height: 20px; - line-height: 1; - font-family: serif; } - .carousel-control .icon-prev:before { - content: '\2039'; } - .carousel-control .icon-next:before { - content: '\203a'; } - -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; } - .carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid #fff; - border-radius: 10px; - cursor: pointer; - background-color: #000 \9; - background-color: transparent; } - .carousel-indicators .active { - margin: 0; - width: 12px; - height: 12px; - background-color: #fff; } - -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); } - .carousel-caption .btn { - text-shadow: none; } - -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -10px; - font-size: 30px; } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -10px; } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -10px; } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; } - .carousel-indicators { - bottom: 20px; } } - -.clearfix:before, .clearfix:after { - content: " "; - display: table; } - -.clearfix:after { - clear: both; } - -.center-block { - display: block; - margin-left: auto; - margin-right: auto; } - -.pull-right { - float: right !important; } - -.pull-left { - float: left !important; } - -.hide { - display: none !important; } - -.show { - display: block !important; } - -.invisible { - visibility: hidden; } - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; } - -.hidden { - display: none !important; } - -.affix { - position: fixed; } - -@-ms-viewport { - width: device-width; } - -.visible-xs { - display: none !important; } - -.visible-sm { - display: none !important; } - -.visible-md { - display: none !important; } - -.visible-lg { - display: none !important; } - -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; } - -@media (max-width: 767px) { - .visible-xs { - display: block !important; } - table.visible-xs { - display: table !important; } - tr.visible-xs { - display: table-row !important; } - th.visible-xs, - td.visible-xs { - display: table-cell !important; } } - -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; } } - -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; } } - -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; } } - -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; } - table.visible-sm { - display: table !important; } - tr.visible-sm { - display: table-row !important; } - th.visible-sm, - td.visible-sm { - display: table-cell !important; } } - -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; } } - -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; } } - -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; } } - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; } - table.visible-md { - display: table !important; } - tr.visible-md { - display: table-row !important; } - th.visible-md, - td.visible-md { - display: table-cell !important; } } - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; } } - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; } } - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; } } - -@media (min-width: 1200px) { - .visible-lg { - display: block !important; } - table.visible-lg { - display: table !important; } - tr.visible-lg { - display: table-row !important; } - th.visible-lg, - td.visible-lg { - display: table-cell !important; } } - -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; } } - -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; } } - -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; } } - -@media (max-width: 767px) { - .hidden-xs { - display: none !important; } } - -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; } } - -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; } } - -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; } } - -.visible-print { - display: none !important; } - -@media print { - .visible-print { - display: block !important; } - table.visible-print { - display: table !important; } - tr.visible-print { - display: table-row !important; } - th.visible-print, - td.visible-print { - display: table-cell !important; } } - -.visible-print-block { - display: none !important; } - @media print { - .visible-print-block { - display: block !important; } } - -.visible-print-inline { - display: none !important; } - @media print { - .visible-print-inline { - display: inline !important; } } - -.visible-print-inline-block { - display: none !important; } - @media print { - .visible-print-inline-block { - display: inline-block !important; } } - -@media print { - .hidden-print { - display: none !important; } } - -.combatant-setup, .combatant { - min-height: 35px; - padding: 10px; - line-height: 34px; - clear: left; - border-bottom: 1px solid #000; } - -.encounter-button, .number-input--button, .encounter-manager-row--save-button, .encounter-manager-row--remove-button, .encounter-manager-row--load-button, .combatant-setup--button, .combatant--apply-button, .combat-controls--next-turn, .manage-players--party-select-button { - height: 35px; - min-width: 35px; - text-align: center; - background-color: #ddd; - border: 1px solid #000; - border-radius: 2px; - cursor: pointer; - padding: 5px; } - .encounter-button:active, .number-input--button:active, .encounter-manager-row--save-button:active, .encounter-manager-row--remove-button:active, .encounter-manager-row--load-button:active, .combatant-setup--button:active, .combatant--apply-button:active, .combat-controls--next-turn:active, .manage-players--party-select-button:active { - background-color: #eee; } - -.number-input--button__positive:not(:first-child) { - margin-left: 3px; } - -.number-input--button__negative:not(:first-child) { - margin-left: 3px; } - -.number-input--button__hidden { - visibility: hidden; } - -.number-input--value { - display: inline-block; - width: 45px; - text-align: center; } - -.launch-in-imp-init-button { - background-color: #00643C; - color: #FAEBD7; - position: relative; - padding-left: 40px; } - .launch-in-imp-init-button::before { - display: inline-block; - content: ''; - height: calc(100% - 10px); - width: 100%; - margin-right: 5px; - background: url("../images/improved-initiative-logo.png"); - background-size: contain; - background-repeat: no-repeat; - position: absolute; - top: 5px; - left: 5px; } - -.current-encounter { - display: none; - margin-top: 2rem; - margin-bottom: 2rem; } - .current-encounter__shown { - display: block; } - .current-encounter--empty { - border-radius: 0.5rem; - margin-top: 2rem; - padding: 1rem; } - .current-encounter--row { - clear: right; - margin-bottom: 2rem; - display: flex; - flex-direction: row; } - .current-encounter--monster-info { - flex-grow: 1; - padding-bottom: 0.5rem; - min-width: 0; } - .current-encounter--monster-name { - font-size: 2.25em; - font-weight: 300; } - .current-encounter--monster-cr { - font-size: 1.1em; } - .current-encounter--monster-xp { - font-size: 1.1em; - margin-left: 1rem; } - .current-encounter--monster-qty-col { - min-width: 130px; } - .current-encounter--monster-qty { - display: inline; - vertical-align: middle; - width: 6rem; } - .current-encounter--monster-qty-btns { - display: inline-block; - vertical-align: middle; } - .current-encounter--monster-qty-btns button { - display: block; } - .current-encounter--monster-source { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; } - .current-encounter--btns { - margin-top: 0.5rem; - display: flex; - flex-flow: row wrap; - justify-content: flex-end; } - .current-encounter--btns .btn { - margin: 0.5rem; } - .current-encounter--totals { - border-top: 1px solid #ddd; - display: flex; - font-size: 1.5em; - padding-top: 1rem; } - .current-encounter--totals-difficulty { - flex-grow: 1; } - .current-encounter--totals-xp { - text-align: right; } - .current-encounter--totals-xp span { - display: block; } - .current-encounter--totals-individual-xp { - font-style: italic; - font-size: 70%; } - -.group-info { - display: flex; - padding-bottom: 1rem; - border-bottom: 1px solid #ddd; } - .group-info--header { - display: inline-block; - margin-top: 0; - width: 20rem; } - .group-info--party-level-row { - margin-bottom: 0.5em; } - .group-info--input { - flex-grow: 1; } - .group-info--input label { - display: block; } - .group-info--input-section { - position: relative; - float: left; - width: 16.66667%; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; - width: 7rem; } - .group-info--add-level { - margin-top: 1em; } - .group-info--add-level .fa-plus { - margin-right: 5px; } - .group-info--guidelines { - margin-top: 1rem; - text-align: right; } - .group-info--guidelines-active { - font-weight: bold; } - .group-info--guidelines-values { - text-align: right; - padding-left: 5px; } - -.monster-table { - margin-top: 2rem; } - .monster-table--button-cell { - text-align: center; } - .monster-table--cr-cell { - text-align: center; } - .monster-table--cr-cell__deadly { - background-color: #eba5a3; } - .monster-table--cr-cell__hard { - background-color: #f6ce95; } - .monster-table--cr-cell__medium { - background-color: #faf2cc; } - .monster-table--cr-cell__easy { - background-color: #dff0d8; } - .monster-table--cr-cell__pair { - background-color: #d9edf7; } - .monster-table--cr-cell__group { - background-color: #f7dfff; } - .monster-table--cr-cell__trivial { - background-color: #fff; } - .monster-table--section { - font-size: 0.95rem; - font-variant: small-caps; } - .monster-table--tags { - font-style: italic; } - .monster-table--label, .monster-table--cr-label { - display: none; } - .monster-table--source-name__short { - display: inline; } - .monster-table--source-name__long { - display: none; } - @media (min-width: 768px) { - .monster-table--source-name__short { - display: none; } - .monster-table--source-name__long { - display: inline; } } - .monster-table--filter-warning-cell { - background-color: #faf2cc; - text-align: center; - font-style: italic; } - -@media (max-width: 768px) { - .monster-table--table { - display: block; } - .monster-table--table > thead { - display: none; } - .monster-table--table > tbody { - display: block; } - .monster-table--row { - display: block; - padding: 10px 5px 10px 45px; - position: relative; - min-height: 100px; } - .monster-table--row:not(:last-child) { - border-bottom: 1px solid #ddd; } - .monster-table--warning-row { - display: block; - position: relative; } - .monster-table--warning-row:not(:last-child) { - border-bottom: 1px solid #ddd; } - .monster-table--filter-warning-cell.monster-table--filter-warning-cell, - .monster-table--button-cell.monster-table--button-cell, - .monster-table--name-cell.monster-table--name-cell, - .monster-table--cr-cell.monster-table--cr-cell, - .monster-table--size-cell.monster-table--size-cell, - .monster-table--type-cell.monster-table--type-cell, - .monster-table--alignment-cell.monster-table--alignment-cell, - .monster-table--source-cell.monster-table--source-cell { - display: inline-block; - border: 0; - padding: 0; - margin: 0 3px; } - .monster-table--filter-warning-cell.monster-table--filter-warning-cell { - width: 100%; } - .monster-table--name-cell.monster-table--name-cell { - display: block; - font-size: 1.25em; } - .monster-table--button-cell { - position: absolute; - top: 10px; - left: 5px; - z-index: 1; } - .monster-table--cr-cell.monster-table--cr-cell { - padding: 0 3px; - position: absolute; - padding-left: 5px; - padding-right: 5px; - width: 40px; - padding-top: 47px; - height: 100%; - top: 0; - left: 0; - text-align: center; } - .monster-table--name, - .monster-table--label, - .monster-table--sources { - display: inline; - margin: 3px; } - .monster-table--section { - display: none; } - .monster-table--section { - font-size: inherit; - font-variant: normal; } - .monster-table--label, - .monster-table--cr-label { - display: inline; - font-weight: bold; } - .monster-table--cr-label { - display: block; - margin: auto; } } - -.pagination-container { - text-align: center; } - .pagination-container select, .pagination-container option { - color: black; } - .pagination-container dir-pagination-controls { - display: inline-block; - vertical-align: middle; } - -.search { - display: flex; } - .search--search-form { - flex-grow: 1; } - .search--search-form--sort-control { - display: none !important; } - .search--search-form--pool-control { - max-width: 300px; } - .search--search-form * { - margin-bottom: 1rem; - margin-right: 0.5rem; } - .search .search-input { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; - margin-right: 1rem; } - @media (min-width: 992px) { - .search .search-input { - float: left; - width: 50%; } } - .search--sources-button { - display: inline-block; } - .search--size-controls { - margin-top: 0.5rem; } - .search--reset { - margin-left: 1rem; } - .search--page-size { - width: 10rem; } - .search--section { - margin-left: 1.2rem; } - .search--content-row { - margin-top: 10px; } - .search--sheet-link { - font-size: 1rem; - font-family: monospace; } - -.sources-modal--source-section-header { - font-weight: bold; - font-size: 2rem; } - -@media (max-width: 768px) { - .search--search-form--sort-control { - display: inline-block !important; } } - -.encounter-builder .encounter-builder--encounter-info-bar { - display: none; } - -@media (max-width: 768px) { - .encounter-builder .encounter-builder--encounter-info-bar { - display: block; - height: 70px; } - .encounter-builder .encounter-builder--current-encounter-container { - position: fixed; - top: 50px; - left: 0; - right: 0; - bottom: 0; - z-index: 10; - pointer-events: none; } - .encounter-builder .encounter-builder--current-encounter-slider { - position: absolute; - left: 0; - right: 0; - height: 100%; - pointer-events: auto; - top: calc(100% - 70px); - transition: top 0.5s; } - .encounter-builder .encounter-builder--current-encounter-slider.encounter-builder--current-encounter-slider.encounter-builder--current-encounter-slider__shown { - top: 0; } - .encounter-builder .encounter-builder--toggle-arrow { - font-size: 1.5em; - display: inline-block; - position: absolute; - right: 15px; - top: 50%; - transform: translateY(-50%); } - .encounter-builder .encounter-builder--encounter-info-bar { - background-color: #eee; - height: 70px; - border-width: 1px 0 1px; - border-style: solid; - border-top-color: #000; - border-bottom-color: #000; - padding: 5px; - position: relative; - cursor: pointer; } - .encounter-builder .encounter-builder--encounter-info-text { - position: absolute; - left: 15px; - top: 50%; - transform: translateY(-50%); - font-size: 1.2em; } - .encounter-builder .encounter-builder--current-encounter { - background-color: white; - overflow: auto; - position: absolute; - top: 70px; - bottom: 0; - left: 0; - right: 0; - padding: 5px; } } - -@media (max-width: 768px) { - body { - padding-bottom: 70px; } } - -.difficulty-legend { - bottom: 0; - right: 1rem; - position: fixed; - text-align: right; - z-index: 2; } - .difficulty-legend__deadly { - background-color: #eba5a3; } - .difficulty-legend__hard { - background-color: #f6ce95; } - .difficulty-legend__medium { - background-color: #faf2cc; } - .difficulty-legend__easy { - background-color: #dff0d8; } - .difficulty-legend__pair { - background-color: #d9edf7; } - .difficulty-legend__group { - background-color: #f7dfff; } - .difficulty-legend__trivial { - background-color: #fff; } - .difficulty-legend li { - padding: 5px; } - .difficulty-legend-popout { - text-align: left; } - -.difficulty-legend-sm__deadly { - background-color: #eba5a3; } - -.difficulty-legend-sm__hard { - background-color: #f6ce95; } - -.difficulty-legend-sm__medium { - background-color: #faf2cc; } - -.difficulty-legend-sm__easy { - background-color: #dff0d8; } - -.difficulty-legend-sm__pair { - background-color: #d9edf7; } - -.difficulty-legend-sm__group { - background-color: #f7dfff; } - -.difficulty-legend-sm__trivial { - background-color: #fff; } - -.difficulty-legend-sm li { - padding: 5px; } - -.encounter-manager-row { - margin-bottom: 1rem; } - .encounter-manager-row--active { - display: inline-block; - height: 25px; - font-weight: bold; } - .encounter-manager-row--controls { - padding: 10px; - border-bottom: 1px solid #000; } - .encounter-manager-row--exp { - font-variant: small-caps; } - -.encounter-manager-monster { - padding: 10px; - border-bottom: 1px solid #000; - background-color: #FC8D62; } - -.random-encounter-pools .encounter-manager-monster { - background-color: #f7dfff; } - -.combatant-setup__player { - background-color: #66C2A5; } - -.combatant-setup__enemy { - background-color: #FC8D62; } - -.combatant-setup__lair { - background-color: #E78AC3; } - -.combatant-setup--input { - background-color: rgba(255, 255, 255, 0.5); - border: 0; - padding: 3px; } - .combatant-setup--input__name { - width: 220px; } - -.combatant-setup--name { - display: inline-block; - width: 250px; } - -.combatant-setup--initative-mod { - display: inline-block; - width: 150px; } - -.combatant-setup--initative { - display: inline-block; - width: 250px; } - -.combatant-setup--hp { - display: inline-block; - width: 250px; } - -.combat-setup-controls { - padding: 10px; } - -.combatant__player { - background-color: #66C2A5; } - -.combatant__enemy { - background-color: #FC8D62; } - -.combatant__lair { - background-color: #E78AC3; } - -.combatant__active { - box-shadow: inset 5px 5px 4px #FFD700, inset -5px -5px 4px #FFD700; - font-weight: 600; } - -.combatant > * { - display: inline-block; } - -.combatant--name { - width: 250px; } - -.combatant--initiative-label { - width: 65px; } - -.combatant--initiative { - width: 30px; - text-align: right; - margin-right: 30px; } - -.combatant--hp-label { - width: 28px; } - -.combatant--hp { - display: inline-block; - width: 70px; - text-align: right; } - -.combat-controls { - padding: 10px; - border-bottom: 1px solid #000; } - -.edit-players { - padding: 10px; - min-height: 500px; } - .edit-players--text-input { - height: 100%; - width: 100%; - resize: none; } - -.manage-players--party { - padding-top: 10px; } - -.manage-players--party-select-button { - margin-left: 10px; - margin-bottom: 5px; } - -.manage-players--player { - padding: 10px; - border-top: 1px solid #000; - background-color: #66C2A5; } - .manage-players--player:last-child { - border-bottom: 1px solid #000; } - .manage-players--player--name { - display: inline-block; - width: 250px; } - .manage-players--player--init { - display: inline-block; - width: 150px; } - .manage-players--player--hp { - display: inline-block; - width: 80px; } - -.manage-players--selected-party { - display: inline-block; - font-weight: bold; - height: 25px; - margin-bottom: 5px; - margin-left: 10px; - vertical-align: middle; } - -.players-controls { - padding: 10px; } - -.about--logo { - max-width: 25%; } - -.about--disclaimer { - margin-top: 3rem; } diff --git a/styles/style.css b/styles/style.css old mode 100755 new mode 100644 index e060c9d6..1c34bdf4 --- a/styles/style.css +++ b/styles/style.css @@ -7488,6 +7488,9 @@ button.close { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } + .current-encounter--total-monsters { + display: inline; + width: 4em; } .current-encounter--btns { margin-top: 0.5rem; display: flex;