haven't committed in a while oops. A fuck-ton of HTML stuff

This commit is contained in:
tcaxle 2020-04-13 17:09:38 +01:00
parent cbbb32f163
commit b594e8b803
5339 changed files with 264915 additions and 108 deletions

775
3 Normal file
View File

@ -0,0 +1,775 @@
from django.db import models
from polymorphic.models import PolymorphicModel
import multiselectfield
from random import randint
from math import ceil
#==============================================================================#
#-------------------------------- OPTION LISTS --------------------------------#
#==============================================================================#
ATTRIBUTES = [
(
"Physical", (
("STR", "Strength"),
("DEX", "Dexterity"),
("STA", "Stamina"),
),
),
(
"Social", (
("CHA", "Charisma"),
("MAN", "Manipulation"),
("APP", "Appearance"),
),
),
(
"Mental", (
("PER", "Perception"),
("INT", "Intelligence"),
("WIT", "Wits"),
),
),
]
ABILITIES = [
(
"War", (
("ARCHERY", "Archery"),
("ATHLETICS", "Athletics"),
("AWARENESS", "Awareness"),
("BRAWL", "Brawl"),
("DODGE", "Dodge"),
("INTEGRITY", "Integrity"),
("MELEE", "Melee"),
("RESISTANCE", "Resistance"),
("THROWN", "Thrown"),
("WAR", "War"),
),
),
(
"Life", (
("CRAFT", "Craft"),
("LARCENY", "Larceny"),
("LINGUISTICS", "Linguistics"),
("PERFORMANCE", "Performance"),
("PRESENCE", "Presence"),
("RIDE", "Ride"),
("SAIL", "Sail"),
("SOCIALISE", "Socialise"),
("STEALTH", "Stealth"),
("SURVIVAL", "Survival"),
),
),
(
"Wisdom", (
("BUREAUCRACY", "Bureaucracy"),
("INVESTIGATION", "Investigation"),
("LORE", "Lore"),
("MEDICINE", "Medicine"),
("OCCULT", "Occult"),
),
),
]
STATICS = [
("SOAK NATURAL", "Natural Soak"),
("SOAK ARMORED", "Armored Soak"),
("SOAK TOTAL", "Total Soak"),
("HARDNESS", "Hardness"),
("PARRY", "Parry"),
("EVASION", "Evasion"),
("RESOLVE", "Resolve"),
("GUILE", "Guile"),
("RUSH", "Rush"),
("DISENGAGE", "Disengage"),
("JOIN BATTLE", "Join Battle"),
]
CATEGORIES = [
("L", "Light"),
("M", "Medium"),
("H", "Heavy"),
]
TAGS_WEAPONS = [
(
"General", (
("ONE HANDED", "One Handed"),
("TWO HANDED", "Two Handed"),
("BASHING", "Bashing"),
("CONCEALABLE", "Concealable"),
("LETHAL", "Lethal"),
("MOUNTED", "Mounted"),
("PIERCING", "Piercing"),
("SPECIAL", "Special"),
),
),
(
"Melee", (
("MELEE", "Melee"),
("BALANCED", "Balanced"),
("BRAWL", "Brawl"),
("CHOPPING", "Chopping"),
("DISARMING", "Disarming"),
("FLEXIBLE", "Flexible"),
("IMPROVISED", "Improvised"),
("GRAPPLING", "Grappling"),
("MARTIAL ARTS", "Martial Arts"),
("NATURAL", "Natural"),
("REACHING", "Reaching"),
("SHIELD", "Shield"),
("SMASHING", "Smashing"),
("WORN", "Worn"),
),
),
(
"Thrown", (
("THROWN", "Occult"),
("CUTTING", "Cutting"),
("POISONABLE", "Poisonable"),
("SUBTLE", "Subtle"),
),
),
(
"Archery", (
("ARCHERY", "Archery"),
("CROSSBOW", "Crossbow"),
("FLAME", "Flame"),
("POWERFUL", "Powerful"),
("SLOW", "Slow"),
),
),
]
TAGS_ARMOR = [
("BUOYANT", "Buoyant"),
("CONCEALABLE", "Concealable"),
("SILENT", "Silent"),
]
INTENSITIES = [
("MINOR", "Minor"),
("MAJOR", "Major"),
("DEFINING", "Defining"),
]
DIE_TYPES = [
("NONE", "None"),
("SUCCESS", "Success"),
("DOUBLE", "Double"),
("EXPLODING_DISAPPEARING", "Exploding / Disappearing"),
("SUBTRACTING", "Subtracting")
]
#==============================================================================#
#------------------------------- CUSTOM MODELS --------------------------------#
#==============================================================================#
class NameField(models.CharField):
def __init__(self, *args, **kwargs):
kwargs['verbose_name'] = "Name"
kwargs['blank'] = False
kwargs['max_length'] = 100
super().__init__(*args, **kwargs)
class DescriptionField(models.TextField):
def __init__(self, *args, **kwargs):
kwargs['verbose_name'] = "Description"
kwargs['blank'] = True
kwargs['max_length'] = 1000
super().__init__(*args, **kwargs)
class DotField(models.IntegerField):
def __init__(self, verbose_name, *args, **kwargs):
kwargs['verbose_name'] = verbose_name
kwargs['blank'] = False
kwargs['default'] = 0
super().__init__(*args, **kwargs)
class SingleChoiceField(models.CharField):
def __init__(self, verbose_name, choices, *args, **kwargs):
kwargs['verbose_name'] = verbose_name
kwargs['choices'] = choices
kwargs['blank'] = True
kwargs['max_length'] = 100
super().__init__(*args, **kwargs)
class MultiChoiceField(multiselectfield.MultiSelectField):
def __init__(self, verbose_name, choices, *args, **kwargs):
kwargs['verbose_name'] = verbose_name
kwargs['choices'] = choices
kwargs['blank'] = True
kwargs['max_length'] = 100
super().__init__(*args, **kwargs)
class NamedIntegerField(models.IntegerField):
def __init__(self, verbose_name, desc=None, *args, **kwargs):
kwargs['verbose_name'] = verbose_name
kwargs['help_text'] = desc
kwargs['blank'] = False
kwargs['default'] = 0
super().__init__(*args, **kwargs)
class NamedCharField(models.CharField):
def __init__(self, verbose_name, *args, **kwargs):
kwargs['verbose_name'] = verbose_name
kwargs['blank'] = False
kwargs['max_length'] = 100
super().__init__(*args, **kwargs)
class DieField(multiselectfield.MultiSelectField):
def __init__(self, verbose_name, number, default, *args, **kwargs):
self.number = number
kwargs['verbose_name'] = verbose_name
kwargs['default'] = default
kwargs['choices'] = DIE_TYPES
kwargs['blank'] = False
kwargs['max_length'] = 100
super().__init__(*args, **kwargs)
def deconstruct(self):
name, path, args, kwargs = super().deconstruct()
kwargs['number'] = self.number
return name, path, args, kwargs
class NamedBooleanField(models.BooleanField):
def __init__(self, verbose_name, default=False, *args, **kwargs):
kwargs['verbose_name'] = verbose_name
kwargs['default'] = default
kwargs['blank'] = False
super().__init__(*args, **kwargs)
class NamedForeignKeyField(models.ForeignKey):
def __init__(self, verbose_name, *args, **kwargs):
kwargs['verbose_name'] = verbose_name
kwargs['on_delete'] = models.CASCADE
kwargs['blank'] = True
kwargs['null'] = True
super().__init__(*args, **kwargs)
class NamedManyToManyField(models.ManyToManyField):
def __init__(self, verbose_name, *args, **kwargs):
kwargs['verbose_name'] = verbose_name
kwargs['blank'] = True
super().__init__(*args, **kwargs)
class NamedOneToOneField(models.OneToOneField):
def __init__(self, verbose_name, *args, **kwargs):
kwargs['verbose_name'] = verbose_name
kwargs['on_delete'] = models.CASCADE
kwargs['blank'] = True
kwargs['null'] = True
super().__init__(*args, **kwargs)
#==============================================================================#
#-------------------------------- DICE ROLLING --------------------------------#
#==============================================================================#
class rollConfiguration(PolymorphicModel):
def __str__(self):
return self.name
name = NameField()
successesAuto = NamedIntegerField("Auto-Successes")
r01 = DieField("1s", 1, ["NONE"])
r02 = DieField("2s", 2, ["NONE"])
r03 = DieField("3s", 3, ["NONE"])
r04 = DieField("4s", 4, ["NONE"])
r05 = DieField("5s", 5, ["NONE"])
r06 = DieField("6s", 6, ["NONE"])
r07 = DieField("7s", 7, ["SUCCESS"])
r08 = DieField("8s", 8, ["SUCCESS"])
r09 = DieField("9s", 9, ["SUCCESS"])
r10 = DieField("10s", 10, ["SUCCESS", "DOUBLE"])
def roll(self, pool=1, successesStunt=0):
listDice = [
self.r01,
self.r02,
self.r03,
self.r04,
self.r05,
self.r06,
self.r07,
self.r08,
self.r09,
self.r10,
]
listSuccess, listDouble, listExplodingDisappearing, listSubtracting = [], [], [], []
for die in listDice:
if "SUCCESS" in die:
listSuccess.append(die.number)
if "DOUBLE" in die:
listDouble.append(die.number)
if "EXPLODING_DISAPPEARING" in die:
listExplodingDisappearing.append(die.number)
if "SUBTRACTING" in die:
listSubtracting.append(die.number)
successes = self.successesAuto + successesStunt
listExploded, listDisappeared = [], []
listRoll = [0 for die in range(pool)]
while 0 in listRoll:
for die in listRoll:
if die == 0:
die = randint(1, 10)
if die in listExplodingDisappearing:
if die in listSuccess:
listExploded.append(die)
else:
listDisappeared.append(die)
die = 0
for die in listRoll + listExploded:
if die in listSuccess:
successes += 1
if die in listDouble:
successes += 1
if die in listSubtracting:
successes -= 1
if successes < 0:
successes = 0
botch = (successes == 0) and (1 in listRoll)
return successes, botch, listRoll, listExploded, listDisappeared
#==============================================================================#
#--------------------------------- MODIFIERS ----------------------------------#
#==============================================================================#
class modifierBase(PolymorphicModel):
value = NamedIntegerField("Modifier Value")
class modifierAttribute(modifierBase):
def __str__(self):
return "{} [{}]".format(self.keyword, self.value)
keyword = SingleChoiceField("Attribute", ATTRIBUTES)
class modifierAbility(modifierBase):
def __str__(self):
return "{} [{}]".format(self.keyword, self.value)
keyword = SingleChoiceField("Ability", ABILITIES)
class modifierStatic(modifierBase):
def __str__(self):
return "{} [{}]".format(self.keyword, self.value)
keyword = SingleChoiceField("Static", STATICS)
#==============================================================================#
#--------------------------------- CHARACTERS ---------------------------------#
#==============================================================================#
class characterBase(PolymorphicModel):
def __str__(self):
return self.name
#======== MODIFIER METHODS ========#
def effectModifier(self, keyword):
modifier = 0
try:
effects = self.effectBase_set.filter(active=True)
for effect in effects:
modifier += effect.modifier(keyword)
except:
pass
return modifier
#============ GENERAL =============#
name = NameField()
#=========== ATTRIBUTES ===========#
strength = DotField("Strength")
def attributeStrength(self):
return self.strength + self.effectModifier("STRENGTH")
dexterity = DotField("Dexterity")
def attributeDexterity(self):
return self.dexterity + self.effectModifier("DEXTERITY")
stamina = DotField("Stamina")
def attributeStamina(self):
return self.stamina + self.effectModifier("STAMINA")
charisma = DotField("Charisma")
def attributeCharisma(self):
return self.charisma + self.effectModifier("CHARISMA")
manipulation = DotField("Manipulation")
def attributeManipulation(self):
return self.manipulation + self.effectModifier("MANIPULATION")
appearance = DotField("Apperance")
def attributeAppearance(self):
return self.appearance + self.effectModifier("APPEARANCE")
perception = DotField("Perception")
def attributePerception(self):
return self.perception + self.effectModifier("PERCEPTION")
intelligence = DotField("Intelligence")
def attributeIntelligence(self):
return self.intelligence + self.effectModifier("INTELLIGENCE")
wits = DotField("Wits")
def attributeWits(self):
return self.wits + self.effectModifier("WITS")
#=========== ABILITIES ============#
archery = DotField("Archery")
def abilityArchery(self):
return self.archery + self.effectModifier("ARCHERY")
athletics = DotField("Athletics")
def abilityAthletics(self):
return self.athletics + self.effectModifier("ATHLETICS")
awareness = DotField("Awareness")
def abilityAwareness(self):
return self.awareness + self.effectModifier("AWARENESS")
brawl = DotField("Brawl")
def abilityBrawl(self):
return self.brawl + self.effectModifier("BRAWL")
bureaucracy = DotField("Bureaucracy")
def abilityBureaucracy(self):
return self.bureaucracy + self.effectModifier("BUREAUCRACY")
craft = DotField("Craft")
def abilityCraft(self):
return self.craft + self.effectModifier("CRAFT")
dodge = DotField("Dodge")
def abilityDodge(self):
return self.dodge + self.effectModifier("DODGE")
integrity = DotField("Integrity")
def abilityIntegrity(self):
return self.integrity + self.effectModifier("INTEGRITY")
investigation = DotField("Investigation")
def abilityInvestigation(self):
return self.investigation + self.effectModifier("INVESTIGATION")
larceny = DotField("Larceny")
def abilityLarceny(self):
return self.larceny + self.effectModifier("LARCENY")
linguistics = DotField("Linguistics")
def abilityLinguistics(self):
return self.linguistics + self.effectModifier("LINGUISTICS")
lore = DotField("Lore")
def abilityLore(self):
return self.lore + self.effectModifier("LORE")
martialArts = DotField("MartialArts")
def abilityMartialArts(self):
return self.martialArts + self.effectModifier("MARTIAL ARTS")
medicine = DotField("Medicine")
def abilityMedicine(self):
return self.medicine + self.effectModifier("MEDICINE")
melee = DotField("Melee")
def abilityMelee(self):
return self.melee + self.effectModifier("MELEE")
occult = DotField("Occult")
def abilityOccult(self):
return self.occult + self.effectModifier("OCCULT")
performance = DotField("Performance")
def abilityPerformance(self):
return self.performance + self.effectModifier("PERFORMANCE")
presence = DotField("Presence")
def abilityPresence(self):
return self.presence + self.effectModifier("PRESENCE")
resistance = DotField("Resistance")
def abilityResistance(self):
return self.resistance + self.effectModifier("RESISTANCE")
ride = DotField("Ride")
def abilityRide(self):
return self.ride + self.effectModifier("RIDE")
sail = DotField("Sail")
def abilitySail(self):
return self.sail + self.effectModifier("SAIL")
socialize = DotField("Socialize")
def abilitySocialize(self):
return self.socialize + self.effectModifier("SOCIALIZE")
stealth = DotField("Stealth")
def abilityStealth(self):
return self.stealth + self.effectModifier("STEALTH")
survival = DotField("Survival")
def abilitySurvival(self):
return self.survival + self.effectModifier("SURVIVAL")
thrown = DotField("Thrown")
def abilityThrown(self):
return self.thrown + self.effectModifier("THROWN")
war = DotField("War")
def abilityWar(self):
return self.war + self.effectModifier("WAR")
#============= MERITS =============#
# Reverse relation
# .merit_set.all()
#=========== WILLPOWER ============#
willpowerCap = 10
willpowerMax = NamedIntegerField("Maximum Willpower")
willpower = NamedIntegerField("Current Willpower")
#=========== EXPERIENCE ===========#
experienceTotal = NamedIntegerField("Total Experience")
experience = NamedIntegerField("Current Experience")
#============ WEAPONS =============#
# Reverse relation
# .itemWeaponMelee_set.all()
# .itemWeaponRanged_set.all()
#============= ARMOR ==============#
# Reverse relation
# .itemArmor_set.all()
def armorSoak(self):
armor = None
modifier = 0
try:
armor = self.itemArmor_set.filter(equipped=True)
except:
pass
if armor:
for item in armor:
modifier += item.soak
return modifier
def armorHardness(self):
armor = None
modifier = 0
try:
armor = self.itemArmor_set.filter(equipped=True)
except:
pass
if armor:
for item in armor:
modifier += item.hardness
return modifier
def armorMobilityPenalty(self):
armor = None
modifier = 0
try:
armor = self.itemArmor_set.filter(equipped=True)
except:
pass
if armor:
for item in armor:
modifier += item.mobilityPenalty
return modifier
#============= ITEMS ==============#
# Reverse relation
# .item_set.all()
#============ ESSENCE =============#
essence = NamedIntegerField("Essence")
#============= HEALTH =============#
health0 = NamedIntegerField("'-0' Health Levels")
health1 = NamedIntegerField("'-1' Health Levels")
health2 = NamedIntegerField("'-2' Health Levels")
healthIndex = NamedIntegerField("Health Track Index")
def healthTrack(self):
return ["Healthy"] + ["-0" for i in range(self.health0)] + ["-1" for i in range(self.health1)] + ["-1" for i in range(self.health1)] + ["-4", "i"]
def healthLevel(self):
return self.healthTrack()[self.healthIndex]
#============ STATICS =============#
def resolve(self, speciality=None, mod=0):
return mod + ceil((self.attributeWits() + self.abilityIntegrity()) / 2) + self.effectModifier("RESOLVE")
def guile(self, speciality=None, mod=0):
return mod + ceil((self.attributeManipulation() + self.abilitySocialize()) / 2) + self.effectModifier("GUILE")
def soakNatural(self, mod=0):
return mod + self.attributeStamina() + self.effectModifier("SOAK NATURAL")
def soakArmored(self, mod=0):
return mod + self.armorSoak()
def soakTotal(self, mod=0):
return mod + self.soakNatural() + self.soakArmored()
def hardness(self, mod=0):
return mod + self.armorHardness() + self.effectModifier("HARDNESS")
def joinBattle(self, mod=0):
return mod + self.attributeWits() + self.abilityAwareness() + 3 + self.effectModifier("JOIN BATTLE")
def evasion(self, mod=0):
return mod + ceil((self.attributeDexterity() + self.abilityDodge()) / 2) - self.armorMobilityPenalty() + self.effectModifier("EVASION")
def rush(self, mod=0):
return mod + self.attributeDexterity() + self.abilityAthletics() + self.effectModifier("RUSH")
def disengage(self, mod=0):
return mod + self.attributeDexterity() + self.abilityDodge() + self.effectModifier("DISENGAGE")
class characterExaltBase(characterBase):
#============= MOTES ==============#
motesPersonalMax = NamedIntegerField("Maximum Personal Motes")
motesPersonal = NamedIntegerField("Current Personal Motes")
motesPeripheralMax = NamedIntegerField("Maximum Peripheral Motes")
motesPeripheral = NamedIntegerField("Current Peripheral Motes")
#============= LIMIT ==============#
limitTrigger = models.TextField(verbose_name="Limit Trigger", blank="False", max_length=1000)
limitBreak = NamedIntegerField("Limit Break")
#======= EXALTED EXPERIENCE =======#
experienceExaltedTotal = NamedIntegerField("Total Experience")
experienceExalted = NamedIntegerField("Current Experience")
class characterMortal(characterBase):
pass
class characterExaltSolar(characterExaltBase):
#============= CHARMS =============#
# Reverse relation
# .charmSolar_set.all()
#======= SUPERNAL & FAVORED =======#
abilitySupernal = SingleChoiceField("Supernal Ability", ABILITIES)
abilityFavored = MultiChoiceField("Favoured Abilities", ABILITIES)
class characterExaltLunar(characterExaltBase):
#========= SHAPESHIFTING ==========#
# Reverse relation
# .charmLunarShape_set.all()
#============= CHARMS =============#
# Reverse relation
# .charmLunar_set.all()
#============ FAVORED =============#
attributeFavored = MultiChoiceField("Favoured Attributes", ATTRIBUTES)
#==============================================================================#
#----------------------------------- ITEMS ------------------------------------#
#==============================================================================#
class itemBase(PolymorphicModel):
def __str__(self):
return self.name
name = NameField()
description = DescriptionField()
character = NamedForeignKeyField("Character", characterBase)
class item(itemBase):
pass
#==============================================================================#
#---------------------------------- WEAPONS -----------------------------------#
#==============================================================================#
class itemWeaponBase(itemBase):
equipped = NamedBooleanField("Equipped?")
category = SingleChoiceField("Category", CATEGORIES)
tags = MultiChoiceField("Tags", TAGS_WEAPONS)
accuracy = NamedIntegerField("Accuracy")
damage = NamedIntegerField("Damage")
defense = NamedIntegerField("Defense")
overwhelming = NamedIntegerField("Overwhelming")
attunement = NamedIntegerField("Attunement")
class itemWeaponMelee(itemWeaponBase):
def attack(self, ability, mod=0, withering=True):
if withering:
return mod + ability + self.dexterity + weapon.accuracy
else:
return mod + ability + self.dexterity
def parry(self, ability, mod=0):
if self.character.charmsActive():
mod += sum([])
return mod + ceil((self.dexterity + ability) / 2) + weapon.defense
class itemWeaponRanged(itemWeaponBase):
rangeClose = NamedIntegerField("Close Range")
rangeShort = NamedIntegerField("Short Range")
rangeMedium = NamedIntegerField("Medium Range")
rangeLong = NamedIntegerField("Long Range")
rangeExtreme = NamedIntegerField("Extreme Range")
def attack(self, ability, rangeBand, mod=0, withering=True):
rangeBand = rangeBand.lower()
if rangeBand == "close" or rangeBand == "c":
rangeModifier = self.rangeClose
elif rangeBand == "short" or rangeBand == "s":
rangeModifier = self.rangeShort
elif rangeBand == "medium" or rangeBand == "m":
rangeModifier = self.rangeMedium
elif rangeBand == "long" or rangeBand == "l":
rangeModifier = self.rangeLong
elif rangeBand == "extreme" or rangeBand == "e":
rangeModifier = self.rangeExtreme
else:
rangeModifier = 0
if withering:
return mod + rangeModifier + ability + self.dexterity + weapon.accuracy
else:
return mod + rangeModifier + ability + self.dexterity
#==============================================================================#
#----------------------------------- ARMOR ------------------------------------#
#==============================================================================#
class itemArmor(itemBase):
equipped = NamedBooleanField("Equipped?")
category = SingleChoiceField("Category", CATEGORIES)
tags = MultiChoiceField("Tags", TAGS_ARMOR)
soak = NamedIntegerField("Soak")
hardness = NamedIntegerField("Hardness")
mobilityPenalty = NamedIntegerField("Mobility Penalty")
attunement = NamedIntegerField("Attunement")
#==============================================================================#
#---------------------------------- EFFECTS -----------------------------------#
#==============================================================================#
class effectBase(PolymorphicModel):
def __str__(self):
return self.name
name = NameField()
description = DescriptionField()
character = NamedForeignKeyField("Character", characterExaltSolar)
active = NamedBooleanField("Active?")
rollConfiguration = NamedManyToManyField("Roll Configurations", rollConfiguration)
modifiers = NamedManyToManyField("Modifiers", modifierBase)
def modifier(self, keyword):
output = 0
for modifier in self.modifiers.all():
if keyword == modifier.keyword:
output += modifier.value
return output
#==============================================================================#
#----------------------------------- CHARMS -----------------------------------#
#==============================================================================#
class charmBase(effectBase):
levelEssence = NamedIntegerField("Essence Level")
class charmMartialArt(charmBase):
levelKey = NamedIntegerField("Martial Arts Level")
key = None
class charmEvocation(charmBase):
levelKey = 0
key = NamedForeignKeyField("Artifact", itemBase)
class charmSolar(charmBase):
levelKey = NamedIntegerField("Ability Level")
key = SingleChoiceField("Key Ability", ABILITIES)
class charmLunar(charmBase):
levelKey = NamedIntegerField("Attribute Level")
key = SingleChoiceField("Key Attribute", ATTRIBUTES)
class charmLunarShape(charmBase):
levelKey = 0
key = None
#==============================================================================#
#----------------------------------- MERITS -----------------------------------#
#==============================================================================#
class merit(effectBase):
dots = DotField("Dots")
#==============================================================================#
#-------------------------------- SPECIALITIES --------------------------------#
#==============================================================================#
class speciality(effectBase):
pass
#==============================================================================#
#--------------------------------- INTIMACIES ---------------------------------#
#==============================================================================#
class intimacyBase(PolymorphicModel):
def __str__(self):
return "[{}] {}".format(self.description, self.intensity)
description = DescriptionField()
intensity = SingleChoiceField("Intensity", INTENSITIES)
character = NamedForeignKeyField("Character", characterBase)
class intimacyTie(intimacyBase):
target = NamedCharField("Target")
class intimacyPrincipal(intimacyBase):
pass

