diff --git a/.eleventy.js b/.eleventy.js
new file mode 100644
index 0000000..15a527b
--- /dev/null
+++ b/.eleventy.js
@@ -0,0 +1,48 @@
+
+module.exports = function(eleventyConfig) {
+ const {DateTime} = require('luxon')
+ const hljs = require('highlight.js')
+ const markdownIt = require('markdown-it')({
+ html: true,
+ linkify: true,
+ typographer: true,
+ highlight: function (str, lang) {
+ if (lang && hljs.getLanguage(lang)) {
+ try {
+ return hljs.highlight(str, { language: lang }).value
+ } catch (__) {}
+ }
+
+ return ''
+ }
+ }
+ )
+ .use(require('markdown-it-anchor').default)
+ .use(require('markdown-it-table-of-contents'), {
+ includeLevel: [1,2,3,4,5,6],
+ containerHeaderHtml: `
`
+ });
+
+ eleventyConfig.setLibrary("md", markdownIt)
+ eleventyConfig.addPassthroughCopy("./src/assets/*")
+ eleventyConfig.addPassthroughCopy("./src/js/*")
+ eleventyConfig.addPassthroughCopy("./src/admin/*")
+ eleventyConfig.addPassthroughCopy("./src/css/style.css")
+ eleventyConfig.addPassthroughCopy("./src/images/*")
+ eleventyConfig.addPassthroughCopy("./settings.json")
+
+ eleventyConfig.addFilter("postDate", (dateObj) => {
+ return DateTime.fromJSDate(dateObj).toLocaleString(DateTime.DATE_MED)
+ })
+
+ eleventyConfig.addFilter("postYear", (dateObj) => {
+ return DateTime.fromJSDate(dateObj).toLocaleString({year: 'numeric'})
+ })
+
+ return {
+ dir: {
+ input: "src",
+ output: "public",
+ }
+ }
+}
\ No newline at end of file
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
new file mode 100644
index 0000000..577bbb5
--- /dev/null
+++ b/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,71 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [ master ]
+ schedule:
+ - cron: '29 23 * * 6'
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'javascript' ]
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
+ # Learn more:
+ # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v1
+
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
+
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ #- run: |
+ # make bootstrap
+ # make release
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff --git a/README.abs-ID.md b/README.abs-ID.md
index c8ec4d3..368812a 100644
--- a/README.abs-ID.md
+++ b/README.abs-ID.md
@@ -1,16 +1,34 @@
- EmptyWork Pung Website
-
-
-
-
-
-
- [](https://github.com/EmptyWork/emptywork.github.io/actions/workflows/codeql-analysis.yml)
-
-
-
-## Tentang
-Baca akang pake: Bahasa Inggris , Bahasa Indonesia
-
-Kode sumber par beta pung website.
-Beta biking akang repository ni par kase tuju kode yang beta su tulis deng par jadi bukti beta pung kemampuan par karja pake Javascript, HTML5 deng CSS3.
+
+
+[]()
+[]()
+[](https://github.com/EmptyWork/emptywork.github.io/blob/master/LICENSE)
+[](https://app.netlify.com/sites/emptywork/deploys)
+[](https://github.com/EmptyWork/emptywork.github.io/actions/workflows/codeql-analysis.yml)
+
+[**⚠Laporkan Bug**](https://github.com/EmptyWork/emptywork.github.io/issues/new) — [**📧Minta Fitur**](https://github.com/EmptyWork/emptywork.github.io/issues/new)
+
+**Baca akang pake: [🆔Bahasa Indonesia](README.id-ID.md), [🅰Bahasa Inggris](README.md)**
+## Sumber kode par beta pung website pribadi
+
+[EmptyWork](https://emptywork.github.io) tu website yang responsive, akang punya design multi-page par website blog beta biking akang pake [11ty](https://www.11ty.dev/) jadi Static Site Generator, sedangkan [Nunjuck](https://mozilla.github.io/nunjucks/templating.html) jadi akang pung bahasa templatingnya, deng [NetlifyCMS](https://www.netlifycms.org/) par jadi Content Management
+
+Kamong bisa `fork` kalo seng `clone` repository ini par _ganti_ deng biking akang jadi iko kamong pung mau, akang jua [**sebg wajib**](https://github.com/EmptyWork/emptywork.github.io/blob/master/LICENSE) par kamong taro beta di kredit, tapi kalo memang kamong mau tolong kase tambah [EmptyWork](https://github.com/EmptyWork) jua.
+
+
+## Table Kontent
+- [Instalasi](#instalasi)
+- [Dukungan](#dukungan)
+
+### Instalasi
+
+`clone` kalo seng `fork` akang repository ni, kalo kamong `fork` tinggal ubah akang pung nama repository baiko kamong pung nama akun saja, sedangkan kalo memang pake `clone` berarti musti biking repository baru la kasih maso file ka akang. Inga jang lupa instal [node.js](https://nodejs.org) deng `npm` di kamong pung komputer lai.
+
+Kalo sudah iko langkah-langkah ni:
+- Buka direktori yang kamong taro file dari `fork` kalo seng `fork`
+- Lalu ketik `npm install`
+- `npm run build` kalo seng `npm start` kalo kamong mau baganti akang.
+
+### Dukungan
+
+Kase ⭐ par akang ni repo! kalo seng iko [EmptyWork](https://github.com/EmptyWork) jua.
diff --git a/README.id-ID.md b/README.id-ID.md
index 6b0d6c4..270a613 100644
--- a/README.id-ID.md
+++ b/README.id-ID.md
@@ -1,17 +1,34 @@
- EmptyWork Website
-
-
-
-
-
-
- [](https://github.com/EmptyWork/emptywork.github.io/actions/workflows/codeql-analysis.yml)
-
-
-
-## Tentang
-Bahasa Lain: Bahasa Inggris , Bahasa Ambon
-
-Kode untuk website pribadi saya.
-Tujuan pembuatan repository ini adalah untuk menunjukan kode yang telah ditulis oleh saya dan juga berfungsi sebagai bukti kemampuan saya dalam menggunakan Javascript, HTML5 dan CSS3
+
+[]()
+[]()
+[](https://github.com/EmptyWork/emptywork.github.io/blob/master/LICENSE)
+[](https://app.netlify.com/sites/emptywork/deploys)
+[](https://github.com/EmptyWork/emptywork.github.io/actions/workflows/codeql-analysis.yml)
+
+[**⚠Laporkan Bug**](https://github.com/EmptyWork/emptywork.github.io/issues/new) — [**📧Minta Fitur**](https://github.com/EmptyWork/emptywork.github.io/issues/new)
+
+**Bahasa Lain: [🆔Bahasa Ambon](README.abs-ID.md), [🅰Bahasa Inggris](README.md)**
+## Sumber kode untuk website pribadi EmptyWork
+
+[EmptyWork](https://emptywork.github.io) adalah website yang responsive, memiliki design multi-page untuk website blog dengan menggunakan [11ty](https://www.11ty.dev/) sebagai Static Site Generator, [Nunjuck](https://mozilla.github.io/nunjucks/templating.html) sebagai bahasa templatingnya, dan [NetlifyCMS](https://www.netlifycms.org/) untuk Content Management
+
+Kamu bisa `fork` atau `clone` repository ini untuk _mengubah_ dan membuat perubahan sesuai keinginan kamu, dan kamu [**tidak diwajibkan**](https://github.com/EmptyWork/emptywork.github.io/blob/master/LICENSE) untuk memberikan kredit ke saya, tapi jika kamu mau memberi kredit tolong berikan kepada [EmptyWork](https://github.com/EmptyWork).
+
+
+## Table Kontent
+- [Instalasi](#instalasi)
+- [Dukungan](#dukungan)
+
+### Instalasi
+
+`clone` atau `fork` repository ini, jika kamu melakukan `fork` kamu bisa mengubah nama repositorynya sesuai dengan milik kamu, sedangkan jika kamu `clone` maka buatlah sebuah repository baru dan upload file. Pastikan kamu memiliki [node.js](https://nodejs.org) dan `npm` pada perangkat kalian.
+
+Setelah itu ikuti langkah-langkah berikut:
+- Pergi ke direktori lokal dimana kalian menyimpan file hasil `fork` atau `clone`
+- Kemudian lakukan `npm install`
+- Jalankan `npm run build` atau `npm start` jika kamu mau menggubah filenya.ile.
+
+### Dukungan
+
+Berikan ⭐ jika kamu mau! dan ikuti [EmptyWork](https://github.com/EmptyWork).
diff --git a/README.md b/README.md
index d224500..290d3d1 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,33 @@
- EmptyWork's Personal Website
-
-
-
+
-
-
- [](https://github.com/EmptyWork/emptywork.github.io/actions/workflows/codeql-analysis.yml)
-
-
+[]()
+[]()
+[](https://github.com/EmptyWork/emptywork.github.io/blob/master/LICENSE)
+[](https://app.netlify.com/sites/emptywork/deploys)
+[](https://github.com/EmptyWork/emptywork.github.io/actions/workflows/codeql-analysis.yml)
-## About
-Read this in: Ambonese Malay , Indonesian
+[**⚠Report Bug**](https://github.com/EmptyWork/emptywork.github.io/issues/new) — [**📧Report Feature**](https://github.com/EmptyWork/emptywork.github.io/issues/new)
-Source code for my personal website.
-The purpose of this repository is to showcase the code that I wrote and as a proof of my ability to work with Javascript, HTML5 and CSS3.
+**Read this in: [🆔Ambonese Malay](README.abs-ID.md), [🆔Indonesian](README.id-ID.md)**
+## EmptyWork's personal website sourcecode
+[EmptyWork](https://emptywork.github.io) is a fully responsive, multi-page layout JAMStack blog—website built using [11ty](https://www.11ty.dev/) as the Static Site Generator, [Nunjuck](https://mozilla.github.io/nunjucks/templating.html) templating language, and [NetlifyCMS](https://www.netlifycms.org/) for Content Management
+
+You can `fork` or `clone` this repo to _modify_ and make changes of your own, and it's [**not required**](https://github.com/EmptyWork/emptywork.github.io/blob/master/LICENSE) for you to credit me, but if you want you can properly linking back the credit to [EmptyWork](https://github.com/EmptyWork).
+
+## Table of Contents
+- [Installation](#installation)
+- [Support](#support-me!)
+
+### Installation
+
+`clone` or `fork` this repository and in case you `forked` then you just need to modify the name of repo else if you `cloned` then create a new repo and upload the file. Make sure you have [node.js](https://nodejs.org) and `npm` installed on your local device.
+
+After that follow this steps:
+
+- Go to your local directory and then do `npm install`
+- Run the `npm run build` or `npm run start` if you want to start edit the file.
+
+### Support Me!
+
+Give a ⭐ to this repo if you like it! And follow [EmptyWork](https://github.com/EmptyWork).
\ No newline at end of file
diff --git a/settings.json b/settings.json
new file mode 100644
index 0000000..e07c3b9
--- /dev/null
+++ b/settings.json
@@ -0,0 +1,3 @@
+{
+ "schedules": ["Monday", "Wednesday", "Thursday", "Friday"]
+}
diff --git a/src/_includes/article-snippet.njk b/src/_includes/article-snippet.njk
new file mode 100644
index 0000000..e809fa3
--- /dev/null
+++ b/src/_includes/article-snippet.njk
@@ -0,0 +1,23 @@
+
+
+
+ {{post.data.title}}
+ {{post.date | postDate }}
+
+
+ {{post.data.description}}
+
+
+
+
\ No newline at end of file
diff --git a/src/_includes/article.njk b/src/_includes/article.njk
new file mode 100644
index 0000000..60851b3
--- /dev/null
+++ b/src/_includes/article.njk
@@ -0,0 +1,14 @@
+---
+layout: 'secondary-base.njk'
+---
+
+
+
+
+ Blog / {{ title }}
+
+ {{ title }}
+ {{ content | safe }}
+
+
+
\ No newline at end of file
diff --git a/src/_includes/base.njk b/src/_includes/base.njk
new file mode 100644
index 0000000..74b2e70
--- /dev/null
+++ b/src/_includes/base.njk
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+ {% include 'nav.njk' %}
+
+ {% include 'header.njk' %}
+
+ {{ content | safe}}
+
+ {% include 'footer.njk' %}
+
+
+
+
\ No newline at end of file
diff --git a/src/_includes/footer.njk b/src/_includes/footer.njk
new file mode 100644
index 0000000..989fb35
--- /dev/null
+++ b/src/_includes/footer.njk
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/src/_includes/header.njk b/src/_includes/header.njk
new file mode 100644
index 0000000..b5ee81d
--- /dev/null
+++ b/src/_includes/header.njk
@@ -0,0 +1,109 @@
+
+
\ No newline at end of file
diff --git a/src/_includes/nav.njk b/src/_includes/nav.njk
new file mode 100644
index 0000000..f9ad34a
--- /dev/null
+++ b/src/_includes/nav.njk
@@ -0,0 +1,94 @@
+
+
+
+
+
+ Ew.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/_includes/project-snippet.njk b/src/_includes/project-snippet.njk
new file mode 100644
index 0000000..422cc02
--- /dev/null
+++ b/src/_includes/project-snippet.njk
@@ -0,0 +1,51 @@
+
+
+
+ {{project.data.title}}
+
+ {% if project.data.endDate %}
+ {{project.data.endDate | postYear}}
+ {% else %}
+ {{project.data.date | postYear}} - Present
+ {% endif %}
+
+
+
+ {{project.data.description}}
+
+
+
+
\ No newline at end of file
diff --git a/src/_includes/prototype-snippet.njk b/src/_includes/prototype-snippet.njk
new file mode 100644
index 0000000..01cc9fc
--- /dev/null
+++ b/src/_includes/prototype-snippet.njk
@@ -0,0 +1,93 @@
+
+
+
+
+ {{ post.data.title }}
+
+ {{ post.data.description }}
+ [id]
+
+
+
+ Status {% if post.data.status == 1 %}
+ Deploy {% else %}
+ Buggy {% endif %}
+
+
+ Tags {% for tag in post.data.tags %}{% if tag != "prototype" %}
+ {{ tag }} {% endif %}{% endfor %}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/_includes/secondary-base.njk b/src/_includes/secondary-base.njk
new file mode 100644
index 0000000..bb8f891
--- /dev/null
+++ b/src/_includes/secondary-base.njk
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+ {% if author %}
+
+ {% else %}
+
+ {% endif %}
+
+
+
+
+ {% if description %}
+
+
+
+
+ {% else %}
+
+
+
+
+ {% endif %}
+
+
+
+
+ {% if image %}
+
+
+
+ {% else %}
+
+
+
+ {% endif %}
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {% include 'nav.njk' %}
+
+ {{ content | safe}}
+
+ {% include 'footer.njk' %}
+
+
+
+
\ No newline at end of file
diff --git a/src/_includes/work.njk b/src/_includes/work.njk
new file mode 100644
index 0000000..f11714b
--- /dev/null
+++ b/src/_includes/work.njk
@@ -0,0 +1,21 @@
+
+
+
+
+ {%- for project in collections.project | reverse -%}
+ {% include 'project-snippet.njk' %}
+ {%- endfor -%}
+
+
+
\ No newline at end of file
diff --git a/src/admin/config.yml b/src/admin/config.yml
new file mode 100644
index 0000000..8e6bea6
--- /dev/null
+++ b/src/admin/config.yml
@@ -0,0 +1,47 @@
+backend:
+ name: git-gateway
+ branch: master
+media_folder: "public/images/"
+public_folder: "/images/"
+collections:
+ - name: "blog"
+ label: "Blog"
+ folder: "src/blog"
+ create: true
+ slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
+ fields:
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Description", name: "description", widget: "string"}
+ - {label: "Author", name: "author", widget: "string"}
+ - {label: "Date", name: "date", widget: "datetime"}
+ - {label: "Tags", name: "tags", widget: "list", default: ["post"]}
+ - {label: "Cover Images", name: "image", widget: "image"}
+ - {label: "Body", name: "body", widget: "markdown"}
+ - name: "project"
+ label: "Project"
+ folder: "src/project"
+ create: true
+ slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
+ fields:
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Description", name: "description", widget: "string"}
+ - {label: "Author", name: "author", widget: "string", required: false}
+ - {label: "Date", name: "date", widget: "datetime"}
+ - {label: "End Date", name: "endDate", widget: "datetime", required: false}
+ - {label: "Tags", name: "tags", widget: "list", default: ["project"]}
+ - {label: "Cover Images", name: "image", widget: "image"}
+ - {label: "Link Demo", name: "linkDemo", widget: "string", required: false}
+ - {label: "Link Code", name: "linkCode", widget: "string", required: false}
+ - name: "prototype"
+ label: "Prototype"
+ folder: "src/prototype"
+ create: true
+ slug: "{{year}}-{{slug}}"
+ fields:
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Status", name: "status", widget: "select", options: [{label: "Deployed", value: 1}, {label: "Buggy", value: 2}], default: [label: "Deployed", value: 1]}
+ - {label: "Description", name: "description", widget: "string"}
+ - {label: "Date", name: "date", widget: "datetime"}
+ - {label: "Tags", name: "tags", widget: "list", default: ["prototype"]}
+ - {label: "Link Demo", name: "linkDemo", widget: "string", required: false}
+ - {label: "Code Snippet", name: "code", widget: "text"}
\ No newline at end of file
diff --git a/src/admin/index.html b/src/admin/index.html
new file mode 100644
index 0000000..0c6926a
--- /dev/null
+++ b/src/admin/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Content Manager - EmptyWork
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/Resume.pdf b/src/assets/Resume.pdf
new file mode 100644
index 0000000..c71ab52
Binary files /dev/null and b/src/assets/Resume.pdf differ
diff --git a/src/blog.njk b/src/blog.njk
new file mode 100644
index 0000000..445c94e
--- /dev/null
+++ b/src/blog.njk
@@ -0,0 +1,28 @@
+---
+title : 'Recent Articles - Blog | EmptyWork'
+layout: 'secondary-base.njk'
+---
+
+
+
+
+
+ {%- for post in collections.post | reverse -%}
+ {% include 'article-snippet.njk' %}
+ {% else %}
+
+ It seems like there is no article right now...
+
+ {%- endfor -%}
+
+
+
+
diff --git a/src/blog/blog.json b/src/blog/blog.json
new file mode 100644
index 0000000..07e3752
--- /dev/null
+++ b/src/blog/blog.json
@@ -0,0 +1,6 @@
+{
+ "layout": "article.njk",
+ "tags": "post",
+ "author": "EmptyWork",
+ "image": "/images/emptywork.png"
+}
\ No newline at end of file
diff --git a/src/contact.njk b/src/contact.njk
new file mode 100644
index 0000000..9a0a925
--- /dev/null
+++ b/src/contact.njk
@@ -0,0 +1,37 @@
+---
+title : 'Get in touch with me - Contact | EmptyWork'
+layout: 'secondary-base.njk'
+---
+
+
+
\ No newline at end of file
diff --git a/src/css/scss/_footer.scss b/src/css/scss/_footer.scss
new file mode 100644
index 0000000..87fdcb2
--- /dev/null
+++ b/src/css/scss/_footer.scss
@@ -0,0 +1,24 @@
+.footer {
+ background-color: var(--clr-background);
+ color: var(--clr-foreground);
+ padding: 0.8rem;
+
+ &-container {
+ max-width: 64rem;
+ margin: 0 auto;
+ text-align: center;
+ }
+ .copyright {
+ font-size: 0.9rem;
+ margin: 1rem auto;
+ text-align: center;
+ border: 0.0625rem solid var(--clr-foreground);
+ width: 100%;
+ max-width: max-content;
+ padding: 0.2rem 2rem;
+
+ @include breakpoint-up("medium") {
+ flex-direction: row;
+ }
+ }
+}
diff --git a/src/css/scss/_global.scss b/src/css/scss/_global.scss
new file mode 100644
index 0000000..eacae11
--- /dev/null
+++ b/src/css/scss/_global.scss
@@ -0,0 +1,160 @@
+html {
+ scroll-behavior: smooth;
+ scroll-padding-top: 10rem;
+ scroll-padding-bottom: 10rem;
+}
+
+html:root {
+
+ .themes {
+ background-color: #ffc107;
+ color: #7e620e;
+ }
+
+ [data-moon] {
+ display: none;
+ }
+
+ [data-sun] {
+ display: block;
+ }
+
+ &.dark {
+
+ .themes {
+ background-color: var(--clr-accent);
+ color: var(--clr-accent-dark);
+ }
+
+ [data-sun] {
+ display: none;
+ }
+
+ [data-moon] {
+ display: block;
+ }
+ }
+}
+
+
+*,
+*::after,
+*::before {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+body {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+ background-color: var(--clr-background-900);
+ font-family: "Montserrat", sans-serif;
+ color: var(--clr-foreground);
+ line-height: 1.6;
+ overflow-x: hidden;
+}
+
+a,
+a:active,
+a:hover,
+a:focus-visible {
+ color: inherit;
+ text-decoration: none;
+}
+
+a:hover,
+a:focus-visible {
+ color: var(--clr-accent);
+}
+
+a[href] {
+ position: relative;
+
+ .new-tab-warning {
+ position: absolute;
+ width: max-content;
+ background-color: hsl(0, 0%, 13%);
+ font-weight: normal;
+ letter-spacing: normal;
+ color: var(--clr-white);
+ padding: 0.3rem;
+ font-size: 0.7rem;
+ border-radius: 0.3rem;
+ margin-top: 0.5rem;
+ top: 100%;
+ left: 0;
+ visibility: hidden;
+ pointer-events: none;
+ text-transform: capitalize;
+ transition: all 300ms ease-out;
+ transform: translateY(-0.3rem);
+ z-index: 90;
+ }
+
+ &:focus-visible {
+ .new-tab-warning {
+ visibility: visible;
+ transform: translateY(0);
+ pointer-events: unset;
+ }
+ }
+}
+
+::selection {
+ background-color: var(--clr-accent);
+ color: var(--clr-white);
+}
+
+.t-all {
+ transition: all 300ms ease-in;
+}
+
+.no-scroll {
+ @include breakpoint-down("small") {
+ overflow: hidden !important;
+ }
+}
+
+ul,
+li {
+ margin: 0;
+ padding: 0;
+}
+
+li {
+ list-style: none;
+}
+
+*:focus-visible {
+ outline: 0.125rem solid var(--clr-accent-dark);
+}
+
+.highlight {
+ background-color: var(--clr-black);
+ padding: 0.2rem 0.6rem;
+ color: var(--clr-white);
+}
+
+.header-link__access {
+ text-decoration: none !important;
+}
+
+.sr-only {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 0.0625rem;
+ margin: -0.0625rem;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 0.0625rem;
+}
+
+@media (prefers-reduced-motion) {
+ .prototype-reader,
+ .data {
+ transform: unset;
+ }
+}
diff --git a/src/css/scss/_header.scss b/src/css/scss/_header.scss
new file mode 100644
index 0000000..9dc400c
--- /dev/null
+++ b/src/css/scss/_header.scss
@@ -0,0 +1,329 @@
+.header {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 100vh;
+ flex-direction: column;
+ background-color: var(--clr-background);
+ box-shadow: 0 0.625rem 1.25rem hsla(270, 71%, 22%, 0.2);
+ z-index: 3;
+ position: relative;
+
+ .decoration {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ user-select: none;
+ pointer-events: none;
+
+ .relative {
+ position: relative;
+ }
+ }
+}
+
+.title {
+ &-container {
+ display: flex;
+ flex-direction: column;
+ gap: 2rem;
+ max-width: 64rem;
+ margin: 0 auto;
+ padding: 3rem 2rem;
+ align-items: flex-start;
+ z-index: 0;
+ }
+
+ &-leftside {
+ display: flex;
+ flex: 0 0 auto;
+ flex-direction: column;
+ gap: 0.4rem;
+ width: 100%;
+ }
+
+ &-rightside {
+ width: 100%;
+ font-size: 1.2rem;
+
+ h2 {
+ margin-bottom: 0.5rem;
+ text-transform: uppercase;
+ letter-spacing: 0.1rem;
+ }
+
+ @include breakpoint-up("large") {
+ flex: 1 0 auto;
+ width: 70%;
+ }
+ }
+
+ &-link {
+ display: block;
+ width: max-content;
+ }
+
+ &-activity {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ margin-bottom: -0.4rem;
+
+ &__details {
+ margin-left: 0.4rem;
+ font-weight: 300;
+ user-select: none;
+ color: var(--clr-foreground-900);
+
+ #month {
+ font-weight: 600;
+ }
+
+ #activity {
+ display: inline-block;
+ position: relative;
+ font-weight: 400;
+ z-index: 0;
+
+ &::before {
+ content: "";
+ position: absolute;
+ width: 70%;
+ height: 0.2rem;
+ bottom: 0;
+ border-bottom: 0.1rem dashed var(--clr-accent);
+ }
+ }
+ }
+
+ svg {
+ width: 1.2rem;
+ }
+ }
+
+ &-text {
+ font-size: 2.4rem;
+ font-weight: 700;
+ margin-left: -0.1rem;
+ transition: font-size 300ms ease-in;
+ }
+
+ &-action {
+ display: flex;
+ flex-direction: row;
+ margin-top: 1.2rem;
+ color: var(--clr-white);
+ background: var(--clr-accent-dark);
+ background-image: linear-gradient(-90deg, var(--clr-accent), var(--clr-accent-dark));
+ border-radius: 0.3rem;
+ padding: 0.5rem 1.5rem;
+ align-items: center;
+ gap: 0.4rem;
+ cursor: pointer;
+ font-size: 1.3rem;
+ transition: all 300ms ease-out;
+
+ &:hover,
+ &:focus-visible {
+ color: hsl(0, 0%, 80%);
+ background-color: var(--clr-accent);
+ filter: brightness(140%);
+ box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4);
+ transform: scale(1.04);
+ }
+
+ svg {
+ height: 1.3rem;
+ width: 1.3rem;
+ }
+
+ &[disabled] {
+ cursor: not-allowed;
+ &:hover {
+ transform: scale(0.96);
+ box-shadow: inset 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4);
+ filter: grayscale(100);
+ }
+ }
+
+ &.secondary {
+ background-color: var(--clr-background-800);
+ color: var(--clr-foreground-800);
+ background-image: none;
+ box-shadow: none;
+
+ &:hover,
+ &:focus-visible {
+ filter: brightness(100%);
+ transform: scale(0.98);
+ }
+ }
+
+ &__group {
+ display: flex;
+ gap: 0.6rem;
+ }
+ }
+
+ &-submenu {
+ display: flex;
+ position: relative;
+ margin-top: -0.4rem;
+ margin-left: 0.4rem;
+ align-items: center;
+ gap: 0.3rem;
+ color: var(--clr-foreground-800);
+ user-select: none;
+ z-index: 0;
+
+ svg {
+ height: 1rem;
+ transform: rotate(180deg);
+ }
+ }
+}
+
+.nav {
+ background-color: var(--clr-background);
+ flex-grow: 0;
+ flex-shrink: 0;
+ position: sticky;
+ top: 0;
+ padding: 0.8rem;
+ z-index: 20;
+
+ &-container {
+ width: 100%;
+ max-width: 64rem;
+ margin: 0 auto;
+ gap: 1rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+
+ .menubar {
+ font-weight: 600;
+ flex: 1;
+ justify-content: flex-end;
+ }
+ }
+
+
+ .rightside {
+ display: flex;
+ gap: 0.2rem;
+ }
+
+ .brand {
+ display: flex;
+ gap: 0.5rem;
+ &-title {
+ font-size: 1.3rem;
+ font-weight: 700;
+ }
+ &-logo {
+ display: flex;
+ align-items: center;
+ }
+ }
+ .themes {
+ transition: background-color 200ms ease-in;
+ border-radius: 50%;
+ }
+
+ .themes,
+ &-mobile {
+ cursor: pointer;
+ background: none;
+ border: none;
+ display: block;
+ height: 2rem;
+ width: 2rem;
+ padding: 0.4rem;
+ color: inherit;
+
+ svg {
+ width: 100%;
+ height: 100%;
+ }
+
+ &__section {
+ margin-top: 3.605625rem;
+ right: 0;
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: calc(100% - 3.605625rem);
+ background-color: var(--clr-background);
+ color: var(--clr-foreground);
+ z-index: 20;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 2rem;
+ justify-content: center;
+
+ &.not-showing {
+ height: 0%;
+ overflow-y: hidden;
+ visibility: hidden;
+ }
+
+ @include breakpoint-up("medium") {
+ height: 0%;
+ overflow-y: hidden;
+ visibility: hidden;
+ }
+
+ li {
+ list-style: none;
+ }
+ }
+ }
+
+ &-mobile {
+ @include breakpoint-up("medium") {
+ display: none;
+ }
+ }
+
+ ul {
+ display: none;
+ gap: 1rem;
+ align-items: center;
+
+ @include breakpoint-up("medium") {
+ display: flex;
+ }
+
+ li {
+ list-style: none;
+ text-transform: uppercase;
+ letter-spacing: 0.1rem;
+ a {
+ position: relative;
+ z-index: 1;
+
+ &:hover,
+ &:focus-visible {
+ color: var(--clr-foreground);
+ z-index: 1;
+ &::before {
+ width: 100%;
+ }
+ }
+
+ &::before {
+ content: "";
+ position: absolute;
+ width: 0%;
+ background-color: var(--clr-accent);
+ height: 110%;
+ transition: all 150ms ease-in;
+ z-index: -1;
+ }
+ }
+ }
+ }
+}
diff --git a/src/css/scss/_main.scss b/src/css/scss/_main.scss
new file mode 100644
index 0000000..44aa752
--- /dev/null
+++ b/src/css/scss/_main.scss
@@ -0,0 +1,1066 @@
+.main {
+ background-color: var(--clr-background-900);
+ flex: 1 0 auto;
+ display: flex;
+ flex-direction: column;
+ gap: 6rem;
+
+ &-container {
+ max-width: 64rem;
+ margin: 0 auto;
+ padding: 3rem 2rem;
+ width: 100%;
+ }
+
+ .section-header {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: 2rem;
+ font-size: 1.2rem;
+ text-transform: uppercase;
+ letter-spacing: 0.1rem;
+
+ .header-title {
+ display: flex;
+ gap: 0.6rem;
+
+ a {
+ height: max-content;
+ }
+ }
+
+ span {
+ text-transform: none;
+ letter-spacing: 0;
+ }
+
+ @include breakpoint-down("large") {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 0;
+
+ span {
+ &::before {
+ display: none;
+ }
+ }
+ }
+
+ .header-desc {
+ display: block;
+ position: relative;
+ font-size: 0.9rem;
+ color: var(--clr-foreground-700);
+
+ &::before {
+ content: "";
+ position: absolute;
+ left: 0;
+ border: 0.1875rem solid var(--clr-foreground);
+ top: 50%;
+ transform: translateY(-50%);
+ margin-left: -1rem;
+ border-radius: 50%;
+ }
+ }
+ }
+}
+
+.card {
+ background-color: #333333;
+ background-image: linear-gradient(transparent, var(--clr-accent-dark));
+ background-position: center;
+ background-size: cover;
+ background-clip: border-box;
+ box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4);
+ border-radius: 0.3rem;
+ padding: 10rem 0 0;
+ width: 28ch;
+ position: relative;
+ overflow: hidden;
+ flex: 0 0 auto;
+ color: var(--clr-white);
+
+ &:hover {
+ transform: scale(1.1);
+ z-index: 10;
+ }
+
+ &-empty {
+ width: 100%;
+ padding: 2rem;
+ box-shadow: inset 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.2);
+ background: var(--clr-background-900);
+ color: var(--clr-foreground-700);
+
+ &:hover,
+ &:focus-visible {
+ transform: scale(1);
+ }
+ }
+
+ &s {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ gap: 1rem;
+ margin-top: 2rem;
+
+ &.nocentered {
+ justify-content: flex-start;
+ }
+ }
+
+ &-body {
+ background-image: linear-gradient(
+ hsla(0, 0%, 0%, 0),
+ hsla(0, 0%, 0%, 0.4) 10%,
+ hsla(0, 0%, 0%, 1)
+ );
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+
+ header,
+ .description-area {
+ flex: 0 0 auto;
+ padding: 0 1.5rem;
+ }
+
+ .description-area {
+ height: 3.2rem;
+ overflow: hidden;
+ }
+
+ h2 {
+ font-size: 1.2rem;
+ line-height: 1.2rem;
+ height: 1.2rem;
+ overflow: hidden;
+ }
+
+ small {
+ display: block;
+ color: var(--clr-accent-light);
+ font-weight: 600;
+ margin-bottom: 1rem;
+ margin-top: 0.3rem;
+ }
+
+ .more-links {
+ display: flex;
+ flex: 1 0 auto;
+ align-items: flex-end;
+ width: 100%;
+ justify-content: space-between;
+
+ span {
+ display: block;
+ margin-top: 1rem;
+ padding: 1rem 1.5rem;
+ color: var(--clr-disabled-text);
+ cursor: not-allowed;
+ user-select: none;
+ }
+
+ a {
+ display: flex;
+ margin-top: 1rem;
+ padding: 1rem 1.5rem;
+ user-select: none;
+ position: relative;
+ z-index: 10;
+ gap: 0.3rem;
+
+ svg {
+ flex: 0 0 auto;
+ height: 1.5rem;
+ }
+
+ &:hover,
+ &:focus-visible {
+ color: var(--clr-white);
+ &::before {
+ width: 100%;
+ }
+ }
+
+ &::before {
+ content: "";
+ position: absolute;
+ width: 0%;
+ left: 0;
+ margin-top: -1rem;
+ background-color: var(--clr-accent);
+ height: 100%;
+ transition: all 150ms ease-in;
+ z-index: -1;
+ }
+ }
+ }
+ }
+}
+
+.prototype {
+ margin-bottom: 4rem;
+ margin-top: 4rem;
+
+ &s {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ flex-wrap: wrap;
+ justify-content: center;
+ margin-top: 3rem;
+ margin-bottom: 8rem;
+
+ gap: 7rem;
+ @include breakpoint-down("medium") {
+ flex-direction: row;
+ }
+ }
+
+ &-header {
+ margin-bottom: 1rem;
+ }
+
+ &-card {
+ align-items: flex-end;
+ align-items: center;
+ display: flex;
+ border-radius: 0.3rem;
+ width: 100%;
+
+ @include breakpoint-down("medium") {
+ flex-direction: column;
+ }
+
+ &:nth-of-type(odd) {
+ .prototype-header {
+ order: 2;
+
+ &::before {
+ background-color: var(--clr-accent-dark);
+ transform: rotate(-6deg);
+ }
+
+ @include breakpoint-down("medium") {
+ order: 0;
+ }
+ }
+
+ .prototype-description {
+ .text {
+ padding: 1rem;
+ padding-right: 2rem;
+ }
+
+ .links {
+ justify-content: flex-start;
+ padding-left: 1rem;
+ }
+ }
+ }
+ }
+
+ &-description {
+ flex: 1 1 auto;
+ z-index: 5;
+
+ ul {
+ li {
+ margin-top: 0.3rem;
+ }
+ }
+
+ h3 {
+ margin-bottom: 1rem;
+ }
+
+ .text {
+ padding: 1rem;
+ padding-left: 2rem;
+
+ .language {
+ display: inline-block;
+ padding: 0 0.1rem;
+ background-color: var(--clr-accent-dark);
+ color: var(--clr-white);
+ border-radius: 0.3rem;
+ user-select: none;
+ font-size: 0.8rem;
+ }
+
+ @include breakpoint-down("medium") {
+ padding-left: 0;
+ }
+
+ ul {
+ margin-top: 0.8rem;
+ border-radius: 0.3rem;
+ background-color: hsl(0, 0%, 10%);
+ padding: 1rem;
+ }
+ }
+
+ .links {
+ display: flex;
+ align-items: flex-end;
+ justify-content: flex-end;
+ padding-right: 1rem;
+
+ a {
+ background-color: var(--clr-accent);
+ color: var(--clr-white);
+ padding: 0.5rem 1rem;
+ border-radius: 0.3rem;
+ transition: all 300ms ease-out;
+ display: flex;
+
+ svg {
+ flex: 0 0 auto;
+ height: 1.5rem;
+ }
+
+ &:hover {
+ filter: brightness(120%);
+ }
+ }
+ }
+ }
+
+ &-more {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.4rem;
+
+ i {
+ display: inline-block;
+ font-style: normal;
+ padding: 0.2rem 0.7rem;
+ background-color: var(--clr-background-900);
+ border-radius: 0.3rem;
+
+ &.error {
+ background-color: hsl(0, 100%, 43%);
+ color: var(--clr-white);
+ }
+
+ &.active {
+ background-color: #067e06;
+ color: var(--clr-white);
+ }
+ }
+
+ .status {
+ background-image: linear-gradient(
+ -90deg,
+ var(--clr-accent),
+ var(--clr-accent-dark)
+ );
+ padding: 0 0.7rem;
+ display: flex;
+ align-items: center;
+ border-radius: 0.3rem;
+ color: white;
+ margin-right: 0.3rem;
+ }
+ }
+
+ &-header {
+ flex: 0 0 auto;
+ position: relative;
+ width: 25rem;
+ height: 20rem;
+ color: var(--clr-white);
+
+ @include breakpoint-down("medium") {
+ width: 100%;
+ max-width: 25rem;
+ }
+
+ &:hover {
+ .note {
+ transform: scale(1.1);
+ }
+ }
+
+ &::before {
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ transform: rotate(6deg);
+ background: var(--clr-accent);
+ left: -0.7rem;
+ border-radius: 40% 20% / 10%;
+ }
+ }
+
+ .note {
+ display: flex;
+ position: relative;
+ flex-direction: column;
+ background-color: hsl(0, 0%, 13%);
+ border-radius: 0.6rem;
+ box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4);
+ height: 100%;
+ transition: all 300ms ease-in-out;
+ z-index: 0;
+
+ & > svg {
+ position: absolute;
+ right: 0.1rem;
+ bottom: 0.1rem;
+ color: hsl(0, 0%, 11%);
+ z-index: -1;
+ }
+
+ article {
+ padding: 1rem;
+ height: 100%;
+ overflow-y: auto;
+ scrollbar-width: none;
+ position: relative;
+
+ &::-webkit-scrollbar {
+ width: 0;
+ }
+ }
+
+ &-header {
+ display: flex;
+ height: 2.5rem;
+ padding: 0 1rem;
+ width: 100%;
+ justify-content: space-between;
+ box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4);
+ flex: 0 0 auto;
+
+ div {
+ display: flex;
+ align-items: center;
+ font-weight: 600;
+ gap: 0.2rem;
+
+ .dot {
+ height: 0.9375rem;
+ width: 0.9375rem;
+ background-color: hsl(0, 100%, 43%);
+ border-radius: 50%;
+
+ &:first-of-type {
+ background-color: green;
+ }
+
+ &:nth-of-type(2) {
+ background-color: yellow;
+ }
+ }
+ }
+ }
+ }
+}
+
+.work,
+.articles {
+ padding-top: 4rem;
+}
+
+.contact {
+ .form-input {
+ display: flex;
+ flex-direction: column;
+
+ &__captcha {
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+ }
+
+ label {
+ margin:2em 0 .5em 0;
+ }
+
+ input, textarea {
+ width: 100%;
+ padding: 1rem;
+ border: none;
+ background-color: var(--clr-background);
+ color: var(--clr-foreground-900);
+ resize: none;
+ }
+
+ input[type=submit] {
+ border: none;
+ color: var(--clr-white);
+ background-color: var(--clr-accent);
+ }
+ }
+}
+
+.aboutme {
+ background-color: var(--clr-accent);
+ color: var(--clr-white);
+
+ .adds {
+ font-size: 0.9rem;
+ padding: 1rem;
+ }
+
+ a {
+ text-decoration: underline;
+ text-underline-offset: 0.4rem;
+ }
+
+ a:hover,
+ a:focus-visible {
+ color: #d0d0d0;
+ }
+
+ ::selection {
+ background-color: #333333;
+ }
+
+ h4 {
+ text-transform: uppercase;
+ letter-spacing: 0.1rem;
+ }
+
+ .main-container {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .flex {
+ display: flex;
+ flex-direction: row;
+ border-radius: 0.3rem;
+ margin-top: 1rem;
+
+ &-header {
+ display: flex;
+ padding: 0 1rem;
+ width: 100%;
+ justify-content: space-between;
+ box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4);
+ flex: 0 0 auto;
+
+ div {
+ display: flex;
+ align-items: center;
+ font-weight: 600;
+ gap: 0.2rem;
+
+ .dot {
+ height: 0.9375rem;
+ width: 0.9375rem;
+ background-color: hsl(0, 100%, 43%);
+ border-radius: 50%;
+
+ &:first-of-type {
+ background-color: green;
+ }
+
+ &:nth-of-type(2) {
+ background-color: yellow;
+ }
+ }
+ }
+ }
+
+ .lists {
+ display: flex;
+ justify-content: space-around;
+ width: 100%;
+ }
+
+ &.tools {
+ background-color: hsl(0, 0%, 13%);
+ box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4);
+ margin-bottom: -9rem;
+
+ h2 {
+ padding: 1rem;
+ }
+
+ .lists {
+ background-color: hsl(0, 0%, 11%);
+ border-radius: 0.3rem;
+ padding: 2rem;
+ }
+ }
+
+ &.languages {
+ filter: brightness(110%);
+ box-shadow: inset 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4);
+ background-color: var(--clr-accent-dark);
+ padding: 2rem;
+
+ h2 {
+ padding: 1rem 0;
+ }
+
+ ul {
+ margin-top: 0.2rem;
+ }
+ }
+
+ &:not(:first-of-type) {
+ margin-top: 5rem;
+ justify-content: space-around;
+ flex-direction: column;
+
+ ul {
+ font-size: 1.1rem;
+ font-weight: 600;
+
+ li {
+ font-weight: 500;
+ font-size: 1rem;
+ margin-top: 0.5rem;
+ &:first-of-type {
+ margin-top: 0.8rem;
+ }
+ }
+ }
+
+ @include breakpoint-down("medium") {
+ align-items: flex-start;
+
+ .lists {
+ flex-direction: column;
+ }
+
+ ul > li {
+ display: inline-block;
+ margin-top: 0;
+ }
+ }
+ }
+
+ @include breakpoint-down("medium") {
+ flex-direction: column;
+ align-items: center;
+ }
+ }
+
+ .data {
+ position: relative;
+ min-width: 25rem;
+ height: 20rem;
+
+ @include breakpoint-down("medium") {
+ width: 100%;
+ max-width: 25rem;
+ min-width: unset;
+ }
+
+ &:hover {
+ .note {
+ transform: scale(1.1);
+ }
+ }
+
+ &::before {
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: hsl(0, 100%, 43%);
+ left: -0.7rem;
+ border-radius: 40% 20% / 10%;
+ }
+ }
+
+ article {
+ padding: 1rem;
+ height: 100%;
+ overflow-y: auto;
+
+ scrollbar-width: none;
+
+ &::-webkit-scrollbar {
+ width: 0;
+ }
+
+ li {
+ padding-left: 0.6rem;
+ }
+ }
+
+ .explain {
+ display: flex;
+ align-items: center;
+ margin-top: 1rem;
+ padding: 1rem;
+ font-size: 1.2rem;
+
+ @include breakpoint-up("large") {
+ padding-left: 3rem;
+ }
+ }
+
+ .note {
+ transform: rotate(-3deg);
+ display: flex;
+ flex: 0 0 auto;
+ position: relative;
+ flex-direction: column;
+ background-color: hsl(0, 0%, 13%);
+ border-radius: 0.6rem;
+ box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4);
+ height: 100%;
+ transition: all 300ms ease-in-out;
+
+ & > svg {
+ position: absolute;
+ right: 0.1rem;
+ bottom: 0.1rem;
+ color: hsl(0, 0%, 11%);
+ z-index: -1;
+ }
+
+ &-heading {
+ font-weight: 600;
+ display: block;
+ text-transform: uppercase;
+ letter-spacing: .1em;
+ }
+
+ &-header {
+ display: flex;
+ height: 2.5rem;
+ padding: 0 1rem;
+ width: 100%;
+ justify-content: space-between;
+ box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4);
+ flex: 0 0 auto;
+
+ div {
+ display: flex;
+ align-items: center;
+ font-weight: 600;
+ gap: 0.2rem;
+
+ .dot {
+ height: 0.9375rem;
+ width: 0.9375rem;
+ background-color: hsl(0, 100%, 43%);
+ border-radius: 50%;
+
+ &:first-of-type {
+ background-color: green;
+ }
+
+ &:nth-of-type(2) {
+ background-color: yellow;
+ }
+ }
+ }
+ }
+ }
+}
+
+.post {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ color: var(--clr-foreground);
+ background-color: var(--clr-background-900);
+ line-height: 1.6;
+ margin: auto;
+
+ a {
+ font-weight: 600;
+ text-decoration: none;
+ color: var(--clr-href);
+ &:visited {
+
+ color: var(--clr-href-visited);
+ }
+
+ &:hover {
+ color: var(--clr-href-visited);
+ }
+
+ &:focus-visible {
+ outline: thin dotted;
+ }
+ &:hover,
+ &:active {
+ outline: 0;
+ }
+ }
+
+ span {
+ a:hover,a:visited,a:active,a:focus-visible {
+ color: var(--clr-href);
+ }
+ }
+
+ ::selection {
+ background: var(--clr-accent-dark);
+ color: var(--clr-white);
+ }
+
+ a::selection {
+ background: var(--clr-accent-dark);
+ color: var(--clr-white);
+ }
+
+ p {
+ margin: 1rem 0;
+ }
+
+ img {
+ max-width: 100%;
+ }
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ font-weight: 600;
+ color: var(--clr-foreground);
+ line-height: 1em;
+ padding: 1rem 0;
+ }
+ h4,
+ h5,
+ h6 {
+ font-weight: bold;
+ }
+ h1 {
+ font-size: 2.5rem;
+ }
+ h2 {
+ font-size: 2rem;
+ }
+ h3 {
+ font-size: 1.5rem;
+ }
+ h4 {
+ font-size: 1.2rem;
+ }
+ h5 {
+ font-size: 1rem;
+ }
+ h6 {
+ font-size: 0.9rem;
+ }
+
+ blockquote {
+ color: var(--clr-foreground-900);
+ margin: 0;
+ padding-left: 2em;
+ border-left: 0.5em var(--clr-accent) solid;
+ }
+
+ hr {
+ display: block;
+ height: 2px;
+ border: 0;
+ border-top: 1px solid var(--clr-accent);
+ border-bottom: 1px solid var(--clr-accent-light);
+ margin: 1em 0;
+ padding: 0;
+ }
+
+ pre,
+ code,
+ kbd,
+ samp {
+ background-color: var(--clr-background);
+ color: var(--clr-foreground-700);
+ font-family: monospace, monospace;
+ border-radius: 0.3rem;
+ padding: 0.1rem;
+ font-size: 0.98rem;
+ box-shadow: inset 0 0.0625rem 0.625rem hsla(0, 0%, 0%, 0.2);
+ }
+
+ pre {
+ background-color: var(--clr-background);
+ padding: 1rem;
+ white-space: pre;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ code {
+ box-shadow: none;
+ background-color: transparent;
+ }
+ }
+
+ b,
+ strong {
+ font-weight: bold;
+ }
+
+ dfn {
+ font-style: italic;
+ }
+
+ ins {
+ background: #ff9;
+ color: #000;
+ text-decoration: none;
+ }
+
+ mark {
+ background: #ff0;
+ color: #000;
+ font-style: italic;
+ font-weight: bold;
+ }
+
+ sub,
+ sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+ }
+ sup {
+ top: -0.5rem;
+ }
+ sub {
+ bottom: -0.25rem;
+ }
+
+ ul,
+ ol {
+ margin: 1em 0;
+ padding: 0 0 0 2rem;
+ }
+ ul li {
+ list-style-type: disc;
+ }
+ ol li {
+ list-style-type: decimal;
+ }
+ li p:last-child {
+ margin: 0;
+ }
+ dd {
+ margin: 0 0 0 2rem;
+ }
+
+ img {
+ border: 0;
+ vertical-align: middle;
+ }
+
+ table {
+ border-collapse: collapse;
+ overflow-x: scroll;
+ border-spacing: 0;
+ width: 100%;
+ background-color: var(--clr-background);
+ border: 0.0625rem solid var(--clr-accent-dark);
+ box-shadow: inset 0 0.0625rem 0.625rem hsla(0, 0%, 0%, 0.2);
+
+ td,th {
+ padding: 1rem;
+ }
+
+ tr {
+ border: 0.0625rem solid var(--clr-background-800);
+ }
+
+ th {
+ border-bottom: 0.25rem solid var(--clr-accent);
+ }
+
+ td {
+ vertical-align: top;
+ }
+
+ &.properties {
+ th {
+ border-bottom: 0.0625rem solid var(--clr-background-800);
+ border-left: 0.25rem solid var(--clr-accent);
+ }
+ }
+ }
+
+ .table-of-contents {
+ .toc-container-header {
+ font-weight: 700;
+ }
+
+ ul {
+ margin: 0;
+
+ ul {
+ li {
+ list-style: circle;
+ }
+ }
+ }
+ }
+
+ @media print {
+ * {
+ background: transparent !important;
+ color: var(--clr-accent-dark) !important;
+ filter: none !important;
+ -ms-filter: none !important;
+ }
+ body {
+ font-size: 12pt;
+ max-width: 100%;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ hr {
+ height: 1px;
+ border: 0;
+ border-bottom: 1px solid var(--clr-accent-dark);
+ }
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ .ir a:after,
+ a[href^="javascript:"]:after,
+ a[href^="#"]:after {
+ content: "";
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ padding-right: 1em;
+ page-break-inside: avoid;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ img {
+ max-width: 100% !important;
+ }
+ @page :left {
+ margin: 15mm 20mm 15mm 10mm;
+ }
+ @page :right {
+ margin: 15mm 10mm 15mm 20mm;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ }
+}
diff --git a/src/css/scss/_mixin.scss b/src/css/scss/_mixin.scss
new file mode 100644
index 0000000..53b98aa
--- /dev/null
+++ b/src/css/scss/_mixin.scss
@@ -0,0 +1,22 @@
+$breakpoints-up: (
+ "medium": "40em",
+ "large": "64em",
+ "xlarge": "87.5em",
+);
+$breakpoints-down: (
+ "small": "39.9375em",
+ "medium": "63.9375em",
+ "large": "87.4375em",
+);
+
+@mixin breakpoint-up($size) {
+ @media screen and (min-width: map-get($breakpoints-up, $size)) {
+ @content;
+ }
+}
+
+@mixin breakpoint-down($size) {
+ @media screen and (max-width: map-get($breakpoints-down, $size)) {
+ @content;
+ }
+}
diff --git a/src/css/scss/_vars.scss b/src/css/scss/_vars.scss
new file mode 100644
index 0000000..be3c66b
--- /dev/null
+++ b/src/css/scss/_vars.scss
@@ -0,0 +1,49 @@
+html:root {
+ --clr-accent: hsl(270, 50%, 40%);
+ --clr-accent-light: hsl(270, 84%, 72%);
+ --clr-accent-dark: hsl(270, 71%, 22%);
+
+ --clr-href: hsl(270, 80%, 50%);
+ --clr-href-visited: hsl(270, 70%, 22%);
+
+ --clr-background: hsl(0, 0%, 95%);
+ --clr-background-900: hsl(0, 0%, 88%);
+ --clr-background-800: hsl(0, 0%, 75%);
+ --clr-background-700: hsl(0, 0%, 63%);
+ --clr-foreground: hsl(0, 0%, 10%);
+ --clr-foreground-900: hsl(0, 0%, 13%);
+ --clr-foreground-800: hsl(0, 0%, 25%);
+ --clr-foreground-700: hsl(0, 0%, 38%);
+
+ --clr-disabled-text: hsl(0, 0%, 50%);
+ --clr-white: hsl(0, 0%, 100%);
+ --clr-black: hsl(0, 0%, 0%);
+
+ &.sunglow {
+ --clr-accent: hsl(40, 56%, 40%);
+ --clr-accent-light: hsl(40, 56%, 72%);
+ --clr-accent-dark: hsl(40, 56%, 22%);
+
+ --clr-background: hsl(40, 56%, 95%);
+ --clr-background-900: hsl(40, 56%, 88%);
+ --clr-background-800: hsl(40, 56%, 75%);
+ --clr-background-700: hsl(40, 56%, 63%);
+ --clr-foreground: hsl(40, 56%, 10%);
+ --clr-foreground-900: hsl(40, 56%, 13%);
+ --clr-foreground-800: hsl(40, 56%, 25%);
+ --clr-foreground-700: hsl(40, 56%, 38%);
+ }
+
+ &.dark {
+ --clr-href: hsl(270, 84%, 72%);
+ --clr-href-visited: hsl(270, 50%, 40%);
+ --clr-background: hsl(0, 0%, 10%);
+ --clr-background-900: hsl(0, 0%, 13%);
+ --clr-background-800: hsl(0, 0%, 25%);
+ --clr-background-700: hsl(0, 0%, 38%);
+ --clr-foreground: hsl(0, 0%, 95%);
+ --clr-foreground-900: hsl(0, 0%, 88%);
+ --clr-foreground-800: hsl(0, 0%, 75%);
+ --clr-foreground-700: hsl(0, 0%, 63%);
+ }
+}
diff --git a/src/css/style.css b/src/css/style.css
new file mode 100644
index 0000000..a1dda30
--- /dev/null
+++ b/src/css/style.css
@@ -0,0 +1,1994 @@
+html:root {
+ --clr-accent: hsl(270, 50%, 40%);
+ --clr-accent-light: hsl(270, 84%, 72%);
+ --clr-accent-dark: hsl(270, 71%, 22%);
+ --clr-href: hsl(270, 80%, 50%);
+ --clr-href-visited: hsl(270, 70%, 22%);
+ --clr-background: hsl(0, 0%, 95%);
+ --clr-background-900: hsl(0, 0%, 88%);
+ --clr-background-800: hsl(0, 0%, 75%);
+ --clr-background-700: hsl(0, 0%, 63%);
+ --clr-foreground: hsl(0, 0%, 10%);
+ --clr-foreground-900: hsl(0, 0%, 13%);
+ --clr-foreground-800: hsl(0, 0%, 25%);
+ --clr-foreground-700: hsl(0, 0%, 38%);
+ --clr-disabled-text: hsl(0, 0%, 50%);
+ --clr-white: hsl(0, 0%, 100%);
+ --clr-black: hsl(0, 0%, 0%);
+}
+
+html:root.sunglow {
+ --clr-accent: hsl(40, 56%, 40%);
+ --clr-accent-light: hsl(40, 56%, 72%);
+ --clr-accent-dark: hsl(40, 56%, 22%);
+ --clr-background: hsl(40, 56%, 95%);
+ --clr-background-900: hsl(40, 56%, 88%);
+ --clr-background-800: hsl(40, 56%, 75%);
+ --clr-background-700: hsl(40, 56%, 63%);
+ --clr-foreground: hsl(40, 56%, 10%);
+ --clr-foreground-900: hsl(40, 56%, 13%);
+ --clr-foreground-800: hsl(40, 56%, 25%);
+ --clr-foreground-700: hsl(40, 56%, 38%);
+}
+
+html:root.dark {
+ --clr-href: hsl(270, 84%, 72%);
+ --clr-href-visited: hsl(270, 50%, 40%);
+ --clr-background: hsl(0, 0%, 10%);
+ --clr-background-900: hsl(0, 0%, 13%);
+ --clr-background-800: hsl(0, 0%, 25%);
+ --clr-background-700: hsl(0, 0%, 38%);
+ --clr-foreground: hsl(0, 0%, 95%);
+ --clr-foreground-900: hsl(0, 0%, 88%);
+ --clr-foreground-800: hsl(0, 0%, 75%);
+ --clr-foreground-700: hsl(0, 0%, 63%);
+}
+
+html {
+ scroll-behavior: smooth;
+ scroll-padding-top: 10rem;
+ scroll-padding-bottom: 10rem;
+}
+
+html:root .themes {
+ background-color: #ffc107;
+ color: #7e620e;
+}
+
+html:root [data-moon] {
+ display: none;
+}
+
+html:root [data-sun] {
+ display: block;
+}
+
+html:root.dark .themes {
+ background-color: var(--clr-accent);
+ color: var(--clr-accent-dark);
+}
+
+html:root.dark [data-sun] {
+ display: none;
+}
+
+html:root.dark [data-moon] {
+ display: block;
+}
+
+*,
+*::after,
+*::before {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+body {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ min-height: 100vh;
+ background-color: var(--clr-background-900);
+ font-family: "Montserrat", sans-serif;
+ color: var(--clr-foreground);
+ line-height: 1.6;
+ overflow-x: hidden;
+}
+
+a,
+a:active,
+a:hover,
+a:focus-visible {
+ color: inherit;
+ text-decoration: none;
+}
+
+a:hover,
+a:focus-visible {
+ color: var(--clr-accent);
+}
+
+a[href] {
+ position: relative;
+}
+
+a[href] .new-tab-warning {
+ position: absolute;
+ width: -webkit-max-content;
+ width: -moz-max-content;
+ width: max-content;
+ background-color: #212121;
+ font-weight: normal;
+ letter-spacing: normal;
+ color: var(--clr-white);
+ padding: 0.3rem;
+ font-size: 0.7rem;
+ border-radius: 0.3rem;
+ margin-top: 0.5rem;
+ top: 100%;
+ left: 0;
+ visibility: hidden;
+ pointer-events: none;
+ text-transform: capitalize;
+ -webkit-transition: all 300ms ease-out;
+ transition: all 300ms ease-out;
+ -webkit-transform: translateY(-0.3rem);
+ transform: translateY(-0.3rem);
+ z-index: 90;
+}
+
+a[href]:focus-visible .new-tab-warning {
+ visibility: visible;
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ pointer-events: unset;
+}
+
+::-moz-selection {
+ background-color: var(--clr-accent);
+ color: var(--clr-white);
+}
+
+::selection {
+ background-color: var(--clr-accent);
+ color: var(--clr-white);
+}
+
+.t-all {
+ -webkit-transition: all 300ms ease-in;
+ transition: all 300ms ease-in;
+}
+
+@media screen and (max-width: 39.9375em) {
+ .no-scroll {
+ overflow: hidden !important;
+ }
+}
+
+ul,
+li {
+ margin: 0;
+ padding: 0;
+}
+
+li {
+ list-style: none;
+}
+
+*:focus-visible {
+ outline: 0.125rem solid var(--clr-accent-dark);
+}
+
+.highlight {
+ background-color: var(--clr-black);
+ padding: 0.2rem 0.6rem;
+ color: var(--clr-white);
+}
+
+.header-link__access {
+ text-decoration: none !important;
+}
+
+.sr-only {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 0.0625rem;
+ margin: -0.0625rem;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 0.0625rem;
+}
+
+@media (prefers-reduced-motion) {
+ .prototype-reader,
+ .data {
+ -webkit-transform: unset;
+ transform: unset;
+ }
+}
+
+.header {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ height: 100vh;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ background-color: var(--clr-background);
+ -webkit-box-shadow: 0 0.625rem 1.25rem rgba(56, 16, 96, 0.2);
+ box-shadow: 0 0.625rem 1.25rem rgba(56, 16, 96, 0.2);
+ z-index: 3;
+ position: relative;
+}
+
+.header .decoration {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ pointer-events: none;
+}
+
+.header .decoration .relative {
+ position: relative;
+}
+
+.title-container {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ gap: 2rem;
+ max-width: 64rem;
+ margin: 0 auto;
+ padding: 3rem 2rem;
+ -webkit-box-align: start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ z-index: 0;
+}
+
+.title-leftside {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ gap: 0.4rem;
+ width: 100%;
+}
+
+.title-rightside {
+ width: 100%;
+ font-size: 1.2rem;
+}
+
+.title-rightside h2 {
+ margin-bottom: 0.5rem;
+ text-transform: uppercase;
+ letter-spacing: 0.1rem;
+}
+
+@media screen and (min-width: 64em) {
+ .title-rightside {
+ -webkit-box-flex: 1;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ width: 70%;
+ }
+}
+
+.title-link {
+ display: block;
+ width: -webkit-max-content;
+ width: -moz-max-content;
+ width: max-content;
+}
+
+.title-activity {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin-bottom: -0.4rem;
+}
+
+.title-activity__details {
+ margin-left: 0.4rem;
+ font-weight: 300;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ color: var(--clr-foreground-900);
+}
+
+.title-activity__details #month {
+ font-weight: 600;
+}
+
+.title-activity__details #activity {
+ display: inline-block;
+ position: relative;
+ font-weight: 400;
+ z-index: 0;
+}
+
+.title-activity__details #activity::before {
+ content: "";
+ position: absolute;
+ width: 70%;
+ height: 0.2rem;
+ bottom: 0;
+ border-bottom: 0.1rem dashed var(--clr-accent);
+}
+
+.title-activity svg {
+ width: 1.2rem;
+}
+
+.title-text {
+ font-size: 2.4rem;
+ font-weight: 700;
+ margin-left: -0.1rem;
+ -webkit-transition: font-size 300ms ease-in;
+ transition: font-size 300ms ease-in;
+}
+
+.title-action {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ margin-top: 1.2rem;
+ color: var(--clr-white);
+ background: var(--clr-accent-dark);
+ background-image: -webkit-gradient(linear, right top, left top, from(var(--clr-accent)), to(var(--clr-accent-dark)));
+ background-image: linear-gradient(-90deg, var(--clr-accent), var(--clr-accent-dark));
+ border-radius: 0.3rem;
+ padding: 0.5rem 1.5rem;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ gap: 0.4rem;
+ cursor: pointer;
+ font-size: 1.3rem;
+ -webkit-transition: all 300ms ease-out;
+ transition: all 300ms ease-out;
+}
+
+.title-action:hover, .title-action:focus-visible {
+ color: #cccccc;
+ background-color: var(--clr-accent);
+ -webkit-filter: brightness(140%);
+ filter: brightness(140%);
+ -webkit-box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ -webkit-transform: scale(1.04);
+ transform: scale(1.04);
+}
+
+.title-action svg {
+ height: 1.3rem;
+ width: 1.3rem;
+}
+
+.title-action[disabled] {
+ cursor: not-allowed;
+}
+
+.title-action[disabled]:hover {
+ -webkit-transform: scale(0.96);
+ transform: scale(0.96);
+ -webkit-box-shadow: inset 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ box-shadow: inset 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ -webkit-filter: grayscale(100);
+ filter: grayscale(100);
+}
+
+.title-action.secondary {
+ background-color: var(--clr-background-800);
+ color: var(--clr-foreground-800);
+ background-image: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+.title-action.secondary:hover, .title-action.secondary:focus-visible {
+ -webkit-filter: brightness(100%);
+ filter: brightness(100%);
+ -webkit-transform: scale(0.98);
+ transform: scale(0.98);
+}
+
+.title-action__group {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ gap: 0.6rem;
+}
+
+.title-submenu {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ position: relative;
+ margin-top: -0.4rem;
+ margin-left: 0.4rem;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ gap: 0.3rem;
+ color: var(--clr-foreground-800);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ z-index: 0;
+}
+
+.title-submenu svg {
+ height: 1rem;
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.nav {
+ background-color: var(--clr-background);
+ -webkit-box-flex: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ padding: 0.8rem;
+ z-index: 20;
+}
+
+.nav-container {
+ width: 100%;
+ max-width: 64rem;
+ margin: 0 auto;
+ gap: 1rem;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+}
+
+.nav-container .menubar {
+ font-weight: 600;
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+}
+
+.nav .rightside {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ gap: 0.2rem;
+}
+
+.nav .brand {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ gap: 0.5rem;
+}
+
+.nav .brand-title {
+ font-size: 1.3rem;
+ font-weight: 700;
+}
+
+.nav .brand-logo {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.nav .themes {
+ -webkit-transition: background-color 200ms ease-in;
+ transition: background-color 200ms ease-in;
+ border-radius: 50%;
+}
+
+.nav .themes, .nav-mobile {
+ cursor: pointer;
+ background: none;
+ border: none;
+ display: block;
+ height: 2rem;
+ width: 2rem;
+ padding: 0.4rem;
+ color: inherit;
+}
+
+.nav .themes svg, .nav-mobile svg {
+ width: 100%;
+ height: 100%;
+}
+
+.nav .themes__section, .nav-mobile__section {
+ margin-top: 3.605625rem;
+ right: 0;
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: calc(100% - 3.605625rem);
+ background-color: var(--clr-background);
+ color: var(--clr-foreground);
+ z-index: 20;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ gap: 2rem;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.nav .themes__section.not-showing, .nav-mobile__section.not-showing {
+ height: 0%;
+ overflow-y: hidden;
+ visibility: hidden;
+}
+
+@media screen and (min-width: 40em) {
+ .nav .themes__section, .nav-mobile__section {
+ height: 0%;
+ overflow-y: hidden;
+ visibility: hidden;
+ }
+}
+
+.nav .themes__section li, .nav-mobile__section li {
+ list-style: none;
+}
+
+@media screen and (min-width: 40em) {
+ .nav-mobile {
+ display: none;
+ }
+}
+
+.nav ul {
+ display: none;
+ gap: 1rem;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+@media screen and (min-width: 40em) {
+ .nav ul {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ }
+}
+
+.nav ul li {
+ list-style: none;
+ text-transform: uppercase;
+ letter-spacing: 0.1rem;
+}
+
+.nav ul li a {
+ position: relative;
+ z-index: 1;
+}
+
+.nav ul li a:hover, .nav ul li a:focus-visible {
+ color: var(--clr-foreground);
+ z-index: 1;
+}
+
+.nav ul li a:hover::before, .nav ul li a:focus-visible::before {
+ width: 100%;
+}
+
+.nav ul li a::before {
+ content: "";
+ position: absolute;
+ width: 0%;
+ background-color: var(--clr-accent);
+ height: 110%;
+ -webkit-transition: all 150ms ease-in;
+ transition: all 150ms ease-in;
+ z-index: -1;
+}
+
+.main {
+ background-color: var(--clr-background-900);
+ -webkit-box-flex: 1;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ gap: 6rem;
+}
+
+.main-container {
+ max-width: 64rem;
+ margin: 0 auto;
+ padding: 3rem 2rem;
+ width: 100%;
+}
+
+.main .section-header {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ gap: 2rem;
+ font-size: 1.2rem;
+ text-transform: uppercase;
+ letter-spacing: 0.1rem;
+}
+
+.main .section-header .header-title {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ gap: 0.6rem;
+}
+
+.main .section-header .header-title a {
+ height: -webkit-max-content;
+ height: -moz-max-content;
+ height: max-content;
+}
+
+.main .section-header span {
+ text-transform: none;
+ letter-spacing: 0;
+}
+
+@media screen and (max-width: 87.4375em) {
+ .main .section-header {
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-align: start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ gap: 0;
+ }
+ .main .section-header span::before {
+ display: none;
+ }
+}
+
+.main .section-header .header-desc {
+ display: block;
+ position: relative;
+ font-size: 0.9rem;
+ color: var(--clr-foreground-700);
+}
+
+.main .section-header .header-desc::before {
+ content: "";
+ position: absolute;
+ left: 0;
+ border: 0.1875rem solid var(--clr-foreground);
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+ margin-left: -1rem;
+ border-radius: 50%;
+}
+
+.card {
+ background-color: #333333;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), to(var(--clr-accent-dark)));
+ background-image: linear-gradient(transparent, var(--clr-accent-dark));
+ background-position: center;
+ background-size: cover;
+ background-clip: border-box;
+ -webkit-box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ border-radius: 0.3rem;
+ padding: 10rem 0 0;
+ width: 28ch;
+ position: relative;
+ overflow: hidden;
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ color: var(--clr-white);
+}
+
+.card:hover {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+ z-index: 10;
+}
+
+.card-empty {
+ width: 100%;
+ padding: 2rem;
+ -webkit-box-shadow: inset 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.2);
+ background: var(--clr-background-900);
+ color: var(--clr-foreground-700);
+}
+
+.card-empty:hover, .card-empty:focus-visible {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+}
+
+.cards {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ gap: 1rem;
+ margin-top: 2rem;
+}
+
+.cards.nocentered {
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+}
+
+.card-body {
+ background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), color-stop(10%, rgba(0, 0, 0, 0.4)), to(black));
+ background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.4) 10%, black);
+ height: 100%;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+
+.card-body header,
+.card-body .description-area {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding: 0 1.5rem;
+}
+
+.card-body .description-area {
+ height: 3.2rem;
+ overflow: hidden;
+}
+
+.card-body h2 {
+ font-size: 1.2rem;
+ line-height: 1.2rem;
+ height: 1.2rem;
+ overflow: hidden;
+}
+
+.card-body small {
+ display: block;
+ color: var(--clr-accent-light);
+ font-weight: 600;
+ margin-bottom: 1rem;
+ margin-top: 0.3rem;
+}
+
+.card-body .more-links {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-box-align: end;
+ -ms-flex-align: end;
+ align-items: flex-end;
+ width: 100%;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+}
+
+.card-body .more-links span {
+ display: block;
+ margin-top: 1rem;
+ padding: 1rem 1.5rem;
+ color: var(--clr-disabled-text);
+ cursor: not-allowed;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.card-body .more-links a {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ margin-top: 1rem;
+ padding: 1rem 1.5rem;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ z-index: 10;
+ gap: 0.3rem;
+}
+
+.card-body .more-links a svg {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ height: 1.5rem;
+}
+
+.card-body .more-links a:hover, .card-body .more-links a:focus-visible {
+ color: var(--clr-white);
+}
+
+.card-body .more-links a:hover::before, .card-body .more-links a:focus-visible::before {
+ width: 100%;
+}
+
+.card-body .more-links a::before {
+ content: "";
+ position: absolute;
+ width: 0%;
+ left: 0;
+ margin-top: -1rem;
+ background-color: var(--clr-accent);
+ height: 100%;
+ -webkit-transition: all 150ms ease-in;
+ transition: all 150ms ease-in;
+ z-index: -1;
+}
+
+.prototype {
+ margin-bottom: 4rem;
+ margin-top: 4rem;
+}
+
+.prototypes {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ margin-top: 3rem;
+ margin-bottom: 8rem;
+ gap: 7rem;
+}
+
+@media screen and (max-width: 63.9375em) {
+ .prototypes {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ }
+}
+
+.prototype-header {
+ margin-bottom: 1rem;
+}
+
+.prototype-card {
+ -webkit-box-align: end;
+ -ms-flex-align: end;
+ align-items: flex-end;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ border-radius: 0.3rem;
+ width: 100%;
+}
+
+@media screen and (max-width: 63.9375em) {
+ .prototype-card {
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ }
+}
+
+.prototype-card:nth-of-type(odd) .prototype-header {
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2;
+}
+
+.prototype-card:nth-of-type(odd) .prototype-header::before {
+ background-color: var(--clr-accent-dark);
+ -webkit-transform: rotate(-6deg);
+ transform: rotate(-6deg);
+}
+
+@media screen and (max-width: 63.9375em) {
+ .prototype-card:nth-of-type(odd) .prototype-header {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+ }
+}
+
+.prototype-card:nth-of-type(odd) .prototype-description .text {
+ padding: 1rem;
+ padding-right: 2rem;
+}
+
+.prototype-card:nth-of-type(odd) .prototype-description .links {
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ padding-left: 1rem;
+}
+
+.prototype-description {
+ -webkit-box-flex: 1;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ z-index: 5;
+}
+
+.prototype-description ul li {
+ margin-top: 0.3rem;
+}
+
+.prototype-description h3 {
+ margin-bottom: 1rem;
+}
+
+.prototype-description .text {
+ padding: 1rem;
+ padding-left: 2rem;
+}
+
+.prototype-description .text .language {
+ display: inline-block;
+ padding: 0 0.1rem;
+ background-color: var(--clr-accent-dark);
+ color: var(--clr-white);
+ border-radius: 0.3rem;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ font-size: 0.8rem;
+}
+
+@media screen and (max-width: 63.9375em) {
+ .prototype-description .text {
+ padding-left: 0;
+ }
+}
+
+.prototype-description .text ul {
+ margin-top: 0.8rem;
+ border-radius: 0.3rem;
+ background-color: #1a1a1a;
+ padding: 1rem;
+}
+
+.prototype-description .links {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: end;
+ -ms-flex-align: end;
+ align-items: flex-end;
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+ padding-right: 1rem;
+}
+
+.prototype-description .links a {
+ background-color: var(--clr-accent);
+ color: var(--clr-white);
+ padding: 0.5rem 1rem;
+ border-radius: 0.3rem;
+ -webkit-transition: all 300ms ease-out;
+ transition: all 300ms ease-out;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.prototype-description .links a svg {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ height: 1.5rem;
+}
+
+.prototype-description .links a:hover {
+ -webkit-filter: brightness(120%);
+ filter: brightness(120%);
+}
+
+.prototype-more {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ gap: 0.4rem;
+}
+
+.prototype-more i {
+ display: inline-block;
+ font-style: normal;
+ padding: 0.2rem 0.7rem;
+ background-color: var(--clr-background-900);
+ border-radius: 0.3rem;
+}
+
+.prototype-more i.error {
+ background-color: #db0000;
+ color: var(--clr-white);
+}
+
+.prototype-more i.active {
+ background-color: #067e06;
+ color: var(--clr-white);
+}
+
+.prototype-more .status {
+ background-image: -webkit-gradient(linear, right top, left top, from(var(--clr-accent)), to(var(--clr-accent-dark)));
+ background-image: linear-gradient(-90deg, var(--clr-accent), var(--clr-accent-dark));
+ padding: 0 0.7rem;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ border-radius: 0.3rem;
+ color: white;
+ margin-right: 0.3rem;
+}
+
+.prototype-header {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ position: relative;
+ width: 25rem;
+ height: 20rem;
+ color: var(--clr-white);
+}
+
+@media screen and (max-width: 63.9375em) {
+ .prototype-header {
+ width: 100%;
+ max-width: 25rem;
+ }
+}
+
+.prototype-header:hover .note {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+}
+
+.prototype-header::before {
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ -webkit-transform: rotate(6deg);
+ transform: rotate(6deg);
+ background: var(--clr-accent);
+ left: -0.7rem;
+ border-radius: 40% 20% / 10%;
+}
+
+.prototype .note {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ position: relative;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ background-color: #212121;
+ border-radius: 0.6rem;
+ -webkit-box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ height: 100%;
+ -webkit-transition: all 300ms ease-in-out;
+ transition: all 300ms ease-in-out;
+ z-index: 0;
+}
+
+.prototype .note > svg {
+ position: absolute;
+ right: 0.1rem;
+ bottom: 0.1rem;
+ color: #1c1c1c;
+ z-index: -1;
+}
+
+.prototype .note article {
+ padding: 1rem;
+ height: 100%;
+ overflow-y: auto;
+ scrollbar-width: none;
+ position: relative;
+}
+
+.prototype .note article::-webkit-scrollbar {
+ width: 0;
+}
+
+.prototype .note-header {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ height: 2.5rem;
+ padding: 0 1rem;
+ width: 100%;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ -webkit-box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+}
+
+.prototype .note-header div {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ font-weight: 600;
+ gap: 0.2rem;
+}
+
+.prototype .note-header div .dot {
+ height: 0.9375rem;
+ width: 0.9375rem;
+ background-color: #db0000;
+ border-radius: 50%;
+}
+
+.prototype .note-header div .dot:first-of-type {
+ background-color: green;
+}
+
+.prototype .note-header div .dot:nth-of-type(2) {
+ background-color: yellow;
+}
+
+.work,
+.articles {
+ padding-top: 4rem;
+}
+
+.contact .form-input {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+
+.contact .form-input__captcha {
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+}
+
+.contact .form-input label {
+ margin: 2em 0 .5em 0;
+}
+
+.contact .form-input input, .contact .form-input textarea {
+ width: 100%;
+ padding: 1rem;
+ border: none;
+ background-color: var(--clr-background);
+ color: var(--clr-foreground-900);
+ resize: none;
+}
+
+.contact .form-input input[type=submit] {
+ border: none;
+ color: var(--clr-white);
+ background-color: var(--clr-accent);
+}
+
+.aboutme {
+ background-color: var(--clr-accent);
+ color: var(--clr-white);
+}
+
+.aboutme .adds {
+ font-size: 0.9rem;
+ padding: 1rem;
+}
+
+.aboutme a {
+ text-decoration: underline;
+ text-underline-offset: 0.4rem;
+}
+
+.aboutme a:hover,
+.aboutme a:focus-visible {
+ color: #d0d0d0;
+}
+
+.aboutme ::-moz-selection {
+ background-color: #333333;
+}
+
+.aboutme ::selection {
+ background-color: #333333;
+}
+
+.aboutme h4 {
+ text-transform: uppercase;
+ letter-spacing: 0.1rem;
+}
+
+.aboutme .main-container {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+
+.aboutme .flex {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ border-radius: 0.3rem;
+ margin-top: 1rem;
+}
+
+.aboutme .flex-header {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0 1rem;
+ width: 100%;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ -webkit-box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+}
+
+.aboutme .flex-header div {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ font-weight: 600;
+ gap: 0.2rem;
+}
+
+.aboutme .flex-header div .dot {
+ height: 0.9375rem;
+ width: 0.9375rem;
+ background-color: #db0000;
+ border-radius: 50%;
+}
+
+.aboutme .flex-header div .dot:first-of-type {
+ background-color: green;
+}
+
+.aboutme .flex-header div .dot:nth-of-type(2) {
+ background-color: yellow;
+}
+
+.aboutme .flex .lists {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-pack: distribute;
+ justify-content: space-around;
+ width: 100%;
+}
+
+.aboutme .flex.tools {
+ background-color: #212121;
+ -webkit-box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ margin-bottom: -9rem;
+}
+
+.aboutme .flex.tools h2 {
+ padding: 1rem;
+}
+
+.aboutme .flex.tools .lists {
+ background-color: #1c1c1c;
+ border-radius: 0.3rem;
+ padding: 2rem;
+}
+
+.aboutme .flex.languages {
+ -webkit-filter: brightness(110%);
+ filter: brightness(110%);
+ -webkit-box-shadow: inset 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ box-shadow: inset 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ background-color: var(--clr-accent-dark);
+ padding: 2rem;
+}
+
+.aboutme .flex.languages h2 {
+ padding: 1rem 0;
+}
+
+.aboutme .flex.languages ul {
+ margin-top: 0.2rem;
+}
+
+.aboutme .flex:not(:first-of-type) {
+ margin-top: 5rem;
+ -ms-flex-pack: distribute;
+ justify-content: space-around;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+
+.aboutme .flex:not(:first-of-type) ul {
+ font-size: 1.1rem;
+ font-weight: 600;
+}
+
+.aboutme .flex:not(:first-of-type) ul li {
+ font-weight: 500;
+ font-size: 1rem;
+ margin-top: 0.5rem;
+}
+
+.aboutme .flex:not(:first-of-type) ul li:first-of-type {
+ margin-top: 0.8rem;
+}
+
+@media screen and (max-width: 63.9375em) {
+ .aboutme .flex:not(:first-of-type) {
+ -webkit-box-align: start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ }
+ .aboutme .flex:not(:first-of-type) .lists {
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ }
+ .aboutme .flex:not(:first-of-type) ul > li {
+ display: inline-block;
+ margin-top: 0;
+ }
+}
+
+@media screen and (max-width: 63.9375em) {
+ .aboutme .flex {
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ }
+}
+
+.aboutme .data {
+ position: relative;
+ min-width: 25rem;
+ height: 20rem;
+}
+
+@media screen and (max-width: 63.9375em) {
+ .aboutme .data {
+ width: 100%;
+ max-width: 25rem;
+ min-width: unset;
+ }
+}
+
+.aboutme .data:hover .note {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+}
+
+.aboutme .data::before {
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: #db0000;
+ left: -0.7rem;
+ border-radius: 40% 20% / 10%;
+}
+
+.aboutme article {
+ padding: 1rem;
+ height: 100%;
+ overflow-y: auto;
+ scrollbar-width: none;
+}
+
+.aboutme article::-webkit-scrollbar {
+ width: 0;
+}
+
+.aboutme article li {
+ padding-left: 0.6rem;
+}
+
+.aboutme .explain {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin-top: 1rem;
+ padding: 1rem;
+ font-size: 1.2rem;
+}
+
+@media screen and (min-width: 64em) {
+ .aboutme .explain {
+ padding-left: 3rem;
+ }
+}
+
+.aboutme .note {
+ -webkit-transform: rotate(-3deg);
+ transform: rotate(-3deg);
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ position: relative;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ background-color: #212121;
+ border-radius: 0.6rem;
+ -webkit-box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ height: 100%;
+ -webkit-transition: all 300ms ease-in-out;
+ transition: all 300ms ease-in-out;
+}
+
+.aboutme .note > svg {
+ position: absolute;
+ right: 0.1rem;
+ bottom: 0.1rem;
+ color: #1c1c1c;
+ z-index: -1;
+}
+
+.aboutme .note-heading {
+ font-weight: 600;
+ display: block;
+ text-transform: uppercase;
+ letter-spacing: .1em;
+}
+
+.aboutme .note-header {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ height: 2.5rem;
+ padding: 0 1rem;
+ width: 100%;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ -webkit-box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.4);
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+}
+
+.aboutme .note-header div {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ font-weight: 600;
+ gap: 0.2rem;
+}
+
+.aboutme .note-header div .dot {
+ height: 0.9375rem;
+ width: 0.9375rem;
+ background-color: #db0000;
+ border-radius: 50%;
+}
+
+.aboutme .note-header div .dot:first-of-type {
+ background-color: green;
+}
+
+.aboutme .note-header div .dot:nth-of-type(2) {
+ background-color: yellow;
+}
+
+.post {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ color: var(--clr-foreground);
+ background-color: var(--clr-background-900);
+ line-height: 1.6;
+ margin: auto;
+}
+
+.post a {
+ font-weight: 600;
+ text-decoration: none;
+ color: var(--clr-href);
+}
+
+.post a:visited {
+ color: var(--clr-href-visited);
+}
+
+.post a:hover {
+ color: var(--clr-href-visited);
+}
+
+.post a:focus-visible {
+ outline: thin dotted;
+}
+
+.post a:hover, .post a:active {
+ outline: 0;
+}
+
+.post span a:hover, .post span a:visited, .post span a:active, .post span a:focus-visible {
+ color: var(--clr-href);
+}
+
+.post ::-moz-selection {
+ background: var(--clr-accent-dark);
+ color: var(--clr-white);
+}
+
+.post ::selection {
+ background: var(--clr-accent-dark);
+ color: var(--clr-white);
+}
+
+.post a::-moz-selection {
+ background: var(--clr-accent-dark);
+ color: var(--clr-white);
+}
+
+.post a::selection {
+ background: var(--clr-accent-dark);
+ color: var(--clr-white);
+}
+
+.post p {
+ margin: 1rem 0;
+}
+
+.post img {
+ max-width: 100%;
+}
+
+.post h1,
+.post h2,
+.post h3,
+.post h4,
+.post h5,
+.post h6 {
+ font-weight: 600;
+ color: var(--clr-foreground);
+ line-height: 1em;
+ padding: 1rem 0;
+}
+
+.post h4,
+.post h5,
+.post h6 {
+ font-weight: bold;
+}
+
+.post h1 {
+ font-size: 2.5rem;
+}
+
+.post h2 {
+ font-size: 2rem;
+}
+
+.post h3 {
+ font-size: 1.5rem;
+}
+
+.post h4 {
+ font-size: 1.2rem;
+}
+
+.post h5 {
+ font-size: 1rem;
+}
+
+.post h6 {
+ font-size: 0.9rem;
+}
+
+.post blockquote {
+ color: var(--clr-foreground-900);
+ margin: 0;
+ padding-left: 2em;
+ border-left: 0.5em var(--clr-accent) solid;
+}
+
+.post hr {
+ display: block;
+ height: 2px;
+ border: 0;
+ border-top: 1px solid var(--clr-accent);
+ border-bottom: 1px solid var(--clr-accent-light);
+ margin: 1em 0;
+ padding: 0;
+}
+
+.post pre,
+.post code,
+.post kbd,
+.post samp {
+ background-color: var(--clr-background);
+ color: var(--clr-foreground-700);
+ font-family: monospace, monospace;
+ border-radius: 0.3rem;
+ padding: 0.1rem;
+ font-size: 0.98rem;
+ -webkit-box-shadow: inset 0 0.0625rem 0.625rem rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 0.0625rem 0.625rem rgba(0, 0, 0, 0.2);
+}
+
+.post pre {
+ background-color: var(--clr-background);
+ padding: 1rem;
+ white-space: pre;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+.post pre code {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ background-color: transparent;
+}
+
+.post b,
+.post strong {
+ font-weight: bold;
+}
+
+.post dfn {
+ font-style: italic;
+}
+
+.post ins {
+ background: #ff9;
+ color: #000;
+ text-decoration: none;
+}
+
+.post mark {
+ background: #ff0;
+ color: #000;
+ font-style: italic;
+ font-weight: bold;
+}
+
+.post sub,
+.post sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+.post sup {
+ top: -0.5rem;
+}
+
+.post sub {
+ bottom: -0.25rem;
+}
+
+.post ul,
+.post ol {
+ margin: 1em 0;
+ padding: 0 0 0 2rem;
+}
+
+.post ul li {
+ list-style-type: disc;
+}
+
+.post ol li {
+ list-style-type: decimal;
+}
+
+.post li p:last-child {
+ margin: 0;
+}
+
+.post dd {
+ margin: 0 0 0 2rem;
+}
+
+.post img {
+ border: 0;
+ vertical-align: middle;
+}
+
+.post table {
+ border-collapse: collapse;
+ overflow-x: scroll;
+ border-spacing: 0;
+ width: 100%;
+ background-color: var(--clr-background);
+ border: 0.0625rem solid var(--clr-accent-dark);
+ -webkit-box-shadow: inset 0 0.0625rem 0.625rem rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 0.0625rem 0.625rem rgba(0, 0, 0, 0.2);
+}
+
+.post table td, .post table th {
+ padding: 1rem;
+}
+
+.post table tr {
+ border: 0.0625rem solid var(--clr-background-800);
+}
+
+.post table th {
+ border-bottom: 0.25rem solid var(--clr-accent);
+}
+
+.post table td {
+ vertical-align: top;
+}
+
+.post table.properties th {
+ border-bottom: 0.0625rem solid var(--clr-background-800);
+ border-left: 0.25rem solid var(--clr-accent);
+}
+
+.post .table-of-contents .toc-container-header {
+ font-weight: 700;
+}
+
+.post .table-of-contents ul {
+ margin: 0;
+}
+
+.post .table-of-contents ul ul li {
+ list-style: circle;
+}
+
+@media print {
+ .post * {
+ background: transparent !important;
+ color: var(--clr-accent-dark) !important;
+ -webkit-filter: none !important;
+ filter: none !important;
+ -ms-filter: none !important;
+ }
+ .post body {
+ font-size: 12pt;
+ max-width: 100%;
+ }
+ .post a,
+ .post a:visited {
+ text-decoration: underline;
+ }
+ .post hr {
+ height: 1px;
+ border: 0;
+ border-bottom: 1px solid var(--clr-accent-dark);
+ }
+ .post a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ .post abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ .post .ir a:after,
+ .post a[href^="javascript:"]:after,
+ .post a[href^="#"]:after {
+ content: "";
+ }
+ .post pre,
+ .post blockquote {
+ border: 1px solid #999;
+ padding-right: 1em;
+ page-break-inside: avoid;
+ }
+ .post tr,
+ .post img {
+ page-break-inside: avoid;
+ }
+ .post img {
+ max-width: 100% !important;
+ }
+ @page :left {
+ .post {
+ margin: 15mm 20mm 15mm 10mm;
+ }
+ }
+ @page :right {
+ .post {
+ margin: 15mm 10mm 15mm 20mm;
+ }
+ }
+ .post p,
+ .post h2,
+ .post h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ .post h2,
+ .post h3 {
+ page-break-after: avoid;
+ }
+}
+
+.footer {
+ background-color: var(--clr-background);
+ color: var(--clr-foreground);
+ padding: 0.8rem;
+}
+
+.footer-container {
+ max-width: 64rem;
+ margin: 0 auto;
+ text-align: center;
+}
+
+.footer .copyright {
+ font-size: 0.9rem;
+ margin: 1rem auto;
+ text-align: center;
+ border: 0.0625rem solid var(--clr-foreground);
+ width: 100%;
+ max-width: -webkit-max-content;
+ max-width: -moz-max-content;
+ max-width: max-content;
+ padding: 0.2rem 2rem;
+}
+
+@media screen and (min-width: 40em) {
+ .footer .copyright {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ }
+}
+/*# sourceMappingURL=style.css.map */
\ No newline at end of file
diff --git a/src/css/style.css.map b/src/css/style.css.map
new file mode 100644
index 0000000..8896add
--- /dev/null
+++ b/src/css/style.css.map
@@ -0,0 +1,15 @@
+{
+ "version": 3,
+ "mappings": "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",
+ "sources": [
+ "style.scss",
+ "scss/_vars.scss",
+ "scss/_mixin.scss",
+ "scss/_global.scss",
+ "scss/_header.scss",
+ "scss/_main.scss",
+ "scss/_footer.scss"
+ ],
+ "names": [],
+ "file": "style.css"
+}
\ No newline at end of file
diff --git a/src/css/style.scss b/src/css/style.scss
new file mode 100644
index 0000000..4838b3a
--- /dev/null
+++ b/src/css/style.scss
@@ -0,0 +1,7 @@
+@import "./scss/vars";
+@import "./scss/mixin";
+@import "./scss/global";
+
+@import "./scss/header";
+@import "./scss/main";
+@import "./scss/footer";
diff --git a/src/images/emptywork.github.io-header.jpg b/src/images/emptywork.github.io-header.jpg
new file mode 100644
index 0000000..df404cf
Binary files /dev/null and b/src/images/emptywork.github.io-header.jpg differ
diff --git a/src/images/emptywork.png b/src/images/emptywork.png
new file mode 100644
index 0000000..f0f9fe3
Binary files /dev/null and b/src/images/emptywork.png differ
diff --git a/src/images/expo.jpg b/src/images/expo.jpg
new file mode 100644
index 0000000..f447569
Binary files /dev/null and b/src/images/expo.jpg differ
diff --git a/src/images/jobfair.jpg b/src/images/jobfair.jpg
new file mode 100644
index 0000000..1826d71
Binary files /dev/null and b/src/images/jobfair.jpg differ
diff --git a/src/images/smu.jpg b/src/images/smu.jpg
new file mode 100644
index 0000000..d0f0963
Binary files /dev/null and b/src/images/smu.jpg differ
diff --git a/src/index.njk b/src/index.njk
new file mode 100644
index 0000000..dbc2d2a
--- /dev/null
+++ b/src/index.njk
@@ -0,0 +1,299 @@
+---
+title: EmptyWork
+layout: 'base.njk'
+---
+
+
+
+ {% include 'work.njk' %}
+
+
+
+
+
+
+
+
+
+ Todo list:
+ Learn how to:
+
+ code — like the real code
+
+ fishing
+ / it's so boring
+
+ write
+ cook?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Advanced
+ HTML5
+ CSS3
+ Javascript
+ PHP
+ SQL
+ JSON
+ TailwindCSS
+
+
+ Working Knowledge
+ React
+ Vue
+ SCSS
+ Laravel
+ MongoDB
+ NodeJs
+ Git
+
+
+ Previous Experience
+ C++
+ Python
+ Java
+ Dart
+ Powershell
+ RouterOS/Mikrotik
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {%- for post in collections.prototype | reverse -%}
+ {% include 'prototype-snippet.njk' %}
+ {%- endfor -%}
+
+
+
+
diff --git a/src/js/loadTheme.js b/src/js/loadTheme.js
new file mode 100644
index 0000000..0fa791b
--- /dev/null
+++ b/src/js/loadTheme.js
@@ -0,0 +1,8 @@
+if (
+ localStorage.theme === "dark" ||
+ (!("theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches)
+) {
+ document.documentElement.classList.add("dark")
+} else {
+ document.documentElement.classList.remove("dark")
+}
diff --git a/src/js/main.js b/src/js/main.js
new file mode 100644
index 0000000..8c60717
--- /dev/null
+++ b/src/js/main.js
@@ -0,0 +1,134 @@
+/**
+ * Fetching data from the said url
+ * @param {string} url
+ */
+const dataLoader = async (url) => {
+ const response = await fetch(url)
+ const data = await response.json()
+ if (response) {
+ schedulerLoader(data.schedules)
+ }
+}
+
+dataLoader("/settings.json")
+
+/**
+ * Mobile hamburger menu logic
+ */
+let mobileButtons = document.querySelectorAll("[data-mobile-menu-button]")
+let mobileMenuSection = document.querySelector("[data-mobile-menu-section]")
+let mobileMenuLinks = document.querySelectorAll("body>ul>li")
+
+mobileButtons.forEach( button => {
+ button.addEventListener("click", () => {
+ if (mobileMenuSection.classList.contains("not-showing")) {
+ setShowing()
+ return
+ }
+ setHidden()
+ return
+ })
+})
+
+const setShowing = () => {
+ mobileButtons[0].setAttribute("aria-label", "Close the mobile menu")
+ mobileMenuSection.classList.remove("not-showing")
+ setTimeout(() => document.body.classList.add("no-scroll"), 300)
+}
+
+const setHidden = () => {
+ mobileButtons[0].setAttribute("aria-label", "Open the mobile menu")
+ mobileMenuSection.classList.add("not-showing")
+ document.body.classList.remove("no-scroll")
+}
+
+/**
+ * Changing the theme based on user toggle
+ */
+let themesButton = document.querySelector("[data-theme-button]")
+
+const themeHandler = () => {
+ if (document.documentElement.classList.contains("dark")) {
+ setLight()
+ return
+ }
+ setDark()
+ return
+}
+themesButton.addEventListener("click", themeHandler)
+
+const setLight = () => {
+ document.documentElement.classList.remove("dark")
+ themesButton.setAttribute("aria-label", "Switch to dark mode")
+ localStorage.theme = "light"
+}
+
+const setDark = () => {
+ document.documentElement.classList.add("dark")
+ themesButton.setAttribute("aria-label", "Switch to light mode")
+ localStorage.theme = "dark"
+}
+
+/**
+ * Printing details on console
+ */
+console.group("Emptywork -- Dev")
+console.log(
+ "%cEmptywork %c console",
+ "background-color:#cecece; margin:2px; color:transparent; font-size:0.7rem"
+)
+console.log(
+ "%cdot one %c com",
+ "background-color:rebeccapurple; margin:2px; color:transparent; font-size:0.7rem"
+)
+console.log("%cemptywork dot github dot io", "font-size:0.88rem")
+console.log(
+ "%cEmptywork Console %c testing",
+ "background-color:#cecece; margin:2px; color:transparent; font-size:0.7rem"
+)
+console.groupEnd()
+
+/**
+ * Global Variables for Date related functions
+ */
+ let days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
+
+ let months = [
+ "January",
+ "Febuary",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December",
+ ]
+
+ let replaceStatus = document.querySelector("#activity")
+ let replaceMonth = document.querySelector("#month")
+
+ let currentDate = new Date()
+ let currentDay = currentDate.getDay()
+ let currentMonth = currentDate.getMonth()
+
+ if(replaceMonth) replaceMonth.textContent = months[currentMonth]
+
+ /**
+ * Updating activity status based on array of schedule
+ * @param {array} schedules
+ */
+
+ const schedulerLoader = (schedules = {}) => {
+ for (let i = 0; i < schedules.length; i++) {
+ if (!replaceStatus) return
+ if (days[currentDay] === schedules[i]) {
+ replaceStatus.textContent = "Kuliah"
+ break
+ }
+ replaceStatus.textContent = "Bebas"
+ }
+ }
\ No newline at end of file
diff --git a/src/project/2021-10-29-jobfair-website.md b/src/project/2021-10-29-jobfair-website.md
new file mode 100644
index 0000000..39e96ae
--- /dev/null
+++ b/src/project/2021-10-29-jobfair-website.md
@@ -0,0 +1,11 @@
+---
+title: Jobfair's Website
+author: EmptyWork
+date: 2021-05-01
+endDate: false
+tags: ["project"]
+image: /images/jobfair.jpg
+description: An website that aim to help Ambonese looking for their new opportunties
+linkDemo: https://jobfair-gpmsyaloom.herokuapp.com/
+linkCode: false
+---
\ No newline at end of file
diff --git a/src/project/2021-10-29-smu-website.md b/src/project/2021-10-29-smu-website.md
new file mode 100644
index 0000000..76fdef6
--- /dev/null
+++ b/src/project/2021-10-29-smu-website.md
@@ -0,0 +1,12 @@
+---
+title: University Student Body's Website
+description: A Wireframe for the future of SMU's website
+author: EmptyWork
+date: 2021-01-26
+endDate: false
+tags:
+ - project
+image: /images/smu.jpg
+linkDemo: https://emptywork.github.io/senatmahasiswa-design/
+linkCode: https://github.com/EmptyWork/senatmahasiswa-design
+---
diff --git a/src/project/2021-10-29-ukimexpo2019-website.md b/src/project/2021-10-29-ukimexpo2019-website.md
new file mode 100644
index 0000000..22f3642
--- /dev/null
+++ b/src/project/2021-10-29-ukimexpo2019-website.md
@@ -0,0 +1,11 @@
+---
+title: UKIMExpo'19 Website
+author: EmptyWork
+date: 2019-10-11
+endDate: 2019-10-28
+tags: ["project"]
+image: /images/expo.jpg
+description: A showcase website for promoting Informatics Faculty of Christian University of Indonesia, Moluccas
+linkDemo: https://emptywork.github.io/UKIMexpo/
+linkCode: https://github.com/EmptyWork/UKIMexpo
+---
\ No newline at end of file
diff --git a/src/project/project.json b/src/project/project.json
new file mode 100644
index 0000000..b286b72
--- /dev/null
+++ b/src/project/project.json
@@ -0,0 +1,5 @@
+{
+ "tags": "project",
+ "linkDemo": false,
+ "linkCode": false
+}
\ No newline at end of file
diff --git a/src/prototype/2021-ci3-implementation.md b/src/prototype/2021-ci3-implementation.md
new file mode 100644
index 0000000..88bceed
--- /dev/null
+++ b/src/prototype/2021-ci3-implementation.md
@@ -0,0 +1,17 @@
+---
+title: CI3 - Implementation
+status: 1
+description: Contoh implementasi dari CodeIgniter, adapun prototype ini
+ merupakan latihan yang dilakukan pada saat mengikuti kelas PBP.
+date: 2021-12-26T11:30:51.516Z
+tags:
+ - prototype
+ - php
+ - codeigniter3
+linkDemo: http://pbp2stevarth.rf.gd/
+code: |-
+
+---
diff --git a/src/prototype/2021-eazbi-website.md b/src/prototype/2021-eazbi-website.md
new file mode 100644
index 0000000..8ee00b4
--- /dev/null
+++ b/src/prototype/2021-eazbi-website.md
@@ -0,0 +1,19 @@
+---
+title: Eazbi - Website
+status: 1
+description: Kumpulan proyek Javascript (native), kode-kode ini akan
+ dikembangkan lagi untuk di gunakan sebagai front-end development.
+date: 2021-01-26
+tags:
+ - prototype
+ - html5
+ - css3
+ - javascript
+linkDemo: http://eazbi.rf.gd
+code: |-
+ const creditsIm = () => {
+ let credit = document.querySelector
+ ('.ew-credits');
+ credit.classList.toggle('show');
+ }
+---
diff --git a/src/prototype/2021-ew-javascript.md b/src/prototype/2021-ew-javascript.md
new file mode 100644
index 0000000..87b68e3
--- /dev/null
+++ b/src/prototype/2021-ew-javascript.md
@@ -0,0 +1,26 @@
+---
+title: Ew-Javascript
+status: 2
+description: Source Code untuk website pribadi. tujuan website ini dibuat adalah
+ sebagai showcase dan archive dari semua project yang akan dijalani atau
+ dibuat.
+date: 2021-01-26
+tags:
+ - prototype
+ - html5
+ - css3
+ - javascript
+linkDemo: https://emptywork.github.io/ew-javascript
+code: |-
+ const preLoad = () => {
+ let preload = document.querySelector('.preload');
+ let content = document.querySelector('.inside');
+ setTimeout(() => {
+ preload.style.marginTop =
+ 'calc(-100vh + -300px)';
+ }, 2000)
+ setTimeout(() => {
+ content.style.display = 'grid';
+ }, 2100);
+ }
+---
diff --git a/src/prototype/prototype.json b/src/prototype/prototype.json
new file mode 100644
index 0000000..82ee12b
--- /dev/null
+++ b/src/prototype/prototype.json
@@ -0,0 +1,4 @@
+{
+ "tags": "prototype",
+ "language": "en"
+}
\ No newline at end of file