awesome-jekyll-theme 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5a6b01e663b91de8cb5da73c14b00a1a7d2ad1a21603860bbeb3cd5ab187d16
4
- data.tar.gz: 4072e38ee52671391e9a5bc4f570c5222cf37313d3041e966dde7398869e7dfe
3
+ metadata.gz: ee4554241a24b51384ec7d106e61eb424dd586f8a1496e2df5239b29215ca29a
4
+ data.tar.gz: 894a9f98ef32bf53219793904ea10203374bf05838f2a832152e6fa93f630591
5
5
  SHA512:
6
- metadata.gz: 3c8c815ebaa337bee309ef2de4bf77b980ba02afdb8d36e617d35df2fa5fce1314dda00940f75f6bec46209b792116820a8e3d34b98b62b2ad679f6a5b1522a9
7
- data.tar.gz: 162853891385349bb9efcd1cde9c1e45ed05f673d19ce4fa6228297ab8bd68d292fb96ba5161e85db50e8c6447ee6b76658ca9411b19bea32f340b179a0593c4
6
+ metadata.gz: 64a96c40f1832d6bd2d8d565444cf42022e5a43bacb54e31f31ef405eca08dec2d621c181e4bd4b9b6c0f1926eee9e901093959a27a8a059bfc2433e95dbe9db
7
+ data.tar.gz: d1ebb340dc99175a706a7005037e9f05acec3b91432ae8786447570cfabad4e9ea9f3686bed9ef12141f0e1175a8d9614b2c29d8afc0900ba8bab4568477e5ae
data/README.md CHANGED
@@ -144,18 +144,6 @@ This theme provides several **layouts** for different types of pages. Each layou
144
144
 
145
145
  ## Configuration
146
146
 
147
- ### Type Writer Effect
148
-
149
- The Type Writer effect will be apply to all h1 elements in the site. You can disable it setting the next configuration in you \_config.yml file:
150
-
151
- ```yml
152
- typewriter_effect: false
153
- ```
154
-
155
- ```
156
-
157
- ```
158
-
159
147
  ### Navbar and Footer
160
148
 
161
149
  The navbar filters pages to be displayed based on a front matter called `nav`. These pages will appear in the navbar listed by the front matter `title`. If there is no `title`, then the filename is used. So, if you want to add a page to the navbar, **don't forget to add `nav: true`**.
@@ -188,6 +176,16 @@ contact_channels:
188
176
 
189
177
  **If you need to add a new one, just ask or send a PR**
190
178
 