Binary file not shown.

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.5 on 2020-04-12 13:10 # Generated by Django 3.0.5 on 2020-04-13 00:12
import app.models import app.models
from django.db import migrations, models from django.db import migrations, models
@ -19,6 +19,8 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', app.models.NameField(max_length=100, verbose_name='Name')), ('name', app.models.NameField(max_length=100, verbose_name='Name')),
('player', models.CharField(blank=True, max_length=100, verbose_name='Player')),
('concept', models.TextField(blank=True)),
('strength', app.models.DotField(default=0, verbose_name='Strength')), ('strength', app.models.DotField(default=0, verbose_name='Strength')),
('dexterity', app.models.DotField(default=0, verbose_name='Dexterity')), ('dexterity', app.models.DotField(default=0, verbose_name='Dexterity')),
('stamina', app.models.DotField(default=0, verbose_name='Stamina')), ('stamina', app.models.DotField(default=0, verbose_name='Stamina')),
@ -76,8 +78,6 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', app.models.NameField(max_length=100, verbose_name='Name')), ('name', app.models.NameField(max_length=100, verbose_name='Name')),
('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')),
('active', app.models.NamedBooleanField(default=False, verbose_name='Active?')),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.effectbase_set+', to='contenttypes.ContentType')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -89,8 +89,7 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')),
('intensity', app.models.SingleChoiceField(blank=True, choices=[('MINOR', 'Minor'), ('MAJOR', 'Major'), ('DEFINING', 'Defining')], max_length=100, verbose_name='Intensity')), ('intensity', app.models.SingleChoiceField(blank=True, choices=[('Minor', 'Minor'), ('Major', 'Major'), ('Defining', 'Defining')], max_length=100, verbose_name='Intensity')),
('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character')),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.intimacybase_set+', to='contenttypes.ContentType')), ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.intimacybase_set+', to='contenttypes.ContentType')),
], ],
options={ options={
@ -104,7 +103,6 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', app.models.NameField(max_length=100, verbose_name='Name')), ('name', app.models.NameField(max_length=100, verbose_name='Name')),
('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')),
('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character')),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.itembase_set+', to='contenttypes.ContentType')), ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.itembase_set+', to='contenttypes.ContentType')),
], ],
options={ options={
@ -124,18 +122,32 @@ class Migration(migrations.Migration):
'base_manager_name': 'objects', 'base_manager_name': 'objects',
}, },
), ),
migrations.CreateModel(
name='ownershipBase',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('notes', models.TextField(blank=True, verbose_name='Notes')),
('active', app.models.NamedBooleanField(default=False, verbose_name='Active/Equipped?')),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.ownershipbase_set+', to='contenttypes.ContentType')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
),
migrations.CreateModel( migrations.CreateModel(
name='characterExaltBase', name='characterExaltBase',
fields=[ fields=[
('characterbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterBase')), ('characterbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterBase')),
('anima', models.CharField(max_length=100, verbose_name='Anima')),
('motesPersonalMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Personal Motes')), ('motesPersonalMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Personal Motes')),
('motesPersonal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Personal Motes')), ('motesPersonal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Personal Motes')),
('motesPeripheralMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Peripheral Motes')), ('motesPeripheralMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Peripheral Motes')),
('motesPeripheral', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Peripheral Motes')), ('motesPeripheral', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Peripheral Motes')),
('limitTrigger', models.TextField(blank='False', max_length=1000, verbose_name='Limit Trigger')), ('limitTrigger', models.TextField(blank='False', max_length=1000, verbose_name='Limit Trigger')),
('limitBreak', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Limit Break')), ('limitBreak', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Limit Break')),
('experienceExaltedTotal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience')), ('experienceExaltedTotal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Exalted Experience')),
('experienceExalted', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience')), ('experienceExalted', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Exalted Experience')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -159,7 +171,9 @@ class Migration(migrations.Migration):
fields=[ fields=[
('effectbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.effectBase')), ('effectbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.effectBase')),
('levelEssence', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Essence Level')), ('levelEssence', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Essence Level')),
('levelKey', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Key Level')), ('charmType', app.models.SingleChoiceField(blank=True, choices=[('Permanent', 'Permanent'), ('Simple', 'Simple'), ('Reflexive', 'Reflexive'), ('Suplemental', 'Suplemental')], max_length=100, verbose_name='Charm Type')),
('duration', app.models.SingleChoiceField(blank=True, choices=[('', ''), ('One Round', 'One Round'), ('One Scene', 'One Scene'), ('Indefinite', 'Indefinite')], max_length=100, verbose_name='Charm Duration')),
('keywords', app.models.MultiChoiceField(blank=True, choices=[('Charms', (('Advantage', 'Advantage'), ('Attack-Action', 'Attack-Action'), ('Counterattack', 'Counterattack'), ('Form', 'Form'), ('Group', 'Group'), ('Mute', 'Mute'), ('Perilous', 'Perilous'), ('Once Per Scene', 'Once Per Scene'), ('Once Per Day', 'Once Per Day'), ('Once Per Story', 'Once Per Story'), ('Once Per Season', 'Once Per Season'), ('Pilot', 'Pilot'), ('Post-Roll', 'Post-Roll'), ('Psyche', 'Psyche'), ('Quickshot', 'Quickshot'))), ('Evocations', (('Dissonant', 'Dissonant'), ('Resonant', 'Resonant')))], max_length=100, verbose_name='Charm Keywords')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -205,9 +219,8 @@ class Migration(migrations.Migration):
name='itemArmor', name='itemArmor',
fields=[ fields=[
('itembase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.itemBase')), ('itembase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.itemBase')),
('equipped', app.models.NamedBooleanField(default=False, verbose_name='Equipped?')), ('category', app.models.SingleChoiceField(blank=True, choices=[('Light', 'Light'), ('Medium', 'Medium'), ('Heavy', 'Heavy')], max_length=100, verbose_name='Category')),
('category', app.models.SingleChoiceField(blank=True, choices=[('L', 'Light'), ('M', 'Medium'), ('H', 'Heavy')], max_length=100, verbose_name='Category')), ('tags', app.models.MultiChoiceField(blank=True, choices=[('Buoyant', 'Buoyant'), ('Concealable', 'Concealable'), ('Silent', 'Silent')], max_length=100, verbose_name='Tags')),
('tags', app.models.MultiChoiceField(blank=True, choices=[('BUOYANT', 'Buoyant'), ('CONCEALABLE', 'Concealable'), ('SILENT', 'Silent')], max_length=100, verbose_name='Tags')),
('soak', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Soak')), ('soak', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Soak')),
('hardness', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Hardness')), ('hardness', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Hardness')),
('mobilityPenalty', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Mobility Penalty')), ('mobilityPenalty', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Mobility Penalty')),
@ -223,9 +236,8 @@ class Migration(migrations.Migration):
name='itemWeaponBase', name='itemWeaponBase',
fields=[ fields=[
('itembase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.itemBase')), ('itembase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.itemBase')),
('equipped', app.models.NamedBooleanField(default=False, verbose_name='Equipped?')), ('category', app.models.SingleChoiceField(blank=True, choices=[('Light', 'Light'), ('Medium', 'Medium'), ('Heavy', 'Heavy')], max_length=100, verbose_name='Category')),
('category', app.models.SingleChoiceField(blank=True, choices=[('L', 'Light'), ('M', 'Medium'), ('H', 'Heavy')], max_length=100, verbose_name='Category')), ('tags', app.models.MultiChoiceField(blank=True, choices=[('General', (('One Handed', 'One Handed'), ('Two Handed', 'Two Handed'), ('Bashing', 'Bashing'), ('Concealable', 'Concealable'), ('Lethal', 'Lethal'), ('Mounted', 'Mounted'), ('Piercing', 'Piercing'), ('Special', 'Special'))), ('Melee', (('Melee', 'Melee'), ('Balanced', 'Balanced'), ('Brawl', 'Brawl'), ('Chopping', 'Chopping'), ('Disarming', 'Disarming'), ('Flexible', 'Flexible'), ('Improvised', 'Improvised'), ('Grappling', 'Grappling'), ('Martial Arts', 'Martial Arts'), ('Natural', 'Natural'), ('Reaching', 'Reaching'), ('Shield', 'Shield'), ('Smashing', 'Smashing'), ('Worn', 'Worn'))), ('Thrown', (('Occult', 'Occult'), ('Cutting', 'Cutting'), ('Poisonable', 'Poisonable'), ('Subtle', 'Subtle'))), ('Archery', (('Archery', 'Archery'), ('Crossbow', 'Crossbow'), ('Flame', 'Flame'), ('Powerful', 'Powerful'), ('Slow', 'Slow')))], max_length=100, verbose_name='Tags')),
('tags', app.models.MultiChoiceField(blank=True, choices=[('General', (('ONE HANDED', 'One Handed'), ('TWO HANDED', 'Two Handed'), ('BASHING', 'Bashing'), ('CONCEALABLE', 'Concealable'), ('LETHAL', 'Lethal'), ('MOUNTED', 'Mounted'), ('PIERCING', 'Piercing'), ('SPECIAL', 'Special'))), ('Melee', (('MELEE', 'Melee'), ('BALANCED', 'Balanced'), ('BRAWL', 'Brawl'), ('CHOPPING', 'Chopping'), ('DISARMING', 'Disarming'), ('FLEXIBLE', 'Flexible'), ('IMPROVISED', 'Improvised'), ('GRAPPLING', 'Grappling'), ('MARTIAL ARTS', 'Martial Arts'), ('NATURAL', 'Natural'), ('REACHING', 'Reaching'), ('SHIELD', 'Shield'), ('SMASHING', 'Smashing'), ('WORN', 'Worn'))), ('Thrown', (('THROWN', 'Occult'), ('CUTTING', 'Cutting'), ('POISONABLE', 'Poisonable'), ('SUBTLE', 'Subtle'))), ('Archery', (('ARCHERY', 'Archery'), ('CROSSBOW', 'Crossbow'), ('FLAME', 'Flame'), ('POWERFUL', 'Powerful'), ('SLOW', 'Slow')))], max_length=100, verbose_name='Tags')),
('accuracy', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Accuracy')), ('accuracy', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Accuracy')),
('damage', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Damage')), ('damage', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Damage')),
('defense', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Defense')), ('defense', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Defense')),
@ -254,7 +266,7 @@ class Migration(migrations.Migration):
name='modifierAbility', name='modifierAbility',
fields=[ fields=[
('modifierbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.modifierBase')), ('modifierbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.modifierBase')),
('ability', app.models.SingleChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Ability')), ('keyword', app.models.SingleChoiceField(blank=True, choices=[('War', (('Archery', 'Archery'), ('Athletics', 'Athletics'), ('Awareness', 'Awareness'), ('Brawl', 'Brawl'), ('Dodge', 'Dodge'), ('Integrity', 'Integrity'), ('Melee', 'Melee'), ('Resistance', 'Resistance'), ('Thrown', 'Thrown'), ('War', 'War'))), ('Life', (('Craft', 'Craft'), ('Larceny', 'Larceny'), ('Linguistics', 'Linguistics'), ('Performance', 'Performance'), ('Presence', 'Presence'), ('Ride', 'Ride'), ('Sail', 'Sail'), ('Socialise', 'Socialise'), ('Stealth', 'Stealth'), ('Survival', 'Survival'))), ('Wisdom', (('Bureaucracy', 'Bureaucracy'), ('Investigation', 'Investigation'), ('Lore', 'Lore'), ('Medicine', 'Medicine'), ('Occult', 'Occult')))], max_length=100, verbose_name='Ability')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -266,7 +278,7 @@ class Migration(migrations.Migration):
name='modifierAttribute', name='modifierAttribute',
fields=[ fields=[
('modifierbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.modifierBase')), ('modifierbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.modifierBase')),
('attribute', app.models.SingleChoiceField(blank=True, choices=[('Physical', (('STR', 'Strength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Attribute')), ('keyword', app.models.SingleChoiceField(blank=True, choices=[('Physical', (('Strength', 'Strength'), ('Dexterity', 'Dexterity'), ('Stamina', 'Stamina'))), ('Social', (('Charisma', 'Charisma'), ('Manipulation', 'Manipulation'), ('Appearance', 'Appearance'))), ('Mental', (('Perception', 'Perception'), ('Intelligence', 'Intelligence'), ('Wits', 'Wits')))], max_length=100, verbose_name='Attribute')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -278,7 +290,7 @@ class Migration(migrations.Migration):
name='modifierStatic', name='modifierStatic',
fields=[ fields=[
('modifierbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.modifierBase')), ('modifierbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.modifierBase')),
('static', app.models.SingleChoiceField(blank=True, choices=[('SOAK NATURAL', 'Natural Soak'), ('SOAK ARMORED', 'Armored Soak'), ('SOAK TOTAL', 'Total Soak'), ('HARDNESS', 'Hardness'), ('PARRY', 'Parry'), ('EVASION', 'Evasion'), ('RESOLVE', 'Resolve'), ('GUILE', 'Guile'), ('RUSH', 'Rush'), ('DISENGAGE', 'Disengage'), ('JOIN BATTLE', 'Join Battle')], max_length=100, verbose_name='Static')), ('keyword', app.models.SingleChoiceField(blank=True, choices=[('Natural Soak', 'Natural Soak'), ('Armored Soak', 'Armored Soak'), ('Total Soak', 'Total Soak'), ('Hardness', 'Hardness'), ('Parry', 'Parry'), ('Evasion', 'Evasion'), ('Resolve', 'Resolve'), ('Guile', 'Guile'), ('Rush', 'Rush'), ('Disengage', 'Disengage'), ('Join Battle', 'Join Battle')], max_length=100, verbose_name='Static')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -303,16 +315,16 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', app.models.NameField(max_length=100, verbose_name='Name')), ('name', app.models.NameField(max_length=100, verbose_name='Name')),
('successesAuto', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Auto-Successes')), ('successesAuto', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Auto-Successes')),
('r01', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['NONE'], max_length=100, number=1, verbose_name='1s')), ('r01', app.models.DieField(choices=[('None', 'None'), ('Success', 'Success'), ('Double', 'Double'), ('Exploding / Disappearing', 'Exploding / Disappearing'), ('Subtracting', 'Subtracting')], default=['NONE'], max_length=100, number=1, verbose_name='1s')),
('r02', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['NONE'], max_length=100, number=2, verbose_name='2s')), ('r02', app.models.DieField(choices=[('None', 'None'), ('Success', 'Success'), ('Double', 'Double'), ('Exploding / Disappearing', 'Exploding / Disappearing'), ('Subtracting', 'Subtracting')], default=['NONE'], max_length=100, number=2, verbose_name='2s')),
('r03', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['NONE'], max_length=100, number=3, verbose_name='3s')), ('r03', app.models.DieField(choices=[('None', 'None'), ('Success', 'Success'), ('Double', 'Double'), ('Exploding / Disappearing', 'Exploding / Disappearing'), ('Subtracting', 'Subtracting')], default=['NONE'], max_length=100, number=3, verbose_name='3s')),
('r04', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['NONE'], max_length=100, number=4, verbose_name='4s')), ('r04', app.models.DieField(choices=[('None', 'None'), ('Success', 'Success'), ('Double', 'Double'), ('Exploding / Disappearing', 'Exploding / Disappearing'), ('Subtracting', 'Subtracting')], default=['NONE'], max_length=100, number=4, verbose_name='4s')),
('r05', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['NONE'], max_length=100, number=5, verbose_name='5s')), ('r05', app.models.DieField(choices=[('None', 'None'), ('Success', 'Success'), ('Double', 'Double'), ('Exploding / Disappearing', 'Exploding / Disappearing'), ('Subtracting', 'Subtracting')], default=['NONE'], max_length=100, number=5, verbose_name='5s')),
('r06', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['NONE'], max_length=100, number=6, verbose_name='6s')), ('r06', app.models.DieField(choices=[('None', 'None'), ('Success', 'Success'), ('Double', 'Double'), ('Exploding / Disappearing', 'Exploding / Disappearing'), ('Subtracting', 'Subtracting')], default=['NONE'], max_length=100, number=6, verbose_name='6s')),
('r07', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['SUCCESS'], max_length=100, number=7, verbose_name='7s')), ('r07', app.models.DieField(choices=[('None', 'None'), ('Success', 'Success'), ('Double', 'Double'), ('Exploding / Disappearing', 'Exploding / Disappearing'), ('Subtracting', 'Subtracting')], default=['SUCCESS'], max_length=100, number=7, verbose_name='7s')),
('r08', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['SUCCESS'], max_length=100, number=8, verbose_name='8s')), ('r08', app.models.DieField(choices=[('None', 'None'), ('Success', 'Success'), ('Double', 'Double'), ('Exploding / Disappearing', 'Exploding / Disappearing'), ('Subtracting', 'Subtracting')], default=['SUCCESS'], max_length=100, number=8, verbose_name='8s')),
('r09', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['SUCCESS'], max_length=100, number=9, verbose_name='9s')), ('r09', app.models.DieField(choices=[('None', 'None'), ('Success', 'Success'), ('Double', 'Double'), ('Exploding / Disappearing', 'Exploding / Disappearing'), ('Subtracting', 'Subtracting')], default=['SUCCESS'], max_length=100, number=9, verbose_name='9s')),
('r10', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['SUCCESS', 'DOUBLE'], max_length=100, number=10, verbose_name='10s')), ('r10', app.models.DieField(choices=[('None', 'None'), ('Success', 'Success'), ('Double', 'Double'), ('Exploding / Disappearing', 'Exploding / Disappearing'), ('Subtracting', 'Subtracting')], default=['SUCCESS', 'DOUBLE'], max_length=100, number=10, verbose_name='10s')),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.rollconfiguration_set+', to='contenttypes.ContentType')), ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.rollconfiguration_set+', to='contenttypes.ContentType')),
], ],
options={ options={
@ -320,6 +332,16 @@ class Migration(migrations.Migration):
'base_manager_name': 'objects', 'base_manager_name': 'objects',
}, },
), ),
migrations.AddField(
model_name='effectbase',
name='modifiers',
field=app.models.NamedManyToManyField(blank=True, to='app.modifierBase', verbose_name='Modifiers'),
),
migrations.AddField(
model_name='effectbase',
name='polymorphic_ctype',
field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.effectbase_set+', to='contenttypes.ContentType'),
),
migrations.AddField( migrations.AddField(
model_name='effectbase', model_name='effectbase',
name='rollConfiguration', name='rollConfiguration',
@ -329,7 +351,9 @@ class Migration(migrations.Migration):
name='characterExaltLunar', name='characterExaltLunar',
fields=[ fields=[
('characterexaltbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterExaltBase')), ('characterexaltbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterExaltBase')),
('attributeFavored', app.models.MultiChoiceField(blank=True, choices=[('Physical', (('STR', 'Strength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Favoured Attributes')), ('caste', app.models.SingleChoiceField(blank=True, choices=[('Full Moon', 'Full Moon'), ('Changing Moon', 'Changing Moon'), ('No Moon', 'No Moon'), ('Castless', 'Castless')], max_length=100, verbose_name='Lunar Caste')),
('spiritShape', models.CharField(max_length=100, verbose_name='Spirit Shape')),
('attributeFavored', app.models.MultiChoiceField(blank=True, choices=[('Physical', (('Strength', 'Strength'), ('Dexterity', 'Dexterity'), ('Stamina', 'Stamina'))), ('Social', (('Charisma', 'Charisma'), ('Manipulation', 'Manipulation'), ('Appearance', 'Appearance'))), ('Mental', (('Perception', 'Perception'), ('Intelligence', 'Intelligence'), ('Wits', 'Wits')))], max_length=100, verbose_name='Favoured Attributes')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -341,8 +365,9 @@ class Migration(migrations.Migration):
name='characterExaltSolar', name='characterExaltSolar',
fields=[ fields=[
('characterexaltbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterExaltBase')), ('characterexaltbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterExaltBase')),
('abilitySupernal', app.models.SingleChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Supernal Ability')), ('caste', app.models.SingleChoiceField(blank=True, choices=[('Dawn', 'Dawn'), ('Zenith', 'Zenith'), ('Twilight', 'Twilight'), ('Night', 'Night'), ('Eclipse', 'Eclipse')], max_length=100, verbose_name='Solar Caste')),
('abilityFavored', app.models.MultiChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Favoured Abilities')), ('abilitySupernal', app.models.SingleChoiceField(blank=True, choices=[('War', (('Archery', 'Archery'), ('Athletics', 'Athletics'), ('Awareness', 'Awareness'), ('Brawl', 'Brawl'), ('Dodge', 'Dodge'), ('Integrity', 'Integrity'), ('Melee', 'Melee'), ('Resistance', 'Resistance'), ('Thrown', 'Thrown'), ('War', 'War'))), ('Life', (('Craft', 'Craft'), ('Larceny', 'Larceny'), ('Linguistics', 'Linguistics'), ('Performance', 'Performance'), ('Presence', 'Presence'), ('Ride', 'Ride'), ('Sail', 'Sail'), ('Socialise', 'Socialise'), ('Stealth', 'Stealth'), ('Survival', 'Survival'))), ('Wisdom', (('Bureaucracy', 'Bureaucracy'), ('Investigation', 'Investigation'), ('Lore', 'Lore'), ('Medicine', 'Medicine'), ('Occult', 'Occult')))], max_length=100, verbose_name='Supernal Ability')),
('abilityFavored', app.models.MultiChoiceField(blank=True, choices=[('War', (('Archery', 'Archery'), ('Athletics', 'Athletics'), ('Awareness', 'Awareness'), ('Brawl', 'Brawl'), ('Dodge', 'Dodge'), ('Integrity', 'Integrity'), ('Melee', 'Melee'), ('Resistance', 'Resistance'), ('Thrown', 'Thrown'), ('War', 'War'))), ('Life', (('Craft', 'Craft'), ('Larceny', 'Larceny'), ('Linguistics', 'Linguistics'), ('Performance', 'Performance'), ('Presence', 'Presence'), ('Ride', 'Ride'), ('Sail', 'Sail'), ('Socialise', 'Socialise'), ('Stealth', 'Stealth'), ('Survival', 'Survival'))), ('Wisdom', (('Bureaucracy', 'Bureaucracy'), ('Investigation', 'Investigation'), ('Lore', 'Lore'), ('Medicine', 'Medicine'), ('Occult', 'Occult')))], max_length=100, verbose_name='Favoured Abilities')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -350,6 +375,55 @@ class Migration(migrations.Migration):
}, },
bases=('app.characterexaltbase',), bases=('app.characterexaltbase',),
), ),
migrations.CreateModel(
name='charmLunar',
fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')),
('levelKey', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Attribute Level')),
('key', app.models.SingleChoiceField(blank=True, choices=[('Physical', (('Strength', 'Strength'), ('Dexterity', 'Dexterity'), ('Stamina', 'Stamina'))), ('Social', (('Charisma', 'Charisma'), ('Manipulation', 'Manipulation'), ('Appearance', 'Appearance'))), ('Mental', (('Perception', 'Perception'), ('Intelligence', 'Intelligence'), ('Wits', 'Wits')))], max_length=100, verbose_name='Key Attribute')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.charmbase',),
),
migrations.CreateModel(
name='charmLunarShape',
fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.charmbase',),
),
migrations.CreateModel(
name='charmMartialArt',
fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')),
('levelKey', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Martial Arts Level')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.charmbase',),
),
migrations.CreateModel(
name='charmSolar',
fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')),
('levelKey', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Ability Level')),
('key', app.models.SingleChoiceField(blank=True, choices=[('War', (('Archery', 'Archery'), ('Athletics', 'Athletics'), ('Awareness', 'Awareness'), ('Brawl', 'Brawl'), ('Dodge', 'Dodge'), ('Integrity', 'Integrity'), ('Melee', 'Melee'), ('Resistance', 'Resistance'), ('Thrown', 'Thrown'), ('War', 'War'))), ('Life', (('Craft', 'Craft'), ('Larceny', 'Larceny'), ('Linguistics', 'Linguistics'), ('Performance', 'Performance'), ('Presence', 'Presence'), ('Ride', 'Ride'), ('Sail', 'Sail'), ('Socialise', 'Socialise'), ('Stealth', 'Stealth'), ('Survival', 'Survival'))), ('Wisdom', (('Bureaucracy', 'Bureaucracy'), ('Investigation', 'Investigation'), ('Lore', 'Lore'), ('Medicine', 'Medicine'), ('Occult', 'Occult')))], max_length=100, verbose_name='Key Ability')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.charmbase',),
),
migrations.CreateModel( migrations.CreateModel(
name='itemWeaponMelee', name='itemWeaponMelee',
fields=[ fields=[
@ -377,91 +451,167 @@ class Migration(migrations.Migration):
}, },
bases=('app.itemweaponbase',), bases=('app.itemweaponbase',),
), ),
migrations.AddField(
model_name='effectbase',
name='modifierAbility',
field=app.models.NamedManyToManyField(blank=True, to='app.modifierAbility', verbose_name='Abilities Modifiers'),
),
migrations.AddField(
model_name='effectbase',
name='modifierAttribute',
field=app.models.NamedManyToManyField(blank=True, to='app.modifierAttribute', verbose_name='Attribute Modifiers'),
),
migrations.AddField(
model_name='effectbase',
name='modifierStatic',
field=app.models.NamedManyToManyField(blank=True, to='app.modifierStatic', verbose_name='Statics Modifiers'),
),
migrations.CreateModel( migrations.CreateModel(
name='artifactBase', name='ownershipSpeciality',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('name', app.models.NameField(max_length=100, verbose_name='Name')), ('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipSpeciality_set', to='app.characterBase', verbose_name='Owner')),
('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), ('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipSpecialityTarget_set', to='app.speciality', verbose_name='Speciality')),
('item', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.itemBase', verbose_name='Item')),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.artifactbase_set+', to='contenttypes.ContentType')),
('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltBase', verbose_name='Character')),
], ],
options={ options={
'abstract': False, 'abstract': False,
'base_manager_name': 'objects', 'base_manager_name': 'objects',
}, },
bases=('app.ownershipbase',),
), ),
migrations.CreateModel( migrations.CreateModel(
name='charmSolar', name='ownershipMerit',
fields=[ fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), ('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('ability', app.models.SingleChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Key Ability')), ('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipMerit_set', to='app.characterBase', verbose_name='Owner')),
('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltSolar', verbose_name='Character')), ('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipMeritTarget_set', to='app.merit', verbose_name='Merit')),
], ],
options={ options={
'abstract': False, 'abstract': False,
'base_manager_name': 'objects', 'base_manager_name': 'objects',
}, },
bases=('app.charmbase',), bases=('app.ownershipbase',),
), ),
migrations.CreateModel( migrations.CreateModel(
name='charmMartialArt', name='ownershipItemWeapon',
fields=[ fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), ('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltBase', verbose_name='Characer')), ('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipItemWeapon_set', to='app.characterBase', verbose_name='Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipItemWeaponTarget_set', to='app.itemWeaponBase', verbose_name='Weapon')),
], ],
options={ options={
'abstract': False, 'abstract': False,
'base_manager_name': 'objects', 'base_manager_name': 'objects',
}, },
bases=('app.charmbase',), bases=('app.ownershipbase',),
), ),
migrations.CreateModel( migrations.CreateModel(
name='charmLunarShape', name='ownershipItemArmor',
fields=[ fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), ('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltLunar', verbose_name='Character')), ('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipItemArmor_set', to='app.characterBase', verbose_name='Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipItemArmorTarget_set', to='app.itemArmor', verbose_name='Armor')),
], ],
options={ options={
'abstract': False, 'abstract': False,
'base_manager_name': 'objects', 'base_manager_name': 'objects',
}, },
bases=('app.charmbase',), bases=('app.ownershipbase',),
), ),
migrations.CreateModel( migrations.CreateModel(
name='charmLunar', name='ownershipItem',
fields=[ fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), ('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('attribute', app.models.SingleChoiceField(blank=True, choices=[('Physical', (('STR', 'Strength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Key Attribute')), ('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipItem_set', to='app.characterBase', verbose_name='Owner')),
('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltLunar', verbose_name='Character')), ('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipItemTarget_set', to='app.item', verbose_name='Item')),
], ],
options={ options={
'abstract': False, 'abstract': False,
'base_manager_name': 'objects', 'base_manager_name': 'objects',
}, },
bases=('app.charmbase',), bases=('app.ownershipbase',),
), ),
migrations.CreateModel( migrations.CreateModel(
name='artifactEvocation', name='ownershipIntimacyTie',
fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipIntimacyTie_set', to='app.characterBase', verbose_name='Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipIntimacyTieTarget_set', to='app.intimacyTie', verbose_name='Tie')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.ownershipbase',),
),
migrations.CreateModel(
name='ownershipIntimacyPrincipal',
fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipIntimacyPrincipal_set', to='app.characterBase', verbose_name='Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipIntimacyPrincipalTarget_set', to='app.intimacyPrincipal', verbose_name='Principal')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.ownershipbase',),
),
migrations.CreateModel(
name='ownershipCharmMartialArt',
fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmMartialArt_set', to='app.characterExaltBase', verbose_name='Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmMartialArtTarget_set', to='app.characterExaltBase', verbose_name='Martial Arts Charm')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.ownershipbase',),
),
migrations.CreateModel(
name='ownershipCharmEvocation',
fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmEvocation_set', to='app.characterExaltBase', verbose_name='Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmEvocationTarget_set', to='app.characterExaltBase', verbose_name='Evocation')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.ownershipbase',),
),
migrations.CreateModel(
name='ownershipCharmSolar',
fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmSolar_set', to='app.characterExaltSolar', verbose_name='Solar Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmSolarTarget_set', to='app.characterExaltSolar', verbose_name='Solar Charm')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.ownershipbase',),
),
migrations.CreateModel(
name='ownershipCharmLunarShape',
fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunarShape_set', to='app.characterExaltLunar', verbose_name='Lunar Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunarShapeTarget_set', to='app.characterExaltLunar', verbose_name='Lunar Shape')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.ownershipbase',),
),
migrations.CreateModel(
name='ownershipCharmLunar',
fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunar_set', to='app.characterExaltLunar', verbose_name='Lunar Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunarTarget_set', to='app.characterExaltLunar', verbose_name='Lunar Charm')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.ownershipbase',),
),
migrations.CreateModel(
name='charmEvocation',
fields=[ fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), ('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')),
('artifact', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.artifactBase', verbose_name='Artifact')), ('key', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.itemBase', verbose_name='Artifact')),
], ],
options={ options={
'abstract': False, 'abstract': False,

View File

@ -0,0 +1,19 @@
# Generated by Django 3.0.5 on 2020-04-13 13:15
import app.models
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='characterexaltbase',
name='motesCommitted',
field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Committed Motes'),
),
]

View File

@ -812,10 +812,42 @@ class characterBase(PolymorphicModel):
pass pass
return output return output
#=========== INTIMACIES ===========#
# Reverse relation
def intimacyTieSet(self):
output = []
try:
ownerships = self.ownershipIntimacyTie_set.all()
for ownership in ownerships:
output.append(ownership.target)
except:
pass
return output
# Reverse relation
def intimacyPrincipalSet(self):
output = []
try:
ownerships = self.ownershipIntimacyPrincipal_set.all()
for ownership in ownerships:
output.append(ownership.target)
except:
pass
return output
def intimacySet(self):
return self.intimacyTieSet() + self.intimacyPrincipalSet()
#=========== WILLPOWER ============# #=========== WILLPOWER ============#
willpowerCap = 10
willpowerMax = NamedIntegerField("Maximum Willpower") willpowerMax = NamedIntegerField("Maximum Willpower")
willpower = NamedIntegerField("Current Willpower") willpower = NamedIntegerField("Current Willpower")
def dotsTriWillpower(self):
output = [0 for i in range(10)]
for i in range(10):
if i < self.willpowerMax and i >= self.willpower:
output[i] = 1
elif i < self.willpower:
output[i] = 2
return output
#=========== EXPERIENCE ===========# #=========== EXPERIENCE ===========#
experienceTotal = NamedIntegerField("Total Experience") experienceTotal = NamedIntegerField("Total Experience")
@ -892,6 +924,13 @@ class characterBase(PolymorphicModel):
#============ ESSENCE =============# #============ ESSENCE =============#
essence = NamedIntegerField("Essence") essence = NamedIntegerField("Essence")
def dotsEssence(self):
output = []
for i in range(self.essence):
output.append(True)
for i in range(5 - self.essence):
output.append(False)
return output
#============= HEALTH =============# #============= HEALTH =============#
health0 = NamedIntegerField("'-0' Health Levels") health0 = NamedIntegerField("'-0' Health Levels")
@ -942,10 +981,16 @@ class characterExaltBase(characterBase):
motesPersonal = NamedIntegerField("Current Personal Motes") motesPersonal = NamedIntegerField("Current Personal Motes")
motesPeripheralMax = NamedIntegerField("Maximum Peripheral Motes") motesPeripheralMax = NamedIntegerField("Maximum Peripheral Motes")
motesPeripheral = NamedIntegerField("Current Peripheral Motes") motesPeripheral = NamedIntegerField("Current Peripheral Motes")
motesCommitted = NamedIntegerField("Committed Motes")
#============= LIMIT ==============# #============= LIMIT ==============#
limitTrigger = models.TextField(verbose_name="Limit Trigger", blank="False", max_length=1000) limitTrigger = models.TextField(verbose_name="Limit Trigger", blank="False", max_length=1000)
limitBreak = NamedIntegerField("Limit Break") limitBreak = NamedIntegerField("Limit Break")
def dotsLimit(self):
output = [False for i in range(10)]
for i in range(10):
output[i] = i < self.limitBreak
return output
#======= EXALTED EXPERIENCE =======# #======= EXALTED EXPERIENCE =======#
experienceExaltedTotal = NamedIntegerField("Total Exalted Experience") experienceExaltedTotal = NamedIntegerField("Total Exalted Experience")
@ -1187,40 +1232,43 @@ class ownershipBase(PolymorphicModel):
notes = models.TextField(verbose_name="Notes", blank=True) notes = models.TextField(verbose_name="Notes", blank=True)
active = NamedBooleanField("Active/Equipped?") active = NamedBooleanField("Active/Equipped?")
class ownershipCharacterBase(ownershipBase): class ownershipItem(ownershipBase):
owner = NamedForeignKeyField("Owner", characterBase) target = NamedForeignKeyField("Item", item, related_name="ownershipItemTarget_set")
class ownershipCharacterExaltBase(ownershipBase): owner = NamedForeignKeyField("Owner", characterBase, related_name="ownershipItem_set")
owner = NamedForeignKeyField("Exalted Owner", characterExaltBase) class ownershipItemWeapon(ownershipBase):
class ownershipCharacterExaltSolarBase(ownershipBase): target = NamedForeignKeyField("Weapon", itemWeaponBase, related_name="ownershipItemWeaponTarget_set")
owner = NamedForeignKeyField("Solar Exalted Owner", characterExaltSolar) owner = NamedForeignKeyField("Owner", characterBase, related_name="ownershipItemWeapon_set")
class ownershipCharacterExaltLunarBase(ownershipBase): class ownershipItemArmor(ownershipBase):
owner = NamedForeignKeyField("Lunar Exalted Owner", characterExaltLunar) target = NamedForeignKeyField("Armor", itemArmor, related_name="ownershipItemArmorTarget_set")
owner = NamedForeignKeyField("Owner", characterBase, related_name="ownershipItemArmor_set")
class ownershipItem(ownershipCharacterBase): class ownershipCharmMartialArt(ownershipBase):
target = NamedForeignKeyField("Item", item) target = NamedForeignKeyField("Martial Arts Charm", characterExaltBase, related_name="ownershipCharmMartialArtTarget_set")
class ownershipItemWeapon(ownershipCharacterBase): owner = NamedForeignKeyField("Exalted Owner", characterExaltBase, related_name="ownershipCharmMartialArt_set")
target = NamedForeignKeyField("Weapon", itemWeaponBase) class ownershipCharmEvocation(ownershipBase):
class ownershipItemArmor(ownershipCharacterBase): target = NamedForeignKeyField("Evocation", characterExaltBase, related_name="ownershipCharmEvocationTarget_set")
target = NamedForeignKeyField("Armor", itemArmor) owner = NamedForeignKeyField("Exalted Owner", characterExaltBase, related_name="ownershipCharmEvocation_set")
class ownershipCharmSolar(ownershipBase):
target = NamedForeignKeyField("Solar Charm", characterExaltSolar, related_name="ownershipCharmSolarTarget_set")
owner = NamedForeignKeyField("Solar Exalted Owner", characterExaltSolar, related_name="ownershipCharmSolar_set")
class ownershipCharmLunar(ownershipBase):
target = NamedForeignKeyField("Lunar Charm", characterExaltLunar, related_name="ownershipCharmLunarTarget_set")
owner = NamedForeignKeyField("Lunar Exalted Owner", characterExaltLunar, related_name="ownershipCharmLunar_set")
class ownershipCharmLunarShape(ownershipBase):
target = NamedForeignKeyField("Lunar Shape", characterExaltLunar, related_name="ownershipCharmLunarShapeTarget_set")
owner = NamedForeignKeyField("Lunar Exalted Owner", characterExaltLunar, related_name="ownershipCharmLunarShape_set")
class ownershipCharmMartialArt(ownershipCharacterExaltBase): class ownershipMerit(ownershipBase):
target = NamedForeignKeyField("Martial Arts Charm", characterExaltBase) target = NamedForeignKeyField("Merit", merit, related_name="ownershipMeritTarget_set")
class ownershipCharmEvocation(ownershipCharacterExaltBase): owner = NamedForeignKeyField("Owner", characterBase, related_name="ownershipMerit_set")
target = NamedForeignKeyField("Evocation", characterExaltBase)
class ownershipCharmSolar(ownershipCharacterExaltSolarBase):
target = NamedForeignKeyField("Solar Charm", characterExaltSolar)
class ownershipCharmLunar(ownershipCharacterExaltLunarBase):
target = NamedForeignKeyField("Lunar Charm", characterExaltLunar)
class ownershipCharmLunarShape(ownershipCharacterExaltLunarBase):
target = NamedForeignKeyField("Lunar Shape", characterExaltLunar)
class ownershipMerit(ownershipCharacterBase): class ownershipSpeciality(ownershipBase):
target = NamedForeignKeyField("Merit", merit) target = NamedForeignKeyField("Speciality", speciality, related_name="ownershipSpecialityTarget_set")
owner = NamedForeignKeyField("Owner", characterBase, related_name="ownershipSpeciality_set")
class ownershipSpeciality(ownershipCharacterBase): class ownershipIntimacyTie(ownershipBase):
target = NamedForeignKeyField("Speciality", speciality) target = NamedForeignKeyField("Tie", intimacyTie, related_name="ownershipIntimacyTieTarget_set")
owner = NamedForeignKeyField("Owner", characterBase, related_name="ownershipIntimacyTie_set")
class ownershipIntimacyTie(ownershipCharacterBase): class ownershipIntimacyPrincipal(ownershipBase):
target = NamedForeignKeyField("Tie", intimacyTie) target = NamedForeignKeyField("Principal", intimacyPrincipal, related_name="ownershipIntimacyPrincipalTarget_set")
class ownershipIntimacyPrincipal(ownershipCharacterBase): owner = NamedForeignKeyField("Owner", characterBase, related_name="ownershipIntimacyPrincipal_set")
target = NamedForeignKeyField("Principal", intimacyPrincipal)

