- see LICENSE file
7 | *
8 | * http://ReactiveRaven.github.com/jqBootstrapValidation/
9 | */
10 |
11 | (function($) {
12 |
13 | var createdElements = [];
14 |
15 | var defaults = {
16 | options: {
17 | prependExistingHelpBlock: false,
18 | sniffHtml: true, // sniff for 'required', 'maxlength', etc
19 | preventSubmit: true, // stop the form submit event from firing if validation fails
20 | submitError: false, // function called if there is an error when trying to submit
21 | submitSuccess: false, // function called just before a successful submit event is sent to the server
22 | semanticallyStrict: false, // set to true to tidy up generated HTML output
23 | autoAdd: {
24 | helpBlocks: true
25 | },
26 | filter: function() {
27 | // return $(this).is(":visible"); // only validate elements you can see
28 | return true; // validate everything
29 | }
30 | },
31 | methods: {
32 | init: function(options) {
33 |
34 | var settings = $.extend(true, {}, defaults);
35 |
36 | settings.options = $.extend(true, settings.options, options);
37 |
38 | var $siblingElements = this;
39 |
40 | var uniqueForms = $.unique(
41 | $siblingElements.map(function() {
42 | return $(this).parents("form")[0];
43 | }).toArray()
44 | );
45 |
46 | $(uniqueForms).bind("submit", function(e) {
47 | var $form = $(this);
48 | var warningsFound = 0;
49 | var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter);
50 | $inputs.trigger("submit.validation").trigger("validationLostFocus.validation");
51 |
52 | $inputs.each(function(i, el) {
53 | var $this = $(el),
54 | $controlGroup = $this.parents(".form-group").first();
55 | if (
56 | $controlGroup.hasClass("warning")
57 | ) {
58 | $controlGroup.removeClass("warning").addClass("error");
59 | warningsFound++;
60 | }
61 | });
62 |
63 | $inputs.trigger("validationLostFocus.validation");
64 |
65 | if (warningsFound) {
66 | if (settings.options.preventSubmit) {
67 | e.preventDefault();
68 | }
69 | $form.addClass("error");
70 | if ($.isFunction(settings.options.submitError)) {
71 | settings.options.submitError($form, e, $inputs.jqBootstrapValidation("collectErrors", true));
72 | }
73 | } else {
74 | $form.removeClass("error");
75 | if ($.isFunction(settings.options.submitSuccess)) {
76 | settings.options.submitSuccess($form, e);
77 | }
78 | }
79 | });
80 |
81 | return this.each(function() {
82 |
83 | // Get references to everything we're interested in
84 | var $this = $(this),
85 | $controlGroup = $this.parents(".form-group").first(),
86 | $helpBlock = $controlGroup.find(".help-block").first(),
87 | $form = $this.parents("form").first(),
88 | validatorNames = [];
89 |
90 | // create message container if not exists
91 | if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) {
92 | $helpBlock = $('
');
93 | $controlGroup.find('.controls').append($helpBlock);
94 | createdElements.push($helpBlock[0]);
95 | }
96 |
97 | // =============================================================
98 | // SNIFF HTML FOR VALIDATORS
99 | // =============================================================
100 |
101 | // *snort sniff snuffle*
102 |
103 | if (settings.options.sniffHtml) {
104 | var message = "";
105 | // ---------------------------------------------------------
106 | // PATTERN
107 | // ---------------------------------------------------------
108 | if ($this.attr("pattern") !== undefined) {
109 | message = "Not in the expected format";
110 | if ($this.data("validationPatternMessage")) {
111 | message = $this.data("validationPatternMessage");
112 | }
113 | $this.data("validationPatternMessage", message);
114 | $this.data("validationPatternRegex", $this.attr("pattern"));
115 | }
116 | // ---------------------------------------------------------
117 | // MAX
118 | // ---------------------------------------------------------
119 | if ($this.attr("max") !== undefined || $this.attr("aria-valuemax") !== undefined) {
120 | var max = ($this.attr("max") !== undefined ? $this.attr("max") : $this.attr("aria-valuemax"));
121 | message = "Too high: Maximum of '" + max + "'";
122 | if ($this.data("validationMaxMessage")) {
123 | message = $this.data("validationMaxMessage");
124 | }
125 | $this.data("validationMaxMessage", message);
126 | $this.data("validationMaxMax", max);
127 | }
128 | // ---------------------------------------------------------
129 | // MIN
130 | // ---------------------------------------------------------
131 | if ($this.attr("min") !== undefined || $this.attr("aria-valuemin") !== undefined) {
132 | var min = ($this.attr("min") !== undefined ? $this.attr("min") : $this.attr("aria-valuemin"));
133 | message = "Too low: Minimum of '" + min + "'";
134 | if ($this.data("validationMinMessage")) {
135 | message = $this.data("validationMinMessage");
136 | }
137 | $this.data("validationMinMessage", message);
138 | $this.data("validationMinMin", min);
139 | }
140 | // ---------------------------------------------------------
141 | // MAXLENGTH
142 | // ---------------------------------------------------------
143 | if ($this.attr("maxlength") !== undefined) {
144 | message = "Too long: Maximum of '" + $this.attr("maxlength") + "' characters";
145 | if ($this.data("validationMaxlengthMessage")) {
146 | message = $this.data("validationMaxlengthMessage");
147 | }
148 | $this.data("validationMaxlengthMessage", message);
149 | $this.data("validationMaxlengthMaxlength", $this.attr("maxlength"));
150 | }
151 | // ---------------------------------------------------------
152 | // MINLENGTH
153 | // ---------------------------------------------------------
154 | if ($this.attr("minlength") !== undefined) {
155 | message = "Too short: Minimum of '" + $this.attr("minlength") + "' characters";
156 | if ($this.data("validationMinlengthMessage")) {
157 | message = $this.data("validationMinlengthMessage");
158 | }
159 | $this.data("validationMinlengthMessage", message);
160 | $this.data("validationMinlengthMinlength", $this.attr("minlength"));
161 | }
162 | // ---------------------------------------------------------
163 | // REQUIRED
164 | // ---------------------------------------------------------
165 | if ($this.attr("required") !== undefined || $this.attr("aria-required") !== undefined) {
166 | message = settings.builtInValidators.required.message;
167 | if ($this.data("validationRequiredMessage")) {
168 | message = $this.data("validationRequiredMessage");
169 | }
170 | $this.data("validationRequiredMessage", message);
171 | }
172 | // ---------------------------------------------------------
173 | // NUMBER
174 | // ---------------------------------------------------------
175 | if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "number") {
176 | message = settings.builtInValidators.number.message;
177 | if ($this.data("validationNumberMessage")) {
178 | message = $this.data("validationNumberMessage");
179 | }
180 | $this.data("validationNumberMessage", message);
181 | }
182 | // ---------------------------------------------------------
183 | // EMAIL
184 | // ---------------------------------------------------------
185 | if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "email") {
186 | message = "Not a valid email address";
187 | if ($this.data("validationValidemailMessage")) {
188 | message = $this.data("validationValidemailMessage");
189 | } else if ($this.data("validationEmailMessage")) {
190 | message = $this.data("validationEmailMessage");
191 | }
192 | $this.data("validationValidemailMessage", message);
193 | }
194 | // ---------------------------------------------------------
195 | // MINCHECKED
196 | // ---------------------------------------------------------
197 | if ($this.attr("minchecked") !== undefined) {
198 | message = "Not enough options checked; Minimum of '" + $this.attr("minchecked") + "' required";
199 | if ($this.data("validationMincheckedMessage")) {
200 | message = $this.data("validationMincheckedMessage");
201 | }
202 | $this.data("validationMincheckedMessage", message);
203 | $this.data("validationMincheckedMinchecked", $this.attr("minchecked"));
204 | }
205 | // ---------------------------------------------------------
206 | // MAXCHECKED
207 | // ---------------------------------------------------------
208 | if ($this.attr("maxchecked") !== undefined) {
209 | message = "Too many options checked; Maximum of '" + $this.attr("maxchecked") + "' required";
210 | if ($this.data("validationMaxcheckedMessage")) {
211 | message = $this.data("validationMaxcheckedMessage");
212 | }
213 | $this.data("validationMaxcheckedMessage", message);
214 | $this.data("validationMaxcheckedMaxchecked", $this.attr("maxchecked"));
215 | }
216 | }
217 |
218 | // =============================================================
219 | // COLLECT VALIDATOR NAMES
220 | // =============================================================
221 |
222 | // Get named validators
223 | if ($this.data("validation") !== undefined) {
224 | validatorNames = $this.data("validation").split(",");
225 | }
226 |
227 | // Get extra ones defined on the element's data attributes
228 | $.each($this.data(), function(i, el) {
229 | var parts = i.replace(/([A-Z])/g, ",$1").split(",");
230 | if (parts[0] === "validation" && parts[1]) {
231 | validatorNames.push(parts[1]);
232 | }
233 | });
234 |
235 | // =============================================================
236 | // NORMALISE VALIDATOR NAMES
237 | // =============================================================
238 |
239 | var validatorNamesToInspect = validatorNames;
240 | var newValidatorNamesToInspect = [];
241 |
242 | do // repeatedly expand 'shortcut' validators into their real validators
243 | {
244 | // Uppercase only the first letter of each name
245 | $.each(validatorNames, function(i, el) {
246 | validatorNames[i] = formatValidatorName(el);
247 | });
248 |
249 | // Remove duplicate validator names
250 | validatorNames = $.unique(validatorNames);
251 |
252 | // Pull out the new validator names from each shortcut
253 | newValidatorNamesToInspect = [];
254 | $.each(validatorNamesToInspect, function(i, el) {
255 | if ($this.data("validation" + el + "Shortcut") !== undefined) {
256 | // Are these custom validators?
257 | // Pull them out!
258 | $.each($this.data("validation" + el + "Shortcut").split(","), function(i2, el2) {
259 | newValidatorNamesToInspect.push(el2);
260 | });
261 | } else if (settings.builtInValidators[el.toLowerCase()]) {
262 | // Is this a recognised built-in?
263 | // Pull it out!
264 | var validator = settings.builtInValidators[el.toLowerCase()];
265 | if (validator.type.toLowerCase() === "shortcut") {
266 | $.each(validator.shortcut.split(","), function(i, el) {
267 | el = formatValidatorName(el);
268 | newValidatorNamesToInspect.push(el);
269 | validatorNames.push(el);
270 | });
271 | }
272 | }
273 | });
274 |
275 | validatorNamesToInspect = newValidatorNamesToInspect;
276 |
277 | } while (validatorNamesToInspect.length > 0)
278 |
279 | // =============================================================
280 | // SET UP VALIDATOR ARRAYS
281 | // =============================================================
282 |
283 | var validators = {};
284 |
285 | $.each(validatorNames, function(i, el) {
286 | // Set up the 'override' message
287 | var message = $this.data("validation" + el + "Message");
288 | var hasOverrideMessage = (message !== undefined);
289 | var foundValidator = false;
290 | message =
291 | (
292 | message ?
293 | message :
294 | "'" + el + "' validation failed "
295 | );
296 |
297 | $.each(
298 | settings.validatorTypes,
299 | function(validatorType, validatorTemplate) {
300 | if (validators[validatorType] === undefined) {
301 | validators[validatorType] = [];
302 | }
303 | if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) {
304 | validators[validatorType].push(
305 | $.extend(
306 | true, {
307 | name: formatValidatorName(validatorTemplate.name),
308 | message: message
309 | },
310 | validatorTemplate.init($this, el)
311 | )
312 | );
313 | foundValidator = true;
314 | }
315 | }
316 | );
317 |
318 | if (!foundValidator && settings.builtInValidators[el.toLowerCase()]) {
319 |
320 | var validator = $.extend(true, {}, settings.builtInValidators[el.toLowerCase()]);
321 | if (hasOverrideMessage) {
322 | validator.message = message;
323 | }
324 | var validatorType = validator.type.toLowerCase();
325 |
326 | if (validatorType === "shortcut") {
327 | foundValidator = true;
328 | } else {
329 | $.each(
330 | settings.validatorTypes,
331 | function(validatorTemplateType, validatorTemplate) {
332 | if (validators[validatorTemplateType] === undefined) {
333 | validators[validatorTemplateType] = [];
334 | }
335 | if (!foundValidator && validatorType === validatorTemplateType.toLowerCase()) {
336 | $this.data("validation" + el + formatValidatorName(validatorTemplate.name), validator[validatorTemplate.name.toLowerCase()]);
337 | validators[validatorType].push(
338 | $.extend(
339 | validator,
340 | validatorTemplate.init($this, el)
341 | )
342 | );
343 | foundValidator = true;
344 | }
345 | }
346 | );
347 | }
348 | }
349 |
350 | if (!foundValidator) {
351 | $.error("Cannot find validation info for '" + el + "'");
352 | }
353 | });
354 |
355 | // =============================================================
356 | // STORE FALLBACK VALUES
357 | // =============================================================
358 |
359 | $helpBlock.data(
360 | "original-contents",
361 | (
362 | $helpBlock.data("original-contents") ?
363 | $helpBlock.data("original-contents") :
364 | $helpBlock.html()
365 | )
366 | );
367 |
368 | $helpBlock.data(
369 | "original-role",
370 | (
371 | $helpBlock.data("original-role") ?
372 | $helpBlock.data("original-role") :
373 | $helpBlock.attr("role")
374 | )
375 | );
376 |
377 | $controlGroup.data(
378 | "original-classes",
379 | (
380 | $controlGroup.data("original-clases") ?
381 | $controlGroup.data("original-classes") :
382 | $controlGroup.attr("class")
383 | )
384 | );
385 |
386 | $this.data(
387 | "original-aria-invalid",
388 | (
389 | $this.data("original-aria-invalid") ?
390 | $this.data("original-aria-invalid") :
391 | $this.attr("aria-invalid")
392 | )
393 | );
394 |
395 | // =============================================================
396 | // VALIDATION
397 | // =============================================================
398 |
399 | $this.bind(
400 | "validation.validation",
401 | function(event, params) {
402 |
403 | var value = getValue($this);
404 |
405 | // Get a list of the errors to apply
406 | var errorsFound = [];
407 |
408 | $.each(validators, function(validatorType, validatorTypeArray) {
409 | if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) {
410 | $.each(validatorTypeArray, function(i, validator) {
411 | if (settings.validatorTypes[validatorType].validate($this, value, validator)) {
412 | errorsFound.push(validator.message);
413 | }
414 | });
415 | }
416 | });
417 |
418 | return errorsFound;
419 | }
420 | );
421 |
422 | $this.bind(
423 | "getValidators.validation",
424 | function() {
425 | return validators;
426 | }
427 | );
428 |
429 | // =============================================================
430 | // WATCH FOR CHANGES
431 | // =============================================================
432 | $this.bind(
433 | "submit.validation",
434 | function() {
435 | return $this.triggerHandler("change.validation", {
436 | submitting: true
437 | });
438 | }
439 | );
440 | $this.bind(
441 | [
442 | "keyup",
443 | "focus",
444 | "blur",
445 | "click",
446 | "keydown",
447 | "keypress",
448 | "change"
449 | ].join(".validation ") + ".validation",
450 | function(e, params) {
451 |
452 | var value = getValue($this);
453 |
454 | var errorsFound = [];
455 |
456 | $controlGroup.find("input,textarea,select").each(function(i, el) {
457 | var oldCount = errorsFound.length;
458 | $.each($(el).triggerHandler("validation.validation", params), function(j, message) {
459 | errorsFound.push(message);
460 | });
461 | if (errorsFound.length > oldCount) {
462 | $(el).attr("aria-invalid", "true");
463 | } else {
464 | var original = $this.data("original-aria-invalid");
465 | $(el).attr("aria-invalid", (original !== undefined ? original : false));
466 | }
467 | });
468 |
469 | $form.find("input,select,textarea").not($this).not("[name=\"" + $this.attr("name") + "\"]").trigger("validationLostFocus.validation");
470 |
471 | errorsFound = $.unique(errorsFound.sort());
472 |
473 | // Were there any errors?
474 | if (errorsFound.length) {
475 | // Better flag it up as a warning.
476 | $controlGroup.removeClass("success error").addClass("warning");
477 |
478 | // How many errors did we find?
479 | if (settings.options.semanticallyStrict && errorsFound.length === 1) {
480 | // Only one? Being strict? Just output it.
481 | $helpBlock.html(errorsFound[0] +
482 | (settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : ""));
483 | } else {
484 | // Multiple? Being sloppy? Glue them together into an UL.
485 | $helpBlock.html("" + errorsFound.join(" ") + " " +
486 | (settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : ""));
487 | }
488 | } else {
489 | $controlGroup.removeClass("warning error success");
490 | if (value.length > 0) {
491 | $controlGroup.addClass("success");
492 | }
493 | $helpBlock.html($helpBlock.data("original-contents"));
494 | }
495 |
496 | if (e.type === "blur") {
497 | $controlGroup.removeClass("success");
498 | }
499 | }
500 | );
501 | $this.bind("validationLostFocus.validation", function() {
502 | $controlGroup.removeClass("success");
503 | });
504 | });
505 | },
506 | destroy: function() {
507 |
508 | return this.each(
509 | function() {
510 |
511 | var
512 | $this = $(this),
513 | $controlGroup = $this.parents(".form-group").first(),
514 | $helpBlock = $controlGroup.find(".help-block").first();
515 |
516 | // remove our events
517 | $this.unbind('.validation'); // events are namespaced.
518 | // reset help text
519 | $helpBlock.html($helpBlock.data("original-contents"));
520 | // reset classes
521 | $controlGroup.attr("class", $controlGroup.data("original-classes"));
522 | // reset aria
523 | $this.attr("aria-invalid", $this.data("original-aria-invalid"));
524 | // reset role
525 | $helpBlock.attr("role", $this.data("original-role"));
526 | // remove all elements we created
527 | if (createdElements.indexOf($helpBlock[0]) > -1) {
528 | $helpBlock.remove();
529 | }
530 |
531 | }
532 | );
533 |
534 | },
535 | collectErrors: function(includeEmpty) {
536 |
537 | var errorMessages = {};
538 | this.each(function(i, el) {
539 | var $el = $(el);
540 | var name = $el.attr("name");
541 | var errors = $el.triggerHandler("validation.validation", {
542 | includeEmpty: true
543 | });
544 | errorMessages[name] = $.extend(true, errors, errorMessages[name]);
545 | });
546 |
547 | $.each(errorMessages, function(i, el) {
548 | if (el.length === 0) {
549 | delete errorMessages[i];
550 | }
551 | });
552 |
553 | return errorMessages;
554 |
555 | },
556 | hasErrors: function() {
557 |
558 | var errorMessages = [];
559 |
560 | this.each(function(i, el) {
561 | errorMessages = errorMessages.concat(
562 | $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {
563 | submitting: true
564 | }) : []
565 | );
566 | });
567 |
568 | return (errorMessages.length > 0);
569 | },
570 | override: function(newDefaults) {
571 | defaults = $.extend(true, defaults, newDefaults);
572 | }
573 | },
574 | validatorTypes: {
575 | callback: {
576 | name: "callback",
577 | init: function($this, name) {
578 | return {
579 | validatorName: name,
580 | callback: $this.data("validation" + name + "Callback"),
581 | lastValue: $this.val(),
582 | lastValid: true,
583 | lastFinished: true
584 | };
585 | },
586 | validate: function($this, value, validator) {
587 | if (validator.lastValue === value && validator.lastFinished) {
588 | return !validator.lastValid;
589 | }
590 |
591 | if (validator.lastFinished === true) {
592 | validator.lastValue = value;
593 | validator.lastValid = true;
594 | validator.lastFinished = false;
595 |
596 | var rrjqbvValidator = validator;
597 | var rrjqbvThis = $this;
598 | executeFunctionByName(
599 | validator.callback,
600 | window,
601 | $this,
602 | value,
603 | function(data) {
604 | if (rrjqbvValidator.lastValue === data.value) {
605 | rrjqbvValidator.lastValid = data.valid;
606 | if (data.message) {
607 | rrjqbvValidator.message = data.message;
608 | }
609 | rrjqbvValidator.lastFinished = true;
610 | rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message);
611 | // Timeout is set to avoid problems with the events being considered 'already fired'
612 | setTimeout(function() {
613 | rrjqbvThis.trigger("change.validation");
614 | }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
615 | }
616 | }
617 | );
618 | }
619 |
620 | return false;
621 |
622 | }
623 | },
624 | ajax: {
625 | name: "ajax",
626 | init: function($this, name) {
627 | return {
628 | validatorName: name,
629 | url: $this.data("validation" + name + "Ajax"),
630 | lastValue: $this.val(),
631 | lastValid: true,
632 | lastFinished: true
633 | };
634 | },
635 | validate: function($this, value, validator) {
636 | if ("" + validator.lastValue === "" + value && validator.lastFinished === true) {
637 | return validator.lastValid === false;
638 | }
639 |
640 | if (validator.lastFinished === true) {
641 | validator.lastValue = value;
642 | validator.lastValid = true;
643 | validator.lastFinished = false;
644 | $.ajax({
645 | url: validator.url,
646 | data: "value=" + value + "&field=" + $this.attr("name"),
647 | dataType: "json",
648 | success: function(data) {
649 | if ("" + validator.lastValue === "" + data.value) {
650 | validator.lastValid = !!(data.valid);
651 | if (data.message) {
652 | validator.message = data.message;
653 | }
654 | validator.lastFinished = true;
655 | $this.data("validation" + validator.validatorName + "Message", validator.message);
656 | // Timeout is set to avoid problems with the events being considered 'already fired'
657 | setTimeout(function() {
658 | $this.trigger("change.validation");
659 | }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
660 | }
661 | },
662 | failure: function() {
663 | validator.lastValid = true;
664 | validator.message = "ajax call failed";
665 | validator.lastFinished = true;
666 | $this.data("validation" + validator.validatorName + "Message", validator.message);
667 | // Timeout is set to avoid problems with the events being considered 'already fired'
668 | setTimeout(function() {
669 | $this.trigger("change.validation");
670 | }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
671 | }
672 | });
673 | }
674 |
675 | return false;
676 |
677 | }
678 | },
679 | regex: {
680 | name: "regex",
681 | init: function($this, name) {
682 | return {
683 | regex: regexFromString($this.data("validation" + name + "Regex"))
684 | };
685 | },
686 | validate: function($this, value, validator) {
687 | return (!validator.regex.test(value) && !validator.negative) ||
688 | (validator.regex.test(value) && validator.negative);
689 | }
690 | },
691 | required: {
692 | name: "required",
693 | init: function($this, name) {
694 | return {};
695 | },
696 | validate: function($this, value, validator) {
697 | return !!(value.length === 0 && !validator.negative) ||
698 | !!(value.length > 0 && validator.negative);
699 | },
700 | blockSubmit: true
701 | },
702 | match: {
703 | name: "match",
704 | init: function($this, name) {
705 | var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first();
706 | element.bind("validation.validation", function() {
707 | $this.trigger("change.validation", {
708 | submitting: true
709 | });
710 | });
711 | return {
712 | "element": element
713 | };
714 | },
715 | validate: function($this, value, validator) {
716 | return (value !== validator.element.val() && !validator.negative) ||
717 | (value === validator.element.val() && validator.negative);
718 | },
719 | blockSubmit: true
720 | },
721 | max: {
722 | name: "max",
723 | init: function($this, name) {
724 | return {
725 | max: $this.data("validation" + name + "Max")
726 | };
727 | },
728 | validate: function($this, value, validator) {
729 | return (parseFloat(value, 10) > parseFloat(validator.max, 10) && !validator.negative) ||
730 | (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative);
731 | }
732 | },
733 | min: {
734 | name: "min",
735 | init: function($this, name) {
736 | return {
737 | min: $this.data("validation" + name + "Min")
738 | };
739 | },
740 | validate: function($this, value, validator) {
741 | return (parseFloat(value) < parseFloat(validator.min) && !validator.negative) ||
742 | (parseFloat(value) >= parseFloat(validator.min) && validator.negative);
743 | }
744 | },
745 | maxlength: {
746 | name: "maxlength",
747 | init: function($this, name) {
748 | return {
749 | maxlength: $this.data("validation" + name + "Maxlength")
750 | };
751 | },
752 | validate: function($this, value, validator) {
753 | return ((value.length > validator.maxlength) && !validator.negative) ||
754 | ((value.length <= validator.maxlength) && validator.negative);
755 | }
756 | },
757 | minlength: {
758 | name: "minlength",
759 | init: function($this, name) {
760 | return {
761 | minlength: $this.data("validation" + name + "Minlength")
762 | };
763 | },
764 | validate: function($this, value, validator) {
765 | return ((value.length < validator.minlength) && !validator.negative) ||
766 | ((value.length >= validator.minlength) && validator.negative);
767 | }
768 | },
769 | maxchecked: {
770 | name: "maxchecked",
771 | init: function($this, name) {
772 | var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
773 | elements.bind("click.validation", function() {
774 | $this.trigger("change.validation", {
775 | includeEmpty: true
776 | });
777 | });
778 | return {
779 | maxchecked: $this.data("validation" + name + "Maxchecked"),
780 | elements: elements
781 | };
782 | },
783 | validate: function($this, value, validator) {
784 | return (validator.elements.filter(":checked").length > validator.maxchecked && !validator.negative) ||
785 | (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative);
786 | },
787 | blockSubmit: true
788 | },
789 | minchecked: {
790 | name: "minchecked",
791 | init: function($this, name) {
792 | var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
793 | elements.bind("click.validation", function() {
794 | $this.trigger("change.validation", {
795 | includeEmpty: true
796 | });
797 | });
798 | return {
799 | minchecked: $this.data("validation" + name + "Minchecked"),
800 | elements: elements
801 | };
802 | },
803 | validate: function($this, value, validator) {
804 | return (validator.elements.filter(":checked").length < validator.minchecked && !validator.negative) ||
805 | (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative);
806 | },
807 | blockSubmit: true
808 | }
809 | },
810 | builtInValidators: {
811 | email: {
812 | name: "Email",
813 | type: "shortcut",
814 | shortcut: "validemail"
815 | },
816 | validemail: {
817 | name: "Validemail",
818 | type: "regex",
819 | regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}",
820 | message: "Not a valid email address"
821 | },
822 | passwordagain: {
823 | name: "Passwordagain",
824 | type: "match",
825 | match: "password",
826 | message: "Does not match the given password"
827 | },
828 | positive: {
829 | name: "Positive",
830 | type: "shortcut",
831 | shortcut: "number,positivenumber"
832 | },
833 | negative: {
834 | name: "Negative",
835 | type: "shortcut",
836 | shortcut: "number,negativenumber"
837 | },
838 | number: {
839 | name: "Number",
840 | type: "regex",
841 | regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?",
842 | message: "Must be a number"
843 | },
844 | integer: {
845 | name: "Integer",
846 | type: "regex",
847 | regex: "[+-]?\\\d+",
848 | message: "No decimal places allowed"
849 | },
850 | positivenumber: {
851 | name: "Positivenumber",
852 | type: "min",
853 | min: 0,
854 | message: "Must be a positive number"
855 | },
856 | negativenumber: {
857 | name: "Negativenumber",
858 | type: "max",
859 | max: 0,
860 | message: "Must be a negative number"
861 | },
862 | required: {
863 | name: "Required",
864 | type: "required",
865 | message: "This is required"
866 | },
867 | checkone: {
868 | name: "Checkone",
869 | type: "minchecked",
870 | minchecked: 1,
871 | message: "Check at least one option"
872 | }
873 | }
874 | };
875 |
876 | var formatValidatorName = function(name) {
877 | return name
878 | .toLowerCase()
879 | .replace(
880 | /(^|\s)([a-z])/g,
881 | function(m, p1, p2) {
882 | return p1 + p2.toUpperCase();
883 | }
884 | );
885 | };
886 |
887 | var getValue = function($this) {
888 | // Extract the value we're talking about
889 | var value = $this.val();
890 | var type = $this.attr("type");
891 | if (type === "checkbox") {
892 | value = ($this.is(":checked") ? value : "");
893 | }
894 | if (type === "radio") {
895 | value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : "");
896 | }
897 | return value;
898 | };
899 |
900 | function regexFromString(inputstring) {
901 | return new RegExp("^" + inputstring + "$");
902 | }
903 |
904 | /**
905 | * Thanks to Jason Bunting via StackOverflow.com
906 | *
907 | * http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910
908 | * Short link: http://tinyurl.com/executeFunctionByName
909 | **/
910 | function executeFunctionByName(functionName, context /*, args*/ ) {
911 | var args = Array.prototype.slice.call(arguments).splice(2);
912 | var namespaces = functionName.split(".");
913 | var func = namespaces.pop();
914 | for (var i = 0; i < namespaces.length; i++) {
915 | context = context[namespaces[i]];
916 | }
917 | return context[func].apply(this, args);
918 | }
919 |
920 | $.fn.jqBootstrapValidation = function(method) {
921 |
922 | if (defaults.methods[method]) {
923 | return defaults.methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
924 | } else if (typeof method === 'object' || !method) {
925 | return defaults.methods.init.apply(this, arguments);
926 | } else {
927 | $.error('Method ' + method + ' does not exist on jQuery.jqBootstrapValidation');
928 | return null;
929 | }
930 |
931 | };
932 |
933 | $.jqBootstrapValidation = function(options) {
934 | $(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this, arguments);
935 | };
936 |
937 | })(jQuery);
938 |
--------------------------------------------------------------------------------
/static/scss/_bootstrap-overrides.scss:
--------------------------------------------------------------------------------
1 | // Bootstrap overrides for this template
2 | .btn {
3 | font-size: 14px;
4 | font-weight: 800;
5 | padding: 15px 25px;
6 | letter-spacing: 1px;
7 | text-transform: uppercase;
8 | border-radius: 0;
9 | @include sans-serif-font;
10 | }
11 |
12 | .btn-primary {
13 | background-color: $primary;
14 | border-color: $primary;
15 | &:hover,
16 | &:focus,
17 | &:active {
18 | color: $white;
19 | background-color: darken($primary, 7.5) !important;
20 | border-color: darken($primary, 7.5) !important;
21 | }
22 | }
23 |
24 | .btn-lg {
25 | font-size: 16px;
26 | padding: 25px 35px;
27 | }
28 |
--------------------------------------------------------------------------------
/static/scss/_contact.scss:
--------------------------------------------------------------------------------
1 | // Styling for the contact page
2 | .floating-label-form-group {
3 | font-size: 14px;
4 | position: relative;
5 | margin-bottom: 0;
6 | padding-bottom: 0.5em;
7 | border-bottom: 1px solid $gray-300;
8 | input,
9 | textarea {
10 | font-size: 1.5em;
11 | position: relative;
12 | z-index: 1;
13 | padding: 0;
14 | resize: none;
15 | border: none;
16 | border-radius: 0;
17 | background: none;
18 | box-shadow: none !important;
19 | @include serif-font;
20 | &::-webkit-input-placeholder {
21 | color: $gray-600;
22 | @include serif-font;
23 | }
24 | }
25 | label {
26 | font-size: 0.85em;
27 | line-height: 1.764705882em;
28 | position: relative;
29 | z-index: 0;
30 | top: 2em;
31 | display: block;
32 | margin: 0;
33 | -webkit-transition: top 0.3s ease, opacity 0.3s ease;
34 | -moz-transition: top 0.3s ease, opacity 0.3s ease;
35 | -ms-transition: top 0.3s ease, opacity 0.3s ease;
36 | transition: top 0.3s ease, opacity 0.3s ease;
37 | opacity: 0;
38 | }
39 | .help-block {
40 | margin: 15px 0;
41 | }
42 | }
43 |
44 | .floating-label-form-group-with-value {
45 | label {
46 | top: 0;
47 | opacity: 1;
48 | }
49 | }
50 |
51 | .floating-label-form-group-with-focus {
52 | label {
53 | color: $primary;
54 | }
55 | }
56 | form .form-group:first-child .floating-label-form-group {
57 | border-top: 1px solid $gray-300;
58 | }
59 |
--------------------------------------------------------------------------------
/static/scss/_footer.scss:
--------------------------------------------------------------------------------
1 | // Styling for the footer
2 | footer {
3 | padding: 50px 0 65px;
4 | .list-inline {
5 | margin: 0;
6 | padding: 0;
7 | }
8 | .copyright {
9 | font-size: 14px;
10 | margin-bottom: 0;
11 | text-align: center;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/static/scss/_global.scss:
--------------------------------------------------------------------------------
1 | // Global styling for this template
2 | body {
3 | font-size: 20px;
4 | color: $gray-900;
5 | @include serif-font;
6 | }
7 |
8 | p {
9 | line-height: 1.5;
10 | margin: 30px 0;
11 | a {
12 | text-decoration: underline;
13 | }
14 | }
15 |
16 | h1,
17 | h2,
18 | h3,
19 | h4,
20 | h5,
21 | h6 {
22 | font-weight: 800;
23 | @include sans-serif-font;
24 | }
25 |
26 | a {
27 | color: $gray-900;
28 | @include transition-all;
29 | &:focus,
30 | &:hover {
31 | color: $primary;
32 | }
33 | }
34 |
35 | blockquote {
36 | font-style: italic;
37 | color: $gray-600;
38 | }
39 |
40 | .section-heading {
41 | font-size: 36px;
42 | font-weight: 700;
43 | margin-top: 60px;
44 | }
45 |
46 | .caption {
47 | font-size: 14px;
48 | font-style: italic;
49 | display: block;
50 | margin: 0;
51 | padding: 10px;
52 | text-align: center;
53 | border-bottom-right-radius: 5px;
54 | border-bottom-left-radius: 5px;
55 | }
56 |
57 | ::-moz-selection {
58 | color: $white;
59 | background: $primary;
60 | text-shadow: none;
61 | }
62 |
63 | ::selection {
64 | color: $white;
65 | background: $primary;
66 | text-shadow: none;
67 | }
68 |
69 | img::selection {
70 | color: $white;
71 | background: transparent;
72 | }
73 |
74 | img::-moz-selection {
75 | color: $white;
76 | background: transparent;
77 | }
78 |
--------------------------------------------------------------------------------
/static/scss/_masthead.scss:
--------------------------------------------------------------------------------
1 | // Styling for the masthead
2 | header.masthead {
3 | // TIP: Background images are set within the HTML using inline CSS!
4 | margin-bottom: 50px;
5 | background: no-repeat center center;
6 | background-color: $gray-600;
7 | background-attachment: scroll;
8 | position: relative;
9 | @include background-cover;
10 | .overlay {
11 | position: absolute;
12 | top: 0;
13 | left: 0;
14 | height: 100%;
15 | width: 100%;
16 | background-color: $gray-900;
17 | opacity: 0.5;
18 | }
19 | .page-heading,
20 | .post-heading,
21 | .site-heading {
22 | padding: 200px 0 150px;
23 | color: white;
24 | @media only screen and (min-width: 768px) {
25 | padding: 200px 0;
26 | }
27 | }
28 | .page-heading,
29 | .site-heading {
30 | text-align: center;
31 | h1 {
32 | font-size: 50px;
33 | margin-top: 0;
34 | }
35 | .subheading {
36 | font-size: 24px;
37 | font-weight: 300;
38 | line-height: 1.1;
39 | display: block;
40 | margin: 10px 0 0;
41 | @include sans-serif-font;
42 | }
43 | @media only screen and (min-width: 768px) {
44 | h1 {
45 | font-size: 80px;
46 | }
47 | }
48 | }
49 | .post-heading {
50 | h1 {
51 | font-size: 35px;
52 | }
53 | .meta,
54 | .subheading {
55 | line-height: 1.1;
56 | display: block;
57 | }
58 | .subheading {
59 | font-size: 24px;
60 | font-weight: 600;
61 | margin: 10px 0 30px;
62 | @include sans-serif-font;
63 | }
64 | .meta {
65 | font-size: 20px;
66 | font-weight: 300;
67 | font-style: italic;
68 | @include serif-font;
69 | a {
70 | color: $white;
71 | }
72 | }
73 | @media only screen and (min-width: 768px) {
74 | h1 {
75 | font-size: 55px;
76 | }
77 | .subheading {
78 | font-size: 30px;
79 | }
80 | }
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/static/scss/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // Bootstrap Button Variant
3 | @mixin button-variant($color, $background, $border) {
4 | color: $color;
5 | border-color: $border;
6 | background-color: $background;
7 | &.focus,
8 | &:focus {
9 | color: $color;
10 | border-color: darken($border, 25%);
11 | background-color: darken($background, 10%);
12 | }
13 | &:hover {
14 | color: $color;
15 | border-color: darken($border, 12%);
16 | background-color: darken($background, 10%);
17 | }
18 | &.active,
19 | &:active,
20 | .open > &.dropdown-toggle {
21 | color: $color;
22 | border-color: darken($border, 12%);
23 | background-color: darken($background, 10%);
24 | &.focus,
25 | &:focus,
26 | &:hover {
27 | color: $color;
28 | border-color: darken($border, 25%);
29 | background-color: darken($background, 17%);
30 | }
31 | }
32 | &.active,
33 | &:active,
34 | .open > &.dropdown-toggle {
35 | background-image: none;
36 | }
37 | &.disabled,
38 | &[disabled],
39 | fieldset[disabled] & {
40 | &.focus,
41 | &:focus,
42 | &:hover {
43 | border-color: $border;
44 | background-color: $background;
45 | }
46 | }
47 | .badge {
48 | color: $background;
49 | background-color: $color;
50 | }
51 | }
52 | @mixin transition-all() {
53 | -webkit-transition: all 0.2s;
54 | -moz-transition: all 0.2s;
55 | transition: all 0.2s;
56 | }
57 | @mixin background-cover() {
58 | -webkit-background-size: cover;
59 | -moz-background-size: cover;
60 | -o-background-size: cover;
61 | background-size: cover;
62 | }
63 | @mixin serif-font() {
64 | font-family: 'Lora', 'Times New Roman', serif;
65 | }
66 | @mixin sans-serif-font() {
67 | font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
68 | }
69 |
--------------------------------------------------------------------------------
/static/scss/_navbar.scss:
--------------------------------------------------------------------------------
1 | // Styling for the navbar
2 | #mainNav {
3 | position: absolute;
4 | border-bottom: 1px solid $gray-200;
5 | background-color: white;
6 | @include sans-serif-font;
7 | .navbar-brand {
8 | font-weight: 800;
9 | color: $gray-800;
10 | }
11 | .navbar-toggler {
12 | font-size: 12px;
13 | font-weight: 800;
14 | padding: 13px;
15 | text-transform: uppercase;
16 | color: $gray-800;
17 | }
18 | .navbar-nav {
19 | > li.nav-item {
20 | > a {
21 | font-size: 12px;
22 | font-weight: 800;
23 | letter-spacing: 1px;
24 | text-transform: uppercase;
25 | }
26 | }
27 | }
28 | @media only screen and (min-width: 992px) {
29 | border-bottom: 1px solid transparent;
30 | background: transparent;
31 | .navbar-brand {
32 | padding: 10px 20px;
33 | color: $white;
34 | &:focus,
35 | &:hover {
36 | color: fade-out($white, .2);
37 | }
38 | }
39 | .navbar-nav {
40 | > li.nav-item {
41 | > a {
42 | padding: 10px 20px;
43 | color: $white;
44 | &:focus,
45 | &:hover {
46 | color: fade-out($white, .2);
47 | }
48 | }
49 | }
50 | }
51 | }
52 | @media only screen and (min-width: 992px) {
53 | -webkit-transition: background-color 0.2s;
54 | -moz-transition: background-color 0.2s;
55 | transition: background-color 0.2s;
56 | /* Force Hardware Acceleration in WebKit */
57 | -webkit-transform: translate3d(0, 0, 0);
58 | -moz-transform: translate3d(0, 0, 0);
59 | -ms-transform: translate3d(0, 0, 0);
60 | -o-transform: translate3d(0, 0, 0);
61 | transform: translate3d(0, 0, 0);
62 | -webkit-backface-visibility: hidden;
63 | &.is-fixed {
64 | /* when the user scrolls down, we hide the header right above the viewport */
65 | position: fixed;
66 | top: -67px;
67 | -webkit-transition: -webkit-transform 0.2s;
68 | -moz-transition: -moz-transform 0.2s;
69 | transition: transform 0.2s;
70 | border-bottom: 1px solid darken($white, .05);
71 | background-color: fade-out($white, .1);
72 | .navbar-brand {
73 | color: $gray-900;
74 | &:focus,
75 | &:hover {
76 | color: $primary;
77 | }
78 | }
79 | .navbar-nav {
80 | > li.nav-item {
81 | > a {
82 | color: $gray-900;
83 | &:focus,
84 | &:hover {
85 | color: $primary;
86 | }
87 | }
88 | }
89 | }
90 | }
91 | &.is-visible {
92 | /* if the user changes the scrolling direction, we show the header */
93 | -webkit-transform: translate3d(0, 100%, 0);
94 | -moz-transform: translate3d(0, 100%, 0);
95 | -ms-transform: translate3d(0, 100%, 0);
96 | -o-transform: translate3d(0, 100%, 0);
97 | transform: translate3d(0, 100%, 0);
98 | }
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/static/scss/_post.scss:
--------------------------------------------------------------------------------
1 | // Styling for the post page
2 | .post-preview {
3 | > a {
4 | color: $gray-900;
5 | &:focus,
6 | &:hover {
7 | text-decoration: none;
8 | color: $primary;
9 | }
10 | > .post-title {
11 | font-size: 30px;
12 | margin-top: 30px;
13 | margin-bottom: 10px;
14 | }
15 | > .post-subtitle {
16 | font-weight: 300;
17 | margin: 0 0 10px;
18 | }
19 | }
20 | > .post-meta {
21 | font-size: 18px;
22 | font-style: italic;
23 | margin-top: 0;
24 | color: $gray-600;
25 | > a {
26 | text-decoration: none;
27 | color: $gray-900;
28 | &:focus,
29 | &:hover {
30 | text-decoration: underline;
31 | color: $primary;
32 | }
33 | }
34 | }
35 | @media only screen and (min-width: 768px) {
36 | > a {
37 | > .post-title {
38 | font-size: 36px;
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/static/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | // Variables
2 |
3 | $white: #fff !default;
4 | $gray-100: #f8f9fa !default;
5 | $gray-200: #e9ecef !default;
6 | $gray-300: #dee2e6 !default;
7 | $gray-400: #ced4da !default;
8 | $gray-500: #adb5bd !default;
9 | $gray-600: #868e96 !default;
10 | $gray-700: #495057 !default;
11 | $gray-800: #343a40 !default;
12 | $gray-900: #212529 !default;
13 | $black: #000 !default;
14 |
15 | $blue: #007bff !default;
16 | $indigo: #6610f2 !default;
17 | $purple: #6f42c1 !default;
18 | $pink: #e83e8c !default;
19 | $red: #dc3545 !default;
20 | $orange: #fd7e14 !default;
21 | $yellow: #ffc107 !default;
22 | $green: #28a745 !default;
23 | $teal: #0085A1 !default;
24 | $cyan: #17a2b8 !default;
25 |
26 | $primary: $teal !default;
27 | $secondary: $gray-600 !default;
28 | $success: $green !default;
29 | $info: $cyan !default;
30 | $warning: $yellow !default;
31 | $danger: $red !default;
32 | $light: $gray-100 !default;
33 | $dark: $gray-800 !default;
34 |
--------------------------------------------------------------------------------
/static/scss/clean-blog.scss:
--------------------------------------------------------------------------------
1 | @import "variables.scss";
2 | @import "mixins.scss";
3 | @import "global.scss";
4 | @import "navbar.scss";
5 | @import "masthead.scss";
6 | @import "post.scss";
7 | @import "contact.scss";
8 | @import "footer.scss";
9 | @import "bootstrap-overrides.scss";
10 |
--------------------------------------------------------------------------------
/static/vendor/bootstrap/css/bootstrap-reboot.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Reboot v4.5.0 (https://getbootstrap.com/)
3 | * Copyright 2011-2020 The Bootstrap Authors
4 | * Copyright 2011-2020 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7 | */
8 | *,
9 | *::before,
10 | *::after {
11 | box-sizing: border-box;
12 | }
13 |
14 | html {
15 | font-family: sans-serif;
16 | line-height: 1.15;
17 | -webkit-text-size-adjust: 100%;
18 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
19 | }
20 |
21 | article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
22 | display: block;
23 | }
24 |
25 | body {
26 | margin: 0;
27 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
28 | font-size: 1rem;
29 | font-weight: 400;
30 | line-height: 1.5;
31 | color: #212529;
32 | text-align: left;
33 | background-color: #fff;
34 | }
35 |
36 | [tabindex="-1"]:focus:not(:focus-visible) {
37 | outline: 0 !important;
38 | }
39 |
40 | hr {
41 | box-sizing: content-box;
42 | height: 0;
43 | overflow: visible;
44 | }
45 |
46 | h1, h2, h3, h4, h5, h6 {
47 | margin-top: 0;
48 | margin-bottom: 0.5rem;
49 | }
50 |
51 | p {
52 | margin-top: 0;
53 | margin-bottom: 1rem;
54 | }
55 |
56 | abbr[title],
57 | abbr[data-original-title] {
58 | text-decoration: underline;
59 | -webkit-text-decoration: underline dotted;
60 | text-decoration: underline dotted;
61 | cursor: help;
62 | border-bottom: 0;
63 | -webkit-text-decoration-skip-ink: none;
64 | text-decoration-skip-ink: none;
65 | }
66 |
67 | address {
68 | margin-bottom: 1rem;
69 | font-style: normal;
70 | line-height: inherit;
71 | }
72 |
73 | ol,
74 | ul,
75 | dl {
76 | margin-top: 0;
77 | margin-bottom: 1rem;
78 | }
79 |
80 | ol ol,
81 | ul ul,
82 | ol ul,
83 | ul ol {
84 | margin-bottom: 0;
85 | }
86 |
87 | dt {
88 | font-weight: 700;
89 | }
90 |
91 | dd {
92 | margin-bottom: .5rem;
93 | margin-left: 0;
94 | }
95 |
96 | blockquote {
97 | margin: 0 0 1rem;
98 | }
99 |
100 | b,
101 | strong {
102 | font-weight: bolder;
103 | }
104 |
105 | small {
106 | font-size: 80%;
107 | }
108 |
109 | sub,
110 | sup {
111 | position: relative;
112 | font-size: 75%;
113 | line-height: 0;
114 | vertical-align: baseline;
115 | }
116 |
117 | sub {
118 | bottom: -.25em;
119 | }
120 |
121 | sup {
122 | top: -.5em;
123 | }
124 |
125 | a {
126 | color: #007bff;
127 | text-decoration: none;
128 | background-color: transparent;
129 | }
130 |
131 | a:hover {
132 | color: #0056b3;
133 | text-decoration: underline;
134 | }
135 |
136 | a:not([href]) {
137 | color: inherit;
138 | text-decoration: none;
139 | }
140 |
141 | a:not([href]):hover {
142 | color: inherit;
143 | text-decoration: none;
144 | }
145 |
146 | pre,
147 | code,
148 | kbd,
149 | samp {
150 | font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
151 | font-size: 1em;
152 | }
153 |
154 | pre {
155 | margin-top: 0;
156 | margin-bottom: 1rem;
157 | overflow: auto;
158 | -ms-overflow-style: scrollbar;
159 | }
160 |
161 | figure {
162 | margin: 0 0 1rem;
163 | }
164 |
165 | img {
166 | vertical-align: middle;
167 | border-style: none;
168 | }
169 |
170 | svg {
171 | overflow: hidden;
172 | vertical-align: middle;
173 | }
174 |
175 | table {
176 | border-collapse: collapse;
177 | }
178 |
179 | caption {
180 | padding-top: 0.75rem;
181 | padding-bottom: 0.75rem;
182 | color: #6c757d;
183 | text-align: left;
184 | caption-side: bottom;
185 | }
186 |
187 | th {
188 | text-align: inherit;
189 | }
190 |
191 | label {
192 | display: inline-block;
193 | margin-bottom: 0.5rem;
194 | }
195 |
196 | button {
197 | border-radius: 0;
198 | }
199 |
200 | button:focus {
201 | outline: 1px dotted;
202 | outline: 5px auto -webkit-focus-ring-color;
203 | }
204 |
205 | input,
206 | button,
207 | select,
208 | optgroup,
209 | textarea {
210 | margin: 0;
211 | font-family: inherit;
212 | font-size: inherit;
213 | line-height: inherit;
214 | }
215 |
216 | button,
217 | input {
218 | overflow: visible;
219 | }
220 |
221 | button,
222 | select {
223 | text-transform: none;
224 | }
225 |
226 | [role="button"] {
227 | cursor: pointer;
228 | }
229 |
230 | select {
231 | word-wrap: normal;
232 | }
233 |
234 | button,
235 | [type="button"],
236 | [type="reset"],
237 | [type="submit"] {
238 | -webkit-appearance: button;
239 | }
240 |
241 | button:not(:disabled),
242 | [type="button"]:not(:disabled),
243 | [type="reset"]:not(:disabled),
244 | [type="submit"]:not(:disabled) {
245 | cursor: pointer;
246 | }
247 |
248 | button::-moz-focus-inner,
249 | [type="button"]::-moz-focus-inner,
250 | [type="reset"]::-moz-focus-inner,
251 | [type="submit"]::-moz-focus-inner {
252 | padding: 0;
253 | border-style: none;
254 | }
255 |
256 | input[type="radio"],
257 | input[type="checkbox"] {
258 | box-sizing: border-box;
259 | padding: 0;
260 | }
261 |
262 | textarea {
263 | overflow: auto;
264 | resize: vertical;
265 | }
266 |
267 | fieldset {
268 | min-width: 0;
269 | padding: 0;
270 | margin: 0;
271 | border: 0;
272 | }
273 |
274 | legend {
275 | display: block;
276 | width: 100%;
277 | max-width: 100%;
278 | padding: 0;
279 | margin-bottom: .5rem;
280 | font-size: 1.5rem;
281 | line-height: inherit;
282 | color: inherit;
283 | white-space: normal;
284 | }
285 |
286 | progress {
287 | vertical-align: baseline;
288 | }
289 |
290 | [type="number"]::-webkit-inner-spin-button,
291 | [type="number"]::-webkit-outer-spin-button {
292 | height: auto;
293 | }
294 |
295 | [type="search"] {
296 | outline-offset: -2px;
297 | -webkit-appearance: none;
298 | }
299 |
300 | [type="search"]::-webkit-search-decoration {
301 | -webkit-appearance: none;
302 | }
303 |
304 | ::-webkit-file-upload-button {
305 | font: inherit;
306 | -webkit-appearance: button;
307 | }
308 |
309 | output {
310 | display: inline-block;
311 | }
312 |
313 | summary {
314 | display: list-item;
315 | cursor: pointer;
316 | }
317 |
318 | template {
319 | display: none;
320 | }
321 |
322 | [hidden] {
323 | display: none !important;
324 | }
325 | /*# sourceMappingURL=bootstrap-reboot.css.map */
--------------------------------------------------------------------------------
/static/vendor/bootstrap/css/bootstrap-reboot.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Reboot v4.5.0 (https://getbootstrap.com/)
3 | * Copyright 2011-2020 The Bootstrap Authors
4 | * Copyright 2011-2020 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7 | */*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
8 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */
--------------------------------------------------------------------------------
/static/vendor/bootstrap/css/bootstrap-reboot.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["../../scss/bootstrap-reboot.scss","../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","../../scss/vendor/_rfs.scss","bootstrap-reboot.css","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAAA;;;;;;ACkBA,ECTA,QADA,SDaE,WAAA,WAGF,KACE,YAAA,WACA,YAAA,KACA,yBAAA,KACA,4BAAA,YAMF,QAAA,MAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,IAAA,QACE,QAAA,MAUF,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,iBAAA,CAAA,mBEgFI,UAAA,KF9EJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,KACA,iBAAA,KGlBF,0CH+BE,QAAA,YASF,GACE,WAAA,YACA,OAAA,EACA,SAAA,QAaF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KC9CF,0BDyDA,YAEE,gBAAA,UACA,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EACA,iCAAA,KAAA,yBAAA,KAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QCnDF,GDsDA,GCvDA,GD0DE,WAAA,EACA,cAAA,KAGF,MCtDA,MACA,MAFA,MD2DE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,ECvDA,ODyDE,YAAA,OAGF,MExFI,UAAA,IFiGJ,IC5DA,ID8DE,SAAA,SEnGE,UAAA,IFqGF,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YIhLA,QJmLE,MAAA,QACA,gBAAA,UASJ,cACE,MAAA,QACA,gBAAA,KI/LA,oBJkME,MAAA,QACA,gBAAA,KC7DJ,KACA,IDqEA,ICpEA,KDwEE,YAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UEpJE,UAAA,IFwJJ,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAGA,mBAAA,UAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,IAGE,SAAA,OACA,eAAA,OAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAGE,WAAA,QAQF,MAEE,QAAA,aACA,cAAA,MAMF,OAEE,cAAA,EAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBC1GF,OD6GA,MC3GA,SADA,OAEA,SD+GE,OAAA,EACA,YAAA,QExPE,UAAA,QF0PF,YAAA,QAGF,OC7GA,MD+GE,SAAA,QAGF,OC7GA,OD+GE,eAAA,KG7GF,cHoHE,OAAA,QAMF,OACE,UAAA,OChHF,cACA,aACA,cDqHA,OAIE,mBAAA,OCpHF,6BACA,4BACA,6BDuHE,sBAKI,OAAA,QCvHN,gCACA,+BACA,gCD2HA,yBAIE,QAAA,EACA,aAAA,KC1HF,qBD6HA,kBAEE,WAAA,WACA,QAAA,EAIF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,ME/RI,UAAA,OFiSJ,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SGvIF,yCFGA,yCD0IE,OAAA,KGxIF,cHgJE,eAAA,KACA,mBAAA,KG5IF,yCHoJE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UACA,OAAA,QAGF,SACE,QAAA,KGzJF,SH+JE,QAAA","sourcesContent":["/*!\n * Bootstrap Reboot v4.5.0 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"reboot\";\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline\n// on elements that programmatically receive focus but wouldn't normally show a visible\n// focus outline. In general, this would mean that the outline is only applied if the\n// interaction that led to the element receiving programmatic focus was a keyboard interaction,\n// or the browser has somehow determined that the user is primarily a keyboard user and/or\n// wants focus outlines to always be presented.\n//\n// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible\n// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, ``-`` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on ` `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover() {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n\n @include hover() {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,\n // making it impossible to interact with the content\n -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `
` alignment by inheriting from the ``, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-blacklist\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Set the cursor for non-`` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n cursor: pointer;\n}\n\n// Remove the inheritance of word-wrap in Safari.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24990\nselect {\n word-wrap: normal;\n}\n\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Opinionated: add \"hand\" cursor to non-disabled button elements.\n@if $enable-pointer-cursor-for-buttons {\n button,\n [type=\"button\"],\n [type=\"reset\"],\n [type=\"submit\"] {\n &:not(:disabled) {\n cursor: pointer;\n }\n }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. ``s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n @include font-size(1.5rem);\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","/*!\n * Bootstrap Reboot v4.5.0 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n/*# sourceMappingURL=bootstrap-reboot.css.map */","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n }\n\n @if $rfs-class == \"disable\" {\n // Adding an extra class increases specificity,\n // which prevents the media query to override the font size\n &,\n .disable-responsive-font-size &,\n &.disable-responsive-font-size {\n font-size: $rfs-static;\n }\n }\n @else {\n font-size: $rfs-static;\n }\n\n @if $rfs-two-dimensional {\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n @else {\n @media (max-width: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n }\n }\n}\n\n// The font-size & responsive-font-size mixin uses RFS to rescale font sizes\n@mixin font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n\n@mixin responsive-font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n","/*!\n * Bootstrap Reboot v4.5.0 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */","// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover() {\n &:hover { @content; }\n}\n\n@mixin hover-focus() {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus() {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active() {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n"]}
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/css/brands.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face {
6 | font-family: 'Font Awesome 5 Brands';
7 | font-style: normal;
8 | font-weight: 400;
9 | font-display: block;
10 | src: url("../webfonts/fa-brands-400.eot");
11 | 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"); }
12 |
13 | .fab {
14 | font-family: 'Font Awesome 5 Brands';
15 | font-weight: 400; }
16 |
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/css/brands.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;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";font-weight:400}
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/css/regular.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face {
6 | font-family: 'Font Awesome 5 Free';
7 | font-style: normal;
8 | font-weight: 400;
9 | font-display: block;
10 | src: url("../webfonts/fa-regular-400.eot");
11 | 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"); }
12 |
13 | .far {
14 | font-family: 'Font Awesome 5 Free';
15 | font-weight: 400; }
16 |
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/css/regular.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;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 Free";font-weight:400}
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/css/solid.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face {
6 | font-family: 'Font Awesome 5 Free';
7 | font-style: normal;
8 | font-weight: 900;
9 | font-display: block;
10 | src: url("../webfonts/fa-solid-900.eot");
11 | 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"); }
12 |
13 | .fa,
14 | .fas {
15 | font-family: 'Font Awesome 5 Free';
16 | font-weight: 900; }
17 |
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/css/solid.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;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 Free";font-weight:900}
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/css/svg-with-js.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | svg:not(:root).svg-inline--fa {
6 | overflow: visible; }
7 |
8 | .svg-inline--fa {
9 | display: inline-block;
10 | font-size: inherit;
11 | height: 1em;
12 | overflow: visible;
13 | vertical-align: -.125em; }
14 | .svg-inline--fa.fa-lg {
15 | vertical-align: -.225em; }
16 | .svg-inline--fa.fa-w-1 {
17 | width: 0.0625em; }
18 | .svg-inline--fa.fa-w-2 {
19 | width: 0.125em; }
20 | .svg-inline--fa.fa-w-3 {
21 | width: 0.1875em; }
22 | .svg-inline--fa.fa-w-4 {
23 | width: 0.25em; }
24 | .svg-inline--fa.fa-w-5 {
25 | width: 0.3125em; }
26 | .svg-inline--fa.fa-w-6 {
27 | width: 0.375em; }
28 | .svg-inline--fa.fa-w-7 {
29 | width: 0.4375em; }
30 | .svg-inline--fa.fa-w-8 {
31 | width: 0.5em; }
32 | .svg-inline--fa.fa-w-9 {
33 | width: 0.5625em; }
34 | .svg-inline--fa.fa-w-10 {
35 | width: 0.625em; }
36 | .svg-inline--fa.fa-w-11 {
37 | width: 0.6875em; }
38 | .svg-inline--fa.fa-w-12 {
39 | width: 0.75em; }
40 | .svg-inline--fa.fa-w-13 {
41 | width: 0.8125em; }
42 | .svg-inline--fa.fa-w-14 {
43 | width: 0.875em; }
44 | .svg-inline--fa.fa-w-15 {
45 | width: 0.9375em; }
46 | .svg-inline--fa.fa-w-16 {
47 | width: 1em; }
48 | .svg-inline--fa.fa-w-17 {
49 | width: 1.0625em; }
50 | .svg-inline--fa.fa-w-18 {
51 | width: 1.125em; }
52 | .svg-inline--fa.fa-w-19 {
53 | width: 1.1875em; }
54 | .svg-inline--fa.fa-w-20 {
55 | width: 1.25em; }
56 | .svg-inline--fa.fa-pull-left {
57 | margin-right: .3em;
58 | width: auto; }
59 | .svg-inline--fa.fa-pull-right {
60 | margin-left: .3em;
61 | width: auto; }
62 | .svg-inline--fa.fa-border {
63 | height: 1.5em; }
64 | .svg-inline--fa.fa-li {
65 | width: 2em; }
66 | .svg-inline--fa.fa-fw {
67 | width: 1.25em; }
68 |
69 | .fa-layers svg.svg-inline--fa {
70 | bottom: 0;
71 | left: 0;
72 | margin: auto;
73 | position: absolute;
74 | right: 0;
75 | top: 0; }
76 |
77 | .fa-layers {
78 | display: inline-block;
79 | height: 1em;
80 | position: relative;
81 | text-align: center;
82 | vertical-align: -.125em;
83 | width: 1em; }
84 | .fa-layers svg.svg-inline--fa {
85 | -webkit-transform-origin: center center;
86 | transform-origin: center center; }
87 |
88 | .fa-layers-text, .fa-layers-counter {
89 | display: inline-block;
90 | position: absolute;
91 | text-align: center; }
92 |
93 | .fa-layers-text {
94 | left: 50%;
95 | top: 50%;
96 | -webkit-transform: translate(-50%, -50%);
97 | transform: translate(-50%, -50%);
98 | -webkit-transform-origin: center center;
99 | transform-origin: center center; }
100 |
101 | .fa-layers-counter {
102 | background-color: #ff253a;
103 | border-radius: 1em;
104 | -webkit-box-sizing: border-box;
105 | box-sizing: border-box;
106 | color: #fff;
107 | height: 1.5em;
108 | line-height: 1;
109 | max-width: 5em;
110 | min-width: 1.5em;
111 | overflow: hidden;
112 | padding: .25em;
113 | right: 0;
114 | text-overflow: ellipsis;
115 | top: 0;
116 | -webkit-transform: scale(0.25);
117 | transform: scale(0.25);
118 | -webkit-transform-origin: top right;
119 | transform-origin: top right; }
120 |
121 | .fa-layers-bottom-right {
122 | bottom: 0;
123 | right: 0;
124 | top: auto;
125 | -webkit-transform: scale(0.25);
126 | transform: scale(0.25);
127 | -webkit-transform-origin: bottom right;
128 | transform-origin: bottom right; }
129 |
130 | .fa-layers-bottom-left {
131 | bottom: 0;
132 | left: 0;
133 | right: auto;
134 | top: auto;
135 | -webkit-transform: scale(0.25);
136 | transform: scale(0.25);
137 | -webkit-transform-origin: bottom left;
138 | transform-origin: bottom left; }
139 |
140 | .fa-layers-top-right {
141 | right: 0;
142 | top: 0;
143 | -webkit-transform: scale(0.25);
144 | transform: scale(0.25);
145 | -webkit-transform-origin: top right;
146 | transform-origin: top right; }
147 |
148 | .fa-layers-top-left {
149 | left: 0;
150 | right: auto;
151 | top: 0;
152 | -webkit-transform: scale(0.25);
153 | transform: scale(0.25);
154 | -webkit-transform-origin: top left;
155 | transform-origin: top left; }
156 |
157 | .fa-lg {
158 | font-size: 1.33333em;
159 | line-height: 0.75em;
160 | vertical-align: -.0667em; }
161 |
162 | .fa-xs {
163 | font-size: .75em; }
164 |
165 | .fa-sm {
166 | font-size: .875em; }
167 |
168 | .fa-1x {
169 | font-size: 1em; }
170 |
171 | .fa-2x {
172 | font-size: 2em; }
173 |
174 | .fa-3x {
175 | font-size: 3em; }
176 |
177 | .fa-4x {
178 | font-size: 4em; }
179 |
180 | .fa-5x {
181 | font-size: 5em; }
182 |
183 | .fa-6x {
184 | font-size: 6em; }
185 |
186 | .fa-7x {
187 | font-size: 7em; }
188 |
189 | .fa-8x {
190 | font-size: 8em; }
191 |
192 | .fa-9x {
193 | font-size: 9em; }
194 |
195 | .fa-10x {
196 | font-size: 10em; }
197 |
198 | .fa-fw {
199 | text-align: center;
200 | width: 1.25em; }
201 |
202 | .fa-ul {
203 | list-style-type: none;
204 | margin-left: 2.5em;
205 | padding-left: 0; }
206 | .fa-ul > li {
207 | position: relative; }
208 |
209 | .fa-li {
210 | left: -2em;
211 | position: absolute;
212 | text-align: center;
213 | width: 2em;
214 | line-height: inherit; }
215 |
216 | .fa-border {
217 | border: solid 0.08em #eee;
218 | border-radius: .1em;
219 | padding: .2em .25em .15em; }
220 |
221 | .fa-pull-left {
222 | float: left; }
223 |
224 | .fa-pull-right {
225 | float: right; }
226 |
227 | .fa.fa-pull-left,
228 | .fas.fa-pull-left,
229 | .far.fa-pull-left,
230 | .fal.fa-pull-left,
231 | .fab.fa-pull-left {
232 | margin-right: .3em; }
233 |
234 | .fa.fa-pull-right,
235 | .fas.fa-pull-right,
236 | .far.fa-pull-right,
237 | .fal.fa-pull-right,
238 | .fab.fa-pull-right {
239 | margin-left: .3em; }
240 |
241 | .fa-spin {
242 | -webkit-animation: fa-spin 2s infinite linear;
243 | animation: fa-spin 2s infinite linear; }
244 |
245 | .fa-pulse {
246 | -webkit-animation: fa-spin 1s infinite steps(8);
247 | animation: fa-spin 1s infinite steps(8); }
248 |
249 | @-webkit-keyframes fa-spin {
250 | 0% {
251 | -webkit-transform: rotate(0deg);
252 | transform: rotate(0deg); }
253 | 100% {
254 | -webkit-transform: rotate(360deg);
255 | transform: rotate(360deg); } }
256 |
257 | @keyframes fa-spin {
258 | 0% {
259 | -webkit-transform: rotate(0deg);
260 | transform: rotate(0deg); }
261 | 100% {
262 | -webkit-transform: rotate(360deg);
263 | transform: rotate(360deg); } }
264 |
265 | .fa-rotate-90 {
266 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
267 | -webkit-transform: rotate(90deg);
268 | transform: rotate(90deg); }
269 |
270 | .fa-rotate-180 {
271 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
272 | -webkit-transform: rotate(180deg);
273 | transform: rotate(180deg); }
274 |
275 | .fa-rotate-270 {
276 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
277 | -webkit-transform: rotate(270deg);
278 | transform: rotate(270deg); }
279 |
280 | .fa-flip-horizontal {
281 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
282 | -webkit-transform: scale(-1, 1);
283 | transform: scale(-1, 1); }
284 |
285 | .fa-flip-vertical {
286 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
287 | -webkit-transform: scale(1, -1);
288 | transform: scale(1, -1); }
289 |
290 | .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
291 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
292 | -webkit-transform: scale(-1, -1);
293 | transform: scale(-1, -1); }
294 |
295 | :root .fa-rotate-90,
296 | :root .fa-rotate-180,
297 | :root .fa-rotate-270,
298 | :root .fa-flip-horizontal,
299 | :root .fa-flip-vertical,
300 | :root .fa-flip-both {
301 | -webkit-filter: none;
302 | filter: none; }
303 |
304 | .fa-stack {
305 | display: inline-block;
306 | height: 2em;
307 | position: relative;
308 | width: 2.5em; }
309 |
310 | .fa-stack-1x,
311 | .fa-stack-2x {
312 | bottom: 0;
313 | left: 0;
314 | margin: auto;
315 | position: absolute;
316 | right: 0;
317 | top: 0; }
318 |
319 | .svg-inline--fa.fa-stack-1x {
320 | height: 1em;
321 | width: 1.25em; }
322 |
323 | .svg-inline--fa.fa-stack-2x {
324 | height: 2em;
325 | width: 2.5em; }
326 |
327 | .fa-inverse {
328 | color: #fff; }
329 |
330 | .sr-only {
331 | border: 0;
332 | clip: rect(0, 0, 0, 0);
333 | height: 1px;
334 | margin: -1px;
335 | overflow: hidden;
336 | padding: 0;
337 | position: absolute;
338 | width: 1px; }
339 |
340 | .sr-only-focusable:active, .sr-only-focusable:focus {
341 | clip: auto;
342 | height: auto;
343 | margin: 0;
344 | overflow: visible;
345 | position: static;
346 | width: auto; }
347 |
348 | .svg-inline--fa .fa-primary {
349 | fill: var(--fa-primary-color, currentColor);
350 | opacity: 1;
351 | opacity: var(--fa-primary-opacity, 1); }
352 |
353 | .svg-inline--fa .fa-secondary {
354 | fill: var(--fa-secondary-color, currentColor);
355 | opacity: 0.4;
356 | opacity: var(--fa-secondary-opacity, 0.4); }
357 |
358 | .svg-inline--fa.fa-swap-opacity .fa-primary {
359 | opacity: 0.4;
360 | opacity: var(--fa-secondary-opacity, 0.4); }
361 |
362 | .svg-inline--fa.fa-swap-opacity .fa-secondary {
363 | opacity: 1;
364 | opacity: var(--fa-primary-opacity, 1); }
365 |
366 | .svg-inline--fa mask .fa-primary,
367 | .svg-inline--fa mask .fa-secondary {
368 | fill: black; }
369 |
370 | .fad.fa-inverse {
371 | color: #fff; }
372 |
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/css/svg-with-js.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | .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{-webkit-transform-origin:center center;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%;-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(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.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(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;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{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.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:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);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{-webkit-transform:scale(-1);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{-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}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor)}.svg-inline--fa .fa-secondary,.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/css/v4-shims.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | .fa.fa-glass:before{content:"\f000"}.fa.fa-meetup{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-star-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-file-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-pencil:before{content:"\f303"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-share-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart:before{content:"\f080"}.fa.fa-bar-chart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart-o:before{content:"\f080"}.fa.fa-facebook-square,.fa.fa-twitter-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-lemon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-scissors:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-google-plus,.fa.fa-google-plus-square,.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f3fd"}.fa.fa-comment-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard,.fa.fa-paste{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paste:before{content:"\f328"}.fa.fa-lightbulb-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f381"}.fa.fa-cloud-upload:before{content:"\f382"}.fa.fa-bell-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f089"}.fa.fa-star-half-empty{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f089"}.fa.fa-star-half-full{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f089"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before{content:"\f127"}.fa.fa-shield:before{content:"\f3ed"}.fa.fa-calendar-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ticket:before{content:"\f3ff"}.fa.fa-minus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\f155"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\f156"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f160"}.fa.fa-sort-amount-desc:before{content:"\f884"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube,.fa.fa-youtube-play,.fa.fa-youtube-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\f195"}.fa.fa-plus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-google,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle,.fa.fa-yahoo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-spoon:before{content:"\f2e5"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-envelope-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-life-bouy,.fa.fa-life-ring{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-bouy:before{content:"\f1cd"}.fa.fa-life-buoy{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-buoy:before{content:"\f1cd"}.fa.fa-life-saver{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-saver:before{content:"\f1cd"}.fa.fa-support{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git,.fa.fa-git-square,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-sliders:before{content:"\f1de"}.fa.fa-futbol-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-angellist,.fa.fa-ioxhost,.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-meanpath{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-meanpath:before{content:"\f2b4"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before{content:"\f224"}.fa.fa-facebook-official{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-clone,.fa.fa-hourglass-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-chrome,.fa.fa-creative-commons,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-internet-explorer,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square,.fa.fa-opera,.fa.fa-safari,.fa.fa-tripadvisor,.fa.fa-wikipedia-w{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-snapchat,.fa.fa-snapchat-ghost,.fa.fa-snapchat-square,.fa.fa-themeisle,.fa.fa-viadeo,.fa.fa-viadeo-square,.fa.fa-yoast{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cab:before{content:"\f1ba"}
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angelabauer/flask-blog/cf103d4e4f0f5528cfce0818b927f885abaf8423/static/vendor/fontawesome-free/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angelabauer/flask-blog/cf103d4e4f0f5528cfce0818b927f885abaf8423/static/vendor/fontawesome-free/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angelabauer/flask-blog/cf103d4e4f0f5528cfce0818b927f885abaf8423/static/vendor/fontawesome-free/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angelabauer/flask-blog/cf103d4e4f0f5528cfce0818b927f885abaf8423/static/vendor/fontawesome-free/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angelabauer/flask-blog/cf103d4e4f0f5528cfce0818b927f885abaf8423/static/vendor/fontawesome-free/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angelabauer/flask-blog/cf103d4e4f0f5528cfce0818b927f885abaf8423/static/vendor/fontawesome-free/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angelabauer/flask-blog/cf103d4e4f0f5528cfce0818b927f885abaf8423/static/vendor/fontawesome-free/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angelabauer/flask-blog/cf103d4e4f0f5528cfce0818b927f885abaf8423/static/vendor/fontawesome-free/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angelabauer/flask-blog/cf103d4e4f0f5528cfce0818b927f885abaf8423/static/vendor/fontawesome-free/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/static/vendor/fontawesome-free/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/angelabauer/flask-blog/cf103d4e4f0f5528cfce0818b927f885abaf8423/static/vendor/fontawesome-free/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/templates/about.html:
--------------------------------------------------------------------------------
1 | {% include "header.html" %}
2 |
3 |
4 |
17 |
18 |
19 |
20 |
21 |
22 |
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe nostrum ullam eveniet pariatur voluptates odit, fuga atque ea nobis sit soluta odio, adipisci quas excepturi maxime quae totam ducimus consectetur?
23 |
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius praesentium recusandae illo eaque architecto error, repellendus iusto reprehenderit, doloribus, minus sunt. Numquam at quae voluptatum in officia voluptas voluptatibus, minus!
24 |
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut consequuntur magnam, excepturi aliquid ex itaque esse est vero natus quae optio aperiam soluta voluptatibus corporis atque iste neque sit tempora!
25 |
26 |
27 |
28 |
29 |
30 |
31 | {% include "footer.html" %}
--------------------------------------------------------------------------------
/templates/contact.html:
--------------------------------------------------------------------------------
1 | {% include "header.html" %}
2 |
3 |
4 |
17 |
18 |
19 |
20 |
21 |
22 |
Want to get in touch? Fill out the form below to send me a message and I will get back to you as soon as possible!
23 |
24 |
25 |
26 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | {% include "footer.html" %}
--------------------------------------------------------------------------------
/templates/footer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
32 |
Copyright © Your Website 2020
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |