| + | Name | +Type | +Size | +Last access date | +Last modification date | +Actions | +
|---|---|---|---|---|---|---|
| = $file["name"] ?> | += $file["type"] ?> | += $file["size"] ?> | += $file["modtime"] ?> | += $file["acctime"] ?> | +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
| = $folder["name"] ?> | += $folder["size"] ?> | +Folder | += $folder["modtime"] ?> | += $folder["acctime"] ?> | +
+
+
+
+
+
+ ">
+
+
+
+ |
+
+ Oops! Something went wrong :(
+
+
+
+### addon html layout of searchbar from bootstrap 5
-## Technologies used
+ --- Code change in layouts/searchs.php
-\* HTML
+ https://mdbootstrap.com/docs/standard/forms/search/
-\* CSS
-\* JS
+### insert function of search Bar
-\* PHP
+---- Code in index.php , header section, before headcrumbs => renderSearch();
-## Project delivery
+### defining the action in action folders
-To deliver this project you must follow the steps indicated in the document:
-- [Submitting a solution](https://www.notion.so/Submitting-a-solution-524dab1a71dd4b96903f26385e24cdb6)
+---- Code in SearchFile , index.php
-- You must include the project documentation in PDF format.
-- You must include a presentation in PDF format explaining:
- - Comparison of the original design (Wireframe) with the final result of the project
- - Comparison of the use case diagram with the actions that the user can finally perform
- - Comparison of the original use case diagram with the final user actions
- - What lessons you’ve learned during this project
- - What problems have you encountered when developing this project?
- - How you have organized and distributed the tasks
+=======
+# Modal Edit File
-## Resources
-
-- [File system](https://es.wikipedia.org/wiki/Administrador_de_archivos)
-- [PHP FileSystem W3C](https://www.w3schools.com/php/php_ref_filesystem.asp)
-- [PHP FileSystem Oficial](https://www.php.net/manual/es/book.filesystem.php)
-- [README Guidelines Example](https://gist.github.com/PurpleBooth/109311bb0361f32d87a2)
+Files affected by Christian
+- index.php
+- layouts/modalEditFile.php
+- layouts/table.php
+- assets/js/init.js
+- assets/js/events.js
diff --git a/actions/createDirectory/index.php b/actions/createDirectory/index.php
new file mode 100755
index 00000000..0b659277
--- /dev/null
+++ b/actions/createDirectory/index.php
@@ -0,0 +1,57 @@
+getMessage());
+ }
+}
+
+setSessionValue("errorList", $errorList);
+setSessionValue("successList", $successList);
+
+$url = getSessionValue("path");
+header("Location: ../../index.php?path=$url");
diff --git a/actions/createFile/index.php b/actions/createFile/index.php
new file mode 100755
index 00000000..f8435a2c
--- /dev/null
+++ b/actions/createFile/index.php
@@ -0,0 +1,58 @@
+getMessage());
+ }
+}
+
+setSessionValue("errorList", $errorList);
+setSessionValue("successList", $successList);
+
+$url = getSessionValue("path");
+header("Location: ../../index.php?path=$url");
diff --git a/actions/delete/index.php b/actions/delete/index.php
new file mode 100644
index 00000000..6726a977
--- /dev/null
+++ b/actions/delete/index.php
@@ -0,0 +1,39 @@
+getMessage());
+}
+
+setSessionValue("errorList", $errorList);
+setSessionValue("successList", $successList);
+
+$url = getSessionValue("path");
+header("Location: ../../index.php?path=$url");
diff --git a/actions/editFile/get.php b/actions/editFile/get.php
new file mode 100644
index 00000000..a72c8ca7
--- /dev/null
+++ b/actions/editFile/get.php
@@ -0,0 +1,15 @@
+ 0) {
+ array_push($errorList, getUploadError($file, $code));
+ } else {
+ $tmpname = $file['tmp_name'];
+ $filename = $file["name"];
+ $fullname = joinPath([$destpath, $filename]);
+
+ move_uploaded_file($tmpname, $fullname);
+
+ array_push($successList, "File $filename has been uploaded succesfully.");
+ }
+ }
+ } catch (Throwable $e) {
+ array_push($errorList, $e->getMessage());
+ }
+}
+
+setSessionValue("errorList", $errorList);
+setSessionValue("successList", $successList);
+
+$url = getSessionValue("path");
+header("Location: ../../index.php?path=$url");
diff --git a/assets/images/Polygon Luminary.svg b/assets/images/Polygon Luminary.svg
new file mode 100755
index 00000000..e129aae4
--- /dev/null
+++ b/assets/images/Polygon Luminary.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/images/extensions/csv-svgrepo-com.svg b/assets/images/extensions/csv-svgrepo-com.svg
new file mode 100755
index 00000000..ce7034ef
--- /dev/null
+++ b/assets/images/extensions/csv-svgrepo-com.svg
@@ -0,0 +1,56 @@
+
+
+
diff --git a/assets/images/extensions/doc-svgrepo-com.svg b/assets/images/extensions/doc-svgrepo-com.svg
new file mode 100755
index 00000000..91918ef6
--- /dev/null
+++ b/assets/images/extensions/doc-svgrepo-com.svg
@@ -0,0 +1,57 @@
+
+
+
diff --git a/assets/images/extensions/folder-svgrepo-com.svg b/assets/images/extensions/folder-svgrepo-com.svg
new file mode 100755
index 00000000..5c8b693e
--- /dev/null
+++ b/assets/images/extensions/folder-svgrepo-com.svg
@@ -0,0 +1,58 @@
+
+
+
diff --git a/assets/images/extensions/gif-svgrepo-com.svg b/assets/images/extensions/gif-svgrepo-com.svg
new file mode 100755
index 00000000..94df94a6
--- /dev/null
+++ b/assets/images/extensions/gif-svgrepo-com.svg
@@ -0,0 +1,83 @@
+
+
+
diff --git a/assets/images/extensions/jpg-svgrepo-com.svg b/assets/images/extensions/jpg-svgrepo-com.svg
new file mode 100755
index 00000000..e4fa39cb
--- /dev/null
+++ b/assets/images/extensions/jpg-svgrepo-com.svg
@@ -0,0 +1,56 @@
+
+
+
diff --git a/assets/images/extensions/m3u-svgrepo-com.svg b/assets/images/extensions/m3u-svgrepo-com.svg
new file mode 100755
index 00000000..9487c86c
--- /dev/null
+++ b/assets/images/extensions/m3u-svgrepo-com.svg
@@ -0,0 +1,53 @@
+
+
+
diff --git a/assets/images/extensions/mp3-svgrepo-com.svg b/assets/images/extensions/mp3-svgrepo-com.svg
new file mode 100755
index 00000000..611184c6
--- /dev/null
+++ b/assets/images/extensions/mp3-svgrepo-com.svg
@@ -0,0 +1,54 @@
+
+
+
diff --git a/assets/images/extensions/mp4-svgrepo-com.svg b/assets/images/extensions/mp4-svgrepo-com.svg
new file mode 100755
index 00000000..07a6efa2
--- /dev/null
+++ b/assets/images/extensions/mp4-svgrepo-com.svg
@@ -0,0 +1,53 @@
+
+
+
diff --git a/assets/images/extensions/odt-svgrepo-com.svg b/assets/images/extensions/odt-svgrepo-com.svg
new file mode 100755
index 00000000..55592089
--- /dev/null
+++ b/assets/images/extensions/odt-svgrepo-com.svg
@@ -0,0 +1,54 @@
+
+
+
diff --git a/assets/images/extensions/pdf-svgrepo-com.svg b/assets/images/extensions/pdf-svgrepo-com.svg
new file mode 100755
index 00000000..118e93ac
--- /dev/null
+++ b/assets/images/extensions/pdf-svgrepo-com.svg
@@ -0,0 +1,54 @@
+
+
+
diff --git a/assets/images/extensions/png-svgrepo-com.svg b/assets/images/extensions/png-svgrepo-com.svg
new file mode 100755
index 00000000..cb229511
--- /dev/null
+++ b/assets/images/extensions/png-svgrepo-com.svg
@@ -0,0 +1,55 @@
+
+
+
diff --git a/assets/images/extensions/ppt-svgrepo-com.svg b/assets/images/extensions/ppt-svgrepo-com.svg
new file mode 100755
index 00000000..337f2461
--- /dev/null
+++ b/assets/images/extensions/ppt-svgrepo-com.svg
@@ -0,0 +1,53 @@
+
+
+
diff --git a/assets/images/extensions/rar-svgrepo-com.svg b/assets/images/extensions/rar-svgrepo-com.svg
new file mode 100755
index 00000000..d6485660
--- /dev/null
+++ b/assets/images/extensions/rar-svgrepo-com.svg
@@ -0,0 +1,54 @@
+
+
+
diff --git a/assets/images/extensions/svg-svgrepo-com.svg b/assets/images/extensions/svg-svgrepo-com.svg
new file mode 100755
index 00000000..10d28b37
--- /dev/null
+++ b/assets/images/extensions/svg-svgrepo-com.svg
@@ -0,0 +1,109 @@
+
+
+
diff --git a/assets/images/extensions/txt-svgrepo-com.svg b/assets/images/extensions/txt-svgrepo-com.svg
new file mode 100755
index 00000000..bbaf6939
--- /dev/null
+++ b/assets/images/extensions/txt-svgrepo-com.svg
@@ -0,0 +1,51 @@
+
+
+
diff --git a/assets/images/extensions/zip-svgrepo-com.svg b/assets/images/extensions/zip-svgrepo-com.svg
new file mode 100755
index 00000000..fff70d24
--- /dev/null
+++ b/assets/images/extensions/zip-svgrepo-com.svg
@@ -0,0 +1,52 @@
+
+
+
diff --git a/assets/js/config.js b/assets/js/config.js
new file mode 100644
index 00000000..8e330a06
--- /dev/null
+++ b/assets/js/config.js
@@ -0,0 +1,3 @@
+const ROOT_DIRECTORY = "./drive";
+
+export { ROOT_DIRECTORY };
diff --git a/assets/js/events.js b/assets/js/events.js
new file mode 100755
index 00000000..a2eaa666
--- /dev/null
+++ b/assets/js/events.js
@@ -0,0 +1,92 @@
+import { ROOT_DIRECTORY } from "./config.js";
+
+function setInputValueEvent(inputTargetSelector, eventTargetAction) {
+ const input = document.querySelectorAll(inputTargetSelector);
+
+ if (!input) return;
+
+ document.addEventListener("click", function (event) {
+ if (event.target.dataset?.action !== eventTargetAction) return;
+
+ input.forEach(elm => {
+ elm.value = event.target.dataset.payload;
+ });
+
+ console.log(event.target.dataset.payload);
+ });
+}
+
+function setImageEvent() {
+ document.addEventListener("click", function (event) {
+ if (event.target.dataset?.action !== "view-image") return;
+
+ const container = document.querySelector("#view-file");
+ const image = document.createElement("img");
+ image.classList.add("w-100");
+ image.src = `${ROOT_DIRECTORY}/${event.target.dataset.payload}`;
+
+ container.innerHTML = null;
+ container.insertAdjacentElement("afterbegin", image);
+ });
+}
+
+function setVideoEvent() {
+ document.addEventListener("click", function (event) {
+ if (event.target.dataset?.action !== "view-video") return;
+
+ const container = document.querySelector("#view-file");
+ const video = document.createElement("video");
+ video.classList.add("w-100");
+ video.src = `${ROOT_DIRECTORY}/${event.target.dataset.payload}`;
+ video.controls = true;
+
+ container.innerHTML = null;
+ container.insertAdjacentElement("afterbegin", video);
+ });
+}
+
+function setEditFile() {
+ document.addEventListener("click", function (event) {
+ if (event.target.dataset?.action !== "edit-file") return;
+
+ // Get txt content
+ const filePath = event.target.dataset.payload
+ fetch('../../actions/editFile/get.php', {
+ method: 'POST',
+ headers:{
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({
+ "filePath": filePath
+ })
+ })
+ .then(res => res.json())
+ .then(data => {
+ document.querySelector("#dataFile").value = data
+ })
+
+ document.querySelector("#formEditFile").addEventListener('submit', e => {
+ e.preventDefault();
+
+ fetch('../../actions/editFile/put.php', {
+ method: 'POST',
+ headers:{
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({
+ "filePath": filePath,
+ "data": document.querySelector("#dataFile").value
+ })
+ })
+ .then(res => res.json())
+ .then(data => {
+ if (data !== false || data !== 'false') {
+ return document.querySelector("#clodeEditModal").click();
+ }
+ })
+ })
+
+ });
+}
+
+export { setInputValueEvent, setImageEvent, setVideoEvent, setEditFile };
diff --git a/assets/js/init.js b/assets/js/init.js
new file mode 100755
index 00000000..2cc6a634
--- /dev/null
+++ b/assets/js/init.js
@@ -0,0 +1,7 @@
+import { setImageEvent, setInputValueEvent, setVideoEvent, setEditFile } from "./events.js";
+
+setInputValueEvent(".input_rename_path", "rename");
+setInputValueEvent("#input_delete_path", "delete");
+setImageEvent();
+setVideoEvent();
+setEditFile();
\ No newline at end of file
diff --git a/assets/styles/css/main.css b/assets/styles/css/main.css
new file mode 100755
index 00000000..20414ea2
--- /dev/null
+++ b/assets/styles/css/main.css
@@ -0,0 +1,1763 @@
+@charset "UTF-8";
+* {
+ box-sizing: border-box;
+}
+
+ul,
+ol {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+a {
+ color: inherit;
+ text-decoration: none;
+}
+
+*::-webkit-scrollbar {
+ width: 8px;
+ /* Tamaño del scroll en vertical */
+ height: 8px;
+ /* Tamaño del scroll en horizontal */
+}
+
+*::-webkit-scrollbar-thumb {
+ background: #cccccc;
+ border-radius: 4px;
+}
+
+/* Cambiamos el fondo y agregamos una sombra cuando esté en hover */
+*::-webkit-scrollbar-thumb:hover {
+ background: #b3b3b3;
+ box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.2);
+}
+
+/* Cambiamos el fondo cuando esté en active */
+*::-webkit-scrollbar-thumb:active {
+ background-color: #999999;
+}
+
+/* Ponemos un color de fondo y redondeamos las esquinas del track */
+*::-webkit-scrollbar-track {
+ background: #e0e0e0;
+ border-radius: 4px;
+}
+
+/* Cambiamos el fondo cuando esté en active o hover */
+*::-webkit-scrollbar-track:hover,
+*::-webkit-scrollbar-track:active {
+ background: #d4d4d4;
+}
+
+.body {
+ background-image: url("../../../../assets/images/Polygon Luminary.svg");
+ background-size: cover;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
+}
+
+.list-group-item {
+ background: none;
+ color: white;
+}
+.list-group-item.disabled {
+ background: none;
+ color: silver;
+}
+
+.icon-btn {
+ border: none;
+ outline: none;
+ background: none;
+ color: white;
+}
+.icon-btn:hover {
+ color: #0d6efd;
+}
+
+/* ===== Breakpoints ===== */
+/* ===== Colors ===== */
+/* ===== Color Classes ===== */
+.text-color-blue {
+ color: #0d6efd;
+}
+
+.bg-color-blue {
+ background-color: #0d6efd;
+}
+
+.border-color-blue {
+ border-color: #0d6efd;
+}
+
+.text-color-indigo {
+ color: #6610f2;
+}
+
+.bg-color-indigo {
+ background-color: #6610f2;
+}
+
+.border-color-indigo {
+ border-color: #6610f2;
+}
+
+.text-color-purple {
+ color: #6f42c1;
+}
+
+.bg-color-purple {
+ background-color: #6f42c1;
+}
+
+.border-color-purple {
+ border-color: #6f42c1;
+}
+
+.text-color-pink {
+ color: #d63384;
+}
+
+.bg-color-pink {
+ background-color: #d63384;
+}
+
+.border-color-pink {
+ border-color: #d63384;
+}
+
+.text-color-red {
+ color: #dc3545;
+}
+
+.bg-color-red {
+ background-color: #dc3545;
+}
+
+.border-color-red {
+ border-color: #dc3545;
+}
+
+.text-color-orange {
+ color: #fd7e14;
+}
+
+.bg-color-orange {
+ background-color: #fd7e14;
+}
+
+.border-color-orange {
+ border-color: #fd7e14;
+}
+
+.text-color-yellow {
+ color: #ffc107;
+}
+
+.bg-color-yellow {
+ background-color: #ffc107;
+}
+
+.border-color-yellow {
+ border-color: #ffc107;
+}
+
+.text-color-green {
+ color: #198754;
+}
+
+.bg-color-green {
+ background-color: #198754;
+}
+
+.border-color-green {
+ border-color: #198754;
+}
+
+.text-color-teal {
+ color: #20c997;
+}
+
+.bg-color-teal {
+ background-color: #20c997;
+}
+
+.border-color-teal {
+ border-color: #20c997;
+}
+
+.text-color-cyan {
+ color: #0dcaf0;
+}
+
+.bg-color-cyan {
+ background-color: #0dcaf0;
+}
+
+.border-color-cyan {
+ border-color: #0dcaf0;
+}
+
+.text-color-transparent {
+ color: transparent;
+}
+
+.bg-color-transparent {
+ background-color: transparent;
+}
+
+.border-color-transparent {
+ border-color: transparent;
+}
+
+/* ===== Display Mode Classes ===== */
+.inline-block {
+ display: inline-block;
+}
+
+.block {
+ display: block;
+}
+
+.flex {
+ display: flex;
+}
+
+.grid {
+ display: grid;
+}
+
+/* ===== Flex Direction Classes ===== */
+.flex-row {
+ flex-direction: row;
+}
+
+.flex-column {
+ flex-direction: column;
+}
+
+.flex-row-reverse {
+ flex-direction: row-reverse;
+}
+
+.flex-column-reverse {
+ flex-direction: column-reverse;
+}
+
+/* ===== Flex Wrap Classes ===== */
+.flex-wrap {
+ flex-wrap: wrap;
+}
+
+.flex-wrap-reverse {
+ flex-wrap: wrap-reverse;
+}
+
+/* ===== Flex Main Axis Alignment Classes ===== */
+.justify-content-start {
+ justify-content: start;
+}
+
+.justify-content-end {
+ justify-content: end;
+}
+
+.justify-content-center {
+ justify-content: center;
+}
+
+.justify-content-space-between {
+ justify-content: space-between;
+}
+
+.justify-content-space-evenly {
+ justify-content: space-evenly;
+}
+
+.justify-content-space-around {
+ justify-content: space-around;
+}
+
+/* ===== Flex Cross Axis Alignment Classes ===== */
+.align-items-start {
+ align-items: start;
+}
+
+.align-items-end {
+ align-items: end;
+}
+
+.align-items-center {
+ align-items: center;
+}
+
+.align-items-stretch {
+ align-items: stretch;
+}
+
+/* =====~ Flex Content Alignment Classes ===== */
+.align-content-start {
+ align-content: start;
+}
+
+.align-content-end {
+ align-content: end;
+}
+
+.align-content-center {
+ align-content: center;
+}
+
+.align-content-space-between {
+ align-content: space-between;
+}
+
+.align-content-space-evenly {
+ align-content: space-evenly;
+}
+
+.align-content-space-around {
+ align-content: space-around;
+}
+
+/* ===== Font Config Variables ===== */
+/* ===== Font Size Classes ===== */
+.font-size-100 {
+ font-size: 0.512rem;
+}
+
+.font-size-200 {
+ font-size: 0.64rem;
+}
+
+.font-size-300 {
+ font-size: 0.8rem;
+}
+
+.font-size-400 {
+ font-size: 1rem;
+}
+
+.font-size-500 {
+ font-size: 1.5625rem;
+}
+
+.font-size-600 {
+ font-size: 1.953125rem;
+}
+
+.font-size-700 {
+ font-size: 2.44140625rem;
+}
+
+.font-size-800 {
+ font-size: 3.0517578125rem;
+}
+
+.font-size-900 {
+ font-size: 3.8146972656rem;
+}
+
+/* ===== Font Weight Classes ===== */
+.font-weight-100 {
+ font-weight: 100;
+}
+
+.font-weight-200 {
+ font-weight: 200;
+}
+
+.font-weight-300 {
+ font-weight: 300;
+}
+
+.font-weight-400 {
+ font-weight: 400;
+}
+
+.font-weight-500 {
+ font-weight: 500;
+}
+
+.font-weight-600 {
+ font-weight: 600;
+}
+
+.font-weight-700 {
+ font-weight: 700;
+}
+
+.font-weight-800 {
+ font-weight: 800;
+}
+
+.font-weight-900 {
+ font-weight: 900;
+}
+
+/* ===== Font Style Classes ===== */
+.font-style-normal {
+ font-style: normal;
+}
+
+.font-style-italic {
+ font-style: italic;
+}
+
+/* ===== Text Align Classes ===== */
+.text-align-left {
+ text-align: left;
+}
+
+.text-align-right {
+ text-align: right;
+}
+
+.text-align-center {
+ text-align: center;
+}
+
+.text-align-justify {
+ text-align: justify;
+}
+
+/* ===== Text Decoration Classes ===== */
+.text-decoration-none {
+ text-decoration: "none";
+}
+
+.text-decoration-underline {
+ text-decoration: "underline";
+}
+
+/* ===== Border Radius Config Variables ===== */
+/* ===== Border Radius Classes ===== */
+.radius-0 {
+ border-radius: 0rem;
+}
+
+.radius-1 {
+ border-radius: 0.125rem;
+}
+
+.radius-2 {
+ border-radius: 0.25rem;
+}
+
+.radius-3 {
+ border-radius: 0.375rem;
+}
+
+.radius-4 {
+ border-radius: 0.5rem;
+}
+
+.radius-5 {
+ border-radius: 0.625rem;
+}
+
+.radius-6 {
+ border-radius: 0.75rem;
+}
+
+.radius-7 {
+ border-radius: 0.875rem;
+}
+
+.radius-8 {
+ border-radius: 1rem;
+}
+
+.radius-9 {
+ border-radius: 1.125rem;
+}
+
+.radius-10 {
+ border-radius: 1.25rem;
+}
+
+.radius-round {
+ border-radius: 50%;
+}
+
+/* ===== Spacing Config Variables ===== */
+/* ===== Padding Classes ===== */
+.p-0 {
+ padding: 0rem;
+}
+
+.px-0 {
+ padding-left: 0rem;
+ padding-right: 0rem;
+}
+
+.py-0 {
+ padding-top: 0rem;
+ padding-bottom: 0rem;
+}
+
+.pl-0 {
+ padding-left: 0rem;
+}
+
+.pr-0 {
+ padding-right: 0rem;
+}
+
+.pt-0 {
+ padding-top: 0rem;
+}
+
+.pb-0 {
+ padding-bottom: 0rem;
+}
+
+.p-1 {
+ padding: 0.25rem;
+}
+
+.px-1 {
+ padding-left: 0.25rem;
+ padding-right: 0.25rem;
+}
+
+.py-1 {
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+}
+
+.pl-1 {
+ padding-left: 0.25rem;
+}
+
+.pr-1 {
+ padding-right: 0.25rem;
+}
+
+.pt-1 {
+ padding-top: 0.25rem;
+}
+
+.pb-1 {
+ padding-bottom: 0.25rem;
+}
+
+.p-2 {
+ padding: 0.5rem;
+}
+
+.px-2 {
+ padding-left: 0.5rem;
+ padding-right: 0.5rem;
+}
+
+.py-2 {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+}
+
+.pl-2 {
+ padding-left: 0.5rem;
+}
+
+.pr-2 {
+ padding-right: 0.5rem;
+}
+
+.pt-2 {
+ padding-top: 0.5rem;
+}
+
+.pb-2 {
+ padding-bottom: 0.5rem;
+}
+
+.p-3 {
+ padding: 0.75rem;
+}
+
+.px-3 {
+ padding-left: 0.75rem;
+ padding-right: 0.75rem;
+}
+
+.py-3 {
+ padding-top: 0.75rem;
+ padding-bottom: 0.75rem;
+}
+
+.pl-3 {
+ padding-left: 0.75rem;
+}
+
+.pr-3 {
+ padding-right: 0.75rem;
+}
+
+.pt-3 {
+ padding-top: 0.75rem;
+}
+
+.pb-3 {
+ padding-bottom: 0.75rem;
+}
+
+.p-4 {
+ padding: 1rem;
+}
+
+.px-4 {
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+
+.py-4 {
+ padding-top: 1rem;
+ padding-bottom: 1rem;
+}
+
+.pl-4 {
+ padding-left: 1rem;
+}
+
+.pr-4 {
+ padding-right: 1rem;
+}
+
+.pt-4 {
+ padding-top: 1rem;
+}
+
+.pb-4 {
+ padding-bottom: 1rem;
+}
+
+.p-5 {
+ padding: 1.25rem;
+}
+
+.px-5 {
+ padding-left: 1.25rem;
+ padding-right: 1.25rem;
+}
+
+.py-5 {
+ padding-top: 1.25rem;
+ padding-bottom: 1.25rem;
+}
+
+.pl-5 {
+ padding-left: 1.25rem;
+}
+
+.pr-5 {
+ padding-right: 1.25rem;
+}
+
+.pt-5 {
+ padding-top: 1.25rem;
+}
+
+.pb-5 {
+ padding-bottom: 1.25rem;
+}
+
+.p-6 {
+ padding: 1.5rem;
+}
+
+.px-6 {
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+}
+
+.py-6 {
+ padding-top: 1.5rem;
+ padding-bottom: 1.5rem;
+}
+
+.pl-6 {
+ padding-left: 1.5rem;
+}
+
+.pr-6 {
+ padding-right: 1.5rem;
+}
+
+.pt-6 {
+ padding-top: 1.5rem;
+}
+
+.pb-6 {
+ padding-bottom: 1.5rem;
+}
+
+.p-7 {
+ padding: 1.75rem;
+}
+
+.px-7 {
+ padding-left: 1.75rem;
+ padding-right: 1.75rem;
+}
+
+.py-7 {
+ padding-top: 1.75rem;
+ padding-bottom: 1.75rem;
+}
+
+.pl-7 {
+ padding-left: 1.75rem;
+}
+
+.pr-7 {
+ padding-right: 1.75rem;
+}
+
+.pt-7 {
+ padding-top: 1.75rem;
+}
+
+.pb-7 {
+ padding-bottom: 1.75rem;
+}
+
+.p-8 {
+ padding: 2rem;
+}
+
+.px-8 {
+ padding-left: 2rem;
+ padding-right: 2rem;
+}
+
+.py-8 {
+ padding-top: 2rem;
+ padding-bottom: 2rem;
+}
+
+.pl-8 {
+ padding-left: 2rem;
+}
+
+.pr-8 {
+ padding-right: 2rem;
+}
+
+.pt-8 {
+ padding-top: 2rem;
+}
+
+.pb-8 {
+ padding-bottom: 2rem;
+}
+
+.p-9 {
+ padding: 2.25rem;
+}
+
+.px-9 {
+ padding-left: 2.25rem;
+ padding-right: 2.25rem;
+}
+
+.py-9 {
+ padding-top: 2.25rem;
+ padding-bottom: 2.25rem;
+}
+
+.pl-9 {
+ padding-left: 2.25rem;
+}
+
+.pr-9 {
+ padding-right: 2.25rem;
+}
+
+.pt-9 {
+ padding-top: 2.25rem;
+}
+
+.pb-9 {
+ padding-bottom: 2.25rem;
+}
+
+.p-10 {
+ padding: 2.5rem;
+}
+
+.px-10 {
+ padding-left: 2.5rem;
+ padding-right: 2.5rem;
+}
+
+.py-10 {
+ padding-top: 2.5rem;
+ padding-bottom: 2.5rem;
+}
+
+.pl-10 {
+ padding-left: 2.5rem;
+}
+
+.pr-10 {
+ padding-right: 2.5rem;
+}
+
+.pt-10 {
+ padding-top: 2.5rem;
+}
+
+.pb-10 {
+ padding-bottom: 2.5rem;
+}
+
+/* ===== Margin Classes ===== */
+.m-0 {
+ margin: 0rem;
+}
+
+.mx-0 {
+ margin-left: 0rem;
+ margin-right: 0rem;
+}
+
+.my-0 {
+ margin-top: 0rem;
+ margin-bottom: 0rem;
+}
+
+.ml-0 {
+ margin-left: 0rem;
+}
+
+.mr-0 {
+ margin-right: 0rem;
+}
+
+.mt-0 {
+ margin-top: 0rem;
+}
+
+.mb-0 {
+ margin-bottom: 0rem;
+}
+
+.m-1 {
+ margin: 0.25rem;
+}
+
+.mx-1 {
+ margin-left: 0.25rem;
+ margin-right: 0.25rem;
+}
+
+.my-1 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.ml-1 {
+ margin-left: 0.25rem;
+}
+
+.mr-1 {
+ margin-right: 0.25rem;
+}
+
+.mt-1 {
+ margin-top: 0.25rem;
+}
+
+.mb-1 {
+ margin-bottom: 0.25rem;
+}
+
+.m-2 {
+ margin: 0.5rem;
+}
+
+.mx-2 {
+ margin-left: 0.5rem;
+ margin-right: 0.5rem;
+}
+
+.my-2 {
+ margin-top: 0.5rem;
+ margin-bottom: 0.5rem;
+}
+
+.ml-2 {
+ margin-left: 0.5rem;
+}
+
+.mr-2 {
+ margin-right: 0.5rem;
+}
+
+.mt-2 {
+ margin-top: 0.5rem;
+}
+
+.mb-2 {
+ margin-bottom: 0.5rem;
+}
+
+.m-3 {
+ margin: 0.75rem;
+}
+
+.mx-3 {
+ margin-left: 0.75rem;
+ margin-right: 0.75rem;
+}
+
+.my-3 {
+ margin-top: 0.75rem;
+ margin-bottom: 0.75rem;
+}
+
+.ml-3 {
+ margin-left: 0.75rem;
+}
+
+.mr-3 {
+ margin-right: 0.75rem;
+}
+
+.mt-3 {
+ margin-top: 0.75rem;
+}
+
+.mb-3 {
+ margin-bottom: 0.75rem;
+}
+
+.m-4 {
+ margin: 1rem;
+}
+
+.mx-4 {
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+.my-4 {
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+}
+
+.ml-4 {
+ margin-left: 1rem;
+}
+
+.mr-4 {
+ margin-right: 1rem;
+}
+
+.mt-4 {
+ margin-top: 1rem;
+}
+
+.mb-4 {
+ margin-bottom: 1rem;
+}
+
+.m-5 {
+ margin: 1.25rem;
+}
+
+.mx-5 {
+ margin-left: 1.25rem;
+ margin-right: 1.25rem;
+}
+
+.my-5 {
+ margin-top: 1.25rem;
+ margin-bottom: 1.25rem;
+}
+
+.ml-5 {
+ margin-left: 1.25rem;
+}
+
+.mr-5 {
+ margin-right: 1.25rem;
+}
+
+.mt-5 {
+ margin-top: 1.25rem;
+}
+
+.mb-5 {
+ margin-bottom: 1.25rem;
+}
+
+.m-6 {
+ margin: 1.5rem;
+}
+
+.mx-6 {
+ margin-left: 1.5rem;
+ margin-right: 1.5rem;
+}
+
+.my-6 {
+ margin-top: 1.5rem;
+ margin-bottom: 1.5rem;
+}
+
+.ml-6 {
+ margin-left: 1.5rem;
+}
+
+.mr-6 {
+ margin-right: 1.5rem;
+}
+
+.mt-6 {
+ margin-top: 1.5rem;
+}
+
+.mb-6 {
+ margin-bottom: 1.5rem;
+}
+
+.m-7 {
+ margin: 1.75rem;
+}
+
+.mx-7 {
+ margin-left: 1.75rem;
+ margin-right: 1.75rem;
+}
+
+.my-7 {
+ margin-top: 1.75rem;
+ margin-bottom: 1.75rem;
+}
+
+.ml-7 {
+ margin-left: 1.75rem;
+}
+
+.mr-7 {
+ margin-right: 1.75rem;
+}
+
+.mt-7 {
+ margin-top: 1.75rem;
+}
+
+.mb-7 {
+ margin-bottom: 1.75rem;
+}
+
+.m-8 {
+ margin: 2rem;
+}
+
+.mx-8 {
+ margin-left: 2rem;
+ margin-right: 2rem;
+}
+
+.my-8 {
+ margin-top: 2rem;
+ margin-bottom: 2rem;
+}
+
+.ml-8 {
+ margin-left: 2rem;
+}
+
+.mr-8 {
+ margin-right: 2rem;
+}
+
+.mt-8 {
+ margin-top: 2rem;
+}
+
+.mb-8 {
+ margin-bottom: 2rem;
+}
+
+.m-9 {
+ margin: 2.25rem;
+}
+
+.mx-9 {
+ margin-left: 2.25rem;
+ margin-right: 2.25rem;
+}
+
+.my-9 {
+ margin-top: 2.25rem;
+ margin-bottom: 2.25rem;
+}
+
+.ml-9 {
+ margin-left: 2.25rem;
+}
+
+.mr-9 {
+ margin-right: 2.25rem;
+}
+
+.mt-9 {
+ margin-top: 2.25rem;
+}
+
+.mb-9 {
+ margin-bottom: 2.25rem;
+}
+
+.m-10 {
+ margin: 2.5rem;
+}
+
+.mx-10 {
+ margin-left: 2.5rem;
+ margin-right: 2.5rem;
+}
+
+.my-10 {
+ margin-top: 2.5rem;
+ margin-bottom: 2.5rem;
+}
+
+.ml-10 {
+ margin-left: 2.5rem;
+}
+
+.mr-10 {
+ margin-right: 2.5rem;
+}
+
+.mt-10 {
+ margin-top: 2.5rem;
+}
+
+.mb-10 {
+ margin-bottom: 2.5rem;
+}
+
+.mx-auto {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.my-auto {
+ margin-top: auto;
+ margin-bottom: auto;
+}
+
+/* ===== Grid/Flexbox Gap Classes ===== */
+.gap-0 {
+ gap: 0rem;
+}
+
+.gap-1 {
+ gap: 0.25rem;
+}
+
+.gap-2 {
+ gap: 0.5rem;
+}
+
+.gap-3 {
+ gap: 0.75rem;
+}
+
+.gap-4 {
+ gap: 1rem;
+}
+
+.gap-5 {
+ gap: 1.25rem;
+}
+
+.gap-6 {
+ gap: 1.5rem;
+}
+
+.gap-7 {
+ gap: 1.75rem;
+}
+
+.gap-8 {
+ gap: 2rem;
+}
+
+.gap-9 {
+ gap: 2.25rem;
+}
+
+.gap-10 {
+ gap: 2.5rem;
+}
+
+/* ===== State Classes ===== */
+.is-hidden {
+ display: none !important;
+}
+
+/* ===== Dimensional Classes ===== */
+.width-0 {
+ width: 0%;
+}
+
+.height-0 {
+ height: 0%;
+}
+
+.width-5 {
+ width: 5%;
+}
+
+.height-5 {
+ height: 5%;
+}
+
+.width-10 {
+ width: 10%;
+}
+
+.height-10 {
+ height: 10%;
+}
+
+.width-15 {
+ width: 15%;
+}
+
+.height-15 {
+ height: 15%;
+}
+
+.width-20 {
+ width: 20%;
+}
+
+.height-20 {
+ height: 20%;
+}
+
+.width-25 {
+ width: 25%;
+}
+
+.height-25 {
+ height: 25%;
+}
+
+.width-30 {
+ width: 30%;
+}
+
+.height-30 {
+ height: 30%;
+}
+
+.width-35 {
+ width: 35%;
+}
+
+.height-35 {
+ height: 35%;
+}
+
+.width-40 {
+ width: 40%;
+}
+
+.height-40 {
+ height: 40%;
+}
+
+.width-45 {
+ width: 45%;
+}
+
+.height-45 {
+ height: 45%;
+}
+
+.width-50 {
+ width: 50%;
+}
+
+.height-50 {
+ height: 50%;
+}
+
+.width-55 {
+ width: 55%;
+}
+
+.height-55 {
+ height: 55%;
+}
+
+.width-60 {
+ width: 60%;
+}
+
+.height-60 {
+ height: 60%;
+}
+
+.width-65 {
+ width: 65%;
+}
+
+.height-65 {
+ height: 65%;
+}
+
+.width-70 {
+ width: 70%;
+}
+
+.height-70 {
+ height: 70%;
+}
+
+.width-75 {
+ width: 75%;
+}
+
+.height-75 {
+ height: 75%;
+}
+
+.width-80 {
+ width: 80%;
+}
+
+.height-80 {
+ height: 80%;
+}
+
+.width-85 {
+ width: 85%;
+}
+
+.height-85 {
+ height: 85%;
+}
+
+.width-90 {
+ width: 90%;
+}
+
+.height-90 {
+ height: 90%;
+}
+
+.width-95 {
+ width: 95%;
+}
+
+.height-95 {
+ height: 95%;
+}
+
+.width-100 {
+ width: 100%;
+}
+
+.height-100 {
+ height: 100%;
+}
+
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+/* Document
+ ========================================================================== */
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+html {
+ line-height: 1.15;
+ /* 1 */
+ -webkit-text-size-adjust: 100%;
+ /* 2 */
+}
+
+/* Sections
+ ========================================================================== */
+/**
+ * Remove the margin in all browsers.
+ */
+body {
+ margin: 0;
+}
+
+/**
+ * Render the `main` element consistently in IE.
+ */
+main {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+hr {
+ box-sizing: content-box;
+ /* 1 */
+ height: 0;
+ /* 1 */
+ overflow: visible;
+ /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+pre {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+a {
+ background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+abbr[title] {
+ border-bottom: none;
+ /* 1 */
+ text-decoration: underline;
+ /* 2 */
+ text-decoration: underline dotted;
+ /* 2 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+code,
+kbd,
+samp {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+/**
+ * Remove the border on images inside links in IE 10.
+ */
+img {
+ border-style: none;
+}
+
+/* Forms
+ ========================================================================== */
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit;
+ /* 1 */
+ font-size: 100%;
+ /* 1 */
+ line-height: 1.15;
+ /* 1 */
+ margin: 0;
+ /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+button,
+input {
+ /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+button,
+select {
+ /* 1 */
+ text-transform: none;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+button,
+[type=button],
+[type=reset],
+[type=submit] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+button::-moz-focus-inner,
+[type=button]::-moz-focus-inner,
+[type=reset]::-moz-focus-inner,
+[type=submit]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+button:-moz-focusring,
+[type=button]:-moz-focusring,
+[type=reset]:-moz-focusring,
+[type=submit]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+legend {
+ box-sizing: border-box;
+ /* 1 */
+ color: inherit;
+ /* 2 */
+ display: table;
+ /* 1 */
+ max-width: 100%;
+ /* 1 */
+ padding: 0;
+ /* 3 */
+ white-space: normal;
+ /* 1 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10.
+ * 2. Remove the padding in IE 10.
+ */
+[type=checkbox],
+[type=radio] {
+ box-sizing: border-box;
+ /* 1 */
+ padding: 0;
+ /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+[type=number]::-webkit-inner-spin-button,
+[type=number]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+[type=search] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ outline-offset: -2px;
+ /* 2 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+[type=search]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+/**
+ * Add the correct display in IE 10+.
+ */
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+[hidden] {
+ display: none;
+}
+
+.navbar {
+ min-height: 5rem;
+}
+
+.aside-nav {
+ min-height: 0;
+ background: rgba(0, 0, 0, 0.5);
+ backdrop-filter: blur(4px);
+}
+@media screen and (min-width: 768px) {
+ .aside-nav {
+ min-height: calc(100vh - 5rem);
+ }
+}
+.aside-nav__button {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ width: 100%;
+ padding: 1rem 1.25rem;
+ outline: none;
+ border: none;
+ background: rgba(75, 69, 69, 0.25);
+ box-shadow: 0 0 2px rgba(0, 0, 0, 0.25);
+ color: white;
+}
+.aside-nav__button--accordion:not(.collapsed) {
+ background: rgba(255, 255, 255, 0.25);
+}
+.aside-nav__button--accordion:not(.collapsed)::after {
+ background: none;
+ font-family: "Material Icons";
+ content: "\e5cf";
+}
+.aside-nav__button--accordion::after {
+ background: none;
+ font-family: "Material Icons";
+ content: "\e5cf";
+}
+
+.main-child {
+ width: 100%;
+ padding: 1rem;
+ background: rgba(0, 0, 0, 0.5);
+ backdrop-filter: blur(4px);
+ box-shadow: 0 0 1rem rgba(0, 0, 0, 0.25);
+ border-radius: 0.25rem;
+}
+
+/*# sourceMappingURL=main.css.map */
diff --git a/assets/styles/css/main.css.map b/assets/styles/css/main.css.map
new file mode 100755
index 00000000..7841dab7
--- /dev/null
+++ b/assets/styles/css/main.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["../sass/base/_reset.scss","../sass/base/_body.scss","../sass/components/_list-group.scss","../sass/components/_icon-btn.scss","../sass/utilities/_breakpoint.scss","../sass/utilities/_color.scss","../sass/utilities/_display.scss","../sass/utilities/_flex.scss","../sass/utilities/_font.scss","../sass/utilities/_radius.scss","../sass/utilities/_spacing.scss","../sass/utilities/_state.scss","../sass/utilities/_dimension.scss","../sass/vendors/_normalize.scss","../sass/layout/_navbar.scss","../sass/layout/_aside-nav.scss","../sass/layout/_main.scss"],"names":[],"mappings":";AAEA;EACC;;;AAGD;AAAA;EAEE;EACD;EACA;;;AAGD;EACC;EACA;;;AAID;EACC;AAAgB;EAChB;AAAgB;;;AAGjB;EACC;EACA;;;AAGD;AACA;EACC;EACA;;;AAGD;AACA;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;AACA;AAAA;EAEA;;;ACjDA;EACC;EACA;EAEA;;;ACHA;EACC;EACA;;AAEA;EACC;EACA;;;ACPH;EACC;EACA;EACA;EAEA;;AAEA;EACC;;;ACRF;ACAA;AAgBA;AAGC;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;AAiBR;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;AAiBR;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;AAiBR;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;AAiBR;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;AAiBR;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;AAiBR;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;AAiBR;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;AAiBR;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;AAiBR;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;AAiBR;EACC,OAlBO;;;AAqBR;EACC,kBAtBO;;;AAyBR;EACC,cA1BO;;;ACFT;AAKC;EACC,SAJe;;;AAGhB;EACC,SAJe;;;AAGhB;EACC,SAJe;;;AAGhB;EACC,SAJe;;;ACFjB;AAKC;EACC,gBAJgB;;;AAGjB;EACC,gBAJgB;;;AAGjB;EACC,gBAJgB;;;AAGjB;EACC,gBAJgB;;;AAQlB;AAKC;EACC,WAJW;;;AAGZ;EACC,WAJW;;;AAQb;AAKC;EACC,iBAJsB;;;AAGvB;EACC,iBAJsB;;;AAGvB;EACC,iBAJsB;;;AAGvB;EACC,iBAJsB;;;AAGvB;EACC,iBAJsB;;;AAGvB;EACC,iBAJsB;;;AAQxB;AAKC;EACC,aAJkB;;;AAGnB;EACC,aAJkB;;;AAGnB;EACC,aAJkB;;;AAGnB;EACC,aAJkB;;;AAQpB;AAKC;EACC,eAJoB;;;AAGrB;EACC,eAJoB;;;AAGrB;EACC,eAJoB;;;AAGrB;EACC,eAJoB;;;AAGrB;EACC,eAJoB;;;AAGrB;EACC,eAJoB;;;ACxCtB;AAKA;AAeC;EACC,WAdY;;;AAab;EACC,WAdY;;;AAab;EACC,WAdY;;;AAab;EACC,WAdY;;;AAab;EACC,WAdY;;;AAab;EACC,WAdY;;;AAab;EACC,WAdY;;;AAab;EACC,WAdY;;;AAab;EACC,WAdY;;;AAkBd;AAKC;EACC,aAJc;;;AAGf;EACC,aAJc;;;AAGf;EACC,aAJc;;;AAGf;EACC,aAJc;;;AAGf;EACC,aAJc;;;AAGf;EACC,aAJc;;;AAGf;EACC,aAJc;;;AAGf;EACC,aAJc;;;AAGf;EACC,aAJc;;;AAQhB;AAKC;EACC,YAJa;;;AAGd;EACC,YAJa;;;AAQf;AAKC;EACC,YAJa;;;AAGd;EACC,YAJa;;;AAGd;EACC,YAJa;;;AAGd;EACC,YAJa;;;AAQf;AAKC;EACC,iBAJkB;;;AAGnB;EACC,iBAJkB;;;AC3DpB;AAKA;AAGC;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AAIF;EACC;;;ACdD;AAKA;AAGC;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAGb;AAGC;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAjBZ;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EAAY;;;AACZ;E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","file":"main.css"}
\ No newline at end of file
diff --git a/assets/styles/sass/base/_body.scss b/assets/styles/sass/base/_body.scss
new file mode 100755
index 00000000..4d7953ce
--- /dev/null
+++ b/assets/styles/sass/base/_body.scss
@@ -0,0 +1,6 @@
+.body {
+ background-image: url("../../../../assets/images/Polygon\ Luminary.svg");
+ background-size: cover;
+
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+}
\ No newline at end of file
diff --git a/assets/styles/sass/base/_index.scss b/assets/styles/sass/base/_index.scss
new file mode 100755
index 00000000..748e7f52
--- /dev/null
+++ b/assets/styles/sass/base/_index.scss
@@ -0,0 +1,2 @@
+@forward "reset";
+@forward "body";
diff --git a/assets/styles/sass/base/_reset.scss b/assets/styles/sass/base/_reset.scss
new file mode 100755
index 00000000..94fa6267
--- /dev/null
+++ b/assets/styles/sass/base/_reset.scss
@@ -0,0 +1,51 @@
+@use "sass:map";
+
+* {
+ box-sizing: border-box;
+}
+
+ul,
+ol {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+a {
+ color: inherit;
+ text-decoration: none;
+}
+
+
+*::-webkit-scrollbar {
+ width: 8px; /* Tamaño del scroll en vertical */
+ height: 8px; /* Tamaño del scroll en horizontal */
+}
+
+*::-webkit-scrollbar-thumb {
+ background: rgb(204, 204, 204);
+ border-radius: 4px;
+}
+
+/* Cambiamos el fondo y agregamos una sombra cuando esté en hover */
+*::-webkit-scrollbar-thumb:hover {
+ background: rgb(179, 179, 179);
+ box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.2);
+}
+
+/* Cambiamos el fondo cuando esté en active */
+*::-webkit-scrollbar-thumb:active {
+ background-color: rgb(153, 153, 153);
+}
+
+/* Ponemos un color de fondo y redondeamos las esquinas del track */
+*::-webkit-scrollbar-track {
+ background: rgb(224, 224, 224);
+ border-radius: 4px;
+}
+
+/* Cambiamos el fondo cuando esté en active o hover */
+*::-webkit-scrollbar-track:hover,
+*::-webkit-scrollbar-track:active {
+background: rgb(212, 212, 212);
+}
\ No newline at end of file
diff --git a/assets/styles/sass/components/_icon-btn.scss b/assets/styles/sass/components/_icon-btn.scss
new file mode 100644
index 00000000..fece56d2
--- /dev/null
+++ b/assets/styles/sass/components/_icon-btn.scss
@@ -0,0 +1,11 @@
+.icon-btn {
+ border: none;
+ outline: none;
+ background: none;
+
+ color: white;
+
+ &:hover {
+ color: #0d6efd;
+ }
+}
\ No newline at end of file
diff --git a/assets/styles/sass/components/_index.scss b/assets/styles/sass/components/_index.scss
new file mode 100755
index 00000000..a42d8a72
--- /dev/null
+++ b/assets/styles/sass/components/_index.scss
@@ -0,0 +1,2 @@
+@forward "list-group";
+@forward "icon-btn";
diff --git a/assets/styles/sass/components/_list-group.scss b/assets/styles/sass/components/_list-group.scss
new file mode 100755
index 00000000..6c1c4d37
--- /dev/null
+++ b/assets/styles/sass/components/_list-group.scss
@@ -0,0 +1,11 @@
+.list-group {
+ &-item {
+ background: none;
+ color: white;
+
+ &.disabled {
+ background: none;
+ color: rgb(192,192,192);
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/styles/sass/layout/_aside-nav.scss b/assets/styles/sass/layout/_aside-nav.scss
new file mode 100755
index 00000000..181ccee4
--- /dev/null
+++ b/assets/styles/sass/layout/_aside-nav.scss
@@ -0,0 +1,47 @@
+$size-threeshold: 768px;
+
+.aside-nav {
+ min-height: 0;
+
+ @media screen and (min-width: $size-threeshold) {
+
+ min-height: calc(100vh - 5rem);
+ }
+
+ background: rgba(0, 0, 0, 0.5);
+ backdrop-filter: blur(4px);
+
+ &__button {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ width: 100%;
+ padding: 1rem 1.25rem;
+
+ outline: none;
+ border: none;
+
+ background: rgba(75, 69, 69, 0.25);
+ box-shadow: 0 0 2px rgba(0,0,0,0.25);
+ color: white;
+
+ &--accordion {
+ &:not(.collapsed) {
+ background: rgba(255,255,255,0.25);
+
+ &::after {
+ background: none;
+ font-family: 'Material Icons';
+ content: '\e5cf';
+ }
+ }
+
+ &::after {
+ background: none;
+ font-family: 'Material Icons';
+ content: '\e5cf';
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/styles/sass/layout/_index.scss b/assets/styles/sass/layout/_index.scss
new file mode 100755
index 00000000..edcaa606
--- /dev/null
+++ b/assets/styles/sass/layout/_index.scss
@@ -0,0 +1,3 @@
+@forward "navbar";
+@forward "aside-nav";
+@forward "main";
\ No newline at end of file
diff --git a/assets/styles/sass/layout/_main.scss b/assets/styles/sass/layout/_main.scss
new file mode 100644
index 00000000..8d74fa8e
--- /dev/null
+++ b/assets/styles/sass/layout/_main.scss
@@ -0,0 +1,11 @@
+.main{
+ &-child {
+ width: 100%;
+ padding: 1rem;
+
+ background: rgba(0, 0, 0, 0.5);
+ backdrop-filter: blur(4px);
+ box-shadow: 0 0 1rem rgba(0,0,0, 0.25);
+ border-radius: 0.25rem;
+ }
+}
\ No newline at end of file
diff --git a/assets/styles/sass/layout/_navbar.scss b/assets/styles/sass/layout/_navbar.scss
new file mode 100755
index 00000000..11769882
--- /dev/null
+++ b/assets/styles/sass/layout/_navbar.scss
@@ -0,0 +1,3 @@
+.navbar {
+ min-height: 5rem;
+}
\ No newline at end of file
diff --git a/assets/styles/sass/main.scss b/assets/styles/sass/main.scss
new file mode 100755
index 00000000..ca01a953
--- /dev/null
+++ b/assets/styles/sass/main.scss
@@ -0,0 +1,5 @@
+@use "base";
+@use "components";
+@use "utilities";
+@use "vendors";
+@use "layout";
\ No newline at end of file
diff --git a/assets/styles/sass/utilities/_breakpoint.scss b/assets/styles/sass/utilities/_breakpoint.scss
new file mode 100755
index 00000000..01b69777
--- /dev/null
+++ b/assets/styles/sass/utilities/_breakpoint.scss
@@ -0,0 +1,7 @@
+/* ===== Breakpoints ===== */
+
+$sm: 576px !default;
+$md: 768px !default;
+$lg: 992px !default;
+$xl: 1200px !default;
+$xxl: 1400px !default;
\ No newline at end of file
diff --git a/assets/styles/sass/utilities/_color.scss b/assets/styles/sass/utilities/_color.scss
new file mode 100755
index 00000000..bda9266e
--- /dev/null
+++ b/assets/styles/sass/utilities/_color.scss
@@ -0,0 +1,34 @@
+/* ===== Colors ===== */
+
+$colors: (
+ "blue": #0d6efd,
+ "indigo": #6610f2,
+ "purple": #6f42c1,
+ "pink": #d63384,
+ "red": #dc3545,
+ "orange": #fd7e14,
+ "yellow": #ffc107,
+ "green": #198754,
+ "teal": #20c997,
+ "cyan": #0dcaf0,
+ "transparent": transparent,
+) !default;
+
+/* ===== Color Classes ===== */
+
+@each $name, $value in $colors {
+ .text-color-#{$name} {
+ color: $value;
+ }
+
+ .bg-color-#{$name} {
+ background-color: $value;
+ }
+
+ .border-color-#{$name} {
+ border-color: $value;
+ }
+}
+
+
+
diff --git a/assets/styles/sass/utilities/_dimension.scss b/assets/styles/sass/utilities/_dimension.scss
new file mode 100755
index 00000000..0faf2beb
--- /dev/null
+++ b/assets/styles/sass/utilities/_dimension.scss
@@ -0,0 +1,11 @@
+/* ===== Dimensional Classes ===== */
+
+@for $i from 0 through 20 {
+ .width-#{$i * 5} {
+ width: $i * 5%;
+ }
+
+ .height-#{$i * 5} {
+ height: $i * 5%;
+ }
+}
diff --git a/assets/styles/sass/utilities/_display.scss b/assets/styles/sass/utilities/_display.scss
new file mode 100755
index 00000000..64e11108
--- /dev/null
+++ b/assets/styles/sass/utilities/_display.scss
@@ -0,0 +1,9 @@
+/* ===== Display Mode Classes ===== */
+
+$_display-modes: inline-block, block, flex, grid;
+
+@each $display-mode in $_display-modes {
+ .#{$display-mode} {
+ display: $display-mode;
+ }
+}
diff --git a/assets/styles/sass/utilities/_flex.scss b/assets/styles/sass/utilities/_flex.scss
new file mode 100755
index 00000000..b9aa79aa
--- /dev/null
+++ b/assets/styles/sass/utilities/_flex.scss
@@ -0,0 +1,49 @@
+/* ===== Flex Direction Classes ===== */
+
+$_direction-opts: row, column, row-reverse, column-reverse;
+
+@each $value in $_direction-opts {
+ .flex-#{$value} {
+ flex-direction: $value;
+ }
+}
+
+/* ===== Flex Wrap Classes ===== */
+
+$_wrap-opts: wrap, wrap-reverse;
+
+@each $value in $_wrap-opts {
+ .flex-#{$value} {
+ flex-wrap: $value;
+ }
+}
+
+/* ===== Flex Main Axis Alignment Classes ===== */
+
+$_justify-content-opts: start, end, center, space-between, space-evenly, space-around;
+
+@each $value in $_justify-content-opts {
+ .justify-content-#{$value} {
+ justify-content: $value;
+ }
+}
+
+/* ===== Flex Cross Axis Alignment Classes ===== */
+
+$_align-items-opts: start, end, center, stretch;
+
+@each $value in $_align-items-opts {
+ .align-items-#{$value} {
+ align-items: $value;
+ }
+}
+
+/* =====~ Flex Content Alignment Classes ===== */
+
+$_align-content-opts: start, end, center, space-between, space-evenly, space-around;
+
+@each $value in $_align-content-opts {
+ .align-content-#{$value} {
+ align-content: $value;
+ }
+}
diff --git a/assets/styles/sass/utilities/_font.scss b/assets/styles/sass/utilities/_font.scss
new file mode 100755
index 00000000..10b94bea
--- /dev/null
+++ b/assets/styles/sass/utilities/_font.scss
@@ -0,0 +1,66 @@
+@use "sass:math";
+
+/* ===== Font Config Variables ===== */
+
+$font-size-base: 1rem !default;
+$font-size-scale: 1.25 !default;
+
+/* ===== Font Size Classes ===== */
+
+$_font-sizes: (
+ 100: $font-size-base * math.pow($font-size-scale, -3),
+ 200: $font-size-base * math.pow($font-size-scale, -2),
+ 300: $font-size-base * math.pow($font-size-scale, -1),
+ 400: $font-size-base,
+ 500: $font-size-base * math.pow($font-size-scale, 2),
+ 600: $font-size-base * math.pow($font-size-scale, 3),
+ 700: $font-size-base * math.pow($font-size-scale, 4),
+ 800: $font-size-base * math.pow($font-size-scale, 5),
+ 900: $font-size-base * math.pow($font-size-scale, 6)
+);
+
+@each $name, $value in $_font-sizes {
+ .font-size-#{$name} {
+ font-size: $value;
+ }
+}
+
+/* ===== Font Weight Classes ===== */
+
+$_font-weights: 100, 200, 300, 400, 500, 600, 700, 800, 900;
+
+@each $value in $_font-weights {
+ .font-weight-#{$value} {
+ font-weight: $value;
+ }
+}
+
+/* ===== Font Style Classes ===== */
+
+$_font-styles: normal, italic;
+
+@each $value in $_font-styles {
+ .font-style-#{$value} {
+ font-style: $value;
+ }
+}
+
+/* ===== Text Align Classes ===== */
+
+$_text-aligns: left, right, center, justify;
+
+@each $value in $_text-aligns{
+ .text-align-#{$value} {
+ text-align: $value;
+ }
+}
+
+/* ===== Text Decoration Classes ===== */
+
+$_text-decorations: "none", "underline";
+
+@each $value in $_text-decorations {
+ .text-decoration-#{$value} {
+ text-decoration: $value;
+ }
+}
\ No newline at end of file
diff --git a/assets/styles/sass/utilities/_index.scss b/assets/styles/sass/utilities/_index.scss
new file mode 100755
index 00000000..97c44bef
--- /dev/null
+++ b/assets/styles/sass/utilities/_index.scss
@@ -0,0 +1,9 @@
+@forward "breakpoint";
+@forward "color";
+@forward "display";
+@forward "flex";
+@forward "font";
+@forward "radius";
+@forward "spacing";
+@forward "state";
+@forward "dimension";
\ No newline at end of file
diff --git a/assets/styles/sass/utilities/_radius.scss b/assets/styles/sass/utilities/_radius.scss
new file mode 100755
index 00000000..296cb565
--- /dev/null
+++ b/assets/styles/sass/utilities/_radius.scss
@@ -0,0 +1,16 @@
+/* ===== Border Radius Config Variables ===== */
+
+$radius-gap: 0.125rem !default;
+$radius-iterations: 10 !default;
+
+/* ===== Border Radius Classes ===== */
+
+@for $i from 0 through $radius-iterations {
+ .radius-#{$i} {
+ border-radius: $radius-gap * $i;
+ }
+}
+
+.radius-round {
+ border-radius: 50%;
+}
\ No newline at end of file
diff --git a/assets/styles/sass/utilities/_spacing.scss b/assets/styles/sass/utilities/_spacing.scss
new file mode 100755
index 00000000..1f099807
--- /dev/null
+++ b/assets/styles/sass/utilities/_spacing.scss
@@ -0,0 +1,66 @@
+/* ===== Spacing Config Variables ===== */
+
+$spacer-gap: 0.25rem !default;
+$spacer-iterations: 10 !default;
+
+/* ===== Padding Classes ===== */
+
+@for $i from 0 through $spacer-iterations {
+ .p-#{$i} {
+ padding: $i * $spacer-gap;
+ } // Full
+
+ .px-#{$i} {
+ padding-left: $i * $spacer-gap;
+ padding-right: $i * $spacer-gap;
+ } // Horizontal
+
+ .py-#{$i} {
+ padding-top: $i * $spacer-gap;
+ padding-bottom: $i * $spacer-gap;
+ } // Vertical
+
+ .pl-#{$i} { padding-left: $i * $spacer-gap; } // Left
+ .pr-#{$i} { padding-right: $i * $spacer-gap; } // Right
+ .pt-#{$i} { padding-top: $i * $spacer-gap; } // Top
+ .pb-#{$i} { padding-bottom: $i * $spacer-gap; } // Bottom
+}
+
+/* ===== Margin Classes ===== */
+
+@for $i from 0 through $spacer-iterations{
+ .m-#{$i} {
+ margin: $i * $spacer-gap;
+ } // Full
+
+ .mx-#{$i} {
+ margin-left: $i * $spacer-gap;
+ margin-right: $i * $spacer-gap;
+ } // Horizontal
+
+ .my-#{$i} {
+ margin-top: $i * $spacer-gap;
+ margin-bottom: $i * $spacer-gap;
+ } // Vertical
+
+ .ml-#{$i} { margin-left: $i * $spacer-gap; } // Left
+ .mr-#{$i} { margin-right: $i * $spacer-gap; } // Right
+ .mt-#{$i} { margin-top: $i * $spacer-gap; } // Top
+ .mb-#{$i} { margin-bottom: $i * $spacer-gap; } // Bottom
+}
+
+.mx-auto {
+ margin-left: auto;
+ margin-right: auto;
+} // Horizontal Centered
+
+.my-auto {
+ margin-top: auto;
+ margin-bottom: auto;
+}
+
+/* ===== Grid/Flexbox Gap Classes ===== */
+
+@for $i from 0 through $spacer-iterations {
+ .gap-#{$i} { gap: $i * $spacer-gap; }
+}
\ No newline at end of file
diff --git a/assets/styles/sass/utilities/_state.scss b/assets/styles/sass/utilities/_state.scss
new file mode 100755
index 00000000..db6b8232
--- /dev/null
+++ b/assets/styles/sass/utilities/_state.scss
@@ -0,0 +1,5 @@
+/* ===== State Classes ===== */
+
+.is-hidden {
+ display: none !important;
+}
\ No newline at end of file
diff --git a/assets/styles/sass/vendors/_index.scss b/assets/styles/sass/vendors/_index.scss
new file mode 100755
index 00000000..a6ceee71
--- /dev/null
+++ b/assets/styles/sass/vendors/_index.scss
@@ -0,0 +1 @@
+@forward "normalize";
\ No newline at end of file
diff --git a/assets/styles/sass/vendors/_normalize.scss b/assets/styles/sass/vendors/_normalize.scss
new file mode 100755
index 00000000..b6eb8216
--- /dev/null
+++ b/assets/styles/sass/vendors/_normalize.scss
@@ -0,0 +1,349 @@
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+ ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+
+ html {
+ line-height: 1.15; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/* Sections
+ ========================================================================== */
+
+/**
+ * Remove the margin in all browsers.
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Render the `main` element consistently in IE.
+ */
+
+main {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box; /* 1 */
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+ border-bottom: none; /* 1 */
+ text-decoration: underline; /* 2 */
+ text-decoration: underline dotted; /* 2 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove the border on images inside links in IE 10.
+ */
+
+img {
+ border-style: none;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit; /* 1 */
+ font-size: 100%; /* 1 */
+ line-height: 1.15; /* 1 */
+ margin: 0; /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input { /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select { /* 1 */
+ text-transform: none;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ box-sizing: border-box; /* 1 */
+ color: inherit; /* 2 */
+ display: table; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 3 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10.
+ * 2. Remove the padding in IE 10.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 10+.
+ */
+
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+
+[hidden] {
+ display: none;
+}
\ No newline at end of file
diff --git a/config.php b/config.php
new file mode 100755
index 00000000..7ac0b1da
--- /dev/null
+++ b/config.php
@@ -0,0 +1,4 @@
+