View File

@ -25,7 +25,7 @@ SECRET_KEY = '1ry9e5wz$6(c-)btw70c41woraos)5nzqfbw2^kvpzpi)gy#6v'
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True DEBUG = True
ALLOWED_HOSTS = [] ALLOWED_HOSTS = ["192.168.1.205", "localhost", "127.0.0.1"]
# Application definition # Application definition

Binary file not shown.

320
static/css/w3.css Normal file
View File

@ -0,0 +1,320 @@
/* Fancy */
.fancy {
line-height: 1;
text-align: center;
overflow: hidden;
}
.fancy span {
display: inline-block;
position: relative;
}
.fancy span:before,
.fancy span:after {
content: "";
position: absolute;
height: 15px;
border-bottom: 2px solid #40545c;
top: 0;
width: 600px;
}
.fancy span:before {
right: 100%;
margin-right: 7px;
}
.fancy span:after {
left: 100%;
margin-left: 7px;
}
.fancy-small {
line-height: 1;
text-align: center;
overflow: hidden;
}
.fancy-small span {
display: inline-block;
position: relative;
}
.fancy-small span:before,
.fancy-small span:after {
content: "";
position: absolute;
height: 11px;
border-bottom: 2px solid #40545c;
top: 0;
width: 600px;
}
.fancy-small span:before {
right: 100%;
margin-right: 7px;
}
.fancy-small span:after {
left: 100%;
margin-left: 7px;
}
.fancy-big {
line-height: 1;
text-align: center;
overflow: hidden;
}
.fancy-big span {
display: inline-block;
position: relative;
}
.fancy-big span:before,
.fancy-big span:after {
content: "";
position: absolute;
height: 38px;
border-bottom: 4px solid #40545c;
top: 0;
width: 600px;
}
.fancy-big span:before {
right: 100%;
margin-right: 7px;
}
.fancy-big span:after {
left: 100%;
margin-left: 7px;
}
/* W3.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */
html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item}
audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
audio:not([controls]){display:none;height:0}[hidden],template{display:none}
a{background-color:transparent}a:active,a:hover{outline-width:0}
abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000}
small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}
code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold}
button,input{overflow:visible}button,select{text-transform:none}
button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}
button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}
button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}
fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
[type=checkbox],[type=radio]{padding:0}
[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
[type=search]::-webkit-search-decoration{-webkit-appearance:none}
::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
/* End extract */
html,body{font-family:'Marcellus SC',serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}
h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:'Marcellus SC',serif}
h1,h2,h3,h4,h5,h6{font-family:'Marcellus SC',serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px}
hr{border:0;border-top:1px solid #eee;margin:20px 0}
.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit}
.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc}
.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1}
.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center}
.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px}
.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none}
.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none}
.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%}
.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none}
.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block}
.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s}
.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%}
.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc}
.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer}
.w3-dropdown-hover:hover .w3-dropdown-content{display:block}
.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000}
.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000}
.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px}
.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%}
.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%}
.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px}
.w3-main,#main{transition:margin-left .4s}
.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto}
.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left}
.w3-bar .w3-button{white-space:normal}
.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%}
.w3-responsive{display:block;overflow-x:auto}
.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both}
.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%}
.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%}
.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%}
.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%}
@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%}
.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%}
.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}}
@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%}
.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%}
.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}}
.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px}
.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px}
.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell}
.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom}
.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important}
@media (max-width:1205px){.w3-auto{max-width:95%}}
@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px}
.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative}
.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center}
.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}}
@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}}
@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}}
@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}}
@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}}
.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0}
.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0}
.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0}
.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none}
.w3-display-position{position:absolute}
.w3-circle{border-radius:50%}
.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px}
.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px}
.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px}
.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}
.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1}
.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75}
.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)}
.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)}
.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)}
.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important}
.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important}
.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important}
.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important}
.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important}
.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important}
.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important}
.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important}
.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important}
.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important}
.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important}
.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important}
.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important}
.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important}
.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important}
.w3-left{float:left!important}.w3-right{float:right!important}
.w3-button:hover{color:#000!important;background-color:#ccc!important}
.w3-transparent,.w3-hover-none:hover{background-color:transparent!important}
.w3-hover-none:hover{box-shadow:none!important}
/* Colors */
.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important}
.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important}
.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
.w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important}
.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important}
.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important}
.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important}
.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important}
.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important}
.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important}
.w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important}
.w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important}
.w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important}
.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important}
.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important}
.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important}
.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important}
.custom-grey,.custom-hover-grey:hover{color:#000!important;background-color:#40545c!important}
.custom-orange,.custom-hover-orange:hover{color:#000!important;background-color:#e8a951!important}
.custom-text-grey,.custom-hover-text-grey:hover{color:#40545c!important}
.custom-text-orange,.custom-hover-text-orange:hover{color:#e8a951!important}
.custom-border-grey,.w3-hover-border-amber:hover{border-color:#40545c!important}
.custom-border-orange,.w3-hover-border-amber:hover{border-color:#e8a951!important}
.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important}
.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important}
.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important}
.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important}
.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important}
.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important}
.w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important}
.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important}
.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important}
.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important}
.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important}
.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important}
.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important}
.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important}
.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important}
.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important}
.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important}
.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important}
.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important}
.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important}
.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important}
.w3-text-white,.w3-hover-text-white:hover{color:#fff!important}
.w3-text-black,.w3-hover-text-black:hover{color:#000!important}
.w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important}
.w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important}
.w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important}
.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important}
.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important}
.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important}
.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important}
.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important}
.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important}
.w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important}
.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important}
.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important}
.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important}
.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important}
.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important}
.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important}
.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important}
.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important}
.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important}
.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important}
.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important}
.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important}
.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important}
.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important}
.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important}
.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important}
.w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important}
.w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important}
.w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important}
.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important}
.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important}

