')
+ .append(i.clone())
+ .remove()
+ .html()
+ .replace(/type="password"/i, 'type="text"')
+ .replace(/type=password/i, 'type=text')
+ );
+
+ if (i.attr('id') != '')
+ x.attr('id', i.attr('id') + '-polyfill-field');
+
+ if (i.attr('name') != '')
+ x.attr('name', i.attr('name') + '-polyfill-field');
+
+ x.addClass('polyfill-placeholder')
+ .val(x.attr('placeholder')).insertAfter(i);
+
+ if (i.val() == '')
+ i.hide();
+ else
+ x.hide();
+
+ i
+ .on('blur', function(event) {
+
+ event.preventDefault();
+
+ var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
+
+ if (i.val() == '') {
+
+ i.hide();
+ x.show();
+
+ }
+
+ });
+
+ x
+ .on('focus', function(event) {
+
+ event.preventDefault();
+
+ var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']');
+
+ x.hide();
+
+ i
+ .show()
+ .focus();
+
+ })
+ .on('keypress', function(event) {
+
+ event.preventDefault();
+ x.val('');
+
+ });
+
+ });
+
+ // Events.
+ $this
+ .on('submit', function() {
+
+ $this.find('input[type=text],input[type=password],textarea')
+ .each(function(event) {
+
+ var i = $(this);
+
+ if (i.attr('name').match(/-polyfill-field$/))
+ i.attr('name', '');
+
+ if (i.val() == i.attr('placeholder')) {
+
+ i.removeClass('polyfill-placeholder');
+ i.val('');
+
+ }
+
+ });
+
+ })
+ .on('reset', function(event) {
+
+ event.preventDefault();
+
+ $this.find('select')
+ .val($('option:first').val());
+
+ $this.find('input,textarea')
+ .each(function() {
+
+ var i = $(this),
+ x;
+
+ i.removeClass('polyfill-placeholder');
+
+ switch (this.type) {
+
+ case 'submit':
+ case 'reset':
+ break;
+
+ case 'password':
+ i.val(i.attr('defaultValue'));
+
+ x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
+
+ if (i.val() == '') {
+ i.hide();
+ x.show();
+ }
+ else {
+ i.show();
+ x.hide();
+ }
+
+ break;
+
+ case 'checkbox':
+ case 'radio':
+ i.attr('checked', i.attr('defaultValue'));
+ break;
+
+ case 'text':
+ case 'textarea':
+ i.val(i.attr('defaultValue'));
+
+ if (i.val() == '') {
+ i.addClass('polyfill-placeholder');
+ i.val(i.attr('placeholder'));
+ }
+
+ break;
+
+ default:
+ i.val(i.attr('defaultValue'));
+ break;
+
+ }
+ });
+
+ });
+
+ return $this;
+
+ };
+
+ /**
+ * Moves elements to/from the first positions of their respective parents.
+ * @param {jQuery} $elements Elements (or selector) to move.
+ * @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations.
+ */
+ $.prioritize = function($elements, condition) {
+
+ var key = '__prioritize';
+
+ // Expand $elements if it's not already a jQuery object.
+ if (typeof $elements != 'jQuery')
+ $elements = $($elements);
+
+ // Step through elements.
+ $elements.each(function() {
+
+ var $e = $(this), $p,
+ $parent = $e.parent();
+
+ // No parent? Bail.
+ if ($parent.length == 0)
+ return;
+
+ // Not moved? Move it.
+ if (!$e.data(key)) {
+
+ // Condition is false? Bail.
+ if (!condition)
+ return;
+
+ // Get placeholder (which will serve as our point of reference for when this element needs to move back).
+ $p = $e.prev();
+
+ // Couldn't find anything? Means this element's already at the top, so bail.
+ if ($p.length == 0)
+ return;
+
+ // Move element to top of parent.
+ $e.prependTo($parent);
+
+ // Mark element as moved.
+ $e.data(key, $p);
+
+ }
+
+ // Moved already?
+ else {
+
+ // Condition is true? Bail.
+ if (condition)
+ return;
+
+ $p = $e.data(key);
+
+ // Move element back to its original location (using our placeholder).
+ $e.insertAfter($p);
+
+ // Unmark element as moved.
+ $e.removeData(key);
+
+ }
+
+ });
+
+ };
+
+})(jQuery);
\ No newline at end of file
diff --git a/src/assets/pic01.jpg b/src/assets/pic01.jpg
deleted file mode 100644
index 7add388..0000000
Binary files a/src/assets/pic01.jpg and /dev/null differ
diff --git a/src/assets/pic02.jpg b/src/assets/pic02.jpg
deleted file mode 100644
index e148901..0000000
Binary files a/src/assets/pic02.jpg and /dev/null differ
diff --git a/src/assets/pic03.jpg b/src/assets/pic03.jpg
deleted file mode 100644
index b890e57..0000000
Binary files a/src/assets/pic03.jpg and /dev/null differ
diff --git a/src/assets/pic04.jpg b/src/assets/pic04.jpg
deleted file mode 100644
index f0c1b62..0000000
Binary files a/src/assets/pic04.jpg and /dev/null differ
diff --git a/src/assets/pic05.jpg b/src/assets/pic05.jpg
deleted file mode 100644
index cda4792..0000000
Binary files a/src/assets/pic05.jpg and /dev/null differ
diff --git a/src/assets/pic06.jpg b/src/assets/pic06.jpg
deleted file mode 100644
index 891b92f..0000000
Binary files a/src/assets/pic06.jpg and /dev/null differ
diff --git a/src/assets/pic07.jpg b/src/assets/pic07.jpg
deleted file mode 100644
index 18f7248..0000000
Binary files a/src/assets/pic07.jpg and /dev/null differ
diff --git a/src/assets/pic08.jpg b/src/assets/pic08.jpg
deleted file mode 100644
index 844923f..0000000
Binary files a/src/assets/pic08.jpg and /dev/null differ
diff --git a/src/assets/pic09.jpg b/src/assets/pic09.jpg
deleted file mode 100644
index 742eece..0000000
Binary files a/src/assets/pic09.jpg and /dev/null differ
diff --git a/src/assets/pic10.jpg b/src/assets/pic10.jpg
deleted file mode 100644
index 2e9ba30..0000000
Binary files a/src/assets/pic10.jpg and /dev/null differ
diff --git a/src/assets/pic11.jpg b/src/assets/pic11.jpg
deleted file mode 100644
index 56cae8c..0000000
Binary files a/src/assets/pic11.jpg and /dev/null differ
diff --git a/src/assets/robot.jpeg b/src/assets/robot.jpeg
deleted file mode 100644
index ae60523..0000000
Binary files a/src/assets/robot.jpeg and /dev/null differ
diff --git a/src/assets/robot2.jpeg b/src/assets/robot2.jpeg
deleted file mode 100644
index 9ad210a..0000000
Binary files a/src/assets/robot2.jpeg and /dev/null differ
diff --git a/src/assets/sass/libs/_breakpoints.scss b/src/assets/sass/libs/_breakpoints.scss
new file mode 100644
index 0000000..c5301d8
--- /dev/null
+++ b/src/assets/sass/libs/_breakpoints.scss
@@ -0,0 +1,223 @@
+// breakpoints.scss v1.0 | @ajlkn | MIT licensed */
+
+// Vars.
+
+ /// Breakpoints.
+ /// @var {list}
+ $breakpoints: () !global;
+
+// Mixins.
+
+ /// Sets breakpoints.
+ /// @param {map} $x Breakpoints.
+ @mixin breakpoints($x: ()) {
+ $breakpoints: $x !global;
+ }
+
+ /// Wraps @content in a @media block targeting a specific orientation.
+ /// @param {string} $orientation Orientation.
+ @mixin orientation($orientation) {
+ @media screen and (orientation: #{$orientation}) {
+ @content;
+ }
+ }
+
+ /// Wraps @content in a @media block using a given query.
+ /// @param {string} $query Query.
+ @mixin breakpoint($query: null) {
+
+ $breakpoint: null;
+ $op: null;
+ $media: null;
+
+ // Determine operator, breakpoint.
+
+ // Greater than or equal.
+ @if (str-slice($query, 0, 2) == '>=') {
+
+ $op: 'gte';
+ $breakpoint: str-slice($query, 3);
+
+ }
+
+ // Less than or equal.
+ @elseif (str-slice($query, 0, 2) == '<=') {
+
+ $op: 'lte';
+ $breakpoint: str-slice($query, 3);
+
+ }
+
+ // Greater than.
+ @elseif (str-slice($query, 0, 1) == '>') {
+
+ $op: 'gt';
+ $breakpoint: str-slice($query, 2);
+
+ }
+
+ // Less than.
+ @elseif (str-slice($query, 0, 1) == '<') {
+
+ $op: 'lt';
+ $breakpoint: str-slice($query, 2);
+
+ }
+
+ // Not.
+ @elseif (str-slice($query, 0, 1) == '!') {
+
+ $op: 'not';
+ $breakpoint: str-slice($query, 2);
+
+ }
+
+ // Equal.
+ @else {
+
+ $op: 'eq';
+ $breakpoint: $query;
+
+ }
+
+ // Build media.
+ @if ($breakpoint and map-has-key($breakpoints, $breakpoint)) {
+
+ $a: map-get($breakpoints, $breakpoint);
+
+ // Range.
+ @if (type-of($a) == 'list') {
+
+ $x: nth($a, 1);
+ $y: nth($a, 2);
+
+ // Max only.
+ @if ($x == null) {
+
+ // Greater than or equal (>= 0 / anything)
+ @if ($op == 'gte') {
+ $media: 'screen';
+ }
+
+ // Less than or equal (<= y)
+ @elseif ($op == 'lte') {
+ $media: 'screen and (max-width: ' + $y + ')';
+ }
+
+ // Greater than (> y)
+ @elseif ($op == 'gt') {
+ $media: 'screen and (min-width: ' + ($y + 1) + ')';
+ }
+
+ // Less than (< 0 / invalid)
+ @elseif ($op == 'lt') {
+ $media: 'screen and (max-width: -1px)';
+ }
+
+ // Not (> y)
+ @elseif ($op == 'not') {
+ $media: 'screen and (min-width: ' + ($y + 1) + ')';
+ }
+
+ // Equal (<= y)
+ @else {
+ $media: 'screen and (max-width: ' + $y + ')';
+ }
+
+ }
+
+ // Min only.
+ @else if ($y == null) {
+
+ // Greater than or equal (>= x)
+ @if ($op == 'gte') {
+ $media: 'screen and (min-width: ' + $x + ')';
+ }
+
+ // Less than or equal (<= inf / anything)
+ @elseif ($op == 'lte') {
+ $media: 'screen';
+ }
+
+ // Greater than (> inf / invalid)
+ @elseif ($op == 'gt') {
+ $media: 'screen and (max-width: -1px)';
+ }
+
+ // Less than (< x)
+ @elseif ($op == 'lt') {
+ $media: 'screen and (max-width: ' + ($x - 1) + ')';
+ }
+
+ // Not (< x)
+ @elseif ($op == 'not') {
+ $media: 'screen and (max-width: ' + ($x - 1) + ')';
+ }
+
+ // Equal (>= x)
+ @else {
+ $media: 'screen and (min-width: ' + $x + ')';
+ }
+
+ }
+
+ // Min and max.
+ @else {
+
+ // Greater than or equal (>= x)
+ @if ($op == 'gte') {
+ $media: 'screen and (min-width: ' + $x + ')';
+ }
+
+ // Less than or equal (<= y)
+ @elseif ($op == 'lte') {
+ $media: 'screen and (max-width: ' + $y + ')';
+ }
+
+ // Greater than (> y)
+ @elseif ($op == 'gt') {
+ $media: 'screen and (min-width: ' + ($y + 1) + ')';
+ }
+
+ // Less than (< x)
+ @elseif ($op == 'lt') {
+ $media: 'screen and (max-width: ' + ($x - 1) + ')';
+ }
+
+ // Not (< x and > y)
+ @elseif ($op == 'not') {
+ $media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')';
+ }
+
+ // Equal (>= x and <= y)
+ @else {
+ $media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')';
+ }
+
+ }
+
+ }
+
+ // String.
+ @else {
+
+ // Missing a media type? Prefix with "screen".
+ @if (str-slice($a, 0, 1) == '(') {
+ $media: 'screen and ' + $a;
+ }
+
+ // Otherwise, use as-is.
+ @else {
+ $media: $a;
+ }
+
+ }
+
+ }
+
+ // Output.
+ @media #{$media} {
+ @content;
+ }
+
+ }
\ No newline at end of file
diff --git a/src/assets/sass/libs/_functions.scss b/src/assets/sass/libs/_functions.scss
new file mode 100644
index 0000000..f563aab
--- /dev/null
+++ b/src/assets/sass/libs/_functions.scss
@@ -0,0 +1,90 @@
+/// Removes a specific item from a list.
+/// @author Hugo Giraudel
+/// @param {list} $list List.
+/// @param {integer} $index Index.
+/// @return {list} Updated list.
+@function remove-nth($list, $index) {
+
+ $result: null;
+
+ @if type-of($index) != number {
+ @warn "$index: #{quote($index)} is not a number for `remove-nth`.";
+ }
+ @else if $index == 0 {
+ @warn "List index 0 must be a non-zero integer for `remove-nth`.";
+ }
+ @else if abs($index) > length($list) {
+ @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
+ }
+ @else {
+
+ $result: ();
+ $index: if($index < 0, length($list) + $index + 1, $index);
+
+ @for $i from 1 through length($list) {
+
+ @if $i != $index {
+ $result: append($result, nth($list, $i));
+ }
+
+ }
+
+ }
+
+ @return $result;
+
+}
+
+/// Gets a value from a map.
+/// @author Hugo Giraudel
+/// @param {map} $map Map.
+/// @param {string} $keys Key(s).
+/// @return {string} Value.
+@function val($map, $keys...) {
+
+ @if nth($keys, 1) == null {
+ $keys: remove-nth($keys, 1);
+ }
+
+ @each $key in $keys {
+ $map: map-get($map, $key);
+ }
+
+ @return $map;
+
+}
+
+/// Gets a duration value.
+/// @param {string} $keys Key(s).
+/// @return {string} Value.
+@function _duration($keys...) {
+ @return val($duration, $keys...);
+}
+
+/// Gets a font value.
+/// @param {string} $keys Key(s).
+/// @return {string} Value.
+@function _font($keys...) {
+ @return val($font, $keys...);
+}
+
+/// Gets a misc value.
+/// @param {string} $keys Key(s).
+/// @return {string} Value.
+@function _misc($keys...) {
+ @return val($misc, $keys...);
+}
+
+/// Gets a palette value.
+/// @param {string} $keys Key(s).
+/// @return {string} Value.
+@function _palette($keys...) {
+ @return val($palette, $keys...);
+}
+
+/// Gets a size value.
+/// @param {string} $keys Key(s).
+/// @return {string} Value.
+@function _size($keys...) {
+ @return val($size, $keys...);
+}
\ No newline at end of file
diff --git a/src/assets/sass/libs/_html-grid.scss b/src/assets/sass/libs/_html-grid.scss
new file mode 100644
index 0000000..7438a8c
--- /dev/null
+++ b/src/assets/sass/libs/_html-grid.scss
@@ -0,0 +1,149 @@
+// html-grid.scss v1.0 | @ajlkn | MIT licensed */
+
+// Mixins.
+
+ /// Initializes the current element as an HTML grid.
+ /// @param {mixed} $gutters Gutters (either a single number to set both column/row gutters, or a list to set them individually).
+ /// @param {mixed} $suffix Column class suffix (optional; either a single suffix or a list).
+ @mixin html-grid($gutters: 1.5em, $suffix: '') {
+
+ // Initialize.
+ $cols: 12;
+ $multipliers: 0, 0.25, 0.5, 1, 1.50, 2.00;
+ $unit: 100% / $cols;
+
+ // Suffixes.
+ $suffixes: null;
+
+ @if (type-of($suffix) == 'list') {
+ $suffixes: $suffix;
+ }
+ @else {
+ $suffixes: ($suffix);
+ }
+
+ // Gutters.
+ $guttersCols: null;
+ $guttersRows: null;
+
+ @if (type-of($gutters) == 'list') {
+
+ $guttersCols: nth($gutters, 1);
+ $guttersRows: nth($gutters, 2);
+
+ }
+ @else {
+
+ $guttersCols: $gutters;
+ $guttersRows: 0;
+
+ }
+
+ // Row.
+ display: flex;
+ flex-wrap: wrap;
+ box-sizing: border-box;
+ align-items: stretch;
+
+ // Columns.
+ > * {
+ box-sizing: border-box;
+ }
+
+ // Gutters.
+ &.gtr-uniform {
+ > * {
+ > :last-child {
+ margin-bottom: 0;
+ }
+ }
+ }
+
+ // Alignment.
+ &.aln-left {
+ justify-content: flex-start;
+ }
+
+ &.aln-center {
+ justify-content: center;
+ }
+
+ &.aln-right {
+ justify-content: flex-end;
+ }
+
+ &.aln-top {
+ align-items: flex-start;
+ }
+
+ &.aln-middle {
+ align-items: center;
+ }
+
+ &.aln-bottom {
+ align-items: flex-end;
+ }
+
+ // Step through suffixes.
+ @each $suffix in $suffixes {
+
+ // Suffix.
+ @if ($suffix != '') {
+ $suffix: '-' + $suffix;
+ }
+ @else {
+ $suffix: '';
+ }
+
+ // Row.
+
+ // Important.
+ > .imp#{$suffix} {
+ order: -1;
+ }
+
+ // Columns, offsets.
+ @for $i from 1 through $cols {
+ > .col-#{$i}#{$suffix} {
+ width: $unit * $i;
+ }
+
+ > .off-#{$i}#{$suffix} {
+ margin-left: $unit * $i;
+ }
+ }
+
+ // Step through multipliers.
+ @each $multiplier in $multipliers {
+
+ // Gutters.
+ $class: null;
+
+ @if ($multiplier != 1) {
+ $class: '.gtr-' + ($multiplier * 100);
+ }
+
+ {$class} {
+ margin-top: ($guttersRows * $multiplier * -1);
+ margin-left: ($guttersCols * $multiplier * -1);
+
+ > * {
+ padding: ($guttersRows * $multiplier) 0 0 ($guttersCols * $multiplier);
+ }
+
+ // Uniform.
+ &.gtr-uniform {
+ margin-top: $guttersCols * $multiplier * -1;
+
+ > * {
+ padding-top: $guttersCols * $multiplier;
+ }
+ }
+
+ }
+
+ }
+
+ }
+
+ }
\ No newline at end of file
diff --git a/src/assets/sass/libs/_mixins.scss b/src/assets/sass/libs/_mixins.scss
new file mode 100644
index 0000000..a331483
--- /dev/null
+++ b/src/assets/sass/libs/_mixins.scss
@@ -0,0 +1,78 @@
+/// Makes an element's :before pseudoelement a FontAwesome icon.
+/// @param {string} $content Optional content value to use.
+/// @param {string} $category Optional category to use.
+/// @param {string} $where Optional pseudoelement to target (before or after).
+@mixin icon($content: false, $category: regular, $where: before) {
+
+ text-decoration: none;
+
+ &:#{$where} {
+
+ @if $content {
+ content: $content;
+ }
+
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ display: inline-block;
+ font-style: normal;
+ font-variant: normal;
+ text-rendering: auto;
+ line-height: 1;
+ text-transform: none !important;
+
+ @if ($category == brands) {
+ font-family: 'Font Awesome 5 Brands';
+ }
+ @elseif ($category == solid) {
+ font-family: 'Font Awesome 5 Free';
+ font-weight: 900;
+ }
+ @else {
+ font-family: 'Font Awesome 5 Free';
+ font-weight: 400;
+ }
+
+ }
+
+}
+
+/// Applies padding to an element, taking the current element-margin value into account.
+/// @param {mixed} $tb Top/bottom padding.
+/// @param {mixed} $lr Left/right padding.
+/// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left)
+/// @param {bool} $important If true, adds !important.
+@mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) {
+
+ @if $important {
+ $important: '!important';
+ }
+
+ $x: 0.1em;
+
+ @if unit(_size(element-margin)) == 'rem' {
+ $x: 0.1rem;
+ }
+
+ padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important};
+
+}
+
+/// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp).
+/// @param {string} $svg SVG data URL.
+/// @return {string} Encoded SVG data URL.
+@function svg-url($svg) {
+
+ $svg: str-replace($svg, '"', '\'');
+ $svg: str-replace($svg, '%', '%25');
+ $svg: str-replace($svg, '<', '%3C');
+ $svg: str-replace($svg, '>', '%3E');
+ $svg: str-replace($svg, '&', '%26');
+ $svg: str-replace($svg, '#', '%23');
+ $svg: str-replace($svg, '{', '%7B');
+ $svg: str-replace($svg, '}', '%7D');
+ $svg: str-replace($svg, ';', '%3B');
+
+ @return url("data:image/svg+xml;charset=utf8,#{$svg}");
+
+}
\ No newline at end of file
diff --git a/src/assets/sass/libs/_vars.scss b/src/assets/sass/libs/_vars.scss
new file mode 100644
index 0000000..1ac8468
--- /dev/null
+++ b/src/assets/sass/libs/_vars.scss
@@ -0,0 +1,49 @@
+// Misc.
+ $misc: (
+ z-index-base: 10000,
+ z-index-overlay: 100000,
+ max-spotlight: 20
+ );
+
+// Duration.
+ $duration: (
+ navPanel: 0.5s,
+ transition: 0.2s,
+ landing-fadein: 1.5s
+ );
+
+// Size.
+ $size: (
+ border-radius: 4px,
+ element-height: 3em,
+ element-margin: 2em,
+ navPanel: 275px,
+ container-width: 70em
+ );
+
+// Font.
+ $font: (
+ family: ('Roboto', Helvetica, sans-serif),
+ family-fixed: ('Courier New', monospace),
+ weight: 100,
+ weight-bold: 300
+ );
+
+// Palette.
+ $palette: (
+ bg: #1c1d26,
+ bg-transparent: rgba(23,24,32,0.95),
+ fg-bold: #ffffff,
+ fg: rgba(255,255,255,0.75),
+ fg-light: rgba(255,255,255,0.5),
+ fg-lighter: rgba(255,255,255,0.15),
+ border: rgba(255,255,255,0.3),
+ border-bg: rgba(255,255,255,0.075),
+ border2: rgba(255,255,255,0.5),
+ border2-bg: rgba(255,255,255,0.25),
+ accent1: #e44c65,
+ accent2: #272833,
+ accent2-transparent:rgba(39,40,51,0.965),
+ accent3: #5480f1,
+ accent4: #39c088
+ );
\ No newline at end of file
diff --git a/src/assets/sass/libs/_vendor.scss b/src/assets/sass/libs/_vendor.scss
new file mode 100644
index 0000000..6599a3f
--- /dev/null
+++ b/src/assets/sass/libs/_vendor.scss
@@ -0,0 +1,376 @@
+// vendor.scss v1.0 | @ajlkn | MIT licensed */
+
+// Vars.
+
+ /// Vendor prefixes.
+ /// @var {list}
+ $vendor-prefixes: (
+ '-moz-',
+ '-webkit-',
+ '-ms-',
+ ''
+ );
+
+ /// Properties that should be vendorized.
+ /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
+ /// @var {list}
+ $vendor-properties: (
+
+ // Animation.
+ 'animation',
+ 'animation-delay',
+ 'animation-direction',
+ 'animation-duration',
+ 'animation-fill-mode',
+ 'animation-iteration-count',
+ 'animation-name',
+ 'animation-play-state',
+ 'animation-timing-function',
+
+ // Appearance.
+ 'appearance',
+
+ // Backdrop filter.
+ 'backdrop-filter',
+
+ // Background image options.
+ 'background-clip',
+ 'background-origin',
+ 'background-size',
+
+ // Box sizing.
+ 'box-sizing',
+
+ // Clip path.
+ 'clip-path',
+
+ // Filter effects.
+ 'filter',
+
+ // Flexbox.
+ 'align-content',
+ 'align-items',
+ 'align-self',
+ 'flex',
+ 'flex-basis',
+ 'flex-direction',
+ 'flex-flow',
+ 'flex-grow',
+ 'flex-shrink',
+ 'flex-wrap',
+ 'justify-content',
+ 'order',
+
+ // Font feature.
+ 'font-feature-settings',
+ 'font-language-override',
+ 'font-variant-ligatures',
+
+ // Font kerning.
+ 'font-kerning',
+
+ // Fragmented borders and backgrounds.
+ 'box-decoration-break',
+
+ // Grid layout.
+ 'grid-column',
+ 'grid-column-align',
+ 'grid-column-end',
+ 'grid-column-start',
+ 'grid-row',
+ 'grid-row-align',
+ 'grid-row-end',
+ 'grid-row-start',
+ 'grid-template-columns',
+ 'grid-template-rows',
+
+ // Hyphens.
+ 'hyphens',
+ 'word-break',
+
+ // Masks.
+ 'mask',
+ 'mask-border',
+ 'mask-border-outset',
+ 'mask-border-repeat',
+ 'mask-border-slice',
+ 'mask-border-source',
+ 'mask-border-width',
+ 'mask-clip',
+ 'mask-composite',
+ 'mask-image',
+ 'mask-origin',
+ 'mask-position',
+ 'mask-repeat',
+ 'mask-size',
+
+ // Multicolumn.
+ 'break-after',
+ 'break-before',
+ 'break-inside',
+ 'column-count',
+ 'column-fill',
+ 'column-gap',
+ 'column-rule',
+ 'column-rule-color',
+ 'column-rule-style',
+ 'column-rule-width',
+ 'column-span',
+ 'column-width',
+ 'columns',
+
+ // Object fit.
+ 'object-fit',
+ 'object-position',
+
+ // Regions.
+ 'flow-from',
+ 'flow-into',
+ 'region-fragment',
+
+ // Scroll snap points.
+ 'scroll-snap-coordinate',
+ 'scroll-snap-destination',
+ 'scroll-snap-points-x',
+ 'scroll-snap-points-y',
+ 'scroll-snap-type',
+
+ // Shapes.
+ 'shape-image-threshold',
+ 'shape-margin',
+ 'shape-outside',
+
+ // Tab size.
+ 'tab-size',
+
+ // Text align last.
+ 'text-align-last',
+
+ // Text decoration.
+ 'text-decoration-color',
+ 'text-decoration-line',
+ 'text-decoration-skip',
+ 'text-decoration-style',
+
+ // Text emphasis.
+ 'text-emphasis',
+ 'text-emphasis-color',
+ 'text-emphasis-position',
+ 'text-emphasis-style',
+
+ // Text size adjust.
+ 'text-size-adjust',
+
+ // Text spacing.
+ 'text-spacing',
+
+ // Transform.
+ 'transform',
+ 'transform-origin',
+
+ // Transform 3D.
+ 'backface-visibility',
+ 'perspective',
+ 'perspective-origin',
+ 'transform-style',
+
+ // Transition.
+ 'transition',
+ 'transition-delay',
+ 'transition-duration',
+ 'transition-property',
+ 'transition-timing-function',
+
+ // Unicode bidi.
+ 'unicode-bidi',
+
+ // User select.
+ 'user-select',
+
+ // Writing mode.
+ 'writing-mode',
+
+ );
+
+ /// Values that should be vendorized.
+ /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
+ /// @var {list}
+ $vendor-values: (
+
+ // Cross fade.
+ 'cross-fade',
+
+ // Element function.
+ 'element',
+
+ // Filter function.
+ 'filter',
+
+ // Flexbox.
+ 'flex',
+ 'inline-flex',
+
+ // Grab cursors.
+ 'grab',
+ 'grabbing',
+
+ // Gradients.
+ 'linear-gradient',
+ 'repeating-linear-gradient',
+ 'radial-gradient',
+ 'repeating-radial-gradient',
+
+ // Grid layout.
+ 'grid',
+ 'inline-grid',
+
+ // Image set.
+ 'image-set',
+
+ // Intrinsic width.
+ 'max-content',
+ 'min-content',
+ 'fit-content',
+ 'fill',
+ 'fill-available',
+ 'stretch',
+
+ // Sticky position.
+ 'sticky',
+
+ // Transform.
+ 'transform',
+
+ // Zoom cursors.
+ 'zoom-in',
+ 'zoom-out',
+
+ );
+
+// Functions.
+
+ /// Removes a specific item from a list.
+ /// @author Hugo Giraudel
+ /// @param {list} $list List.
+ /// @param {integer} $index Index.
+ /// @return {list} Updated list.
+ @function remove-nth($list, $index) {
+
+ $result: null;
+
+ @if type-of($index) != number {
+ @warn "$index: #{quote($index)} is not a number for `remove-nth`.";
+ }
+ @else if $index == 0 {
+ @warn "List index 0 must be a non-zero integer for `remove-nth`.";
+ }
+ @else if abs($index) > length($list) {
+ @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
+ }
+ @else {
+
+ $result: ();
+ $index: if($index < 0, length($list) + $index + 1, $index);
+
+ @for $i from 1 through length($list) {
+
+ @if $i != $index {
+ $result: append($result, nth($list, $i));
+ }
+
+ }
+
+ }
+
+ @return $result;
+
+ }
+
+ /// Replaces a substring within another string.
+ /// @author Hugo Giraudel
+ /// @param {string} $string String.
+ /// @param {string} $search Substring.
+ /// @param {string} $replace Replacement.
+ /// @return {string} Updated string.
+ @function str-replace($string, $search, $replace: '') {
+
+ $index: str-index($string, $search);
+
+ @if $index {
+ @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
+ }
+
+ @return $string;
+
+ }
+
+ /// Replaces a substring within each string in a list.
+ /// @param {list} $strings List of strings.
+ /// @param {string} $search Substring.
+ /// @param {string} $replace Replacement.
+ /// @return {list} Updated list of strings.
+ @function str-replace-all($strings, $search, $replace: '') {
+
+ @each $string in $strings {
+ $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace));
+ }
+
+ @return $strings;
+
+ }
+
+// Mixins.
+
+ /// Wraps @content in vendorized keyframe blocks.
+ /// @param {string} $name Name.
+ @mixin keyframes($name) {
+
+ @-moz-keyframes #{$name} { @content; }
+ @-webkit-keyframes #{$name} { @content; }
+ @-ms-keyframes #{$name} { @content; }
+ @keyframes #{$name} { @content; }
+
+ }
+
+ /// Vendorizes a declaration's property and/or value(s).
+ /// @param {string} $property Property.
+ /// @param {mixed} $value String/list of value(s).
+ @mixin vendor($property, $value) {
+
+ // Determine if property should expand.
+ $expandProperty: index($vendor-properties, $property);
+
+ // Determine if value should expand (and if so, add '-prefix-' placeholder).
+ $expandValue: false;
+
+ @each $x in $value {
+ @each $y in $vendor-values {
+ @if $y == str-slice($x, 1, str-length($y)) {
+
+ $value: set-nth($value, index($value, $x), '-prefix-' + $x);
+ $expandValue: true;
+
+ }
+ }
+ }
+
+ // Expand property?
+ @if $expandProperty {
+ @each $vendor in $vendor-prefixes {
+ #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
+ }
+ }
+
+ // Expand just the value?
+ @elseif $expandValue {
+ @each $vendor in $vendor-prefixes {
+ #{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
+ }
+ }
+
+ // Neither? Treat them as a normal declaration.
+ @else {
+ #{$property}: #{$value};
+ }
+
+ }
\ No newline at end of file
diff --git a/src/assets/sass/main.scss b/src/assets/sass/main.scss
new file mode 100644
index 0000000..abb848c
--- /dev/null
+++ b/src/assets/sass/main.scss
@@ -0,0 +1,2165 @@
+@import 'libs/vars';
+@import 'libs/functions';
+@import 'libs/mixins';
+@import 'libs/vendor';
+@import 'libs/breakpoints';
+@import 'libs/html-grid';
+@import url('fontawesome-all.min.css');
+@import url("https://fonts.googleapis.com/css?family=Roboto:100,300,100italic,300italic");
+
+/*
+ Landed by HTML5 UP
+ html5up.net | @ajlkn
+ Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
+*/
+
+// Breakpoints.
+
+ @include breakpoints((
+ xlarge: ( 1281px, 1680px ),
+ large: ( 981px, 1280px ),
+ medium: ( 737px, 980px ),
+ small: ( 481px, 736px ),
+ xsmall: ( null, 480px ),
+ ));
+
+// Mixins.
+
+ @mixin line-icon($bg: _palette(bg), $fg: _palette(fg-bold)) {
+ @include icon;
+ $size: 1px;
+
+ &:before {
+ color: $bg !important;
+ text-shadow: $size 0 0 $fg,
+ ($size * -1) 0 0 $fg,
+ 0 $size 0 $fg,
+ 0 ($size * -1) 0 $fg;
+ }
+ }
+
+ $size-wrapper-pad-tb: 6em;
+ $size-wrapper-pad-lr: 3em;
+
+// Reset.
+// Based on meyerweb.com/eric/tools/css/reset (v2.0 | 20110126 | License: public domain)
+
+ html, body, div, span, applet, object,
+ iframe, h1, h2, h3, h4, h5, h6, p, blockquote,
+ pre, a, abbr, acronym, address, big, cite,
+ code, del, dfn, em, img, ins, kbd, q, s, samp,
+ small, strike, strong, sub, sup, tt, var, b,
+ u, i, center, dl, dt, dd, ol, ul, li, fieldset,
+ form, label, legend, table, caption, tbody,
+ tfoot, thead, tr, th, td, article, aside,
+ canvas, details, embed, figure, figcaption,
+ footer, header, hgroup, menu, nav, output, ruby,
+ section, summary, time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+ }
+
+ article, aside, details, figcaption, figure,
+ footer, header, hgroup, menu, nav, section {
+ display: block;
+ }
+
+ body {
+ line-height: 1;
+ }
+
+ ol, ul {
+ list-style:none;
+ }
+
+ blockquote, q {
+ quotes: none;
+
+ &:before,
+ &:after {
+ content: '';
+ content: none;
+ }
+ }
+
+ table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ }
+
+ body {
+ -webkit-text-size-adjust: none;
+ }
+
+ mark {
+ background-color: transparent;
+ color: inherit;
+ }
+
+ input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+ }
+
+ input, select, textarea {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ }
+
+/* Basic */
+
+ // Set box model to border-box.
+ // Based on css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice
+ html {
+ box-sizing: border-box;
+ }
+
+ *, *:before, *:after {
+ box-sizing: inherit;
+ }
+
+ html, body {
+ background: _palette(bg);
+ }
+
+ body {
+
+ // Stops initial animations until page loads.
+ &.is-preload {
+ *, *:before, *:after {
+ @include vendor('animation', 'none !important');
+ @include vendor('transition', 'none !important');
+ }
+ }
+
+ }
+
+ body, input, select, textarea {
+ color: _palette(fg);
+ font-family: _font(family);
+ font-size: 15pt;
+ font-weight: _font(weight);
+ line-height: 1.75em;
+ }
+
+ a {
+ @include vendor('transition', ('border-color #{_duration(transition)} ease-in-out', 'color #{_duration(transition)} ease-in-out'));
+ border-bottom: dotted 1px;
+ color: _palette(accent1);
+ text-decoration: none;
+
+ &:hover {
+ color: _palette(accent1) !important;
+ border-bottom-color: transparent;
+ }
+ }
+
+ strong, b {
+ color: _palette(fg-bold);
+ font-weight: _font(weight-bold);
+ }
+
+ em, i {
+ font-style: italic;
+ }
+
+ p {
+ margin: 0 0 _size(element-margin) 0;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ color: _palette(fg-bold);
+ font-weight: _font(weight-bold);
+ line-height: 1em;
+ margin: 0 0 (_size(element-margin) * 0.5) 0;
+
+ a {
+ color: inherit;
+ border: 0;
+ }
+ }
+
+ h2 {
+ font-size: 2em;
+ line-height: 1.5em;
+ letter-spacing: -0.025em;
+ }
+
+ h3 {
+ font-size: 1.35em;
+ line-height: 1.5em;
+ }
+
+ h4 {
+ font-size: 1.1em;
+ line-height: 1.5em;
+ }
+
+ h5 {
+ font-size: 0.9em;
+ line-height: 1.5em;
+ }
+
+ h6 {
+ font-size: 0.7em;
+ line-height: 1.5em;
+ }
+
+ sub {
+ font-size: 0.8em;
+ position: relative;
+ top: 0.5em;
+ }
+
+ sup {
+ font-size: 0.8em;
+ position: relative;
+ top: -0.5em;
+ }
+
+ hr {
+ border: 0;
+ border-bottom: solid 1px _palette(border);
+ margin: (_size(element-margin) * 1.5) 0;
+
+ &.major {
+ margin: (_size(element-margin) * 2) 0;
+ }
+ }
+
+ blockquote {
+ border-left: solid 4px _palette(border);
+ font-style: italic;
+ margin: 0 0 _size(element-margin) 0;
+ padding: 0.5em 0 0.5em 2em;
+ }
+
+ code {
+ background: _palette(border-bg);
+ border-radius: _size(border-radius);
+ font-family: _font(family-fixed);
+ font-size: 0.9em;
+ margin: 0 0.25em;
+ padding: 0.25em 0.65em;
+ }
+
+ pre {
+ -webkit-overflow-scrolling: touch;
+ font-family: _font(family-fixed);
+ font-size: 0.9em;
+ margin: 0 0 _size(element-margin) 0;
+
+ code {
+ display: block;
+ line-height: 1.75em;
+ padding: 1em 1.5em;
+ overflow-x: auto;
+ }
+ }
+
+ .align-left {
+ text-align: left;
+ }
+
+ .align-center {
+ text-align: center;
+ }
+
+ .align-right {
+ text-align: right;
+ }
+
+/* Loader */
+
+ // Spinner
+
+ @include keyframes('spinner-show') {
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+ }
+
+ @include keyframes('spinner-hide') {
+ 0% { color: _palette(fg-lighter); z-index: _misc(z-index-overlay) + 1; @include vendor('transform', 'scale(1) rotate(0deg)'); }
+ 99% { color: _palette(bg); z-index: _misc(z-index-overlay) + 1; @include vendor('transform', 'scale(0.5) rotate(360deg)'); }
+ 100% { color: _palette(bg); z-index: -1; @include vendor('transform', 'scale(0.5) rotate(360deg)'); }
+ }
+
+ @include keyframes('spinner-rotate') {
+ 0% { @include vendor('transform', 'scale(1) rotate(0deg)'); }
+ 100% { @include vendor('transform', 'scale(1) rotate(360deg)'); }
+ }
+
+ // Overlay
+
+ @include keyframes('overlay-hide') {
+ 0% { opacity: 1; z-index: _misc(z-index-overlay); }
+ 15% { opacity: 1; z-index: _misc(z-index-overlay); }
+ 99% { opacity: 0; z-index: _misc(z-index-overlay); }
+ 100% { opacity: 0; z-index: -1; }
+ }
+
+ body.landing {
+ @include icon(false, solid);
+
+ // Spinner (inactive)
+
+ &:before {
+ @include vendor('animation', ('spinner-show 1.5s 1 0.25s ease forwards', 'spinner-hide 0.25s ease-in-out forwards !important'));
+ @include vendor('transform-origin', '50% 50%');
+
+ color: _palette(fg-lighter);
+ content: '\f1ce';
+ cursor: default;
+ display: block;
+ font-size: 2em;
+ height: 2em;
+ left: 50%;
+ line-height: 2em;
+ margin: -1em 0 0 -1em;
+ opacity: 0;
+ position: fixed;
+ text-align: center;
+ top: 50%;
+ width: 2em;
+ z-index: -1;
+ }
+
+ // Overlay (inactive)
+
+ &:after {
+ @include vendor('animation', 'overlay-hide #{_duration(landing-fadein)} ease-in forwards !important');
+ background: _palette(bg);
+ content: '';
+ display: block;
+ height: 100%;
+ left: 0;
+ opacity: 0;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: -1;
+ }
+
+ &.is-preload {
+
+ // Spinner (active)
+
+ &:before {
+ @include vendor('animation', ('spinner-show 1.5s 1 0.25s ease forwards', 'spinner-rotate 0.75s infinite linear !important'));
+ z-index: _misc(z-index-overlay) + 1;
+ }
+
+ // Overlay (active)
+
+ &:after {
+ @include vendor('animation', 'none !important');
+ opacity: 1;
+ z-index: _misc(z-index-overlay);
+ }
+
+ }
+ }
+
+ @media (-webkit-min-device-pixel-ratio: 2) {
+ body.landing:before {
+ line-height: 2.025em;
+ }
+ }
+
+/* Container */
+
+ .container {
+ margin: 0 auto;
+ max-width: calc(100% - #{_size(element-margin) * 2});
+ width: _size(container-width);
+
+ &.xsmall {
+ width: (_size(container-width) * 0.25);
+ }
+
+ &.small {
+ width: (_size(container-width) * 0.5);
+ }
+
+ &.medium {
+ width: (_size(container-width) * 0.75);
+ }
+
+ &.large {
+ width: (_size(container-width) * 1.25);
+ }
+
+ &.xlarge {
+ width: (_size(container-width) * 1.5);
+ }
+
+ &.max {
+ width: 100%;
+ }
+
+ @include breakpoint('<=large') {
+ width: 90%;
+ max-width: 100%;
+ }
+
+ @include breakpoint('<=medium') {
+ width: 100% !important;
+ }
+ }
+
+/* Row */
+
+ .row {
+ @include html-grid(2.5em);
+
+ @include breakpoint('<=xlarge') {
+ @include html-grid(2.5em, 'xlarge');
+ }
+
+ @include breakpoint('<=large') {
+ @include html-grid(2.5em, 'large');
+ }
+
+ @include breakpoint('<=medium') {
+ @include html-grid(2.5em, 'medium');
+ }
+
+ @include breakpoint('<=small') {
+ @include html-grid(2.5em, 'small');
+ }
+
+ @include breakpoint('<=xsmall') {
+ @include html-grid(2.5em, 'xsmall');
+ }
+ }
+
+/* Section/Article */
+
+ section, article {
+ &.special {
+ text-align: center;
+ }
+ }
+
+ header {
+ p {
+ color: _palette(fg-bold);
+ position: relative;
+ margin: 0 0 (_size(element-margin) * 0.75) 0;
+ }
+
+ h2 + p {
+ font-size: 1.25em;
+ margin-top: (_size(element-margin) * -0.5);
+ line-height: 1.75em;
+ }
+
+ h3 + p {
+ font-size: 1.1em;
+ margin-top: (_size(element-margin) * -0.4);
+ line-height: 1.75em;
+ }
+
+ h4 + p,
+ h5 + p,
+ h6 + p {
+ font-size: 0.9em;
+ margin-top: (_size(element-margin) * -0.3);
+ line-height: 1.5em;
+ }
+
+ &.major {
+ margin: 0 0 (_size(element-margin) * 2) 0;
+ position: relative;
+ text-align: center;
+
+ &:after {
+ background: _palette(accent1);
+ content: '';
+ display: inline-block;
+ height: 0.2em;
+ max-width: 20em;
+ width: 75%;
+ }
+ }
+ }
+
+ footer {
+ &.major {
+ margin: (_size(element-margin) * 2) 0 0 0;
+ }
+ }
+
+/* Form */
+
+ form {
+ margin: 0 0 _size(element-margin) 0;
+
+ &.cta {
+ max-width: 35em;
+ margin-left: auto;
+ margin-right: auto;
+ }
+ }
+
+ label {
+ color: _palette(fg-bold);
+ display: block;
+ font-size: 0.9em;
+ font-weight: _font(weight-bold);
+ margin: 0 0 (_size(element-margin) * 0.5) 0;
+ }
+
+ input[type="text"],
+ input[type="password"],
+ input[type="email"],
+ select,
+ textarea {
+ @include vendor('appearance', 'none');
+ @include vendor('transition', 'border-color #{_duration(transition)} ease-in-out');
+ background: transparent;
+ border-radius: _size(border-radius);
+ border: solid 1px _palette(border);
+ color: inherit;
+ display: block;
+ outline: 0;
+ padding: 0 1em;
+ text-decoration: none;
+ width: 100%;
+
+ &:invalid {
+ box-shadow: none;
+ }
+
+ &:focus {
+ border-color: _palette(accent1);
+ }
+ }
+
+ select {
+ background-image: svg-url("
");
+ background-size: 1.25rem;
+ background-repeat: no-repeat;
+ background-position: calc(100% - 1rem) center;
+ height: _size(element-height);
+ padding-right: _size(element-height);
+ text-overflow: ellipsis;
+
+ option {
+ color: _palette(fg-bold);
+ background: _palette(bg);
+ }
+
+ &:focus {
+ &::-ms-value {
+ background-color: transparent;
+ }
+ }
+
+ &::-ms-expand {
+ display: none;
+ }
+ }
+
+ input[type="text"],
+ input[type="password"],
+ input[type="email"],
+ select {
+ height: _size(element-height);
+ }
+
+ textarea {
+ padding: 0.75em 1em;
+ }
+
+ input[type="checkbox"],
+ input[type="radio"], {
+ @include vendor('appearance', 'none');
+ display: block;
+ float: left;
+ margin-right: -2em;
+ opacity: 0;
+ width: 1em;
+ z-index: -1;
+
+ & + label {
+ @include icon(false, solid);
+ color: _palette(fg);
+ cursor: pointer;
+ display: inline-block;
+ font-size: 1em;
+ font-weight: _font(weight);
+ padding-left: (_size(element-height) * 0.6) + 0.75em;
+ padding-right: 0.75em;
+ position: relative;
+
+ &:before {
+ border-radius: _size(border-radius);
+ border: solid 1px _palette(border);
+ content: '';
+ display: inline-block;
+ font-size: 0.8em;
+ height: (_size(element-height) * 0.75);
+ left: 0;
+ line-height: (_size(element-height) * 0.75);
+ position: absolute;
+ text-align: center;
+ top: 0;
+ width: (_size(element-height) * 0.75);
+ }
+ }
+
+ &:checked + label {
+ &:before {
+ background: _palette(border2-bg);
+ color: _palette(fg-bold);
+ content: '\f00c';
+ }
+ }
+
+ &:focus + label {
+ &:before {
+ border-color: _palette(accent1);
+ }
+ }
+ }
+
+ input[type="checkbox"] {
+ & + label {
+ &:before {
+ border-radius: _size(border-radius);
+ }
+ }
+ }
+
+ input[type="radio"] {
+ & + label {
+ &:before {
+ border-radius: 100%;
+ }
+ }
+ }
+
+ ::-webkit-input-placeholder {
+ color: _palette(fg-light) !important;
+ opacity: 1.0;
+ }
+
+ :-moz-placeholder {
+ color: _palette(fg-light) !important;
+ opacity: 1.0;
+ }
+
+ ::-moz-placeholder {
+ color: _palette(fg-light) !important;
+ opacity: 1.0;
+ }
+
+ :-ms-input-placeholder {
+ color: _palette(fg-light) !important;
+ opacity: 1.0;
+ }
+
+/* Box */
+
+ .box {
+ border-radius: _size(border-radius);
+ border: solid 1px _palette(border);
+ margin-bottom: _size(element-margin);
+ padding: 1.5em;
+
+ > :last-child,
+ > :last-child > :last-child,
+ > :last-child > :last-child > :last-child {
+ margin-bottom: 0;
+ }
+
+ &.alt {
+ border: 0;
+ border-radius: 0;
+ padding: 0;
+ }
+ }
+
+/* Icon */
+
+ .icon {
+ @include icon;
+ border-bottom: none;
+ position: relative;
+
+ > .label {
+ display: none;
+ }
+
+ &:before {
+ line-height: inherit;
+ }
+
+ &.solid {
+ &:before {
+ font-weight: 900 !important;
+ }
+ }
+
+ &.brands {
+ &:before {
+ font-family: 'Font Awesome 5 Brands' !important;
+ }
+ }
+
+ &.alt {
+ @include line-icon;
+ }
+
+ &.major {
+ background: _palette(accent2);
+ border-radius: 100%;
+ cursor: default;
+ display: inline-block;
+ height: 6em;
+ line-height: 5.65em;
+ margin: 0 0 _size(element-margin) 0;
+ text-align: center;
+ width: 6em;
+
+ &:before {
+ font-size: 2.25em;
+ }
+
+ &.alt {
+ @include line-icon(_palette(accent2));
+ }
+ }
+ }
+
+/* Image */
+
+ .image {
+ border-radius: _size(border-radius);
+ border: 0;
+ display: inline-block;
+ position: relative;
+ overflow: hidden;
+
+ &:before {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ background-image: url('images/overlay.png');
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ }
+
+ img {
+ border-radius: _size(border-radius);
+ display: block;
+ }
+
+ &.left {
+ float: left;
+ margin: 0 1.5em 1em 0;
+ top: 0.25em;
+ }
+
+ &.right {
+ float: right;
+ margin: 0 0 1em 1.5em;
+ top: 0.25em;
+ }
+
+ &.left,
+ &.right {
+ max-width: 40%;
+
+ img {
+ width: 100%;
+ }
+ }
+
+ &.fit {
+ display: block;
+ margin: 0 0 _size(element-margin) 0;
+ width: 100%;
+
+ img {
+ width: 100%;
+ }
+ }
+ }
+
+/* List */
+
+ ol {
+ list-style: decimal;
+ margin: 0 0 _size(element-margin) 0;
+ padding-left: 1.25em;
+
+ li {
+ padding-left: 0.25em;
+ }
+ }
+
+ ul {
+ list-style: disc;
+ margin: 0 0 _size(element-margin) 0;
+ padding-left: 1em;
+
+ li {
+ padding-left: 0.5em;
+ }
+
+ &.alt {
+ list-style: none;
+ padding-left: 0;
+
+ li {
+ border-top: solid 1px _palette(border);
+ padding: 0.5em 0;
+
+ &:first-child {
+ border-top: 0;
+ padding-top: 0;
+ }
+ }
+ }
+
+ }
+
+ dl {
+ margin: 0 0 _size(element-margin) 0;
+ }
+
+/* Icons */
+
+ ul.icons {
+ cursor: default;
+ list-style: none;
+ padding-left: 0;
+
+ li {
+ display: inline-block;
+ height: 2.5em;
+ line-height: 2.5em;
+ padding: 0 0.5em;
+
+ .icon {
+ font-size: 0.8em;
+
+ &:before {
+ font-size: 2em;
+ }
+ }
+ }
+ }
+
+/* Actions */
+
+ ul.actions {
+ @include vendor('display', 'flex');
+ cursor: default;
+ list-style: none;
+ margin-left: (_size(element-margin) * -0.5);
+ padding-left: 0;
+
+ li {
+ padding: 0 0 0 (_size(element-margin) * 0.5);
+ vertical-align: middle;
+ }
+
+ &.special {
+ @include vendor('justify-content', 'center');
+ width: 100%;
+ margin-left: 0;
+
+ li {
+ &:first-child {
+ padding-left: 0;
+ }
+ }
+ }
+
+ &.stacked {
+ @include vendor('flex-direction', 'column');
+ margin-left: 0;
+
+ li {
+ padding: (_size(element-margin) * 0.65) 0 0 0;
+
+ &:first-child {
+ padding-top: 0;
+ }
+ }
+ }
+
+ &.fit {
+ width: calc(100% + #{_size(element-margin) * 0.5});
+
+ li {
+ @include vendor('flex-grow', '1');
+ @include vendor('flex-shrink', '1');
+ width: 100%;
+
+ > * {
+ width: 100%;
+ }
+ }
+
+ &.stacked {
+ width: 100%;
+ }
+ }
+
+ @include breakpoint('<=xsmall') {
+ &:not(.fixed) {
+ @include vendor('flex-direction', 'column');
+ margin-left: 0;
+ width: 100% !important;
+
+ li {
+ @include vendor('flex-grow', '1');
+ @include vendor('flex-shrink', '1');
+ padding: (_size(element-margin) * 0.5) 0 0 0;
+ text-align: center;
+ width: 100%;
+
+ > * {
+ width: 100%;
+ }
+
+ &:first-child {
+ padding-top: 0;
+ }
+
+ input[type="submit"],
+ input[type="reset"],
+ input[type="button"],
+ button,
+ .button {
+ width: 100%;
+
+ &.icon {
+ &:before {
+ margin-left: -0.5em;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+/* Table */
+
+ .table-wrapper {
+ -webkit-overflow-scrolling: touch;
+ overflow-x: auto;
+ }
+
+ table {
+ margin: 0 0 _size(element-margin) 0;
+ width: 100%;
+
+ tbody {
+ tr {
+ border: solid 1px _palette(border);
+ border-left: 0;
+ border-right: 0;
+
+ &:nth-child(2n + 1) {
+ background-color: _palette(border-bg);
+ }
+ }
+ }
+
+ td {
+ padding: 0.75em 0.75em;
+ }
+
+ th {
+ color: _palette(fg-bold);
+ font-size: 0.9em;
+ font-weight: _font(weight-bold);
+ padding: 0 0.75em 0.75em 0.75em;
+ text-align: left;
+ }
+
+ thead {
+ border-bottom: solid 1px _palette(border);
+ }
+
+ tfoot {
+ border-top: solid 1px _palette(border);
+ }
+
+ &.alt {
+ border-collapse: separate;
+
+ tbody {
+ tr {
+ td {
+ border: solid 1px _palette(border);
+ border-left-width: 0;
+ border-top-width: 0;
+
+ &:first-child {
+ border-left-width: 1px;
+ }
+ }
+
+ &:first-child {
+ td {
+ border-top-width: 1px;
+ }
+ }
+ }
+ }
+
+ thead {
+ border-bottom: 0;
+ }
+
+ tfoot {
+ border-top: 0;
+ }
+ }
+ }
+
+/* Button */
+
+ input[type="submit"],
+ input[type="reset"],
+ input[type="button"],
+ .button {
+ @include vendor('appearance', 'none');
+ @include vendor('transition', ('background-color #{_duration(transition)} ease-in-out', 'color #{_duration(transition)} ease-in-out', 'box-shadow #{_duration(transition)} ease-in-out'));
+ background-color: transparent;
+ border-radius: _size(border-radius);
+ border: 0;
+ box-shadow: inset 0 0 0 1px _palette(border);
+ color: _palette(fg-bold) !important;
+ cursor: pointer;
+ display: inline-block;
+ font-weight: _font(weight-bold);
+ height: _size(element-height);
+ line-height: _size(element-height);
+ padding: 0 2.25em;
+ text-align: center;
+ text-decoration: none;
+ white-space: nowrap;
+
+ &:hover, &:active {
+ box-shadow: inset 0 0 0 1px _palette(accent1);
+ color: _palette(accent1) !important;
+ }
+
+ &:active {
+ background-color: transparentize(_palette(accent1), 0.85);
+ }
+
+ &.icon {
+ &:before {
+ margin-right: 0.5em;
+ }
+ }
+
+ &.fit {
+ width: 100%;
+ }
+
+ &.small {
+ font-size: 0.8em;
+ }
+
+ &.large {
+ font-size: 1.35em;
+ }
+
+ &.primary {
+ background-color: _palette(accent1);
+ box-shadow: none;
+ color: _palette(fg-bold) !important;
+
+ &:hover {
+ background-color: lighten(_palette(accent1), 5);
+ }
+
+ &:active {
+ background-color: darken(_palette(accent1), 5);
+ }
+ }
+
+ &.disabled,
+ &:disabled {
+ background-color: _palette(border) !important;
+ box-shadow: none !important;
+ color: _palette(fg-bold) !important;
+ cursor: default;
+ opacity: 0.25;
+ }
+ }
+
+/* Goto Next */
+
+ .goto-next {
+ border: 0;
+ bottom: 0;
+ display: block;
+ height: 5em;
+ left: 50%;
+ margin: 0 0 0 -5em;
+ overflow: hidden;
+ position: absolute;
+ text-indent: 10em;
+ white-space: nowrap;
+ width: 10em;
+ z-index: 1;
+
+ &:before {
+ background-image: url('images/arrow.svg');
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ content: '';
+ display: block;
+ height: 1.5em;
+ left: 50%;
+ margin: -0.75em 0 0 -1em;
+ position: absolute;
+ top: 50%;
+ width: 2em;
+ z-index: 1;
+ }
+ }
+
+/* Spotlight */
+
+ .spotlight {
+ background-attachment: fixed;
+ background-position: center center;
+ background-size: cover;
+ box-shadow: 0 0.25em 0.5em 0 rgba(0,0,0,0.25);
+ height: 100vh;
+ overflow: hidden;
+ position: relative;
+
+ // Force spotlights to stack in reverse order (needed for our box
+ // shadows to overlap stuff in the right direction).
+ @for $i from 1 through _misc(max-spotlight) {
+ &:nth-last-of-type(#{$i}) {
+ z-index: #{$i};
+ }
+ }
+
+ &:before {
+ background-image: url('images/overlay.png');
+ content: '';
+ display: block;
+ height: 100%;
+ left: 0;
+ top: 0;
+ width: 100%;
+ }
+
+ .image.main {
+ display: none;
+
+ img {
+ position: relative;
+ }
+ }
+
+ .content {
+ @include vendor('transform', 'translate(0,0)');
+ @include vendor('transition', 'transform 1s ease, opacity 1s ease');
+ background: _palette(bg-transparent);
+ border-style: solid;
+ opacity: 1;
+ position: absolute;
+ }
+
+ .goto-next {
+ @include vendor('transform', 'translate(0,0)');
+ @include vendor('transition', 'transform 0.75s ease, opacity 1s ease-in');
+ @include vendor('transition-delay', '0.5s');
+ opacity: 1;
+ }
+
+ &.top, &.bottom {
+ .content {
+ left: 0;
+ padding: ($size-wrapper-pad-tb * 0.85) 0 (($size-wrapper-pad-tb * 0.85) - _size(element-margin)) 0;
+ width: 100%;
+ }
+ }
+
+ &.top {
+ .content {
+ border-bottom-width: 0.35em;
+ top: 0;
+ }
+ }
+
+ &.bottom {
+ .content {
+ border-top-width: 0.35em;
+ bottom: 0;
+ }
+ }
+
+ &.left, &.right {
+ .content {
+ height: 101%;
+ padding: $size-wrapper-pad-tb $size-wrapper-pad-lr;
+ top: 0;
+ width: 28em;
+ }
+ }
+
+ &.left {
+ .content {
+ border-right-width: 0.35em;
+ left: 0;
+ }
+ }
+
+ &.right {
+ .content {
+ border-left-width: 0.35em;
+ right: 0;
+ }
+ }
+
+ &.style1 {
+ .content {
+ border-color: _palette(accent1);
+ }
+ }
+
+ &.style2 {
+ .content {
+ border-color: _palette(accent3);
+ }
+ }
+
+ &.style3 {
+ .content {
+ border-color: _palette(accent4);
+ }
+ }
+
+ &.inactive {
+ .content {
+ opacity: 0;
+ }
+
+ .goto-next {
+ @include vendor('transform', 'translate(0,1.5em)');
+ opacity: 0;
+ }
+
+ &.top {
+ .content {
+ @include vendor('transform', 'translate(0,-5em)');
+ }
+ }
+
+ &.bottom {
+ .content {
+ @include vendor('transform', 'translate(0,5em)');
+ }
+ }
+
+ &.left {
+ .content {
+ @include vendor('transform', 'translate(-5em,0)');
+ }
+ }
+
+ &.right {
+ .content {
+ @include vendor('transform', 'translate(5em,0)');
+ }
+ }
+ }
+ }
+
+ body.is-touch {
+ .spotlight {
+ background-attachment: scroll;
+ }
+ }
+
+/* Wrapper */
+
+ .wrapper {
+ padding: $size-wrapper-pad-tb 0 ($size-wrapper-pad-tb - _size(element-margin)) 0;
+
+ &.style1 {
+ }
+
+ &.style2 {
+ background: _palette(accent1);
+
+ input[type="text"],
+ input[type="password"],
+ input[type="email"],
+ select,
+ textarea {
+ &:focus {
+ border-color: _palette(border2);
+ }
+ }
+
+ input[type="submit"],
+ input[type="reset"],
+ input[type="button"],
+ .button {
+ &:hover, &:active {
+ background-color: _palette(border-bg) !important;
+ box-shadow: inset 0 0 0 1px _palette(border2) !important;
+ color: _palette(fg-bold) !important;
+ }
+
+ &:active {
+ background-color: _palette(border2-bg) !important;
+ }
+
+ &.primary {
+ background-color: _palette(fg-bold);
+ color: _palette(accent1) !important;
+
+ &:hover, &:active {
+ background-color: _palette(border-bg) !important;
+ box-shadow: inset 0 0 0 1px _palette(border2) !important;
+ color: _palette(fg-bold) !important;
+ }
+
+ &:active {
+ background-color: _palette(border2-bg) !important;
+ }
+ }
+ }
+ }
+
+ &.fade-down {
+ > .container {
+ @include vendor('transform', 'translate(0,0)');
+ @include vendor('transition', 'transform 1s ease, opacity 1s ease');
+ opacity: 1;
+ }
+
+ &.inactive {
+ > .container {
+ @include vendor('transform', 'translate(0,-1em)');
+ opacity: 0;
+ }
+ }
+ }
+
+ &.fade-up {
+ > .container {
+ @include vendor('transform', 'translate(0,0)');
+ @include vendor('transition', 'transform 1s ease, opacity 1s ease');
+ opacity: 1;
+ }
+
+ &.inactive {
+ > .container {
+ @include vendor('transform', 'translate(0,1em)');
+ opacity: 0;
+ }
+ }
+ }
+
+ &.fade {
+ > .container {
+ @include vendor('transition', 'opacity 1s ease');
+ opacity: 1;
+ }
+
+ &.inactive {
+ > .container {
+ opacity: 0;
+ }
+ }
+ }
+ }
+
+/* Dropotron */
+
+ .dropotron {
+ background: _palette(accent2-transparent);
+ border-radius: _size(border-radius);
+ box-shadow: 0 0.075em 0.35em 0 rgba(0,0,0,0.125);
+ list-style: none;
+ margin-top: calc(-0.25em + 1px);
+ min-width: 12em;
+ padding: 0.25em 0;
+
+ > li {
+ border-top: solid 1px rgba(255,255,255,0.035);
+ padding: 0;
+
+ a, span {
+ border: 0;
+ color: _palette(fg);
+ display: block;
+ padding: 0.1em 1em;
+ text-decoration: none;
+ }
+
+ &:first-child {
+ border-top: 0;
+ }
+
+ &.active {
+ > a, > span {
+ color: _palette(accent1);
+ }
+ }
+ }
+
+ &.level-0 {
+ font-size: 0.8em;
+ margin-top: 1em;
+
+ &:before {
+ @include vendor('transform', 'rotate(45deg)');
+ background: _palette(accent2);
+ content: '';
+ display: block;
+ height: 1em;
+ position: absolute;
+ right: 1.5em;
+ top: -0.5em;
+ width: 1em;
+ }
+ }
+ }
+
+ body.landing {
+ .dropotron {
+ &.level-0 {
+ margin-top: 0;
+ }
+ }
+ }
+
+/* Header */
+
+ #page-wrapper {
+ padding-top: 3.5em;
+ }
+
+ #header {
+ background: _palette(accent2-transparent);
+ box-shadow: 0 0 0.25em 0 rgba(0,0,0,0.25);
+ cursor: default;
+ height: 3.5em;
+ left: 0;
+ line-height: 3.5em;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 100;
+
+ h1 {
+ height: inherit;
+ left: 1.25em;
+ line-height: inherit;
+ margin: 0;
+ position: absolute;
+ top: 0;
+ }
+
+ nav {
+ position: absolute;
+ right: 1em;
+ top: 0;
+
+ ul {
+ margin: 0;
+
+ li {
+ display: inline-block;
+ margin-left: 1em;
+
+ a, span {
+ border: 0;
+ color: inherit;
+ display: inline-block;
+ height: inherit;
+ line-height: inherit;
+ outline: 0;
+
+ &.button {
+ height: 2em;
+ line-height: 2em;
+ padding: 0 1.25em;
+ }
+
+ &:not(.button):before {
+ margin-right: 0.5em;
+ }
+ }
+
+ &.active {
+ > a, > span {
+ color: _palette(accent1);
+ }
+ }
+
+ > ul {
+ display: none;
+ }
+ }
+ }
+ }
+ }
+
+ body.landing {
+ #page-wrapper {
+ padding-top: 0;
+ }
+
+ #header {
+ background: transparent;
+ box-shadow: none;
+ position: absolute;
+ }
+ }
+
+/* Banner */
+
+ #banner {
+ background-attachment: fixed;
+ background-color: _palette(accent2);
+ background-image: url('../../images/banner.jpg');
+ background-position: center center;
+ background-size: cover;
+ box-shadow: 0 0.25em 0.5em 0 rgba(0,0,0,0.25);
+ min-height: 100vh;
+ position: relative;
+ text-align: center;
+ z-index: (_misc(max-spotlight) + 1);
+
+ &:before {
+ content: '';
+ display: inline-block;
+ height: 100vh;
+ vertical-align: middle;
+ width: 1%;
+ }
+
+ &:after {
+ @include vendor('background-image', ('linear-gradient(top, #{_palette(bg-transparent)}, #{_palette(bg-transparent)})', 'url("images/overlay.png");'));
+ content: '';
+ display: block;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ }
+
+ .content {
+ display: inline-block;
+ margin-right: 1%;
+ max-width: 95%;
+ padding: $size-wrapper-pad-tb;
+ position: relative;
+ text-align: right;
+ vertical-align: middle;
+ z-index: 1;
+
+ header {
+ display: inline-block;
+ vertical-align: middle;
+
+ h2 {
+ font-size: 2.5em;
+ margin: 0;
+ }
+
+ p {
+ margin: (_size(element-margin) * 0.25) 0 0 0;
+ top: 0;
+ }
+ }
+
+ .image {
+ border-radius: 100%;
+ display: inline-block;
+ height: 18em;
+ margin-left: 3em;
+ vertical-align: middle;
+ width: 18em;
+
+ img {
+ border-radius: 100%;
+ display: block;
+ width: 100%;
+ }
+ }
+ }
+ }
+
+ body.is-touch {
+ #banner {
+ background-attachment: scroll;
+ }
+ }
+
+/* Footer */
+
+ #footer {
+ background: _palette(accent2);
+ padding: $size-wrapper-pad-tb 0;
+ text-align: center;
+
+ .icons {
+ .icon {
+ &.alt {
+ @include line-icon(_palette(accent2), _palette(fg-light));
+ }
+ }
+ }
+
+ .copyright {
+ color: _palette(fg-light);
+ font-size: 0.8em;
+ line-height: 1em;
+ margin: 2em 0 0 0;
+ padding: 0;
+ text-align: center;
+
+ li {
+ border-left: solid 1px _palette(border);
+ display: inline-block;
+ list-style: none;
+ margin-left: 1.5em;
+ padding-left: 1.5em;
+
+ &:first-child {
+ border-left: 0;
+ margin-left: 0;
+ padding-left: 0;
+ }
+
+ a {
+ color: inherit;
+ }
+ }
+ }
+ }
+
+/* XLarge */
+
+ @include breakpoint('<=xlarge') {
+
+ /* Basic */
+
+ body, input, select, textarea {
+ font-size: 13pt;
+ }
+
+ }
+
+/* Large */
+
+ @include breakpoint('<=large') {
+
+ $size-wrapper-pad-tb: 4.5em;
+ $size-wrapper-pad-lr: 2.5em;
+
+ /* Basic */
+
+ body, input, select, textarea {
+ font-size: 11.5pt;
+ }
+
+ /* Spotlight */
+
+ .spotlight {
+ &.top {
+ .content {
+ padding: ($size-wrapper-pad-tb * 0.85) 0 (($size-wrapper-pad-tb * 0.85) - _size(element-margin)) 0;
+ }
+ }
+
+ &.bottom {
+ .content {
+ padding: ($size-wrapper-pad-tb * 0.85) 0 (($size-wrapper-pad-tb * 1.1) - _size(element-margin)) 0;
+ }
+ }
+
+ &.left, &.right {
+ .content {
+ padding: $size-wrapper-pad-tb $size-wrapper-pad-lr;
+ width: 25em;
+ }
+ }
+ }
+
+ /* Wrapper */
+
+ .wrapper {
+ padding: $size-wrapper-pad-tb 0 ($size-wrapper-pad-tb - _size(element-margin)) 0;
+ }
+
+ /* Dropotron */
+
+ .dropotron {
+ &.level-0 {
+ font-size: 1em;
+ }
+ }
+
+ /* Banner */
+
+ #banner {
+ .content {
+ padding: $size-wrapper-pad-tb;
+ }
+ }
+
+ /* Footer */
+
+ #footer {
+ padding: $size-wrapper-pad-tb 0;
+ }
+
+ }
+
+/* Medium */
+
+ @include breakpoint('<=medium') {
+
+ $size-wrapper-pad-tb: 4.5em;
+ $size-wrapper-pad-lr: 2.5em;
+
+ /* Basic */
+
+ body, input, select, textarea {
+ font-size: 12pt;
+ }
+
+ /* Spotlight */
+
+ .spotlight {
+ background-attachment: scroll;
+ height: auto;
+
+ .image.main {
+ display: block;
+ margin: 0;
+ max-height: 40vh;
+ overflow: hidden;
+ }
+
+ .content {
+ background-color: _palette(bg);
+ border-width: 0 !important;
+ border-top-width: 0.35em !important;
+ bottom: auto !important;
+ left: auto !important;
+ padding: $size-wrapper-pad-tb $size-wrapper-pad-lr ($size-wrapper-pad-tb - _size(element-margin)) $size-wrapper-pad-lr !important;
+ position: relative;
+ right: auto !important;
+ text-align: center;
+ top: auto !important;
+ width: 100% !important;
+
+ ul.actions {
+ @include vendor('justify-content', 'center');
+ width: 100%;
+ margin-left: 0;
+
+ li {
+ &:first-child {
+ padding-left: 0;
+ }
+ }
+ }
+ }
+
+ .goto-next {
+ display: none;
+ }
+ }
+
+ /* Wrapper */
+
+ .wrapper {
+ padding: $size-wrapper-pad-tb $size-wrapper-pad-lr ($size-wrapper-pad-tb - _size(element-margin)) $size-wrapper-pad-lr;
+ }
+
+ /* Banner */
+
+ #banner {
+ background-attachment: scroll;
+
+ .goto-next {
+ height: 7em;
+ }
+
+ .content {
+ padding: ($size-wrapper-pad-tb * 2) 0;
+ text-align: center;
+
+ header {
+ display: block;
+ margin: 0 0 _size(element-margin) 0;
+ text-align: center;
+ }
+
+ .image {
+ margin: 0;
+ }
+ }
+ }
+
+ /* Footer */
+
+ #footer {
+ padding: $size-wrapper-pad-tb 0;
+ }
+
+ }
+
+/* Small */
+
+ #navPanel, #titleBar {
+ display: none;
+ }
+
+ @include breakpoint('<=small') {
+
+ $size-wrapper-pad-tb: 3.25em;
+ $size-wrapper-pad-lr: 1.5em;
+
+ /* Basic */
+
+ html, body {
+ overflow-x: hidden;
+ }
+
+ body, input, select, textarea {
+ font-size: 12pt;
+ }
+
+ h2 {
+ font-size: 1.5em;
+ }
+
+ h3 {
+ font-size: 1.2em;
+ }
+
+ h4 {
+ font-size: 1em;
+ }
+
+ /* Section/Article */
+
+ header {
+ p {
+ br {
+ display: none;
+ }
+ }
+
+ h2 + p {
+ font-size: 1em;
+ }
+
+ h3 + p {
+ font-size: 1em;
+ }
+
+ h4 + p,
+ h5 + p,
+ h6 + p {
+ font-size: 0.9em;
+ }
+
+ &.major {
+ margin: 0 0 _size(element-margin) 0;
+ }
+ }
+
+ /* Goto Next */
+
+ .goto-next {
+ &:before {
+ height: 0.8em;
+ margin: -0.4em 0 0 -0.6em;
+ width: 1.2em;
+ }
+ }
+
+ /* Spotlight */
+
+ .spotlight {
+ box-shadow: 0 0.125em 0.5em 0 rgba(0,0,0,0.25);
+
+ .image.main {
+ max-height: 60vh;
+ }
+
+ .content {
+ border-top-width: 0.2em !important;
+ padding: $size-wrapper-pad-tb $size-wrapper-pad-lr ($size-wrapper-pad-tb - _size(element-margin)) $size-wrapper-pad-lr !important;
+ }
+ }
+
+ /* Wrapper */
+
+ .wrapper {
+ padding: $size-wrapper-pad-tb $size-wrapper-pad-lr ($size-wrapper-pad-tb - _size(element-margin)) $size-wrapper-pad-lr;
+ }
+
+ /* Header */
+
+ #header {
+ display: none;
+ }
+
+ /* Banner */
+
+ #banner {
+ box-shadow: 0 0.125em 0.5em 0 rgba(0,0,0,0.25);
+ min-height: calc(100vh - 44px);
+
+ &:before {
+ height: calc(100vh - 44px);
+ }
+
+ .content {
+ padding: ($size-wrapper-pad-tb * 1.25) $size-wrapper-pad-lr ($size-wrapper-pad-tb * 1.5) $size-wrapper-pad-lr;
+
+ header {
+ h2 {
+ font-size: 1.5em;
+ }
+ }
+
+ .image {
+ height: 9em;
+ width: 9em;
+ }
+ }
+ }
+
+ /* Nav */
+
+ #page-wrapper {
+ @include vendor('backface-visibility', 'hidden');
+ @include vendor('transition', 'transform #{_duration(navPanel)} ease');
+ padding-bottom: 1px;
+ padding-top: 44px !important;
+ }
+
+ #titleBar {
+ @include vendor('backface-visibility', 'hidden');
+ @include vendor('transition', 'transform #{_duration(navPanel)} ease');
+ display: block;
+ height: 44px;
+ left: 0;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: _misc(z-index-base) + 1;
+ background: _palette(accent2);
+ box-shadow: 0 0.125em 0.125em 0 rgba(0,0,0,0.125);
+
+ .title {
+ color: _palette(fg-bold);
+ display: block;
+ font-weight: _font(weight-bold);
+ height: 44px;
+ line-height: 44px;
+ text-align: center;
+
+ a {
+ color: inherit;
+ border: 0;
+ }
+ }
+
+ .toggle {
+ @include icon(false, solid);
+ height: 60px;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 90px;
+ outline: 0;
+ border: 0;
+
+ &:before {
+ background: _palette(accent1);
+ color: _palette(fg-light);
+ content: '\f0c9';
+ display: block;
+ font-size: 18px;
+ height: 44px;
+ left: 0;
+ line-height: 44px;
+ position: absolute;
+ text-align: center;
+ top: 0;
+ width: 54px;
+ }
+ }
+ }
+
+ #navPanel {
+ @include vendor('backface-visibility', 'hidden');
+ @include vendor('transform', 'translateX(#{_size(navPanel) * -1})');
+ @include vendor('transition', ('transform #{_duration(navPanel)} ease'));
+ display: block;
+ height: 100%;
+ left: 0;
+ overflow-y: auto;
+ position: fixed;
+ top: 0;
+ width: _size(navPanel);
+ z-index: _misc(z-index-base) + 2;
+ background: darken(_palette(bg), 2);
+ padding: 0.75em 1.25em;
+
+ .link {
+ border: 0;
+ border-top: solid 1px transparentize(_palette(border), 0.25);
+ color: _palette(fg);
+ display: block;
+ height: 3em;
+ line-height: 3em;
+ text-decoration: none;
+
+ &:hover {
+ color: inherit !important;
+ }
+
+ &:first-child {
+ border-top: 0;
+ }
+
+ &.depth-0 {
+ color: _palette(fg-bold);
+ font-weight: _font(weight-bold);
+ }
+
+ .indent-1 { display: inline-block; width: 1.25em; }
+ .indent-2 { display: inline-block; width: 2.5em; }
+ .indent-3 { display: inline-block; width: 3.75em; }
+ .indent-4 { display: inline-block; width: 5em; }
+ .indent-5 { display: inline-block; width: 6.25em; }
+ }
+ }
+
+ body {
+ &.navPanel-visible {
+ #page-wrapper {
+ @include vendor('transform', 'translateX(#{_size(navPanel)})');
+ }
+
+ #titleBar {
+ @include vendor('transform', 'translateX(#{_size(navPanel)})');
+ }
+
+ #navPanel {
+ @include vendor('transform', 'translateX(0)');
+ }
+ }
+ }
+
+ /* Footer */
+
+ #footer {
+ padding: $size-wrapper-pad-tb $size-wrapper-pad-lr;
+ }
+
+ }
+
+/* XSmall */
+
+ @include breakpoint('<=xsmall') {
+
+ $size-wrapper-pad-tb: 3em;
+ $size-wrapper-pad-lr: 1.25em;
+
+ /* Basic */
+
+ html, body {
+ min-width: 320px;
+ }
+
+ body, input, select, textarea {
+ font-size: 12pt;
+ }
+
+ /* Button */
+
+ input[type="submit"],
+ input[type="reset"],
+ input[type="button"],
+ .button {
+ padding: 0;
+ }
+
+ /* Spotlight */
+
+ .spotlight {
+ .image.main {
+ max-height: 50vh;
+ }
+
+ .content {
+ padding: $size-wrapper-pad-tb $size-wrapper-pad-lr ($size-wrapper-pad-tb - _size(element-margin)) $size-wrapper-pad-lr !important;
+ }
+ }
+
+ /* Wrapper */
+
+ .wrapper {
+ padding: $size-wrapper-pad-tb $size-wrapper-pad-lr ($size-wrapper-pad-tb - _size(element-margin)) $size-wrapper-pad-lr;
+ }
+
+ /* Banner */
+
+ #banner {
+ .content {
+ padding: $size-wrapper-pad-tb ($size-wrapper-pad-lr * 1.25) ($size-wrapper-pad-tb * 1.75) ($size-wrapper-pad-lr * 1.25);
+ }
+ }
+
+ /* Footer */
+
+ #footer {
+ padding: $size-wrapper-pad-tb $size-wrapper-pad-lr;
+
+ .copyright {
+ line-height: inherit;
+
+ li {
+ border-left: 0;
+ display: block;
+ margin: 0;
+ padding: 0;
+ }
+ }
+ }
+
+ }
\ No newline at end of file
diff --git a/src/assets/sass/noscript.scss b/src/assets/sass/noscript.scss
new file mode 100644
index 0000000..2f9e8ed
--- /dev/null
+++ b/src/assets/sass/noscript.scss
@@ -0,0 +1,33 @@
+@import 'libs/vars';
+@import 'libs/functions';
+@import 'libs/mixins';
+@import 'libs/vendor';
+@import 'libs/breakpoints';
+@import 'libs/html-grid';
+
+/*
+ Landed by HTML5 UP
+ html5up.net | @ajlkn
+ Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
+*/
+
+/* Loader */
+
+ body.landing {
+
+ &.is-preload {
+
+ // Spinner (active)
+
+ &:before {
+ display: none;
+ }
+
+ // Overlay (active)
+
+ &:after {
+ display: none;
+ }
+
+ }
+ }
\ No newline at end of file
diff --git a/src/assets/webfonts/fa-brands-400.eot b/src/assets/webfonts/fa-brands-400.eot
new file mode 100644
index 0000000..cba6c6c
Binary files /dev/null and b/src/assets/webfonts/fa-brands-400.eot differ
diff --git a/src/assets/webfonts/fa-brands-400.svg b/src/assets/webfonts/fa-brands-400.svg
new file mode 100644
index 0000000..b9881a4
--- /dev/null
+++ b/src/assets/webfonts/fa-brands-400.svg
@@ -0,0 +1,3717 @@
+
+
+
+
+Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/webfonts/fa-brands-400.ttf b/src/assets/webfonts/fa-brands-400.ttf
new file mode 100644
index 0000000..8d75ded
Binary files /dev/null and b/src/assets/webfonts/fa-brands-400.ttf differ
diff --git a/src/assets/webfonts/fa-brands-400.woff b/src/assets/webfonts/fa-brands-400.woff
new file mode 100644
index 0000000..3375bef
Binary files /dev/null and b/src/assets/webfonts/fa-brands-400.woff differ
diff --git a/src/assets/webfonts/fa-brands-400.woff2 b/src/assets/webfonts/fa-brands-400.woff2
new file mode 100644
index 0000000..402f81c
Binary files /dev/null and b/src/assets/webfonts/fa-brands-400.woff2 differ
diff --git a/src/assets/webfonts/fa-regular-400.eot b/src/assets/webfonts/fa-regular-400.eot
new file mode 100644
index 0000000..a4e5989
Binary files /dev/null and b/src/assets/webfonts/fa-regular-400.eot differ
diff --git a/src/assets/webfonts/fa-regular-400.svg b/src/assets/webfonts/fa-regular-400.svg
new file mode 100644
index 0000000..463af27
--- /dev/null
+++ b/src/assets/webfonts/fa-regular-400.svg
@@ -0,0 +1,801 @@
+
+
+
+
+Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/webfonts/fa-regular-400.ttf b/src/assets/webfonts/fa-regular-400.ttf
new file mode 100644
index 0000000..7157aaf
Binary files /dev/null and b/src/assets/webfonts/fa-regular-400.ttf differ
diff --git a/src/assets/webfonts/fa-regular-400.woff b/src/assets/webfonts/fa-regular-400.woff
new file mode 100644
index 0000000..ad077c6
Binary files /dev/null and b/src/assets/webfonts/fa-regular-400.woff differ
diff --git a/src/assets/webfonts/fa-regular-400.woff2 b/src/assets/webfonts/fa-regular-400.woff2
new file mode 100644
index 0000000..5632894
Binary files /dev/null and b/src/assets/webfonts/fa-regular-400.woff2 differ
diff --git a/src/assets/webfonts/fa-solid-900.eot b/src/assets/webfonts/fa-solid-900.eot
new file mode 100644
index 0000000..e994171
Binary files /dev/null and b/src/assets/webfonts/fa-solid-900.eot differ
diff --git a/src/assets/webfonts/fa-solid-900.svg b/src/assets/webfonts/fa-solid-900.svg
new file mode 100644
index 0000000..00296e9
--- /dev/null
+++ b/src/assets/webfonts/fa-solid-900.svg
@@ -0,0 +1,5034 @@
+
+
+
+
+Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/webfonts/fa-solid-900.ttf b/src/assets/webfonts/fa-solid-900.ttf
new file mode 100644
index 0000000..25abf38
Binary files /dev/null and b/src/assets/webfonts/fa-solid-900.ttf differ
diff --git a/src/assets/webfonts/fa-solid-900.woff b/src/assets/webfonts/fa-solid-900.woff
new file mode 100644
index 0000000..23ee663
Binary files /dev/null and b/src/assets/webfonts/fa-solid-900.woff differ
diff --git a/src/assets/webfonts/fa-solid-900.woff2 b/src/assets/webfonts/fa-solid-900.woff2
new file mode 100644
index 0000000..2217164
Binary files /dev/null and b/src/assets/webfonts/fa-solid-900.woff2 differ
diff --git a/src/calendar/index.html b/src/calendar/index.html
new file mode 100644
index 0000000..d572dae
--- /dev/null
+++ b/src/calendar/index.html
@@ -0,0 +1,104 @@
+
+
+
+
+
Calendar | Hawkbot1cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Part of achieving our mission is reaching as many people in our community as we can. The best way for us to do this is through community events and inviting the community to watch us and participate in our robotics tournaments. Below you will find an updated calendar of our events. Be sure to keep a close eye on it as the details may change. We hope to see you around!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Hamburger.svelte b/src/components/Hamburger.svelte
deleted file mode 100644
index 8eb2a4b..0000000
--- a/src/components/Hamburger.svelte
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
-
diff --git a/src/components/Header.svelte b/src/components/Header.svelte
deleted file mode 100644
index b35c9f9..0000000
--- a/src/components/Header.svelte
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
-
diff --git a/src/components/Sidebar.svelte b/src/components/Sidebar.svelte
deleted file mode 100644
index 691f326..0000000
--- a/src/components/Sidebar.svelte
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-
diff --git a/src/components/SidebarItem.svelte b/src/components/SidebarItem.svelte
deleted file mode 100644
index 5b1957f..0000000
--- a/src/components/SidebarItem.svelte
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
diff --git a/src/components/SidebarLink.svelte b/src/components/SidebarLink.svelte
deleted file mode 100644
index 11bbd69..0000000
--- a/src/components/SidebarLink.svelte
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
diff --git a/src/components/footer.html b/src/components/footer.html
new file mode 100644
index 0000000..ed47861
--- /dev/null
+++ b/src/components/footer.html
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/src/components/nav.html b/src/components/nav.html
new file mode 100644
index 0000000..9f8e241
--- /dev/null
+++ b/src/components/nav.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/sidebar_content/25robot.html b/src/components/sidebar_content/25robot.html
new file mode 100644
index 0000000..b5d5c01
--- /dev/null
+++ b/src/components/sidebar_content/25robot.html
@@ -0,0 +1,8 @@
+
+
Our Robot
+
Learn about the robot that has helped us drastically improve our performance and brought us to new heights!
+
\ No newline at end of file
diff --git a/src/components/sidebar_content/calendar.html b/src/components/sidebar_content/calendar.html
new file mode 100644
index 0000000..9ea64cf
--- /dev/null
+++ b/src/components/sidebar_content/calendar.html
@@ -0,0 +1,7 @@
+
Don't Miss Out!
+
See our constantly-updating calendar to avoid missing out on one of our events.
+
\ No newline at end of file
diff --git a/src/components/sidebar_content/donatenonprofit.html b/src/components/sidebar_content/donatenonprofit.html
new file mode 100644
index 0000000..3f2e2ca
--- /dev/null
+++ b/src/components/sidebar_content/donatenonprofit.html
@@ -0,0 +1,8 @@
+
+
Support Us!
+
Our team and nonprofit rely on donations to keep things running. Please consider making a donation or attending a fundrasier to support us!
+
\ No newline at end of file
diff --git a/src/components/sidebar_content/ftc.html b/src/components/sidebar_content/ftc.html
new file mode 100644
index 0000000..ae3830e
--- /dev/null
+++ b/src/components/sidebar_content/ftc.html
@@ -0,0 +1,8 @@
+
+
Learn About Our FTC Team
+
Learn about our participation in the FIRST® Tech Challenge, our members, and our growth.
+
\ No newline at end of file
diff --git a/src/components/sidebar_content/nonprofit.html b/src/components/sidebar_content/nonprofit.html
new file mode 100644
index 0000000..b88c344
--- /dev/null
+++ b/src/components/sidebar_content/nonprofit.html
@@ -0,0 +1,8 @@
+
+
Our Nonprofit
+
Learn more about our mission
+
\ No newline at end of file
diff --git a/src/components/sidebar_content/outreach.html b/src/components/sidebar_content/outreach.html
new file mode 100644
index 0000000..fb24325
--- /dev/null
+++ b/src/components/sidebar_content/outreach.html
@@ -0,0 +1,8 @@
+
+
Learn About Our Outreach
+
Learn about our way of giving back to the community and promoting STEM to the public.
+
\ No newline at end of file
diff --git a/src/donate/index.html b/src/donate/index.html
new file mode 100644
index 0000000..05c4eb8
--- /dev/null
+++ b/src/donate/index.html
@@ -0,0 +1,168 @@
+
+
+
+
+
Support Us | Hawkbot1cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Our Sponsors
+
+
+
+
+
+ Progress Ridge Orthodontics
+ We're proud to showcase our Sponsor Progress Ridge Orthodontics Beaverton, a local Orthodontics located in the Progress Ridge townsqaure. We appreciate their support and willingness to support STEM education in the Beaverton community.
+ Learn more about Progress Ridge Orthodontics
+
+
+
+
+
+
+ Wauna Credit Union
+ We appreciate Wauna Credit Union, a growing credit union bank for being a sponsor for Hawkbot1cs, pushing forward opportunities for STEM education.
+ Learn more about Wauna Credit Union
+
+
+
+
+
+
+ How are we funded?
+ As a 501(3)(c) non-profit organization, fundrasiers and sponsorships are our main source of income. By supporting us, you aid us in our continous effort to achieve our mission statement. Our fundraisers and sponsorships emails are professionally drafted and executed entirely by our non-profit board members. Our board members spend countless hours researching grants, possible fundraisers, and developing connections with our community. We try our best to make sure that supporting us is easy, often hosting fundraisers with popular resturants.
+ Support Our Mission Statement
+ “Hawkbot1cs has been organized to provide access to STEM education for youth of all backgrounds in our community free of cost or fees. Through unrestricted youth participation in designing, building, testing, promoting, and competing with robots, We believe we prepare students from all walks of life for the everchanging future. Through Hawkbot1cs, We aim to provide students the opportunity to learn complex STEM skills, but also develop essential skills such as leadership, communication, teamwork, and more."
+
+
Donate Here!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ftc/index.html b/src/ftc/index.html
new file mode 100644
index 0000000..e83f379
--- /dev/null
+++ b/src/ftc/index.html
@@ -0,0 +1,225 @@
+
+
+
+
+
FTC 20790 | Hawkbot1cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ About Our FIRST® Tech Challenge Team
+ We are Hawkbot1cs team 20790. Originally founded as a school club in 2021, our team, performance and ambitions have grown tremendously.
+ About the FIRST® Tech Challenge
+ The FIRST® Tech Challenge, or FTC, is a program of the For Inspiration and Recognition of Science and Technology (FIRST) organization. Intended for students grades 7 - 12, the FIRST® Tech Challenge teaches students to think like engineers. Students will design, build, test, iterate, program, and compete using robots built using reusable materials and coded on the Android platform. Participants and alumni have found educational opportunities, sponsorships, and future employers through their work in the FTC program, demonstrating the quality of STEM experiences the FIRST® organization provides.
+ Our History
+
+
+ Powerplay
+
+ This was our inaugural season as a FIRST® Tech Challenge team, and we faced a steep learning curve. None of our members had had any previous experience with robotics, so they learned every single step from scratch, from how to use linear slides to programming basic driving controls to presenting in front of a panel of FTC judges. Our design, featuring a turret, was a great feat of engineering, yet was too complicated to use. We ended the season near the bottom of the group, but left the qualifying tournament with an Innovate Award and a bunch of knowledge in hand!
+ Centerstage
+
+ We decided to approach our second season with the same creativity that won us an Innovate Award the previous year. The challenge this year was to place pixels (hexagons) on an inclined board to create “mosaics.” There were also opportunities to launch paper airplanes (“drones”) and hang the robot. While we managed to increase our outreach to our local STEM community a lot, winning us the Motivate Award, we suffered several setbacks in our design, which led to us once again ranking near the bottom of our qualifying tournament.
+ Into The Deep
+
+ The 2024-25 season was a game-changer for our team. We decided to change the way in which we compete by participating in the local league meets, meaning we were competing at least 5 times a year instead of competing once. This gave us much more time to analyze strategies that work and iterate on our designs between the meets, while also helping us meet more teams in our community. The challenge this year was to grab samples (small rectangular prisms) from the “submersible” and to either place them in a basket or hang them from a bar as “specimen.” After the league meets, we still hadn’t won an event yet, but we still had a chance! We were invited to the Spark Invitational, where we scored the 8th highest score in Oregon (at the time) and won the event alongside our friends at Beyond Tech. We left the event with a second-place Inspire Award in hand and a spot at the Oregon FIRST® Championship. We ended this record-breaking season with an offensive power rating in the top 10% of teams across the globe!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ftc/seasonperformance/index.html b/src/ftc/seasonperformance/index.html
new file mode 100644
index 0000000..1a6de7b
--- /dev/null
+++ b/src/ftc/seasonperformance/index.html
@@ -0,0 +1,117 @@
+
+
+
+
+
INTO THE DEEP Performance | Hawkbot1cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Where We Stand
+ We had a great run, making it to the Oregon Championship for the first time in our history. We are incredibly proud and honored to make it to such a prestigous event.
+ INTO THE DEEP Improvements
+ Since kickoff, we have made tremendous progress on our performance in the INTO THE DEEP season. Since League Meet 1, we have increased our npOPR average by 8.4X, from 15 to 122 at Spark Invitational. We have also improved our 1+0 auto from League Meet 3 to 4+0 at Spark.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/images/2025sextonmtnfair.jpg b/src/images/2025sextonmtnfair.jpg
new file mode 100644
index 0000000..d67f0b9
Binary files /dev/null and b/src/images/2025sextonmtnfair.jpg differ
diff --git a/src/images/24sextonmtn.jpeg b/src/images/24sextonmtn.jpeg
new file mode 100644
index 0000000..bb37f82
Binary files /dev/null and b/src/images/24sextonmtn.jpeg differ
diff --git a/src/images/25edriveteam.jpg b/src/images/25edriveteam.jpg
new file mode 100644
index 0000000..dc033fa
Binary files /dev/null and b/src/images/25edriveteam.jpg differ
diff --git a/src/images/25staterobot.jpg b/src/images/25staterobot.jpg
new file mode 100644
index 0000000..5e2fd37
Binary files /dev/null and b/src/images/25staterobot.jpg differ
diff --git a/src/images/Hawkbotics_clear.png b/src/images/Hawkbotics_clear.png
new file mode 100644
index 0000000..807493c
Binary files /dev/null and b/src/images/Hawkbotics_clear.png differ
diff --git a/src/images/androidstudio.png b/src/images/androidstudio.png
new file mode 100644
index 0000000..6d6141d
Binary files /dev/null and b/src/images/androidstudio.png differ
diff --git a/src/images/banner.jpg b/src/images/banner.jpg
new file mode 100644
index 0000000..a41056e
Binary files /dev/null and b/src/images/banner.jpg differ
diff --git a/src/images/beyondtechcollab.jpg b/src/images/beyondtechcollab.jpg
new file mode 100644
index 0000000..a2a76dd
Binary files /dev/null and b/src/images/beyondtechcollab.jpg differ
diff --git a/src/images/centerstagebot.jpeg b/src/images/centerstagebot.jpeg
new file mode 100644
index 0000000..f782c27
Binary files /dev/null and b/src/images/centerstagebot.jpeg differ
diff --git a/src/images/centerstagewhiteboard.jpg b/src/images/centerstagewhiteboard.jpg
new file mode 100644
index 0000000..6f45579
Binary files /dev/null and b/src/images/centerstagewhiteboard.jpg differ
diff --git a/src/images/chipotle_fundraiser.jpg b/src/images/chipotle_fundraiser.jpg
new file mode 100644
index 0000000..721bfb8
Binary files /dev/null and b/src/images/chipotle_fundraiser.jpg differ
diff --git a/src/images/clubfair.jpg b/src/images/clubfair.jpg
new file mode 100644
index 0000000..4bd2b24
Binary files /dev/null and b/src/images/clubfair.jpg differ
diff --git a/src/images/daveshotchicken.jpg b/src/images/daveshotchicken.jpg
new file mode 100644
index 0000000..126faec
Binary files /dev/null and b/src/images/daveshotchicken.jpg differ
diff --git a/src/images/donate.png b/src/images/donate.png
new file mode 100644
index 0000000..81fcbf0
Binary files /dev/null and b/src/images/donate.png differ
diff --git a/src/images/driveteamstate.jpg b/src/images/driveteamstate.jpg
new file mode 100644
index 0000000..a65ad37
Binary files /dev/null and b/src/images/driveteamstate.jpg differ
diff --git a/src/images/driveteamzoom.jpg b/src/images/driveteamzoom.jpg
new file mode 100644
index 0000000..ab68223
Binary files /dev/null and b/src/images/driveteamzoom.jpg differ
diff --git a/src/images/edrive.jpeg b/src/images/edrive.jpeg
new file mode 100644
index 0000000..bbda844
Binary files /dev/null and b/src/images/edrive.jpeg differ
diff --git a/src/images/elementaryfair.jpg b/src/images/elementaryfair.jpg
new file mode 100644
index 0000000..927c584
Binary files /dev/null and b/src/images/elementaryfair.jpg differ
diff --git a/src/images/heitonfair.jpg b/src/images/heitonfair.jpg
new file mode 100644
index 0000000..2025569
Binary files /dev/null and b/src/images/heitonfair.jpg differ
diff --git a/src/images/intothedeepbuild.jpg b/src/images/intothedeepbuild.jpg
new file mode 100644
index 0000000..81f4c2d
Binary files /dev/null and b/src/images/intothedeepbuild.jpg differ
diff --git a/src/images/invertedhawk.png b/src/images/invertedhawk.png
new file mode 100644
index 0000000..1c0d093
Binary files /dev/null and b/src/images/invertedhawk.png differ
diff --git a/src/images/mhscirriculumnight.jpeg b/src/images/mhscirriculumnight.jpeg
new file mode 100644
index 0000000..0872cb1
Binary files /dev/null and b/src/images/mhscirriculumnight.jpeg differ
diff --git a/src/images/mhsclubpresentation.jpg b/src/images/mhsclubpresentation.jpg
new file mode 100644
index 0000000..f6e6efa
Binary files /dev/null and b/src/images/mhsclubpresentation.jpg differ
diff --git a/src/images/npoprchart.png b/src/images/npoprchart.png
new file mode 100644
index 0000000..244a82c
Binary files /dev/null and b/src/images/npoprchart.png differ
diff --git a/src/images/ornaments.png b/src/images/ornaments.png
new file mode 100644
index 0000000..0c878d5
Binary files /dev/null and b/src/images/ornaments.png differ
diff --git a/src/images/people/abraham.jpg b/src/images/people/abraham.jpg
new file mode 100644
index 0000000..4dd21a1
Binary files /dev/null and b/src/images/people/abraham.jpg differ
diff --git a/src/images/people/andy.jpg b/src/images/people/andy.jpg
new file mode 100644
index 0000000..423c8a5
Binary files /dev/null and b/src/images/people/andy.jpg differ
diff --git a/src/images/people/owen.jpg b/src/images/people/owen.jpg
new file mode 100644
index 0000000..694a340
Binary files /dev/null and b/src/images/people/owen.jpg differ
diff --git a/src/images/people/ray.jpg b/src/images/people/ray.jpg
new file mode 100644
index 0000000..b34f685
Binary files /dev/null and b/src/images/people/ray.jpg differ
diff --git a/src/images/people/ruben.jpg b/src/images/people/ruben.jpg
new file mode 100644
index 0000000..1490661
Binary files /dev/null and b/src/images/people/ruben.jpg differ
diff --git a/src/images/people/tymen.jpg b/src/images/people/tymen.jpg
new file mode 100644
index 0000000..4ee5067
Binary files /dev/null and b/src/images/people/tymen.jpg differ
diff --git a/src/images/people/xandur.png b/src/images/people/xandur.png
new file mode 100644
index 0000000..5212a08
Binary files /dev/null and b/src/images/people/xandur.png differ
diff --git a/src/images/powerplaybot.jpg b/src/images/powerplaybot.jpg
new file mode 100644
index 0000000..c383cfe
Binary files /dev/null and b/src/images/powerplaybot.jpg differ
diff --git a/src/images/powerplaybot2.JPG b/src/images/powerplaybot2.JPG
new file mode 100644
index 0000000..2dfdb49
Binary files /dev/null and b/src/images/powerplaybot2.JPG differ
diff --git a/src/images/powerplayrobotcup.JPG b/src/images/powerplayrobotcup.JPG
new file mode 100644
index 0000000..7754e13
Binary files /dev/null and b/src/images/powerplayrobotcup.JPG differ
diff --git a/src/images/powerplayrobotwork.JPG b/src/images/powerplayrobotwork.JPG
new file mode 100644
index 0000000..464e459
Binary files /dev/null and b/src/images/powerplayrobotwork.JPG differ
diff --git a/src/images/progressridgeortho.jpg b/src/images/progressridgeortho.jpg
new file mode 100644
index 0000000..bc872b7
Binary files /dev/null and b/src/images/progressridgeortho.jpg differ
diff --git a/src/images/robot.jpeg b/src/images/robot.jpeg
new file mode 100644
index 0000000..0c3498a
Binary files /dev/null and b/src/images/robot.jpeg differ
diff --git a/src/images/shortteamphoto.jpg b/src/images/shortteamphoto.jpg
new file mode 100644
index 0000000..41b6c63
Binary files /dev/null and b/src/images/shortteamphoto.jpg differ
diff --git a/src/images/sparkhighscore.jpg b/src/images/sparkhighscore.jpg
new file mode 100644
index 0000000..b079b65
Binary files /dev/null and b/src/images/sparkhighscore.jpg differ
diff --git a/src/images/sparktrophy.jpg b/src/images/sparktrophy.jpg
new file mode 100644
index 0000000..05b7ff6
Binary files /dev/null and b/src/images/sparktrophy.jpg differ
diff --git a/src/images/teamatwork.jpg b/src/images/teamatwork.jpg
new file mode 100644
index 0000000..7d3e8ff
Binary files /dev/null and b/src/images/teamatwork.jpg differ
diff --git a/src/images/teamatworkcenterstage.jpg b/src/images/teamatworkcenterstage.jpg
new file mode 100644
index 0000000..de04b37
Binary files /dev/null and b/src/images/teamatworkcenterstage.jpg differ
diff --git a/src/images/waunacreditunion.png b/src/images/waunacreditunion.png
new file mode 100644
index 0000000..5dc1e23
Binary files /dev/null and b/src/images/waunacreditunion.png differ
diff --git a/src/images/whitfordfair.jpg b/src/images/whitfordfair.jpg
new file mode 100644
index 0000000..8840a2e
Binary files /dev/null and b/src/images/whitfordfair.jpg differ
diff --git a/src/index.html b/src/index.html
new file mode 100644
index 0000000..177e968
--- /dev/null
+++ b/src/index.html
@@ -0,0 +1,197 @@
+
+
+
+
+
Home | Hawkbot1cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hawkbot1cs was born out of a vision that every single youth deserves easy and free access to quality STEM education that is fun and engaging. STEM is a rapidly growing field that is becoming more and more important in our constantly-changing world.
+
+
+
+
Bringing our vison to life isn't easy; everything has a cost, and we are not bringing any money in via an entry fee. As a result, we have to make money via other means, such as fundraisers and events. Please consider supporting us to help keep our vision alive!
+
+
+
+
+ Next
+
+
+
+
+
+
+
+ Outreach
+ STEM in the community
+
+
We attend science fairs, participating in STEM related community service events, and hosting fundraisers to allow everyone to get involved in a key aspect of our mission. We make extensive use of our robot to get people interested and show them how wholistic the First Tech Challenge is.
+
+
+ Next
+
+
+
+
+
+
+
+
The Hawkbot1cs nonprofit has a mission to stimulate interest STEM in the community and foster inspiration as stimulting interest within STEM accross all demographics is vital to building a modern future everyone can help participate in and build. Our programs and activities in the community would not be possible without your support! Even if you can't donate, we reccomend clicking the link below to see other options and events to support us.
+
+
+ Next
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/involved/index.html b/src/involved/index.html
new file mode 100644
index 0000000..e1daf2a
--- /dev/null
+++ b/src/involved/index.html
@@ -0,0 +1,115 @@
+
+
+
+
+
Join Us! | Hawkbot1cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ What We Learn
+ In the FIRST® Tech Challenge, you learn many skills that apply to real life through a new game challenge each year. Some of these skills are:
+
+
+ CAD (Computer Assisted Design): Members can learn how to use professional 3D modeling software such as Autodesk Fusion to turn ideas into reality.
+
+ Robotics: Members can learn hands-on about the assembly and electrical of robots, with motors, servos, arms, and many other mechanical divisions
+
+ Programming: Members learn the programming language Java, a popular, versatile, and widely used object-oriented programming language, through Android Studio, a software development platform for developing Android Applications to code the robot for gamepad control and autonomous movement.
+ Professional Presentation & Communication: Members will have the opportunity to present their work to Judges to receive awards and participate in discussing strategy with other FTC teams during the competition
+
+
+ What We Do
+ Aside from learning and participating in the engineering design process and how to use fundamental life skills such as CAD (Computer Assisted Design), code, teamwork, and communication, members of the Hawkbot1cs family participate in many activities serving the community and more:
+
+
+ We have an active presence at many elementary and middle school science fairs, such as Whitford, Hiteon, Sexton Mountain, and more, introducing and presenting opportunities of robotics to parents and students.
+
+ We collaborate with other organizations and high school clubs across different schools.
+
+ We create, host, and participate in fundraising events to raise money to buy parts.
+ We teach and work with other FTC teams, locally and internationally.
+ We apply to grants and sponsorships with businesses as a 501(3)(c) nonprofit organization. As a result, students will learn how to write and communicate professionally with businesses.
+
+ Get Involved
+ Thank you for looking into getting involved with us! We are always looking for a wide variety of people with ideas and experiences.
+ Future Hawkbot1cs Members
+ Are you a student (in 8th through 12th grade) interested in STEM, robotics, team management, or in learning how to work well as a part of an awesome team of leaders, visionaries, and friends? Then you would be perfect to join our robotics team! We are always looking for new members and would love to have you. Please fill out this form to get yourself signed up, and we look forward to seeing you soon!
+
+ Future Hawkbot1cs Mentors
+ If you are interested in mentoring our robotics team or volunteering to help promote and expand the vision and outreach of our nonprofit, we would love to have you on the team. We are always looking for technically skilled mentors who have experience in the STEM world, as well as mentors to help with the organization and management of the team. Please reach out to us at skyhawkbotics@gmail.com and we can’t wait to meet you!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/nonprofit/index.html b/src/nonprofit/index.html
new file mode 100644
index 0000000..9c37bca
--- /dev/null
+++ b/src/nonprofit/index.html
@@ -0,0 +1,191 @@
+
+
+
+
+
Nonprofit | Hawkbot1cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Why a Nonprofit?
+ Over two years ago, members of the team became interested in altering the way our team operates. Previously, we were a club activity organized by the school district, which means that we must follow strict guidelines when making purchases, attending events, paying for food and lodging, etc. In order to have more freedom and play a more significant role in the community, some of the youth members worked together to form an Oregon-incorporated nonprofit organization: Hawkbot1cs.
+
+ Our Mission Statement
+ “Hawkbot1cs has been organized to provide access to STEM education for youth of all backgrounds in our community free of cost or fees. Through unrestricted youth participation in designing, building, testing, promoting, and competing with robots, We believe we prepare students from all walks of life for the everchanging future. Through Hawkbot1cs, we aim to provide students the opportunity to learn complex STEM skills, but also develop essential skills such as leadership, communication, teamwork, and more.”
+ We believe that easy access means that there is no barrier between students and access to STEM learning, no matter who you are or where you come from. Especially with other teams in our area requiring entrance fees to join, we decided that the best entrance fee was none at all . To execute this required a long journey and a LOT of research! Navigating the complex legal structures surrounding operating nonprofits was especially a challenge, and through investigating many parts of a nonprofit, from filing Articles of Incorporation , to writing legal bylaws that covered all of our bases, identifying what responsibilities we would have to the government and community once we had been incorporated. The IRS also recognizes us as a 501(c)(3). We intend to continue expanding on our current programs to increase our impact on our community, partnering with FIRST® Lego League Robotics teams in the future, hosting summer camps, and organizing regional STEM events, all of this will while providing FREE access to FIRST® , regardless of who you are, and your background.
+
+
+
Our Board Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/nonprofit/publicdocs/index.html b/src/nonprofit/publicdocs/index.html
new file mode 100644
index 0000000..ee2ec63
--- /dev/null
+++ b/src/nonprofit/publicdocs/index.html
@@ -0,0 +1,108 @@
+
+
+
+
+
Documents | Hawkbot1cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ As a IRS-recognized, 501(c)(3)-classified nonprofit, we are committed to a high level of transparency and accuracy when it comes to our documents and records. Below, you will find copies of our founding documents (Articles of Incorporation, bylaws, and Form 1023-EZ), a history of our Meeting Minutes, and our most recently filed Form 990. If you would like to request any other documents, please contact skyhawkbotics@gmail.com and we’ll try to get back to you as soon as possible.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/outreach/index.html b/src/outreach/index.html
new file mode 100644
index 0000000..0a112de
--- /dev/null
+++ b/src/outreach/index.html
@@ -0,0 +1,214 @@
+
+
+
+
+
Outreach | Hawkbot1cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sexton Mountain Elementary Science Fair
+
+
+
+ Hiteon Elementary Science Fair
+
+
+
+ Whitford Middle School Science Fair
+
+
+
+ Mountainside High School Game Development Club Presentation
+
+
+
+ Mountainside High School Curriculum Night
+
+
+
+ MPACT Electronics Drive
+
+
+
+ Collaboration with Beyond Tech
+
+
+
+
+
Our Outreach Mission Statement
+
+
Our goal with Outreach is to Encourage Students of all ages and backgrounds to participate in FIRST® robotics programs. We believe that FIRST® robotics prepares students for the future by building skills, confidence, and connections . We actively advocate for our mission through involvement and service in our own community.
+
Our Outreach
+ Fostering interest in STEM at our Local Elementary and Middle School Science Fairs (Hiteon, Whitford, Sexton Mountain, etc.)
+ Engaging in High School Events to advertise STEM opportunities
+ Volunteering with Local non-profit organizations to give back to our community
+ Collaborating with Other high school clubs to build connections
+ Working with other robotics teams both Locally and in Other states
+
+
Our outreach wouldn’t be possible without our well established connections with Elementary, Middle, High Schools and other robotics teams. Many of our relationships have been constructed over many years.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte
deleted file mode 100644
index ef48be5..0000000
--- a/src/routes/+error.svelte
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
- 404 | Hawkbot1cs
-
-
-
Error 404: Page Not Found
-
-
-
-
-
-
-
-
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
deleted file mode 100644
index 3ba4ac4..0000000
--- a/src/routes/+layout.svelte
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts
deleted file mode 100644
index e325c17..0000000
--- a/src/routes/+layout.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export const prerender = true;
-export const trailingSlash = "always";
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
deleted file mode 100644
index 832dd13..0000000
--- a/src/routes/+page.svelte
+++ /dev/null
@@ -1,422 +0,0 @@
-
-
-
- Home | Hawkbot1cs
-
-
-
-
-
-
-
Hawkbot1cs
-
-
-
-
-
- Welcome to the official website of the Hawkbot1cs nonprofit and its community FIRST Tech Challenge robotics team, Hawkbot1cs 20790!
-
-
-
-
-
Learn More About Us
-
-
-
-
-
-
-
-
Our Mission
-
-
-
-
-
-
-
-
-
-
- Teach and Develop Lifelong STEM Skills!
-
-
-
- Each year, our society continues to develop and adapt to new technology and ideas. Our
- primary mission is to prepare youth in the community by providing STEM education (specifically
- through robotics) so that they can be the future of this technological development in order to be competitive in the 21st century.
-
-
-
-
-
-
-
-
-
Compete in the First Tech Challenge!
-
-
- What better way to learn STEM skills than through the context of a game? The First Tech Challenge
- is a competition that brings together robotics teams from all around the country to
- compete in a theme-based game, usually based on current events! Most of what we do as a nonprofit is related to the Challenge as we spend about
- 1/2 of our year preparing for this, starting with Kickoff in September and the
- league tournament in early February, but you can find us at league meets across Oregon around
- November and December!
-
-
-
-
-
-
-
-
-
-
-
- Learn Teamwork Through Fun, Interactive Projects!
-
-
-
- As students, we acknowledge that we still have lots to learn, and strong teamwork and cooperation skills are critical to this.
- Today, the biggest advancements in science and technology are made by large teams of brilliant and dedicated people, not isolated individuals.
- We hope to bring these valuable teamwork
- skills to the competition and beyond!
-
-
-
-
-
-
-
-
-
Be Inclusive and Have Fun!
-
-
- What better way to learn, than to be surrounded by supportive, like-minded team
- members in a casual and engaging environment? When it comes to STEM education and robotics specifically, this
- team's motto is, "Just bring yourself. We'll fill you in on the rest later."
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
About Us
-
-
- Our main program, the FIRST Tech Challenge robotics team Hawkbot1cs 20790, currently meets at Southridge High School, in Beaverton, Oregon. As a team,
- we are dedicated to developing great skills and fostering great friendships. Founded
- in 2021 with the goal of competing in the First Tech Challenge, we overcame many
- challanges faced by many entrepeneurs, and eventually grew from a school club into a registered 501(c)(3) with a broadened mission. We can't wait to
- see you at this year's FIRST Tech Challenge, Into The Deep!
-
-
-
More
-
-
-
-
-
-
Donate
-
-
- Your contributions are critical to the success of our mission! Between the costs of supporting our robotics team and
- some of the other programs we offer, we wouldn't be able to have such an impact in our community without the support
- of our generous donors. All donations go directly to supporting our programs and are tax deductible, so please consider
- making a contribution. Thank you!
-
-
-
More
-
-
-
-
-
-
-
-
-
-
diff --git a/src/routes/calendar/+page.svelte b/src/routes/calendar/+page.svelte
deleted file mode 100644
index 7336f53..0000000
--- a/src/routes/calendar/+page.svelte
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
- Calendar | Hawkbot1cs
-
-
-
Part of achieving our mission is reaching as many people in our community as we can. The best way for us to do this is through community events and inviting the community to watch us and participate in our robotics tournaments. Below you will find an updated calendar of our events. Be sure to keep a close eye on it as the details may change. We hope to see you around!
-
-
-
-
-
diff --git a/src/routes/documents/+page.svelte b/src/routes/documents/+page.svelte
deleted file mode 100644
index dd8e1e6..0000000
--- a/src/routes/documents/+page.svelte
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
- Nonprofit Documents and Financial Information
-
-
-
Overview
-
As a IRS-recognized, 501(c)(3)-classified nonprofit, we are committed to a high level of transparency and accuracy when it comes to our documents and records. Below, you will find copies of our founding documents (Articles of Incorporation, bylaws, and Form 1023-EZ), a history of our Meeting Minutes, and our most recently filed Form 990. If you would like to request any other documents, please contact skyhawkbotics@gmail.com and we’ll try to get back to you as soon as possible.
-
-
Documents
-
Articles of Incorporation
-
-
- Unable to display PDF file. Download instead.
-
-
-
-
Bylaws
-
-
- Unable to display PDF file. Download instead.
-
-
-
-
Form 1023-EZ
-
-
- Unable to display PDF file. Download instead.
-
-
-
-
Meeting Minutes
-
-
- Unable to display PDF file. Download instead.
-
-
-
-
Financial Records
-
No records to display at this moment! We will update this as soon as possible.
-
-
-
diff --git a/src/routes/donate/+page.svelte b/src/routes/donate/+page.svelte
deleted file mode 100644
index 17e780d..0000000
--- a/src/routes/donate/+page.svelte
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
- Donate | Hawkbot1cs
-
-
-
Donate
-
-
-
- We are always in need of donations! If you would like to support our club, please visit the BSD InTouch page, click "CLICK HERE TO MAKE A DONATION" at the bottom of the page, select "Southridge High School", "Donation for Robotics" and select the amount you would like to donate. Donation can be paid with VISA, MASTERCARD, or DISCOVER.
-
- Thank you for your donation!
-
-
-
-
-
-
-
-
diff --git a/src/routes/edrive/+page.svelte b/src/routes/edrive/+page.svelte
deleted file mode 100644
index 37d5049..0000000
--- a/src/routes/edrive/+page.svelte
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
- Electronics Drive | Hawkbot1cs
-
-
-
Electronics Drive
-
-
-
- We are hosting a Electronics Drive! We accept unwanted computers, CPUs, GPUs, circuit boards, network cards, cell phones, and Li - ion batteries. If you have something you would like to recycle, Email 478792@bsd48.org the pickup location, a photo of the electronic components, and when you’re available. We will recycle these electronics, and get money for our competition fee, and equitment for next years season.
-
-
-
-
-
-
diff --git a/src/routes/involved/+page.svelte b/src/routes/involved/+page.svelte
deleted file mode 100644
index d54bf6f..0000000
--- a/src/routes/involved/+page.svelte
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
- Get Involved! | Hawkbot1cs
-
-
-
How to Join Us
-
-
-
-
-
- Are you a student (in 7 through 12th grade) interested in STEM, robotics, team management, or in learning how to work well as a part of an awesome team of leaders, visionaries, and friends? Then you would be perfect to join our robotics team! We are always looking for new members and would love to have you. Please contact skyhawkbotics@gmail.com for more information about our program, and we look forward to seeing you soon!
-
-
- If you are interested in mentoring our robotics team or volunteering to help promote and expand the vision and outreach of our nonprofit, we would love to have you on the team. We are always looking for technically skilled mentors who have experience in the STEM world, as well as mentors to help with the organization and management of the team. Please reach out to us at skyhawkbotics@gmail.com and we can’t wait to meet you!
-
-
-
-
-
-
diff --git a/src/routes/learn/+page.svelte b/src/routes/learn/+page.svelte
deleted file mode 100644
index b57c6c2..0000000
--- a/src/routes/learn/+page.svelte
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
- About Us | Hawkbot1cs
-
-
-
About Us
-
-
-
-
-
-Founded as a school club in 2021, Hawkbot1cs has become more than your average robotics team. Originally intended to be a place where students of Southridge High School could hang out, build robots, and compete in the First Tech Challenge, we are now a 501(c)(3) nonprofit and our purpose has now expanded to providing STEM (science, technology, engineering, and mathematics) opportunities for youth across our amazing Beaverton community! You can find us at Southridge High School, Mountainside High School, at science fairs across south Beaverton, at events in our local community, at robotics competitions, and online here and on our social media (@hawk.botics on Instagram)! It’s harder to miss us than find us! However, we could not do this without your generous support. Please consider donating now so that we can continue to inspire the next generation of thinkers and dreamers. Thank you in advance!
-
-
-
-
-
-
diff --git a/src/routes/work/+page.svelte b/src/routes/work/+page.svelte
deleted file mode 100644
index 2697c23..0000000
--- a/src/routes/work/+page.svelte
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
- Our Work | Hawkbot1cs
-
-
-
Our Work
-
-
-
-
-
-
- This organization was born out of a vision that every single youth deserves easy and free access to quality STEM education that is fun and engaging.
-
-
-
-
- Occupations in the STEM world will dominate our economy and its effects will be felt in our lives, whether we are directly involved or not. That’s why it’s critical to provide youth with free, quality STEM education to meet them where they are at, inspire them, and support them in their growth. The best way to learn is in an environment where cooperation and competition are balanced, where all youth are included, and where everyone grows, succeeds, and has fun!
-
-
-
-
- Our mission is to provide access to STEM (science, technology, education, and mathematics) education for youth in our community. Through youth participation in preparing, designing, building, testing, promoting, and competing with robots, Hawkbot1cs provides learning experiences related to STEM education, but also character development, encouraging leadership, communication, teamwork, and more.
-
-
-
-
-
- We currently offer STEM opportunities to youth in our community directly through our robotics team, in which students from grades 7-12 are invited to participate and anyone else is welcome to mentor and support us! We also often attend elementary and middle school science fairs in an effort to inspire youth and have displays at feeder school club fairs. For more information about current upcoming events, head over to our Events page for live updates on our events!
-
-
-
-
-
-
-
-
-
diff --git a/src/stores/menu.ts b/src/stores/menu.ts
deleted file mode 100644
index ef7da2c..0000000
--- a/src/stores/menu.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { writable } from "svelte/store";
-
-export const isMenuOpen = writable
(true);
diff --git a/src/styles/_includes.scss b/src/styles/_includes.scss
deleted file mode 100644
index 5c68bfb..0000000
--- a/src/styles/_includes.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-$fa-font-path: "@fortawesome/fontawesome-free/webfonts";
-
-@import "@fontsource/roboto-slab/index.css";
-@import "@fontsource/open-sans/index.css";
-
-@import "@fortawesome/fontawesome-free/scss/fontawesome.scss";
-@import "@fortawesome/fontawesome-free/scss/regular.scss";
-@import "@fortawesome/fontawesome-free/scss/solid.scss";
-@import "@fortawesome/fontawesome-free/scss/brands.scss";
-
-@import url('https://fonts.googleapis.com/css2?family=Oxanium:wght@200..800&family=Press+Start+2P&display=swap');
\ No newline at end of file
diff --git a/src/styles/_variables.scss b/src/styles/_variables.scss
deleted file mode 100644
index 43da94b..0000000
--- a/src/styles/_variables.scss
+++ /dev/null
@@ -1,27 +0,0 @@
-$primaryBackground: #000000;
-
-$sidebarBackground: #292929;
-$sidebarDivider: #ada7a7;
-$sidebarText: #f8dddd;
-$sidebarTextHover: #db201e;
-$sidebarBorder: #db201e;
-$sidebarIcon: #db201e;
-$sidebarTextDark: #a7abad;
-
-$headerLogoTextStrong: #db201e;
-$headerLogoText: #ffffff;
-$headerBurgerColor: #db201e;
-$headerBorder: #db201e;
-$headerIcon: #a7abad;
-$headerIconHover: #db201e;
-$headerLogoTextHover: #db201e;
-
-$pageText: #f8dddd;
-$pageTextDark: #a7abad;
-$pageBorder: #a7abad;
-$pageTextHighlight: #db201e;
-
-$buttonText: #db201e;
-$buttonBorder: #db201e;
-$buttonTextHover: #f8dddd;
-$buttonBackground: #a64747;
diff --git a/src/styles/global.scss b/src/styles/global.scss
deleted file mode 100644
index b7e3de9..0000000
--- a/src/styles/global.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-@import "$styles/variables";
-@import "$styles/includes";
-
-html,
-body {
- width: 100%;
- height: 100%;
-
- margin: 0;
- padding: 0;
-
- text-align: justify;
- text-justify: auto;
-
- background-color: $primaryBackground;
-}
diff --git a/src/util/constants.ts b/src/util/constants.ts
deleted file mode 100644
index 45f5482..0000000
--- a/src/util/constants.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export const emailLink = "mailto:skyhawkbotics@gmail.com?subject=I wanted to get ahold of you.";
-export const phoneLink = "tel:971 384-0644";
-
-export const email = "main@skyhawkbotics.org";
-export const phone = "(971) 384-0644";
diff --git a/src/websiteinfo/index.html b/src/websiteinfo/index.html
new file mode 100644
index 0000000..6592b8f
--- /dev/null
+++ b/src/websiteinfo/index.html
@@ -0,0 +1,80 @@
+
+
+
+
+ About This Website | Hawkbot1cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Attribution
+ This website is based off of the "Landed" template from HTMLUP.
+ Information
+ This is the second version of the Hawkbot1cs website. If you need to access the legacy website, send us a message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/static/apple-touch-icon-114x114-precomposed.png b/static/apple-touch-icon-114x114-precomposed.png
deleted file mode 100644
index add63e4..0000000
Binary files a/static/apple-touch-icon-114x114-precomposed.png and /dev/null differ
diff --git a/static/apple-touch-icon-120x120-precomposed.png b/static/apple-touch-icon-120x120-precomposed.png
deleted file mode 100644
index e172954..0000000
Binary files a/static/apple-touch-icon-120x120-precomposed.png and /dev/null differ
diff --git a/static/apple-touch-icon-144x144-precomposed.png b/static/apple-touch-icon-144x144-precomposed.png
deleted file mode 100644
index eaa2ed0..0000000
Binary files a/static/apple-touch-icon-144x144-precomposed.png and /dev/null differ
diff --git a/static/apple-touch-icon-152x152-precomposed.png b/static/apple-touch-icon-152x152-precomposed.png
deleted file mode 100644
index 2c6c8e1..0000000
Binary files a/static/apple-touch-icon-152x152-precomposed.png and /dev/null differ
diff --git a/static/apple-touch-icon-72x72-precomposed.png b/static/apple-touch-icon-72x72-precomposed.png
deleted file mode 100644
index bc541c7..0000000
Binary files a/static/apple-touch-icon-72x72-precomposed.png and /dev/null differ
diff --git a/static/apple-touch-icon-76x76-precomposed.png b/static/apple-touch-icon-76x76-precomposed.png
deleted file mode 100644
index 4af1262..0000000
Binary files a/static/apple-touch-icon-76x76-precomposed.png and /dev/null differ
diff --git a/static/favicon-coast.png b/static/favicon-coast.png
deleted file mode 100644
index b65192f..0000000
Binary files a/static/favicon-coast.png and /dev/null differ
diff --git a/static/favicon-googletv.png b/static/favicon-googletv.png
deleted file mode 100644
index 99fd5ee..0000000
Binary files a/static/favicon-googletv.png and /dev/null differ
diff --git a/static/favicon.png b/static/favicon.png
deleted file mode 100644
index ef715ee..0000000
Binary files a/static/favicon.png and /dev/null differ
diff --git a/svelte.config.js b/svelte.config.js
deleted file mode 100644
index 830cb7d..0000000
--- a/svelte.config.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import adapterAuto from "@sveltejs/adapter-auto";
-import adapterNode from "@sveltejs/adapter-node";
-import adapterStatic from "@sveltejs/adapter-static";
-import adapterCloudflare from "@sveltejs/adapter-cloudflare";
-
-import { vitePreprocess } from "@sveltejs/kit/vite";
-
-let adapter = adapterStatic;
-const adapterEnv = process.env.SVELTEKIT_ADAPTER;
-
-if (adapterEnv)
- switch (adapterEnv.toLowerCase()) {
- case "auto":
- adapter = adapterAuto;
- break;
-
- case "node":
- adapter = adapterNode;
- break;
-
- case "static":
- adapter = adapterStatic;
- break;
-
- case "cloudflare":
- case "cf":
- adapter = adapterCloudflare;
- break;
- }
-
-/** @type {import('@sveltejs/kit').Config} */
-const config = {
- preprocess: vitePreprocess(),
-
- kit: {
- adapter: adapter(),
-
- alias: {
- "$styles/*": "src/styles/*",
- "$components/*": "src/components/*",
- "$routes/*": "src/routes/*",
- "$src/*": "src/*",
- "$util/*": "src/util/*",
- "$stores/*": "src/stores/*",
- "$assets/*": "src/assets/*",
- },
-
- paths:
- process.env.GITHUB_ACTIONS && process.env.GITHUB_REPOSITORY
- ? {
- base: "/" + process.env.GITHUB_REPOSITORY.split("/").pop(),
- }
- : undefined,
- },
-};
-
-export default config;
diff --git a/tsconfig.json b/tsconfig.json
deleted file mode 100644
index 70401cc..0000000
--- a/tsconfig.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "extends": "./.svelte-kit/tsconfig.json",
- "compilerOptions": {
- "allowJs": true,
- "checkJs": true,
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "resolveJsonModule": true,
- "skipLibCheck": true,
- "sourceMap": true,
- "strict": true
- }
- // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
- //
- // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
- // from the referenced tsconfig.json - TypeScript does not merge them in
-}
diff --git a/vite.config.ts b/vite.config.ts
deleted file mode 100644
index 2f3e38e..0000000
--- a/vite.config.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { sveltekit } from "@sveltejs/kit/vite";
-import { defineConfig } from "vite";
-
-export default defineConfig({
- plugins: [sveltekit()],
-
- server: {
- port: 4000,
- hmr: {
- clientPort: 443,
- port: 4000,
- protocol: "wss",
- },
- },
-});