179
+ ### Favicon and other head element customizations
180
+
181
+ If you want to have a custom [favicon](https://en.wikipedia.org/wiki/Favicon) for your site, or in any other way add more to the `<head>` element for all pages, then you can simply create a new file `custom_head.html` in the `_includes` directory and put in any such customization. For example, if you want to add a favicon that is location at (say) `assets/images/logo.avif`, then you simply need to create a new file `_include/custom_head.html` and put the following in it.
182
+
183
+ ```html
184
+ <link rel="shortcut icon" type="image/avif" href="/assets/images/logo.avif" />
185
+ ```
186
+
187
+ _Note: This theme already contains a file `assets/images/logo.avif`, and so if you create a new one in your site, then it will overwrite the theme file._
188
+
191
189
  ## Plugins
192
190
 
193
191
  The Awesome Jekyll theme comes with the [`jekyll-seo-tag`](https://github.com/jekyll/jekyll-seo-tag) plugin preinstalled to ensure your website gets the most useful meta tags. See [usage](https://github.com/jekyll/jekyll-seo-tag#usage) to learn how to set it up.
data/_config.yml CHANGED
@@ -2,12 +2,6 @@ title: AwesomeJT
2
2
  logo: /assets/images/logo.avif
3
3
  baseurl: /awesome-jekyll-theme
4
4
 
5
- ##
6
- # Typewritter configuration.
7
- # Feel free to disable if you don't like it.
8
- ##
9
- typewriter_effect: true
10
-
11
5
  ##
12
6
  # Collections configuration
13
7
  ##
@@ -6,7 +6,7 @@
6
6
  href="mailto:{{ contact_channels.email }}"
7
7
  >
8
8
  <img
9
- class="h-6 w-6"
9
+ class="h-6 w-6 dark:invert"
10
10
  src="{{'/assets/images/contact_channels/email.svg' | relative_url }}"
11
11
  alt="Email Icon"
12
12
  />
@@ -18,7 +18,7 @@
18
18
  target="_blank"
19
19
  >
20
20
  <img
21
- class="h-6 w-6"
21
+ class="h-6 w-6 dark:invert"
22
22
  src="{{'/assets/images/contact_channels/github-mark.svg' | relative_url }}"
23
23
  alt="Github Icon"
24
24
  />
@@ -30,7 +30,7 @@
30
30
  target="_blank"
31
31
  >
32
32
  <img
33
- class="h-6 w-6"
33
+ class="h-6 w-6 dark:invert"
34
34
  src="{{'/assets/images/contact_channels/telegram.svg' | relative_url }}"
35
35
  alt="Telegram Icon"
36
36
  />
@@ -42,7 +42,7 @@
42
42
  target="_blank"
43
43
  >
44
44
  <img
45
- class="h-6 w-6"
45
+ class="h-6 w-6 dark:invert"
46
46
  src="{{'/assets/images/contact_channels/stack-overflow.svg' | relative_url }}"
47
47
  alt="StackOverflow Icon"
48
48
  />
@@ -54,7 +54,7 @@
54
54
  target="_blank"
55
55
  >
56
56
  <img
57
- class="h-6 w-6"
57
+ class="h-6 w-6 dark:invert"
58
58
  src="{{'/assets/images/contact_channels/discord.svg' | relative_url }}"
59
59
  alt="Discord Icon"
60
60
  />
@@ -67,7 +67,7 @@
67
67
  target="_blank"
68
68
  >
69
69
  <img
70
- class="h-6 w-6"
70
+ class="h-6 w-6 dark:invert"
71
71
  src="{{'/assets/images/contact_channels/mastodon.svg' | relative_url }}"
72
72
  alt="Mastodon Icon"
73
73
  />
@@ -80,10 +80,10 @@
80
80
  target="_blank"
81
81
  >
82
82
  <img
83
- class="h-6 w-6"
83
+ class="h-6 w-6 dark:invert"
84
84
  src="{{'/assets/images/contact_channels/linkedin.svg' | relative_url }}"
85
85
  alt="LinkedIn Icon"
86
- />
86
+ />
87
87
  </a>
88
88
  {% endif %} {% if contact_channels.threads %}
89
89
  <a
@@ -92,7 +92,7 @@
92
92
  target="_blank"
93
93
  >
94
94
  <img
95
- class="h-6 w-6"
95
+ class="h-6 w-6 dark:invert"
96
96
  src="{{'/assets/images/contact_channels/threads.svg' | relative_url }}"
97
97
  alt="Threads Icon"
98
98
  />
@@ -1,7 +1,7 @@
1
1
  {% capture currentYear %}{{ 'now' | date: '%Y' }}{% endcapture %}
2
2
 
3
3
  <footer class="w-full bottom-0">
4
- <hr class="my-8 border-zinc-200" />
4
+ <hr class="my-8 border-zinc-200 dark:border-neutral-700" />
5
5
  <div class="container mx-auto">
6
6
  <div class="flex flex-wrap text-left">
7
7
  <div class="w-full md:w-6/12 md:px-4">
@@ -19,14 +19,14 @@
19
19
  <div class="w-full md:w-6/12 md:text-right py-4 md:py-0">
20
20
  <div class="flex flex-wrap items-top mb-6">
21
21
  <div class="w-full lg:w-4/12 md:px-4 ml-auto">
22
- <span class="text-lg block text-gray-800 mb-2">
22
+ <span class="text-lg block text-gray-800 dark:text-neutral-200 mb-2">
23
23
  {{ site.data[site.active_lang].strings.footer.pages | default:
24
24
  site.data['en'].strings.footer.pages}}
25
25
  </span>
26
26
  <ul>
27
27
  {% for page in site.pages %} {% if page.footer %}
28
28
  <li>
29
- <a class="font-mulish text-slate-600 hover:text-sky-400 dark:text-slate-300 dark:hover:text-slate-200"
29
+ <a class="font-mulish text-slate-600 hover:text-sky-400 dark:text-neutral-300 dark:hover:text-slate-200"
30
30
  href="{{ page.url | relative_url }}">{{ page.title | default: page.name }}</a>
31
31
  </li>
32
32
  {% endif%} {% endfor %}
@@ -11,21 +11,36 @@
11
11
  <div class="flex divide-x">
12
12
  {% for page in site.pages %}
13
13
  {% if page.nav %}
14
- <div><a class="px-4 hover:text-sky-400 {% if page.url == current_page_url %}font-bold{% endif %}"
14
+ <div><a class="px-4 hover:underline {% if page.url == current_page_url %}font-bold{% endif %}"
15
15
  href="{{ page.url | relative_url }}">{{ page.title | default: page.name }}</a></div>
16
16
  {% endif%}
17
17
  {% endfor %}
18
18
 
19
+ <div class="theme-switcher">
20
+ <button id="theme-toggle" class="px-4" aria-label="Toggle theme">
21
+ <span class="dark:hidden">
22
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
23
+ <path stroke-linecap="round" stroke-linejoin="round" d="M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z" />
24
+ </svg>
25
+ </span>
26
+ <span class="hidden dark:inline">
27
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
28
+ <path stroke-linecap="round" stroke-linejoin="round" d="M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z" />
29
+ </svg>
30
+ </span>
31
+ </button>
32
+ </div>
33
+
19
34
  {% if site.languages.size > 1 %}
20
35
  <div class="language-switcher relative">
21
- <button class="current-language px-4 hover:text-sky-400">
36
+ <button class="current-language px-4 hover:underline">
22
37
  {{ site.active_lang | upcase }}
23
38
  </button>
24
39
 
25
- <div class="dropdown-content absolute hidden mt-2 py-2 bg-white rounded shadow-lg z-20">
40
+ <div class="dropdown-content absolute hidden mt-2 py-2 bg-white rounded-sm shadow-lg z-20">
26
41
  {% for tongue in site.languages %}
27
42
  {% if tongue != site.active_lang %}
28
- <a class="p-4 hover:text-sky-400" {% static_href
43
+ <a class="p-4 hover:underline" {% static_href
29
44
  %}href="{% if tongue == site.default_lang %}{{site.baseurl}}{{page.url}}{% else %}{{site.baseurl}}/{{ tongue }}{{page.url}}{% endif %}"
30
45
  {% endstatic_href %}>{{ tongue | upcase }}</a>{%- if forloop.last == false -%}{{" "}}{{ site.langsep }}{%-
31
46
  endif -%}
@@ -1,25 +1,28 @@
1
1
  <div class="flex flex-col justify-between">
2
2
  <div class="flex flex-col justify-between max-w-lg">
3
3
  <a href="{{include.post.url | relative_url}}" aria-label="Post Url">
4
- {% assign random_id = include.post.date | date: "%s" %}
5
- {% assign random_image = 'https://picsum.photos/600/400/?blur&random=' | append: random_id %}
6
- <div class="hover:opacity-90 transition duration-300 w-full h-60 bg-cover bg-center"
4
+ {% assign random_id = include.post.date | date: "%s" %}
5
+ {% assign random_image = 'https://picsum.photos/600/400/?blur&random=' | append: random_id %}
6
+ <div class="hover:opacity-90 transition duration-300 w-full h-60 bg-cover bg-center rounded-lg"
7
7
  style="background-image: url('{{ include.post.image | default: random_image }}')">
8
8
  </div>
9
9
  </a>
10
10
  <div class="pt-6">
11
11
  <a href="{{site.url}}{{site.baseurl}}/category/{{include.post.categories[0] | replace: ' ', '-'| downcase}}"
12
12
  aria-label="Category {{include.post.categories[0]}} url"
13
- class="font-mulish text-sm hover:text-sky-400 text-gray-600">
13
+ class="font-mulish text-sm text-gray-600 dark:text-neutral-200 hover:underline">
14
14
  {{ include.post.categories[0] | upcase }}
15
15
  </a>
16
16
  </div>
17
- <a href="{{include.post.url | relative_url}}" aria-label="Post Url">
18
- <h2 class="hover:underline decoration-2 underline-offset-2 font-semibold text-2xl text-gray-800 pt-6">{{
19
- include.post.title }}</h2>
17
+ <a href="{{ include.post.url | relative_url }}" aria-label="Post Url">
18
+ <h2
19
+ class="hover:underline decoration-2 underline-offset-2 font-semibold text-2xl text-neutral-800 dark:text-neutral-50 pt-6"
20
+ >
21
+ {{ include.post.title }}
22
+ </h2>
20
23
  </a>
21
24
  </div>
22
- <span class="text-sm text-gray-500 pt-6">
25
+ <span class="text-sm text-gray-500 dark:text-neutral-200 pt-6">
23
26
  {{ include.post.date | date: "%-d/%-m/%Y" }}
24
27
  </span>
25
28
  </div>
@@ -2,13 +2,14 @@
2
2
  <div class="max-w-xl">
3
3
  <div class="mb-4 mt-4 md:mt-0 md:mb-6">
4
4
  <a href="{{site.url}}{{site.baseurl}}/category/{{include.post.categories[0] | replace: ' ', '-' | downcase}}"
5
- aria-label="Category {{include.post.categories[0]}} url" class="font-mulish hover:text-sky-400 text-gray-600">
5
+ aria-label="Category {{include.post.categories[0]}} url" class="font-mulish hover:underline text-neutral-600 dark:text-neutral-300">
6
6
  {{ include.post.categories[0] | upcase }}
7
7
  </a>
8
8
  </div>
9
9
  <a href="{{include.post.url | relative_url}}">
10
- <h2 class="hover:underline decoration-2 text-2xl md:text-4xl font-bold text-gray-800 pb-4 ">{{ include.post.title
11
- }}</h2>
10
+ <h2 class="hover:underline decoration-2 text-2xl md:text-4xl font-bold text-gray-800 dark:text-neutral-100 pb-4 ">
11
+ {{ include.post.title }}
12
+ </h2>
12
13
  </a>
13
14
  <div class="md:text-lg pb-6 font-semibold">
14
15
  <a href="{{include.post.url | relative_url}}" aria-label="Post Url">
@@ -16,14 +17,14 @@
16
17
  </a>
17
18
  </div>
18
19
  <a href="{{ include.post.url | relative_url }}"
19
- class="hover:underline decoration-2 underline-offset-2 hover:text-sky-400 text-lg font-semibold ">
20
+ class="hover:underline decoration-2 underline-offset-2 text-lg font-semibold ">
20
21
  {{ site.data[site.active_lang].strings.blog.read_more | default:
21
22
  site.data['en'].strings.blog.read_more}}
22
23
  </a>
23
24
  </div>
24
25
 
25
26
  <a href="{{ include.post.url | relative_url }}"
26
- class="hover:opacity-90 transition duration-300 w-full md:w-1/2 h-80 md:h-96 bg-cover bg-center"
27
+ class="hover:opacity-90 transition duration-300 w-full md:w-1/2 h-80 md:h-96 bg-cover bg-center rounded-lg"
27
28
  style="background-image: url('{{ include.post.image }}')">
28
29
  </a>
29
30
  </div>
@@ -1,15 +1,18 @@
1
- <div class="rounded-lg hover:bg-gray-50 p-8 shadow">
1
+ <div class="rounded-lg hover:bg-gray-50 shadow">
2
2
  <a href="{{include.project.url | relative_url}}">
3
- <img src="{{include.project.image | relative_url}}" alt="image" class="object-cover w-full h-60" />
4
- <p class="font-mulish text-gray-500 mt-6 mb-2 ">{{include.project.category | upcase}}</p>
5
- <h2 class="text-2xl hover:underline font-bold my-2 text-gray-800">{{include.project.title}}</h2>
6
- <div class="font-mulish">
7
- {{include.project.excerpt}}
8
- </div>
9
- <div class="my-4">
10
- {% for tag in include.project.tags %}
11
- <category class="font-mulish text-sm text-gray-500">#{{ tag | xml_escape }}</category>
12
- {% endfor %}
3
+ <div class="relative overflow-hidden rounded-lg">
4
+ <img src="{{include.project.image | relative_url}}" alt="image" class="object-cover w-full h-80" />
5
+ <div class="absolute inset-0 bg-stone-900 opacity-50 ">
6
+ </div>
7
+ <div class="absolute inset-0 flex items-center justify-center flex-col">
8
+ <p class="font-mulish mt-6 mb-2 text-white">{{include.project.category | upcase}}</p>
9
+ <h2 class="font-semibold text-2xl hover:underline text-white text-center px-4 ">{{include.project.title}}</h2>
10
+ <div class="my-4">
11
+ {% for tag in include.project.tags %}
12
+ <category class="font-mulish text-sm text-white">#{{ tag | xml_escape }}</category>
13
+ {% endfor %}
14
+ </div>
15
+ </div>
13
16
  </div>
14
17
  </a>
15
18
  </div>
data/_layouts/blog.html CHANGED
@@ -5,32 +5,38 @@ layout: default
5
5
  <section class="container mx-auto pb-10 pt-20 lg:pt-[90px] lg:pb-20">
6
6
  {% if site.categories.size > 0 %}
7
7
  <div
8
- class="flex flex-wrap justify-center border-gray-400 border-y mb-4 md:mb-12"
8
+ class="flex flex-wrap justify-center border-neutral-500 border-y mb-4 md:mb-12"
9
9
  >
10
- {% for category in site.categories %} {% assign category_name = category[0]
11
- %}
10
+ {% for category in site.categories %} {% assign category_name = category[0] %}
12
11
  <a
13
12
  href="{{site.url}}{{site.baseurl}}/category/{{category_name| replace: ' ', '-'| downcase}}"
14
13
  aria-label="Category {{category_name}} page"
15
- class="block font-mulish hover:text-sky-400 p-4 {% if category_name == page.title %}font-black{% endif %}"
14
+ class="block font-mulish hover:underline p-4 {% if category_name == page.title %}font-black{% endif %}"
16
15
  >
17
16
  {{ category_name | upcase }}
18
17
  </a>
19
18
  {% endfor %}
20
19
  </div>
21
- {% endif %} {% assign posts = page.posts | default: site.posts %} {% assign
22
- first_post = posts[0] %} {% include post_main.html post=first_post %} {%
23
- assign rest_posts = posts | slice: 1, posts.size %} {% if rest_posts.size > 0
24
- %}
20
+ {% endif %}
25
21
 
26
- <hr class="h-px my-12 bg-gray-400 border-0 dark:bg-gray-700" />
22
+ {% assign posts = page.posts | default: site.posts %}
23
+ {% assign first_post = posts[0] %}
27
24
 
28
- <h1 class="text-2xl md:text-4xl font-bold text-gray-800">
25
+ <div data-motion="fadeInLeft">
26
+ {% include post_main.html post=first_post %}
27
+ </div>
28
+
29
+ {% assign rest_posts = posts | slice: 1, posts.size %} {% if rest_posts.size > 0 %}
30
+
31
+ <hr class="h-px my-12 bg-neutral-500 border-0" />
32
+
33
+ <h1 class="text-2xl md:text-4xl font-bold text-neutral-800 dark:text-neutral-200" >
29
34
  {{ site.data[site.active_lang].strings.blog.more_articles | default:
30
35
  site.data['en'].strings.blog.more_articles }}
31
36
  </h1>
32
37
  <div
33
38
  class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-x-12 gap-y-16 py-8 md:py-16"
39
+ data-motion="stagger-cards"
34
40
  >
35
41
  {% for post in rest_posts %} {% include post_card.html post=post %} {%
36
42
  endfor %}
@@ -1,38 +1,170 @@
1
1
  <!doctype html>
2
- <html lang="{{site.active_lang}}">
2
+ <html class="dark" lang="{{site.active_lang}}">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <link href="{{ '/assets/css/dist-style.css' | relative_url }}" rel="stylesheet" />
7
+ <link href="{{ '/assets/css/fonts.css' | relative_url }}" rel="stylesheet" />
3
8
 
4
- <head>
5
- <meta charset="UTF-8" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <link href="{{ '/assets/css/dist-style.css' | relative_url }}" rel="stylesheet" />
8
- <link href="{{ '/assets/css/fonts.css' | relative_url }}" rel="stylesheet" />
9
- {% if site.typewriter_effect %}
10
- <script src="https://unpkg.com/typeit@8.8.4/dist/index.umd.js"></script>
11
- {% endif %} {% seo %} {% include custom_head.html %}
12
- </head>
13
-
14
- <body class="bg-white text-gray-900 dark:bg-gray-700 dark:text-slate-100">
15
- {% if site.typewriter_effect %}
16
- <script>
17
- document.addEventListener("DOMContentLoaded", function () {
18
- new TypeIt("h1", {}).go();
19
- });
9
+ <script src="https://cdn.jsdelivr.net/npm/motion@latest/dist/motion.js"></script>
10
+ <script>
11
+ const { animate, scroll } = Motion
20
12
  </script>
21
- {% endif %} {% include navbar.html %} {{ content }} {% include footer.html
22
- %}
23
- <script>
24
- document.querySelectorAll("a").forEach(function (link) {
25
- link.addEventListener("click", function (event) {
26
- event.preventDefault(); // Prevent the default link action temporarily
27
- link.classList.add("gentle-clicked");
13
+ </head>
14
+
15
+ <body class="bg-neutral-50 text-neutral-900 dark:bg-neutral-950 dark:text-neutral-200">
16
+ {% include navbar.html %}
17
+ {{ content }}
18
+ {% include footer.html %}
19
+ <script>
20
+ document.querySelectorAll("a").forEach(function (link) {
21
+ link.addEventListener("click", function (event) {
22
+ event.preventDefault(); // Prevent the default link action temporarily
23
+ link.classList.add("gentle-clicked");
28
24
 
29
- setTimeout(function () {
30
- link.classList.remove("gentle-clicked");
31
- window.location.href = link.href; // Navigate to the link after the animation
32
- }, 300); // Duration of the gentle bounce animation
25
+ setTimeout(function () {
26
+ link.classList.remove("gentle-clicked");
27
+ window.location.href = link.href; // Navigate to the link after the animation
28
+ }, 300); // Duration of the gentle bounce animation
29
+ });
30
+ });
31
+ </script>
32
+ <script>
33
+ document.addEventListener('DOMContentLoaded', function() {
34
+ // Initialize motion animations for all sections
35
+ const motionElements = document.querySelectorAll('[data-motion]');
36
+
37
+ motionElements.forEach(element => {
38
+ const animationType = element.getAttribute('data-motion');
39
+
40
+ // Handle stagger cards differently
41
+ if (animationType === 'stagger-cards') {
42
+ const cards = element.children;
43
+ Array.from(cards).forEach((card, index) => {
44
+ card.style.opacity = '0';
45
+ card.style.transform = 'translateY(30px)';
46
+ });
47
+ } else {
48
+ // Set initial state for regular animations
49
+ element.style.opacity = '0';
50
+ element.style.transform = getInitialTransform(animationType);
51
+ }
52
+
53
+ // Create intersection observer for scroll-triggered animations
54
+ const observer = new IntersectionObserver((entries) => {
55
+ entries.forEach(entry => {
56
+ if (entry.isIntersecting) {
57
+ animateElement(entry.target, animationType);
58
+ observer.unobserve(entry.target);
59
+ }
60
+ });
61
+ }, { threshold: 0.2 });
62
+
63
+ observer.observe(element);
64
+ });
65
+
66
+ function getInitialTransform(type) {
67
+ switch(type) {
68
+ case 'fadeInLeft':
69
+ return 'translateX(-100px)';
70
+ case 'fadeInRight':
71
+ return 'translateX(100px)';
72
+ case 'fadeInUp':
73
+ return 'translateY(50px)';
74
+ case 'fadeInDown':
75
+ return 'translateY(-50px)';
76
+ default:
77
+ return 'translateY(0)';
78
+ }
79
+ }
80
+
81
+ function animateElement(element, type) {
82
+ // Get custom delay and duration from data attributes
83
+ const customDelay = parseFloat(element.getAttribute('data-motion-delay')) || 0;
84
+ const customDuration = parseFloat(element.getAttribute('data-motion-duration')) || (type === 'stagger-cards' ? 0.6 : 0.8);
85
+
86
+ if (type === 'stagger-cards') {
87
+ // Animate cards with stagger effect
88
+ const cards = Array.from(element.children);
89
+ cards.forEach((card, index) => {
90
+ Motion.animate(card,
91
+ {
92
+ opacity: [0, 1],
93
+ transform: ['translateY(30px)', 'translateY(0)']
94
+ },
95
+ {
96
+ duration: customDuration,
97
+ delay: customDelay + (index * 0.1),
98
+ easing: 'ease-out'
99
+ }
100
+ );
101
+ });
102
+ } else {
103
+ // Regular animations with custom delay and duration
104
+ Motion.animate(element,
105
+ {
106
+ opacity: [0, 1],
107
+ transform: [getInitialTransform(type), 'translate(0, 0)']
108
+ },
109
+ {
110
+ duration: customDuration,
111
+ delay: customDelay,
112
+ easing: 'ease-out'
113
+ }
114
+ );
115
+ }
116
+ }
117
+ });
118
+ </script>
119
+ <script>
120
+ // Theme switcher functionality
121
+ document.addEventListener('DOMContentLoaded', function() {
122
+ const themeToggle = document.getElementById('theme-toggle');
123
+ const htmlElement = document.documentElement;
124
+
125
+ // Check for saved theme preference or default to 'dark'
126
+ const savedTheme = localStorage.getItem('theme');
127
+ const systemPreference = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
128
+ const currentTheme = savedTheme || systemPreference;
129
+
130
+ // Apply the current theme
131
+ if (currentTheme === 'dark') {
132
+ htmlElement.classList.add('dark');
133
+ } else {
134
+ htmlElement.classList.remove('dark');
135
+ }
136
+
137
+ // Theme toggle event listener
138
+ if (themeToggle) {
139
+ themeToggle.addEventListener('click', function() {
140
+ if (htmlElement.classList.contains('dark')) {
141
+ htmlElement.classList.remove('dark');
142
+ localStorage.setItem('theme', 'light');
143
+ } else {
144
+ htmlElement.classList.add('dark');
145
+ localStorage.setItem('theme', 'dark');
146
+ }
147
+ });
148
+ }
149
+
150
+ // Listen for system theme changes
151
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function(e) {
152
+ if (!localStorage.getItem('theme')) {
153
+ if (e.matches) {
154
+ htmlElement.classList.add('dark');
155
+ } else {
156
+ htmlElement.classList.remove('dark');
157
+ }
158
+ }
159
+ });
33
160
  });
34
- });
35
- </script>
36
- </body>
37
161
 
162
+ document.querySelectorAll("section > div").forEach((item) => {
163
+ scroll(animate(item, { opacity: [0, 1, 1, 0] }), {
164
+ target: item,
165
+ offset: ["start end", "end end", "start start", "end start"],
166
+ })
167
+ })
168
+ </script>
169
+ </body>
38
170
  </html>
data/_layouts/home.html CHANGED
@@ -4,17 +4,19 @@ layout: default
4
4
 
5
5
  <section
6
6
  id="main"
7
- class="flex flex-col md:flex-row items-center justify-center py-16 md:h-screen border-b-2"
7
+ class="flex flex-col md:flex-row items-center justify-center py-16 md:h-screen border-b-2 dark:border-0"
8
8
  >
9
- <div class="md:mx-2">
9
+ <div class="md:mx-2" data-motion="fadeInLeft">
10
10
  <img
11
11
  class="object-cover w-full h-full sm:w-80 sm:h-80 sm:rounded-full"
12
12
  src="{{ page.image | relative_url | default: 'https://ik.imagekit.io/ikmedia/avif_samples/photo3_avif_6O32dW2NT.png' }}"
13
13
  alt="{{ page.description }}"
14
14
  />
15
15
  </div>
16
- <div class="fadeIn mx-4 w-4/5 md:w-2/5 text-center md:text-left mt-6 md:mt-0">
17
- <div class="prose prose-h1:mb-1">{{ page.main_content | markdownify }}</div>
16
+ <div class="fadeIn mx-4 w-4/5 md:w-2/5 text-center md:text-left mt-6 md:mt-0" data-motion="fadeInRight">
17
+ <div class="prose prose-lg prose-h1:text-4xl prose-h2:text-3xl prose-h1:mb-1 dark:prose-invert">
18
+ {{ page.main_content | markdownify }}
19
+ </div>
18
20
  {% if site.contact_channels_section %}
19
21
  <p class="mt-4">
20
22
  {{ site.data[site.active_lang].strings.home.contact_me | default:
@@ -31,20 +33,21 @@ layout: default
31
33
  class="container mx-auto flex flex-col items-center justify-center min-h-screen"
32
34
  >
33
35
  <div class="py-16 w-full">
34
- <h2 class="text-3xl font-bold text-center md:text-left">
36
+ <h2 class="text-3xl font-bold text-center md:text-left" data-motion="fadeInUp">
35
37
  {{ site.data[site.active_lang].strings.home.blog_title | default:
36
38
  site.data['en'].strings.home.blog_title}}
37
39
  </h2>
38
40
  <div
39
41
  class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-x-12 gap-y-16 py-8 md:py-16"
42
+ data-motion="stagger-cards"
40
43
  >
41
44
  {% for post in site.posts limit:3 %} {% include post_card.html post=post%}
42
45
  {% endfor %}
43
46
  </div>
44
47
 
45
- {% assign blog_page = site.pages | where: 'layout', 'blog' | first %} {% if
46
- blog_page %}
47
- <div class="pt-4 text-center">
48
+ {% assign blog_page = site.pages | where: 'layout', 'blog' | first %}
49
+ {% if blog_page %}
50
+ <div class="pt-4 text-end" data-motion="fadeInUp">
48
51
  <a
49
52
  class="font-mulish text-lg hover:text-sky-400 hover:underline font-bold"
50
53
  href="{{ blog_page.url | relative_url }}"
@@ -56,21 +59,24 @@ layout: default
56
59
  {% endif %}
57
60
  </div>
58
61
  </section>
59
- {% endif %} {% if site.projects.size > 0 %}
62
+ {% endif %}
63
+
64
+ {% if site.projects.size > 0 %}
60
65
  <section
61
66
  id="projects"
62
67
  class="container mx-auto flex flex-col items-center justify-center min-h-screen"
63
68
  >
64
69
  <div class="py-16 w-full">
65
- <h2 class="text-3xl font-bold text-center md:text-left">
70
+ <h2 class="text-3xl font-bold text-center md:text-left" data-motion="fadeInUp">
66
71
  {{ site.data[site.active_lang].strings.home.projects_title | default:
67
72
  site.data['en'].strings.home.projects_title}}
68
73
  </h2>
69
- <div class="grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-16 py-8 md:py-16">
70
- {% for project in site.projects limit:2 %} {% include project_card.html
71
- project=project%} {% endfor %}
74
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-x-8 gap-y-16 py-8 md:py-16" data-motion="stagger-cards">
75
+ {% for project in site.projects limit:3 %}
76
+ {% include project_card.html project=project %}
77
+ {% endfor %}
72
78
  </div>
73
- <div class="pt-4 text-center">
79
+ <div class="pt-4 text-end" data-motion="fadeInUp">
74
80
  <a
75
81
  class="font-mulish text-lg hover:text-sky-400 hover:underline font-bold"
76
82
  href="{{'/projects' | relative_url }}"
@@ -81,14 +87,17 @@ layout: default
81
87
  </div>
82
88
  </div>
83
89
  </section>
84
- {% endif %} {% assign trimmed_content = content | strip | replace: "\n", "" |
85
- replace: "\r", "" | replace: "\t", "" %} {% if trimmed_content != "" %}
86
- <section
87
- id="content"
88
- class="container mx-auto flex flex-col items-center justify-center min-h-screen"
89
- >
90
- <article class="prose mx-auto py-16">{{content}}</article>
91
- </section>
90
+ {% endif %}
91
+
92
+ {% assign trimmed_content = content | strip | replace: "\n", "" | replace: "\r", "" | replace: "\t", "" %}
93
+
94
+ {% if trimmed_content != "" %}
95
+ <section
96
+ id="content"
97
+ class="container mx-auto flex flex-col items-center justify-center min-h-screen"
98
+ >
99
+ <article class="prose prose-lg dark:prose-invert prose-h1:text-5xl prose-h2:text-3xl mx-auto py-16" data-motion="fadeInUp">{{content}}</article>
100
+ </section>
92
101
  {% endif %}
93
102
 
94
103
  <div
@@ -121,6 +130,4 @@ replace: "\r", "" | replace: "\t", "" %} {% if trimmed_content != "" %}
121
130
  {% endif %}
122
131
  </div>
123
132
 
124
- <script src="{{ '/assets/js/scrolldown-effect.js'| relative_url }}"></script>
125
133
  <script src="{{ '/assets/js/dot-navigation.js'| relative_url }}"></script>
126
- <script src="{{ '/assets/js/scroll-navigation.js'| relative_url }}"></script>
data/_layouts/post.html CHANGED
@@ -4,17 +4,17 @@ layout: default
4
4
 
5
5
  <link rel="stylesheet" href="{{ '/assets/css/monokai.css' | relative_url }}">
6
6
  <div class="container mx-auto">
7
- <div id="post" class="prose max-w-[75ch] prose-neutral mx-auto pb-10 pt-20 lg:pt-[90px] lg:pb-20">
8
- <div class="pb-4">
7
+ <div id="post" class="prose prose-lg dark:prose-invert prose-img:rounded-lg max-w-[75ch] mx-auto pb-10 pt-20 lg:pt-[90px] lg:pb-20">
8
+ <div class="pb-4" data-motion="fadeInRight">
9
9
  <a href="{{site.url}}/category/{{page.categories[0] | replace: ' ', '-' | downcase}}"
10
- class="no-underline font-mulish text-sm hover:text-sky-400 text-gray-500">
10
+ class="no-underline font-mulish text-sm hover:underline text-neutral-700 dark:text-neutral-300">
11
11
  {{ page.categories[0] | upcase }}
12
12
  </a>
13
13
  </div>
14
14
 
15
- <h1 class="text-left text-2xl font-bold md:text-5xl text-black">{{page.title}}</h1>
15
+ <h1 class="text-left text-2xl font-bold md:text-5xl text-neutral-900 dark:text-neutral-100" data-motion="fadeInRight">{{page.title}}</h1>
16
16
 
17
- <div class="flex flex-col md:flex-row text-sm font-mulish justify-between items-center">
17
+ <div data-motion="fadeInLeft" data-motion-delay="0.4" data-motion-duration="0.4" class="flex flex-col md:flex-row text-sm font-mulish justify-between items-center">
18
18
  <div class="flex">
19
19
  <p>{{ page.author }}</p>
20
20
  <p class="px-2">•</p>
@@ -30,10 +30,10 @@ layout: default
30
30
  </div>
31
31
 
32
32
  {% if page.image %}
33
- <img class="w-full" src="{{page.image | relative_url}}" alt="{{page.title}}">
33
+ <img data-motion="fadeInUp" data-motion-delay="0.8" data-motion-duration="0.2" class="w-full" src="{{page.image | relative_url}}" alt="{{page.title}}">
34
34
  {% endif %}
35
35
 
36
- <div class="my-6">
36
+ <div data-motion="fadeInUp" data-motion-delay="1" data-motion-duration="0.2" class="my-6">
37
37
  {{content}}
38
38
  </div>
39
39
 
@@ -5,12 +5,12 @@ layout: default
5
5
 
6
6
  <link rel="stylesheet" href="{{ '/assets/css/monokai.css' | relative_url }}">
7
7
  <div class="container mx-auto">
8
- <div id="post" class="prose max-w-[75ch] prose-neutral mx-auto pb-10 pt-20 lg:pt-[90px] lg:pb-20">
9
- <h1 class="text-left text-2xl font-bold md:text-5xl text-black">{{page.title}}</h1>
8
+ <div id="post" class="prose prose-lg dark:prose-invert prose-img:rounded-lg max-w-[75ch] prose-neutral mx-auto pb-10 pt-20 lg:pt-[90px] lg:pb-20">
9
+ <h1 data-motion="fadeInRight" class="text-left text-2xl font-bold md:text-5xl text-neutral-900 dark:text-neutral-100">{{page.title}}</h1>
10
10
 
11
- <img src="{{page.image}}" alt="{{page.title}}">
11
+ <img src="{{page.image}}" alt="{{page.title}}" data-motion="fadeInUp" data-motion-delay="0.6" data-motion-duration="0.4">
12
12
 
13
- <div class="my-6">
13
+ <div class="my-6" data-motion="fadeInUp" data-motion-delay="0.8" data-motion-duration="0.4">
14
14
  {{content}}
15
15
  </div>
16
16
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  layout: default
3
3
  ---
4
- <section class="container mx-auto pt-20 pb-10 lg:pt-[120px] lg:pb-20">
5
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-16">
4
+ <section class="container mx-auto pt-20 pb-10 lg:pt-[120px] lg:pb-20 min-h-screen">
5
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-16" data-motion="stagger-cards">
6
6
  {% for project in site.projects %}
7
7
  {% include project_card.html project=project%}
8
8
  {% endfor %}
@@ -1 +1,2 @@
1
- /*! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Raleway;font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%;padding-right:1rem;padding-left:1rem}@media (min-width:640px){.container{max-width:640px;padding-right:2rem;padding-left:2rem}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px;padding-right:4rem;padding-left:4rem}}@media (min-width:1280px){.container{max-width:1280px;padding-right:5rem;padding-left:5rem}}@media (min-width:1536px){.container{max-width:1536px;padding-right:6rem;padding-left:6rem}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);font-size:.875em;border-radius:.3125rem;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:initial}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-neutral{--tw-prose-body:#404040;--tw-prose-headings:#171717;--tw-prose-lead:#525252;--tw-prose-links:#171717;--tw-prose-bold:#171717;--tw-prose-counters:#737373;--tw-prose-bullets:#d4d4d4;--tw-prose-hr:#e5e5e5;--tw-prose-quotes:#171717;--tw-prose-quote-borders:#e5e5e5;--tw-prose-captions:#737373;--tw-prose-kbd:#171717;--tw-prose-kbd-shadows:23 23 23;--tw-prose-code:#171717;--tw-prose-pre-code:#e5e5e5;--tw-prose-pre-bg:#262626;--tw-prose-th-borders:#d4d4d4;--tw-prose-td-borders:#e5e5e5;--tw-prose-invert-body:#d4d4d4;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#a3a3a3;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#a3a3a3;--tw-prose-invert-bullets:#525252;--tw-prose-invert-hr:#404040;--tw-prose-invert-quotes:#f5f5f5;--tw-prose-invert-quote-borders:#404040;--tw-prose-invert-captions:#a3a3a3;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d4d4d4;--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:#525252;--tw-prose-invert-td-borders:#404040}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.top-1\/2{top:50%}.z-20{z-index:20}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-12{margin-top:3rem;margin-bottom:3rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-3{height:.75rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-8{height:2rem}.h-80{height:20rem}.h-full{height:100%}.h-px{height:1px}.min-h-\[70vh\]{min-height:70vh}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-3{width:.75rem}.w-4\/5{width:80%}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-auto{width:auto}.w-full{width:100%}.max-w-\[75ch\]{max-width:75ch}.max-w-lg{max-width:32rem}.max-w-xl{max-width:36rem}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-6{gap:1.5rem}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-16{row-gap:4rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px*var(--tw-divide-x-reverse));border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)))}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.border-0{border-width:0}.border-2{border-width:2px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/80{background-color:#fffc}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pr-2{padding-right:.5rem}.pt-2{padding-top:.5rem}.pt-20{padding-top:5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.font-mulish{font-family:Mulish}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.no-underline{text-decoration-line:none}.decoration-2{text-decoration-thickness:2px}.underline-offset-2{text-underline-offset:2px}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}@keyframes gentle-bounce{0%{transform:translateY(0)}50%{transform:translateY(-3px)}to{transform:translateY(0)}}a.gentle-clicked{animation:gentle-bounce .3s ease-out}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.hover\:scale-110:hover,.hover\:scale-125:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-125:hover{--tw-scale-x:1.25;--tw-scale-y:1.25}.hover\:border-slate-700:hover{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.hover\:text-sky-400:hover{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.prose-h1\:mb-1 :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:.25rem}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\:text-slate-100){--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}:is(.dark .dark\:text-slate-300){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}:is(.dark .dark\:text-zinc-300){--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-slate-200:hover){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}@media (min-width:640px){.sm\:h-80{height:20rem}.sm\:w-80{width:20rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:rounded-full{border-radius:9999px}}@media (min-width:768px){.md\:mx-2{margin-left:.5rem;margin-right:.5rem}.md\:mb-12{margin-bottom:3rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mt-0{margin-top:0}.md\:block{display:block}.md\:h-96{height:24rem}.md\:h-screen{height:100vh}.md\:w-1\/2{width:50%}.md\:w-2\/5{width:40%}.md\:w-4\/12{width:33.333333%}.md\:w-6\/12{width:50%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:justify-start{justify-content:flex-start}.md\:justify-between{justify-content:space-between}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:py-16{padding-top:4rem;padding-bottom:4rem}.md\:text-left{text-align:left}.md\:text-right{text-align:right}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:w-4\/12{width:33.333333%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:pb-20{padding-bottom:5rem}.lg\:pt-\[120px\]{padding-top:120px}.lg\:pt-\[90px\]{padding-top:90px}}
1
+ /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--color-sky-400:oklch(74.6% .16 232.661);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-neutral-50:oklch(98.5% 0 0);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-neutral-950:oklch(14.5% 0 0);--color-stone-900:oklch(21.6% .006 56.043);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--container-xl:36rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--radius-sm:.25rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--font-sans:Raleway;--font-mulish:Mulish}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-gray-200,currentcolor)}::file-selector-button{border-color:var(--color-gray-200,currentcolor)}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.z-20{z-index:20}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-4{margin-block:calc(var(--spacing)*4)}.my-6{margin-block:calc(var(--spacing)*6)}.my-8{margin-block:calc(var(--spacing)*8)}.my-12{margin-block:calc(var(--spacing)*12)}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);border-radius:.3125rem;padding:.1875em .375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding:.857143em 1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;text-align:left;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-bottom:.571429em;padding-left:.571429em;padding-right:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:NaN NaN NaN;--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.77778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.09091em;margin-bottom:1.09091em;font-size:1.22222em;line-height:1.45455}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.66667em;margin-bottom:1.66667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.833333em;font-size:2.66667em;line-height:1}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.86667em;margin-bottom:1.06667em;font-size:1.66667em;line-height:1.33333}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.66667em;margin-bottom:.666667em;font-size:1.33333em;line-height:1.5}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.77778em;margin-bottom:.444444em;line-height:1.55556}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.77778em;margin-bottom:1.77778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.77778em;margin-bottom:1.77778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;padding:.222222em .444444em;font-size:.888889em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.866667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;margin-top:2em;margin-bottom:2em;padding:1em 1.5em;font-size:.888889em;line-height:1.75}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-left:1.55556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;margin-bottom:.666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.33333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.33333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;padding-left:1.55556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:3.11111em;margin-bottom:3.11111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.75em;padding-left:.75em;padding-right:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.77778em;margin-bottom:1.77778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1em;font-size:.888889em;line-height:1.5}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-1{margin-right:calc(var(--spacing)*1)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.h-3{height:calc(var(--spacing)*3)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-60{height:calc(var(--spacing)*60)}.h-80{height:calc(var(--spacing)*80)}.h-full{height:100%}.h-px{height:1px}.min-h-\[70vh\]{min-height:70vh}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing)*3)}.w-4\/5{width:80%}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-10{width:calc(var(--spacing)*10)}.w-auto{width:auto}.w-full{width:100%}.max-w-\[75ch\]{max-width:75ch}.max-w-lg{max-width:var(--container-lg)}.max-w-xl{max-width:var(--container-xl)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-8{column-gap:calc(var(--spacing)*8)}.gap-x-12{column-gap:calc(var(--spacing)*12)}.gap-y-16{row-gap:calc(var(--spacing)*16)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-gray-800{border-color:var(--color-gray-800)}.border-neutral-500{border-color:var(--color-neutral-500)}.border-slate-600{border-color:var(--color-slate-600)}.border-zinc-200{border-color:var(--color-zinc-200)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-500{background-color:var(--color-neutral-500)}.bg-slate-600{background-color:var(--color-slate-600)}.bg-stone-900{background-color:var(--color-stone-900)}.bg-white{background-color:var(--color-white)}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white)80%,transparent)}}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.container{padding-inline:1rem}@media (min-width:40rem){.container{padding-inline:2rem}}@media (min-width:64rem){.container{padding-inline:4rem}}@media (min-width:80rem){.container{padding-inline:5rem}}@media (min-width:96rem){.container{padding-inline:6rem}}.px-2{padding-inline:calc(var(--spacing)*2)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-20{padding-top:calc(var(--spacing)*20)}.pr-2{padding-right:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-10{padding-bottom:calc(var(--spacing)*10)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-end{text-align:end}.text-left{text-align:left}.font-mulish{font-family:var(--font-mulish)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-black{color:var(--color-black)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-800{color:var(--color-gray-800)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-700{color:var(--color-neutral-700)}.text-neutral-800{color:var(--color-neutral-800)}.text-neutral-900{color:var(--color-neutral-900)}.text-slate-600{color:var(--color-slate-600)}.text-white{color:var(--color-white)}.italic{font-style:italic}.no-underline{text-decoration-line:none}.decoration-2{text-decoration-thickness:2px}.underline-offset-2{text-underline-offset:2px}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.prose-neutral{--tw-prose-body:oklch(37.1% 0 0);--tw-prose-headings:oklch(20.5% 0 0);--tw-prose-lead:oklch(43.9% 0 0);--tw-prose-links:oklch(20.5% 0 0);--tw-prose-bold:oklch(20.5% 0 0);--tw-prose-counters:oklch(55.6% 0 0);--tw-prose-bullets:oklch(87% 0 0);--tw-prose-hr:oklch(92.2% 0 0);--tw-prose-quotes:oklch(20.5% 0 0);--tw-prose-quote-borders:oklch(92.2% 0 0);--tw-prose-captions:oklch(55.6% 0 0);--tw-prose-kbd:oklch(20.5% 0 0);--tw-prose-kbd-shadows:NaN NaN NaN;--tw-prose-code:oklch(20.5% 0 0);--tw-prose-pre-code:oklch(92.2% 0 0);--tw-prose-pre-bg:oklch(26.9% 0 0);--tw-prose-th-borders:oklch(87% 0 0);--tw-prose-td-borders:oklch(92.2% 0 0);--tw-prose-invert-body:oklch(87% 0 0);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.8% 0 0);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.8% 0 0);--tw-prose-invert-bullets:oklch(43.9% 0 0);--tw-prose-invert-hr:oklch(37.1% 0 0);--tw-prose-invert-quotes:oklch(97% 0 0);--tw-prose-invert-quote-borders:oklch(37.1% 0 0);--tw-prose-invert-captions:oklch(70.8% 0 0);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87% 0 0);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(43.9% 0 0);--tw-prose-invert-td-borders:oklch(37.1% 0 0)}@media (hover:hover){.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:border-slate-700:hover{border-color:var(--color-slate-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:text-gray-800:hover{color:var(--color-gray-800)}.hover\:text-sky-400:hover{color:var(--color-sky-400)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}@media (min-width:40rem){.sm\:h-80{height:calc(var(--spacing)*80)}.sm\:w-80{width:calc(var(--spacing)*80)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:rounded-full{border-radius:3.40282e38px}}@media (min-width:48rem){.md\:mx-2{margin-inline:calc(var(--spacing)*2)}.md\:mt-0{margin-top:calc(var(--spacing)*0)}.md\:mb-6{margin-bottom:calc(var(--spacing)*6)}.md\:mb-12{margin-bottom:calc(var(--spacing)*12)}.md\:block{display:block}.md\:h-96{height:calc(var(--spacing)*96)}.md\:h-screen{height:100vh}.md\:w-1\/2{width:50%}.md\:w-2\/5{width:40%}.md\:w-4\/12{width:33.3333%}.md\:w-6\/12{width:50%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:justify-between{justify-content:space-between}.md\:justify-start{justify-content:flex-start}.md\:px-4{padding-inline:calc(var(--spacing)*4)}.md\:py-0{padding-block:calc(var(--spacing)*0)}.md\:py-16{padding-block:calc(var(--spacing)*16)}.md\:text-left{text-align:left}.md\:text-right{text-align:right}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.md\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}@media (min-width:64rem){.lg\:w-4\/12{width:33.3333%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:pt-\[90px\]{padding-top:90px}.lg\:pt-\[120px\]{padding-top:120px}.lg\:pb-20{padding-bottom:calc(var(--spacing)*20)}}.dark\:hidden:is(.dark *){display:none}.dark\:inline:is(.dark *){display:inline}.dark\:border-0:is(.dark *){border-style:var(--tw-border-style);border-width:0}.dark\:border-neutral-700:is(.dark *){border-color:var(--color-neutral-700)}.dark\:bg-neutral-950:is(.dark *){background-color:var(--color-neutral-950)}.dark\:text-neutral-50:is(.dark *){color:var(--color-neutral-50)}.dark\:text-neutral-100:is(.dark *){color:var(--color-neutral-100)}.dark\:text-neutral-200:is(.dark *){color:var(--color-neutral-200)}.dark\:text-neutral-300:is(.dark *){color:var(--color-neutral-300)}.dark\:text-zinc-300:is(.dark *){color:var(--color-zinc-300)}.dark\:invert:is(.dark *){--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}@media (hover:hover){.dark\:hover\:text-slate-200:is(.dark *):hover{color:var(--color-slate-200)}}.prose-h1\:mb-1 :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:calc(var(--spacing)*1)}.prose-h1\:text-4xl :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.prose-h1\:text-5xl :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.prose-h2\:text-3xl :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.prose-img\:rounded-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius-lg)}}@keyframes gentle-bounce{0%{transform:translateY(0)}50%{transform:translateY(-3px)}to{transform:translateY(0)}}a.gentle-clicked{animation:.3s ease-out gentle-bounce}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
data/assets/css/style.css CHANGED
@@ -1,6 +1,48 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
1
+ @import 'tailwindcss';
2
+
3
+ @plugin '@tailwindcss/typography';
4
+
5
+ @custom-variant dark (&:is(.dark *));
6
+
7
+ @theme {
8
+ --font-*: initial;
9
+ --font-sans: Raleway;
10
+ --font-mulish: Mulish;
11
+ }
12
+
13
+ @utility container {
14
+ padding-inline: 1rem;
15
+ @media (width >= theme(--breakpoint-sm)) {
16
+ padding-inline: 2rem;
17
+ }
18
+ @media (width >= theme(--breakpoint-lg)) {
19
+ padding-inline: 4rem;
20
+ }
21
+ @media (width >= theme(--breakpoint-xl)) {
22
+ padding-inline: 5rem;
23
+ }
24
+ @media (width >= theme(--breakpoint-2xl)) {
25
+ padding-inline: 6rem;
26
+ }
27
+ }
28
+
29
+ /*
30
+ The default border color has changed to `currentcolor` in Tailwind CSS v4,
31
+ so we've added these compatibility styles to make sure everything still
32
+ looks the same as it did with Tailwind CSS v3.
33
+
34
+ If we ever want to remove these styles, we need to add an explicit border
35
+ color utility to any element that depends on these defaults.
36
+ */
37
+ @layer base {
38
+ *,
39
+ ::after,
40
+ ::before,
41
+ ::backdrop,
42
+ ::file-selector-button {
43
+ border-color: var(--color-gray-200, currentcolor);
44
+ }
45
+ }
4
46
 
5
47
  @keyframes gentle-bounce {
6
48
  0% {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awesome-jekyll-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - a-chacon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-06-22 00:00:00.000000000 Z
11
+ date: 2025-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -113,8 +113,6 @@ files:
113
113
  - assets/images/logo.avif
114
114
  - assets/images/main.avif
115
115
  - assets/js/dot-navigation.js
116
- - assets/js/scroll-navigation.js
117
- - assets/js/scrolldown-effect.js
118
116
  homepage: https://github.com/a-chacon/awesome-jekyll-portfolio
119
117
  licenses:
120
118
  - MIT
@@ -1,59 +0,0 @@
1
- // scroll-navigation.js
2
-
3
- document.addEventListener("DOMContentLoaded", function () {
4
- let scrollThreshold = 200; // Pixels scrolled before triggering scroll to the next section
5
- let scrollTimeout;
6
- let lastScrollTop = 0;
7
-
8
- // Get all section elements
9
- const sections = Array.from(document.querySelectorAll("section"));
10
-
11
- // Function to scroll smoothly to a specific section
12
- function scrollToSection(section) {
13
- if (section) {
14
- window.scrollTo({
15
- top: section.offsetTop,
16
- behavior: "smooth",
17
- });
18
- }
19
- }
20
-
21
- // Function to handle scrolling behavior
22
- function onScroll() {
23
- const scrollTop = window.scrollY;
24
-
25
- if (scrollTop - lastScrollTop > scrollThreshold) {
26
- // User has scrolled down past the threshold
27
- let currentIndex = sections.findIndex((section) => {
28
- return section.getBoundingClientRect().top + window.scrollY > scrollTop;
29
- });
30
-
31
- if (currentIndex > 0) {
32
- // Scroll to the next section
33
- scrollToSection(sections[currentIndex]);
34
- }
35
- lastScrollTop = scrollTop;
36
- } else if (lastScrollTop - scrollTop > scrollThreshold) {
37
- // User has scrolled up past the threshold
38
- let currentIndex = sections.findIndex((section) => {
39
- return (
40
- section.getBoundingClientRect().top + window.scrollY <= scrollTop
41
- );
42
- });
43
-
44
- if (currentIndex > 0) {
45
- // Scroll to the previous section
46
- scrollToSection(sections[currentIndex - 1]);
47
- }
48
- lastScrollTop = scrollTop;
49
- }
50
-
51
- // Reset timeout to prevent excessive function calls
52
- clearTimeout(scrollTimeout);
53
- scrollTimeout = setTimeout(() => {
54
- lastScrollTop = window.scrollY;
55
- }, 100);
56
- }
57
-
58
- window.addEventListener("scroll", onScroll);
59
- });
@@ -1,42 +0,0 @@
1
- let userScrolled = false;
2
-
3
- // Function to detect user scrolling
4
- window.addEventListener("scroll", function () {
5
- userScrolled = true; // Set to true if the user scrolls
6
- });
7
-
8
- // Function to trigger the scroll hint
9
- function scrollDownHint(times = 1, distance = 150, interval = 1000) {
10
- let count = 0;
11
- let scrollPosition = window.scrollY;
12
-
13
- function animateScroll() {
14
- if (count < times && !userScrolled) {
15
- window.scrollTo({
16
- top: scrollPosition + distance,
17
- behavior: "smooth",
18
- });
19
-
20
- setTimeout(() => {
21
- window.scrollTo({
22
- top: scrollPosition,
23
- behavior: "smooth",
24
- });
25
- }, interval / 2);
26
-
27
- count++;
28
- setTimeout(animateScroll, interval);
29
- }
30
- }
31
-
32
- animateScroll();
33
- }
34
-
35
- // Trigger the scroll hint only if the user hasn't scrolled within 3 seconds
36
- window.onload = function () {
37
- setTimeout(() => {
38
- if (!userScrolled) {
39
- scrollDownHint();
40
- }
41
- }, 3000); // Wait for 3 seconds before triggering the scroll hint
42
- };