View File

@ -0,0 +1,18 @@
Font Awesome Pro License
------------------------
Font Awesome Pro is commercial software that requires a paid license. Full
Font Awesome Pro license: https://fontawesome.com/license.
# Commercial License
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
it, and use it just about everywhere you'd like.
# Attribution
Attribution is not required by the Font Awesome Pro commercial license.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: normal;
font-display: auto;
src: url("../webfonts/fa-brands-400.eot");
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
.fab {
font-family: 'Font Awesome 5 Brands'; }

View File

@ -0,0 +1,5 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,15 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 300;
font-display: auto;
src: url("../webfonts/fa-light-300.eot");
src: url("../webfonts/fa-light-300.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.woff") format("woff"), url("../webfonts/fa-light-300.ttf") format("truetype"), url("../webfonts/fa-light-300.svg#fontawesome") format("svg"); }
.fal {
font-family: 'Font Awesome 5 Pro';
font-weight: 300; }

View File

@ -0,0 +1,5 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:300;font-display:auto;src:url(../webfonts/fa-light-300.eot);src:url(../webfonts/fa-light-300.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.woff) format("woff"),url(../webfonts/fa-light-300.ttf) format("truetype"),url(../webfonts/fa-light-300.svg#fontawesome) format("svg")}.fal{font-family:"Font Awesome 5 Pro";font-weight:300}

View File

@ -0,0 +1,15 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: auto;
src: url("../webfonts/fa-regular-400.eot");
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400; }

View File

@ -0,0 +1,5 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Pro";font-weight:400}

View File

@ -0,0 +1,16 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: auto;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900; }

View File

@ -0,0 +1,5 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Pro";font-weight:900}

View File

@ -0,0 +1,346 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
svg:not(:root).svg-inline--fa {
overflow: visible; }
.svg-inline--fa {
display: inline-block;
font-size: inherit;
height: 1em;
overflow: visible;
vertical-align: -.125em; }
.svg-inline--fa.fa-lg {
vertical-align: -.225em; }
.svg-inline--fa.fa-w-1 {
width: 0.0625em; }
.svg-inline--fa.fa-w-2 {
width: 0.125em; }
.svg-inline--fa.fa-w-3 {
width: 0.1875em; }
.svg-inline--fa.fa-w-4 {
width: 0.25em; }
.svg-inline--fa.fa-w-5 {
width: 0.3125em; }
.svg-inline--fa.fa-w-6 {
width: 0.375em; }
.svg-inline--fa.fa-w-7 {
width: 0.4375em; }
.svg-inline--fa.fa-w-8 {
width: 0.5em; }
.svg-inline--fa.fa-w-9 {
width: 0.5625em; }
.svg-inline--fa.fa-w-10 {
width: 0.625em; }
.svg-inline--fa.fa-w-11 {
width: 0.6875em; }
.svg-inline--fa.fa-w-12 {
width: 0.75em; }
.svg-inline--fa.fa-w-13 {
width: 0.8125em; }
.svg-inline--fa.fa-w-14 {
width: 0.875em; }
.svg-inline--fa.fa-w-15 {
width: 0.9375em; }
.svg-inline--fa.fa-w-16 {
width: 1em; }
.svg-inline--fa.fa-w-17 {
width: 1.0625em; }
.svg-inline--fa.fa-w-18 {
width: 1.125em; }
.svg-inline--fa.fa-w-19 {
width: 1.1875em; }
.svg-inline--fa.fa-w-20 {
width: 1.25em; }
.svg-inline--fa.fa-pull-left {
margin-right: .3em;
width: auto; }
.svg-inline--fa.fa-pull-right {
margin-left: .3em;
width: auto; }
.svg-inline--fa.fa-border {
height: 1.5em; }
.svg-inline--fa.fa-li {
width: 2em; }
.svg-inline--fa.fa-fw {
width: 1.25em; }
.fa-layers svg.svg-inline--fa {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.fa-layers {
display: inline-block;
height: 1em;
position: relative;
text-align: center;
vertical-align: -.125em;
width: 1em; }
.fa-layers svg.svg-inline--fa {
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-text, .fa-layers-counter {
display: inline-block;
position: absolute;
text-align: center; }
.fa-layers-text {
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-counter {
background-color: #ff253a;
border-radius: 1em;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #fff;
height: 1.5em;
line-height: 1;
max-width: 5em;
min-width: 1.5em;
overflow: hidden;
padding: .25em;
right: 0;
text-overflow: ellipsis;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-bottom-right {
bottom: 0;
right: 0;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom right;
transform-origin: bottom right; }
.fa-layers-bottom-left {
bottom: 0;
left: 0;
right: auto;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom left;
transform-origin: bottom left; }
.fa-layers-top-right {
right: 0;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-top-left {
left: 0;
right: auto;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top left;
transform-origin: top left; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.fa-1x {
font-size: 1em; }
.fa-2x {
font-size: 2em; }
.fa-3x {
font-size: 3em; }
.fa-4x {
font-size: 4em; }
.fa-5x {
font-size: 5em; }
.fa-6x {
font-size: 6em; }
.fa-7x {
font-size: 7em; }
.fa-8x {
font-size: 8em; }
.fa-9x {
font-size: 9em; }
.fa-10x {
font-size: 10em; }
.fa-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical,
:root .fa-flip-both {
-webkit-filter: none;
filter: none; }
.fa-stack {
display: inline-block;
height: 2em;
position: relative;
width: 2.5em; }
.fa-stack-1x,
.fa-stack-2x {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.svg-inline--fa.fa-stack-1x {
height: 1em;
width: 1.25em; }
.svg-inline--fa.fa-stack-2x {
height: 2em;
width: 2.5em; }
.fa-inverse {
color: #fff; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }

View File

@ -0,0 +1,5 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
.svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;transform:translate(-50%,-50%);transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;transform:scale(.25);transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;transform:scale(.25);transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;transform:scale(.25);transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;transform:scale(.25);transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;transform:scale(.25);transform-origin:top left}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,19 @@
// Animated Icons
// --------------------------
.@{fa-css-prefix}-spin {
animation: fa-spin 2s infinite linear;
}
.@{fa-css-prefix}-pulse {
animation: fa-spin 1s infinite steps(8);
}
@keyframes fa-spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

View File

@ -0,0 +1,16 @@
// Bordered & Pulled
// -------------------------
.@{fa-css-prefix}-border {
border-radius: .1em;
border: solid .08em @fa-border-color;
padding: .2em .25em .15em;
}
.@{fa-css-prefix}-pull-left { float: left; }
.@{fa-css-prefix}-pull-right { float: right; }
.@{fa-css-prefix}, .fas, .far, .fal, .fab {
&.@{fa-css-prefix}-pull-left { margin-right: .3em; }
&.@{fa-css-prefix}-pull-right { margin-left: .3em; }
}

View File

@ -0,0 +1,12 @@
// Base Class Definition
// -------------------------
.@{fa-css-prefix}, .fas, .far, .fal, .fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}

View File

@ -0,0 +1,6 @@
// Fixed Width Icons
// -------------------------
.@{fa-css-prefix}-fw {
text-align: center;
width: (20em / 16);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,27 @@
// Icon Sizes
// -------------------------
.larger(@factor) when (@factor > 0) {
.larger((@factor - 1));
.@{fa-css-prefix}-@{factor}x {
font-size: (@factor * 1em);
}
}
/* makes the font 33% larger relative to the icon container */
.@{fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -.0667em;
}
.@{fa-css-prefix}-xs {
font-size: .75em;
}
.@{fa-css-prefix}-sm {
font-size: .875em;
}
.larger(10);

View File

@ -0,0 +1,18 @@
// List Icons
// -------------------------
.@{fa-css-prefix}-ul {
list-style-type: none;
margin-left: (@fa-li-width * 5/4);
padding-left: 0;
> li { position: relative; }
}
.@{fa-css-prefix}-li {
left: -@fa-li-width;
position: absolute;
text-align: center;
width: @fa-li-width;
line-height: inherit;
}

View File

@ -0,0 +1,56 @@
// Mixins
// --------------------------
.fa-icon() {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1;
}
.fa-icon-rotate(@degrees, @rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
transform: rotate(@degrees);
}
.fa-icon-flip(@horiz, @vert, @rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
transform: scale(@horiz, @vert);
}
// Only display content to screen readers. A la Bootstrap 4.
//
// See: http://a11yproject.com/posts/how-to-hide-content/
.sr-only() {
border: 0;
clip: rect(0,0,0,0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
// Use in conjunction with .sr-only to only display content when it's focused.
//
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
//
// Credit: HTML5 Boilerplate
.sr-only-focusable() {
&:active,
&:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}
}

View File

@ -0,0 +1,24 @@
// Rotated & Flipped Icons
// -------------------------
.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
.@{fa-css-prefix}-flip-both, .@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); }
// Hook for IE8-9
// -------------------------
:root {
.@{fa-css-prefix}-rotate-90,
.@{fa-css-prefix}-rotate-180,
.@{fa-css-prefix}-rotate-270,
.@{fa-css-prefix}-flip-horizontal,
.@{fa-css-prefix}-flip-vertical,
.@{fa-css-prefix}-flip-both {
filter: none;
}
}

View File

@ -0,0 +1,5 @@
// Screen Readers
// -------------------------
.sr-only { .sr-only(); }
.sr-only-focusable { .sr-only-focusable(); }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
// Stacked Icons
// -------------------------
.@{fa-css-prefix}-stack {
display: inline-block;
height: 2em;
line-height: 2em;
position: relative;
vertical-align: middle;
width: 2em;
}
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
left: 0;
position: absolute;
text-align: center;
width: 100%;
}
.@{fa-css-prefix}-stack-1x { line-height: inherit; }
.@{fa-css-prefix}-stack-2x { font-size: 2em; }
.@{fa-css-prefix}-inverse { color: @fa-inverse; }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: normal;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-brands-400.eot');
src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-brands-400.woff') format('woff'),
url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'),
url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
}
.fab {
font-family: 'Font Awesome 5 Brands';
}

View File

@ -0,0 +1,16 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import "_variables.less";
@import "_mixins.less";
@import "_core.less";
@import "_larger.less";
@import "_fixed-width.less";
@import "_list.less";
@import "_bordered-pulled.less";
@import "_animated.less";
@import "_rotated-flipped.less";
@import "_stacked.less";
@import "_icons.less";
@import "_screen-reader.less";

View File

@ -0,0 +1,23 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 300;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-light-300.eot');
src: url('@{fa-font-path}/fa-light-300.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-light-300.woff2') format('woff2'),
url('@{fa-font-path}/fa-light-300.woff') format('woff'),
url('@{fa-font-path}/fa-light-300.ttf') format('truetype'),
url('@{fa-font-path}/fa-light-300.svg#fontawesome') format('svg');
}
.fal {
font-family: 'Font Awesome 5 Pro';
font-weight: 300;
}

View File

@ -0,0 +1,23 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-regular-400.eot');
src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-regular-400.woff') format('woff'),
url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'),
url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
}
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400;
}

View File

@ -0,0 +1,24 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-solid-900.eot');
src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'),
url('@{fa-font-path}/fa-solid-900.woff') format('woff'),
url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'),
url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
}
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900;
}

View File

@ -0,0 +1,6 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import '_variables.less';
@import '_shims.less';

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,294 @@
area-chart:
name: chart-area
arrow-circle-o-down:
name: arrow-alt-circle-down
prefix: far
arrow-circle-o-left:
name: arrow-alt-circle-left
prefix: far
arrow-circle-o-right:
name: arrow-alt-circle-right
prefix: far
arrow-circle-o-up:
name: arrow-alt-circle-up
prefix: far
arrows:
name: arrows-alt
arrows-alt:
name: expand-arrows-alt
arrows-h:
name: arrows-alt-h
arrows-v:
name: arrows-alt-v
bar-chart:
name: chart-bar
prefix: far
bitbucket-square:
name: bitbucket
prefix: fab
calendar:
name: calendar-alt
calendar-o:
name: calendar
prefix: far
caret-square-o-down:
name: caret-square-down
prefix: far
caret-square-o-left:
name: caret-square-left
prefix: far
caret-square-o-right:
name: caret-square-right
prefix: far
caret-square-o-up:
name: caret-square-up
prefix: far
cc:
name: closed-captioning
prefix: far
chain-broken:
name: unlink
circle-o-notch:
name: circle-notch
circle-thin:
name: circle
prefix: far
clipboard:
prefix: far
clone:
prefix: far
cloud-download:
name: cloud-download-alt
cloud-upload:
name: cloud-upload-alt
code-fork:
name: code-branch
comment-alt:
name: comment-dots
prefix: far
commenting:
name: comment-dots
compass:
prefix: far
copyright:
prefix: far
creative-commons:
prefix: fab
credit-card:
prefix: far
credit-card-alt:
name: credit-card
cutlery:
name: utensils
diamond:
name: gem
prefix: far
eercast:
name: sellcast
prefix: fab
eur:
name: euro-sign
exchange:
name: exchange-alt
external-link:
name: external-link-alt
external-link-square:
name: external-link-square-alt
eye:
prefix: far
eye-dropper:
name: eye-dropper
prefix: far
eye-slash:
prefix: far
eyedropper:
name: eye-dropper
facebook:
name: facebook-f
prefix: fab
facebook-official:
name: facebook
prefix: fab
file-text:
name: file-alt
files-o:
name: copy
prefix: far
floppy-o:
name: save
prefix: far
gbp:
name: pound-sign
glass:
name: glass-martini
google-plus:
name: google-plus-g
prefix: fab
google-plus-circle:
name: google-plus
prefix: fab
google-plus-official:
name: google-plus
prefix: fab
hand-o-down:
name: hand-point-down
prefix: far
hand-o-left:
name: hand-point-left
prefix: far
hand-o-right:
name: hand-point-right
prefix: far
hand-o-up:
name: hand-point-up
prefix: far
header:
name: heading
id-badge:
prefix: far
ils:
name: shekel-sign
inr:
name: rupee-sign
intersex:
name: transgender
jpy:
name: yen-sign
krw:
name: won-sign
level-down:
name: level-down-alt
level-up:
name: level-up-alt
life-ring:
prefix: far
line-chart:
name: chart-line
linkedin:
name: linkedin-in
prefix: fab
linkedin-square:
name: linkedin
prefix: fab
list-alt:
prefix: far
long-arrow-down:
name: long-arrow-alt-down
long-arrow-left:
name: long-arrow-alt-left
long-arrow-right:
name: long-arrow-alt-right
long-arrow-up:
name: long-arrow-alt-up
map-marker:
name: map-marker-alt
meanpath:
name: font-awesome
prefix: fab
mobile:
name: mobile-alt
money:
name: money-bill-alt
prefix: far
object-group:
prefix: far
object-ungroup:
prefix: far
paste:
prefix: far
pencil:
name: pencil-alt
pencil-square:
name: pen-square
pencil-square-o:
name: edit
prefix: far
picture:
name: image
pie-chart:
name: chart-pie
refresh:
name: sync
registered:
prefix: far
repeat:
name: redo
rub:
name: ruble-sign
scissors:
name: cut
shield:
name: shield-alt
sign-in:
name: sign-in-alt
sign-out:
name: sign-out-alt
sliders:
name: sliders-h
sort-alpha-asc:
name: sort-alpha-down
sort-alpha-desc:
name: sort-alpha-up
sort-amount-asc:
name: sort-amount-down
sort-amount-desc:
name: sort-amount-up
sort-asc:
name: sort-up
sort-desc:
name: sort-down
sort-numeric-asc:
name: sort-numeric-down
sort-numeric-desc:
name: sort-numeric-up
spoon:
name: utensil-spoon
star-half-empty:
name: star-half
star-half-full:
name: star-half
support:
name: life-ring
prefix: far
tablet:
name: tablet-alt
tachometer:
name: tachometer-alt
television:
name: tv
thumb-tack:
name: thumbtack
thumbs-o-down:
name: thumbs-down
prefix: far
thumbs-o-up:
name: thumbs-up
prefix: far
ticket:
name: ticket-alt
trash:
name: trash-alt
trash-o:
name: trash-alt
prefix: far
try:
name: lira-sign
usd:
name: dollar-sign
video-camera:
name: video
vimeo:
name: vimeo-v
prefix: fab
volume-control-phone:
name: phone-volume
wheelchair-alt:
name: accessible-icon
prefix: fab
window-maximize:
prefix: far
window-restore:
prefix: far
youtube-play:
name: youtube
prefix: fab

View File

@ -0,0 +1,791 @@
accusoft:
icons:
- accusoft
label: Accusoft
url: 'https://www.accusoft.com'
administrator-technology:
icons:
- stream
label: Administrator Technology
url: 'https://administrator.de'
adversal:
icons:
- adversal
label: Adversal
url: 'https://www.adversal.com'
affiliatetheme:
icons:
- affiliatetheme
label: affiliatetheme
url: 'https://affiliatetheme.io/en'
algolia:
icons:
- algolia
label: Algolia
url: 'http://www.algolia.com'
amazon-web-services:
icons:
- aws
label: Amazon Web Services
url: 'https://aws.amazon.com'
amilia:
icons:
- amilia
label: Amilia
url: 'http://www.amilia.com'
angry-creative:
icons:
- angrycreative
label: Angry Creative
url: 'https://angrycreative.se'
app-signal:
icons:
- stroopwafel
label: AppSignal
url: 'https://appsignal.com'
apper-systems-ab:
icons:
- apper
label: Apper Systems AB
url: 'http://www.apper.com'
'asymmetrik,ltd':
icons:
- asymmetrik
label: 'Asymmetrik, Ltd.'
url: 'http://asymmetrik.com'
ausmed-education:
icons:
- user-nurse
label: Ausmed Education
url: 'https://www.ausmed.com.au'
avianex:
icons:
- avianex
label: avianex
url: 'https://www.avianex.de'
bi-mobject:
icons:
- bimobject
label: BIMobject
url: 'http://bimobject.com'
bity:
icons:
- bity
label: Bity
url: 'http://bity.com'
blackpulp-designs:
icons:
- pray
label: Blackpulp Designs
url: 'https://www.blackpulp.com'
blissbook:
icons:
- pen-fancy
label: Blissbook
url: 'https://blissbook.com'
büromöbel-experte-gmb-h &co-kg:
icons:
- buromobelexperte
label: Büromöbel-Experte GmbH & Co. KG.
url: 'https://www.bueromoebel-experte.de'
c-panel:
icons:
- cpanel
label: cPanel
url: 'http://cpanel.com'
centercode:
icons:
- centercode
label: Centercode
url: 'https://www.centercode.com'
cibltd:
icons:
- drum-steelpan
label: Comprehensive Insurance Brokers Limited
url: 'http://www.cibltd.com'
clear-blue-technologies:
icons:
- solar-panel
label: Clear Blue Technologies
url: 'http://www.clearbluetechnologies.com'
cloudscale-ch:
icons:
- cloudscale
label: cloudscale.ch
url: 'https://www.cloudscale.ch'
cloudsmith:
icons:
- cloudsmith
label: Cloudsmith
url: 'https://cloudsmith.io'
cloudversify:
icons:
- cloudversify
label: cloudversify
url: 'https://www.cloudversify.com'
cuttlefish:
icons:
- cuttlefish
label: Cuttlefish
url: 'http://wearecuttlefish.com'
cymedica:
icons:
- wave-square
label: CyMedica
url: 'https://www.cymedicaortho.com'
darren-wiebe:
icons:
- church
label: Darren Wiebe
deploy-dog:
icons:
- deploydog
label: deploy.dog
url: 'http://deploy.dog'
deskpro:
icons:
- deskpro
label: Deskpro
url: 'http://www.deskpro.com'
discourse:
icons:
- discourse
label: Discourse
url: 'https://discourse.org'
doc-hub:
icons:
- dochub
label: DocHub
url: 'https://dochub.com'
draft2-digital:
icons:
- draft2digital
label: Draft2Digital
url: 'http://draft2digital.com'
dyalog-apl:
icons:
- dyalog
label: Dyalog APL
url: 'http://www.dyalog.com'
firstdraft:
icons:
- firstdraft
label: firstdraft
url: 'http://www.firstdraft.com'
fleetplan:
icons:
- helicopter
label: FLEETPLAN
url: 'https://www.fleetplan.net'
getaroom:
icons:
- archway
- dumbbell
- hotel
- map-marked
- map-marked-alt
- monument
- spa
- swimmer
- swimming-pool
label: getaroom
url: 'https://www.getaroom.com'
git-kraken:
icons:
- gitkraken
label: GitKraken
url: 'https://www.gitkraken.com'
gofore:
icons:
- gofore
label: Gofore
url: 'http://gofore.com'
'gripfire,inc':
icons:
- gripfire
label: 'Gripfire, Inc.'
url: 'http://gripfire.io'
harvard-medical-school:
icons:
- allergies
- ambulance
- band-aid
- briefcase-medical
- burn
- capsules
- diagnoses
- dna
- file-medical
- file-medical-alt
- first-aid
- heart
- heartbeat
- hospital
- hospital-alt
- hospital-symbol
- id-card-alt
- notes-medical
- pills
- plus
- prescription-bottle
- prescription-bottle-alt
- procedures
- smoking
- stethoscope
- syringe
- tablets
- thermometer
- user-md
- vial
- vials
- weight
- x-ray
label: Harvard Medical School
url: 'https://hms.harvard.edu'
hips:
icons:
- hips
label: Hips
url: 'https://hips.com'
hire-a-helper:
icons:
- archive
- blanket
- box-alt
- box-fragile
- box-full
- box-open
- box-up
- boxes-alt
- container-storage
- couch
- dolly
- dolly-empty
- fragile
- lamp
- loveseat
- people-carry
- person-carry
- person-dolly
- person-dolly-empty
- ramp-loading
- route
- sign
- suitcase
- tape
- truck-container
- truck-couch
- truck-loading
- truck-moving
- truck-ramp
- wine-glass
label: HireAHelper
url: 'https://www.hireahelper.com'
hornbill:
icons:
- hornbill
label: Hornbill
url: 'https://www.hornbill.com'
hotjar:
icons:
- hotjar
label: Hotjar
url: 'https://www.hotjar.com'
hub-spot:
icons:
- hubspot
label: HubSpot
url: 'http://www.HubSpot.com'
in-site-systems:
icons:
- toolbox
label: InSite Systems
url: 'https://www.insitesystems.com'
inspira-bvba:
icons:
- chess-knight
label: Inspira bvba
url: 'https://www.inspira.be'
joe-emison:
icons:
- blender-phone
label: Joe Emison
joget:
icons:
- joget
label: Joget
url: 'http://www.joget.org'
jon-galloway:
icons:
- crow
label: Jon Galloway
kevin-barone:
icons:
- file-contract
label: Kevin Barone
key-cdn:
icons:
- keycdn
label: KeyCDN
url: 'https://www.keycdn.com'
korvue:
icons:
- korvue
label: Korvue
url: 'https://korvue.com'
max-elman:
icons:
- frog
label: Max Elman
med-apps:
icons:
- medapps
label: MedApps
url: 'http://medapps.com.au'
medapps:
icons:
- book-medical
- book-user
- books-medical
- clinic-medical
- clipboard-user
- comment-alt-medical
- comment-medical
- crutch
- crutches
- disease
- files-medical
- head-side-brain
- head-side-medical
- hospital-user
- hospitals
- laptop-medical
- pager
- stretcher
- user-md-chat
- users-medical
- walker
label: MedApps
url: 'https://medapps.com.au'
megaport:
icons:
- megaport
label: Megaport
url: 'https://www.megaport.com'
mix:
icons:
- mix
label: Mix
url: 'http://mix.com'
mizuni:
icons:
- mizuni
label: Mizuni
url: 'http://www.mizuni.com'
mrt:
icons:
- medrt
label: MRT
url: 'https://medrt.co.jp'
mylogin-info:
icons:
- user-shield
label: mylogin.info
url: 'https://www.mylogin.info'
napster:
icons:
- napster
label: Napster
url: 'http://www.napster.com'
nimblr:
icons:
- nimblr
label: Nimblr
url: 'https://nimblr.ai'
nompse:
icons:
- chalkboard
- chalkboard-teacher
label: Nomp.se
url: 'https://nomp.se'
ns8:
icons:
- ns8
label: NS8
url: 'https://www.ns8.com'
nutritionix:
icons:
- nutritionix
label: Nutritionix
url: 'http://www.nutritionix.com'
page4-corporation:
icons:
- page4
label: page4 Corporation
url: 'https://en.page4.com'
pal-fed:
icons:
- palfed
label: PalFed
url: 'https://www.palfed.com'
pcsg:
icons:
- horse-head
label: PCSG
url: 'https://www.pcsg.de'
phabricator:
icons:
- phabricator
label: Phabricator
url: 'http://phacility.com'
promo-wizard:
icons:
- hat-wizard
label: Promo Wizard
url: 'https://promowizard.co.uk'
pulse-eight:
icons:
- volume-mute
label: Pulse-Eight
url: 'https://pulse-eight.com'
purely-interactive:
icons:
- kiwi-bird
label: Purely Interactive
url: 'https://www.purelyinteractive.ca'
pushed:
icons:
- pushed
label: Pushed
url: 'https://pushed.co'
quin-scape:
icons:
- quinscape
label: QuinScape
url: 'https://www.quinscape.de'
reacteurope:
icons:
- reacteurope
label: ReactEurope
url: 'https://www.react-europe.org'
readme-io:
icons:
- readme
label: Readme.io
url: 'http://readme.io'
red-river:
icons:
- red-river
label: red river
url: 'https://river.red'
replyd:
icons:
- replyd
label: replyd
resolving:
icons:
- resolving
label: Resolving
url: 'https://resolving.com'
rev-io:
icons:
- rev
label: Rev.io
url: 'https://rev.io'
rock-rms:
icons:
- rockrms
label: Rock RMS
url: 'http://rockrms.com'
rocket-chat:
icons:
- comment
- comment-alt
- comment-alt-check
- comment-alt-dots
- comment-alt-edit
- comment-alt-exclamation
- comment-alt-lines
- comment-alt-minus
- comment-alt-plus
- comment-alt-slash
- comment-alt-smile
- comment-alt-times
- comment-check
- comment-dots
- comment-edit
- comment-exclamation
- comment-lines
- comment-minus
- comment-plus
- comment-slash
- comment-smile
- comment-times
- comments
- comments-alt
- frown
- meh
- phone
- phone-plus
- phone-slash
- poo
- quote-left
- quote-right
- rocketchat
- smile
- smile-plus
- video
- video-plus
- video-slash
label: Rocket.Chat
url: 'https://rocket.chat'
rodney-oliver:
icons:
- folder-minus
- folder-plus
label: Rodney Oliver
schlix:
icons:
- schlix
label: SCHLIX
url: 'http://schlix.com'
search-eng-in:
icons:
- searchengin
label: SearchEng.in
url: 'http://searcheng.in'
service-stack:
icons:
- servicestack
label: ServiceStack
url: 'https://servicestack.net'
shawn-storie:
icons:
- teeth
- teeth-open
label: Shawn Storie
shopware:
icons:
- shopware
label: Shopware
url: 'https://shopware.de'
shp:
icons:
- school
label: SHP
url: 'http://shp.com'
silicon-barn-inc:
icons:
- project-diagram
label: Silicon Barn Inc
url: 'https://siliconbarn.com'
sistrix:
icons:
- sistrix
label: SISTRIX
url: 'https://www.sistrix.de'
smup:
icons:
- shoe-prints
label: Smup
url: 'https://www.atomsoftware.com.au'
speakap:
icons:
- speakap
label: Speakap
url: 'https://speakap.com'
stay-linked:
icons:
- barcode-alt
- barcode-read
- barcode-scan
- box
- box-check
- boxes
- clipboard-check
- clipboard-list
- conveyor-belt
- conveyor-belt-alt
- dolly
- dolly-empty
- dolly-flatbed
- dolly-flatbed-alt
- dolly-flatbed-empty
- forklift
- hand-holding-box
- hand-receiving
- inventory
- pallet
- pallet-alt
- scanner
- scanner-keyboard
- scanner-touchscreen
- shipping-fast
- shipping-timed
- tablet-rugged
- truck
- warehouse
- warehouse-alt
label: StayLinked
url: 'https://www.staylinked.com'
sticker-mule:
icons:
- sticker-mule
label: Sticker Mule
url: 'https://stickermule.com'
studio-vinari:
icons:
- studiovinari
label: Studio Vinari
url: 'https://studiovinari.com'
supple:
icons:
- ad
- analytics
- badge-check
- badge-dollar
- badge-percent
- bullhorn
- bullseye
- bullseye-arrow
- bullseye-pointer
- comment-alt-dollar
- comment-dollar
- comments-alt-dollar
- comments-dollar
- envelope-open-dollar
- envelope-open-text
- funnel-dollar
- gift-card
- lightbulb-dollar
- lightbulb-exclamation
- lightbulb-on
- lightbulb-slash
- mail-bulk
- megaphone
- poll
- poll-h
- search-dollar
- search-location
- supple
- user-crown
- users-crown
label: Supple
url: 'https://supple.com.au'
the-red-yeti:
icons:
- the-red-yeti
label: The Red Yeti
url: 'http://theredyeti.com'
the-us-sunnah-foundation:
icons:
- book-heart
- box-heart
- box-usd
- dollar-sign
- donate
- dove
- gift
- globe
- hand-heart
- hand-holding-heart
- hand-holding-seedling
- hand-holding-usd
- hand-holding-water
- hands-heart
- hands-helping
- hands-usd
- handshake
- handshake-alt
- heart
- heart-circle
- heart-square
- home-heart
- leaf
- leaf-heart
- parachute-box
- piggy-bank
- ribbon
- seedling
- usd-circle
- usd-square
label: The us-Sunnah Foundation
url: 'https://www.ussunnah.org'
themeco:
icons:
- themeco
label: Themeco
url: 'https://theme.co'
think-peaks:
icons:
- think-peaks
label: Think Peaks
url: 'https://thinkpeaks.com/'
typo3:
icons:
- typo3
label: Typo3
url: 'https://typo3.org'
uniregistry:
icons:
- uniregistry
label: Uniregistry
url: 'https://uniregistry.com'
us-sunnah-foundation:
icons:
- ussunnah
label: us-Sunnah Foundation
url: 'https://www.ussunnah.org'
vaadin:
icons:
- vaadin
label: Vaadin
url: 'http://vaadin.com'
via:
icons:
- car-crash
- draw-circle
- draw-polygon
- draw-square
- house-damage
- layer-group
- layer-minus
- layer-plus
- skull-crossbones
- user-injured
label: VIA Traffic Software Solutions
url: 'https://www.via.software'
victor-costan:
icons:
- otter
label: Staphany Park and Victor Costan
vnv:
icons:
- vnv
label: VNV
url: 'https://www.vnv.ch'
weedable:
icons:
- bong
- cannabis
- hippo
- joint
- mortar-pestle
- prescription
label: Weedable
url: 'https://www.weedable.com'
whmcs:
icons:
- whmcs
label: WHMCS
url: 'https://www.whmcs.com'
workrails:
icons:
- briefcase
label: WorkRails
url: 'https://www.workrails.com'
wpressr:
icons:
- wpressr
label: wpressr
url: 'https://wpressr.com'

View File

@ -0,0 +1,20 @@
// Animated Icons
// --------------------------
.#{$fa-css-prefix}-spin {
animation: fa-spin 2s infinite linear;
}
.#{$fa-css-prefix}-pulse {
animation: fa-spin 1s infinite steps(8);
}
@keyframes fa-spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

View File

@ -0,0 +1,20 @@
// Bordered & Pulled
// -------------------------
.#{$fa-css-prefix}-border {
border: solid .08em $fa-border-color;
border-radius: .1em;
padding: .2em .25em .15em;
}
.#{$fa-css-prefix}-pull-left { float: left; }
.#{$fa-css-prefix}-pull-right { float: right; }
.#{$fa-css-prefix},
.fas,
.far,
.fal,
.fab {
&.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
&.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
}

View File

@ -0,0 +1,20 @@
// Base Class Definition
// -------------------------
.#{$fa-css-prefix},
.fas,
.far,
.fal,
.fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
%fa-icon {
@include fa-icon;
}

View File

@ -0,0 +1,6 @@
// Fixed Width Icons
// -------------------------
.#{$fa-css-prefix}-fw {
text-align: center;
width: $fa-fw-width;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
// Icon Sizes
// -------------------------
// makes the font 33% larger relative to the icon container
.#{$fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -.0667em;
}
.#{$fa-css-prefix}-xs {
font-size: .75em;
}
.#{$fa-css-prefix}-sm {
font-size: .875em;
}
@for $i from 1 through 10 {
.#{$fa-css-prefix}-#{$i}x {
font-size: $i * 1em;
}
}

View File

@ -0,0 +1,18 @@
// List Icons
// -------------------------
.#{$fa-css-prefix}-ul {
list-style-type: none;
margin-left: $fa-li-width * 5/4;
padding-left: 0;
> li { position: relative; }
}
.#{$fa-css-prefix}-li {
left: -$fa-li-width;
position: absolute;
text-align: center;
width: $fa-li-width;
line-height: inherit;
}

View File

@ -0,0 +1,56 @@
// Mixins
// --------------------------
@mixin fa-icon {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
display: inline-block;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1;
}
@mixin fa-icon-rotate($degrees, $rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
transform: rotate($degrees);
}
@mixin fa-icon-flip($horiz, $vert, $rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
transform: scale($horiz, $vert);
}
// Only display content to screen readers. A la Bootstrap 4.
//
// See: http://a11yproject.com/posts/how-to-hide-content/
@mixin sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
// Use in conjunction with .sr-only to only display content when it's focused.
//
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
//
// Credit: HTML5 Boilerplate
@mixin sr-only-focusable {
&:active,
&:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}
}

View File

@ -0,0 +1,24 @@
// Rotated & Flipped Icons
// -------------------------
.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
.#{$fa-css-prefix}-flip-both, .#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(-1, -1, 2); }
// Hook for IE8-9
// -------------------------
:root {
.#{$fa-css-prefix}-rotate-90,
.#{$fa-css-prefix}-rotate-180,
.#{$fa-css-prefix}-rotate-270,
.#{$fa-css-prefix}-flip-horizontal,
.#{$fa-css-prefix}-flip-vertical,
.#{$fa-css-prefix}-flip-both {
filter: none;
}
}

View File

@ -0,0 +1,5 @@
// Screen Readers
// -------------------------
.sr-only { @include sr-only; }
.sr-only-focusable { @include sr-only-focusable; }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,31 @@
// Stacked Icons
// -------------------------
.#{$fa-css-prefix}-stack {
display: inline-block;
height: 2em;
line-height: 2em;
position: relative;
vertical-align: middle;
width: ($fa-fw-width*2);
}
.#{$fa-css-prefix}-stack-1x,
.#{$fa-css-prefix}-stack-2x {
left: 0;
position: absolute;
text-align: center;
width: 100%;
}
.#{$fa-css-prefix}-stack-1x {
line-height: inherit;
}
.#{$fa-css-prefix}-stack-2x {
font-size: 2em;
}
.#{$fa-css-prefix}-inverse {
color: $fa-inverse;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: normal;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-brands-400.eot');
src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'),
url('#{$fa-font-path}/fa-brands-400.woff') format('woff'),
url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'),
url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
}
.fab {
font-family: 'Font Awesome 5 Brands';
}

View File

@ -0,0 +1,16 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import 'variables';
@import 'mixins';
@import 'core';
@import 'larger';
@import 'fixed-width';
@import 'list';
@import 'bordered-pulled';
@import 'animated';
@import 'rotated-flipped';
@import 'stacked';
@import 'icons';
@import 'screen-reader';

View File

@ -0,0 +1,23 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 300;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-light-300.eot');
src: url('#{$fa-font-path}/fa-light-300.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-light-300.woff2') format('woff2'),
url('#{$fa-font-path}/fa-light-300.woff') format('woff'),
url('#{$fa-font-path}/fa-light-300.ttf') format('truetype'),
url('#{$fa-font-path}/fa-light-300.svg#fontawesome') format('svg');
}
.fal {
font-family: 'Font Awesome 5 Pro';
font-weight: 300;
}

View File

@ -0,0 +1,23 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-regular-400.eot');
src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'),
url('#{$fa-font-path}/fa-regular-400.woff') format('woff'),
url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'),
url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
}
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400;
}

View File

@ -0,0 +1,24 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-solid-900.eot');
src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),
url('#{$fa-font-path}/fa-solid-900.woff') format('woff'),
url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'),
url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
}
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900;
}

View File

@ -0,0 +1,6 @@
/*!
* Font Awesome Pro 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import 'variables';
@import 'shims';

Some files were not shown because too many files have changed in this diff Show More