nibula 1.2.4 → 1.2.6
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.
- package/.eleventy.js +81 -81
- package/.eleventyignore +3 -3
- package/.github/workflows/publish.yml +37 -0
- package/CHANGELOG.md +179 -148
- package/LICENSE +169 -169
- package/NOTICE +4 -4
- package/README.md +120 -123
- package/bin/create.js +507 -507
- package/bin/nibula.js +317 -305
- package/docs/Assistant CLI.md +65 -65
- package/docs/Backend.md +295 -295
- package/docs/Components.md +84 -84
- package/docs/Creating pages.md +64 -64
- package/docs/Deploy.md +189 -189
- package/docs/Head and SEO.md +138 -138
- package/docs/Javascript.md +50 -50
- package/docs/Styling with SCSS.md +141 -141
- package/nginx.conf +75 -75
- package/package.json +1 -1
- package/src/backend/.htaccess +6 -6
- package/src/backend/_core/composer.json +5 -5
- package/src/backend/_core/composer.lock +492 -492
- package/src/backend/_core/index.js +267 -267
- package/src/backend/_core/index.php +147 -147
- package/src/backend/_core/init.js +52 -52
- package/src/backend/_core/init.php +33 -33
- package/src/backend/_core/modules/RateLimiter.js +58 -58
- package/src/backend/_core/modules/RateLimiter.php +30 -30
- package/src/backend/_core/modules/Response.js +59 -59
- package/src/backend/_core/modules/Response.php +48 -48
- package/src/backend/api/protected/example-protected.js +23 -23
- package/src/backend/api/protected/example-protected.php +16 -16
- package/src/backend/api/public/example-public.js +24 -24
- package/src/backend/api/public/example-public.php +16 -16
- package/src/backend/backend-node.service.example +30 -30
- package/src/backend/database/Database.js +46 -46
- package/src/backend/database/Database.php +23 -23
- package/src/backend/example.config.js +37 -37
- package/src/backend/example.config.php +27 -27
- package/src/backend/package.json +18 -18
- package/src/backend/web.config +16 -16
- package/src/frontend/.htaccess +51 -51
- package/src/frontend/404.njk +17 -17
- package/src/frontend/assets/brand/favicon.svg +54 -54
- package/src/frontend/assets/brand/logo.svg +54 -54
- package/src/frontend/components/global/footer.njk +25 -25
- package/src/frontend/components/global/header.njk +6 -6
- package/src/frontend/components/welcome.njk +114 -114
- package/src/frontend/data/site.json +48 -48
- package/src/frontend/index.njk +8 -8
- package/src/frontend/js/modules/exampleModule.js +2 -2
- package/src/frontend/js/pages/404.js +6 -6
- package/src/frontend/js/pages/homepage.js +6 -6
- package/src/frontend/layouts/base.njk +132 -132
- package/src/frontend/layouts/page-components.njk +13 -13
- package/src/frontend/llms.njk +17 -17
- package/src/frontend/robots.njk +7 -7
- package/src/frontend/scss/modules/_animations.scss +24 -24
- package/src/frontend/scss/modules/_footer.scss +27 -27
- package/src/frontend/scss/modules/_global.scss +47 -47
- package/src/frontend/scss/modules/_header.scss +27 -27
- package/src/frontend/scss/modules/_mobile.scss +29 -29
- package/src/frontend/scss/modules/_root.scss +34 -34
- package/src/frontend/scss/modules/_typography.scss +14 -14
- package/src/frontend/scss/modules/frameworks/_bootstrap.scss +109 -109
- package/src/frontend/scss/modules/frameworks/_bulma.scss +108 -108
- package/src/frontend/scss/modules/frameworks/_foundation.scss +138 -139
- package/src/frontend/scss/modules/frameworks/_uikit.scss +109 -109
- package/src/frontend/scss/pages/404.scss +27 -27
- package/src/frontend/scss/pages/homepage.scss +22 -22
- package/src/frontend/sitemap.njk +17 -17
- package/src/frontend/ts/modules/exampleModule.ts +2 -2
- package/src/frontend/ts/pages/404.ts +6 -6
- package/src/frontend/ts/pages/homepage.ts +6 -6
- package/src/frontend/web.config +55 -55
- package/tools/config/messages.json +3 -1
- package/tools/res/templates/template.js +6 -6
- package/tools/res/templates/template.njk +8 -8
- package/tools/res/templates/template.scss +22 -22
- package/tools/res/templates/template.ts +6 -6
- package/tsconfig.json +24 -24
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
---
|
|
2
|
-
layout: base.njk
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
<!-- NJK (HTML) components per page -->
|
|
6
|
-
|
|
7
|
-
{% if title == "homepage" %}
|
|
8
|
-
{% include "welcome.njk" ignore missing %}
|
|
9
|
-
|
|
10
|
-
{% else %}
|
|
11
|
-
<!-- You should not touch this else statement -->
|
|
12
|
-
{% include "404/_404.njk" %}
|
|
13
|
-
{{ content | safe }}
|
|
1
|
+
---
|
|
2
|
+
layout: base.njk
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<!-- NJK (HTML) components per page -->
|
|
6
|
+
|
|
7
|
+
{% if title == "homepage" %}
|
|
8
|
+
{% include "welcome.njk" ignore missing %}
|
|
9
|
+
|
|
10
|
+
{% else %}
|
|
11
|
+
<!-- You should not touch this else statement -->
|
|
12
|
+
{% include "404/_404.njk" %}
|
|
13
|
+
{{ content | safe }}
|
|
14
14
|
{% endif %}
|
package/src/frontend/llms.njk
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
---
|
|
2
|
-
permalink: /llms.txt
|
|
3
|
-
eleventyExcludeFromCollections: true
|
|
4
|
-
---
|
|
5
|
-
# {{ site.site_name }}
|
|
6
|
-
|
|
7
|
-
> {{ site.description }}
|
|
8
|
-
|
|
9
|
-
Built by {{ site.author }} — {{ site.url }}
|
|
10
|
-
|
|
11
|
-
## Pages
|
|
12
|
-
|
|
13
|
-
- {{ site.url }}: Homepage
|
|
14
|
-
|
|
15
|
-
## Notes
|
|
16
|
-
|
|
17
|
-
- Language: {{ site.lang }}
|
|
1
|
+
---
|
|
2
|
+
permalink: /llms.txt
|
|
3
|
+
eleventyExcludeFromCollections: true
|
|
4
|
+
---
|
|
5
|
+
# {{ site.site_name }}
|
|
6
|
+
|
|
7
|
+
> {{ site.description }}
|
|
8
|
+
|
|
9
|
+
Built by {{ site.author }} — {{ site.url }}
|
|
10
|
+
|
|
11
|
+
## Pages
|
|
12
|
+
|
|
13
|
+
- {{ site.url }}: Homepage
|
|
14
|
+
|
|
15
|
+
## Notes
|
|
16
|
+
|
|
17
|
+
- Language: {{ site.lang }}
|
|
18
18
|
- All content may be used for AI indexing unless otherwise stated
|
package/src/frontend/robots.njk
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
---
|
|
2
|
-
permalink: /robots.txt
|
|
3
|
-
eleventyExcludeFromCollections: true
|
|
4
|
-
---
|
|
5
|
-
Sitemap: {{ site.url }}/sitemap.xml
|
|
6
|
-
|
|
7
|
-
User-agent: *
|
|
1
|
+
---
|
|
2
|
+
permalink: /robots.txt
|
|
3
|
+
eleventyExcludeFromCollections: true
|
|
4
|
+
---
|
|
5
|
+
Sitemap: {{ site.url }}/sitemap.xml
|
|
6
|
+
|
|
7
|
+
User-agent: *
|
|
8
8
|
Disallow:
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
//==========================
|
|
2
|
-
// CSS RULES FOR ANIMATIONS
|
|
3
|
-
//==========================
|
|
4
|
-
|
|
5
|
-
// Getting root rules from _root.scss
|
|
6
|
-
@use 'root' as root;
|
|
7
|
-
|
|
8
|
-
.fade-in {
|
|
9
|
-
animation: fadeIn 1s;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
@keyframes fadeIn {
|
|
13
|
-
from {
|
|
14
|
-
opacity: 0;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
to {
|
|
18
|
-
opacity: 1;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
@keyframes spin {
|
|
23
|
-
from { transform: rotate(0deg); }
|
|
24
|
-
to { transform: rotate(360deg); }
|
|
1
|
+
//==========================
|
|
2
|
+
// CSS RULES FOR ANIMATIONS
|
|
3
|
+
//==========================
|
|
4
|
+
|
|
5
|
+
// Getting root rules from _root.scss
|
|
6
|
+
@use 'root' as root;
|
|
7
|
+
|
|
8
|
+
.fade-in {
|
|
9
|
+
animation: fadeIn 1s;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@keyframes fadeIn {
|
|
13
|
+
from {
|
|
14
|
+
opacity: 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
to {
|
|
18
|
+
opacity: 1;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@keyframes spin {
|
|
23
|
+
from { transform: rotate(0deg); }
|
|
24
|
+
to { transform: rotate(360deg); }
|
|
25
25
|
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
//==========================
|
|
2
|
-
// CSS RULES FOR FOOTER
|
|
3
|
-
//==========================
|
|
4
|
-
|
|
5
|
-
@use 'root' as root;
|
|
6
|
-
|
|
7
|
-
footer {
|
|
8
|
-
display: flex;
|
|
9
|
-
justify-content: space-around;
|
|
10
|
-
width: 100%;
|
|
11
|
-
padding: root.$header-padding-y root.$header-padding-x;
|
|
12
|
-
background-color: #2e7253;
|
|
13
|
-
|
|
14
|
-
h6 {
|
|
15
|
-
margin-bottom: 0.75rem;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
ul {
|
|
19
|
-
list-style: none;
|
|
20
|
-
padding: 0;
|
|
21
|
-
margin: 0;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
small {
|
|
25
|
-
display: flex;
|
|
26
|
-
gap: 1rem;
|
|
27
|
-
}
|
|
1
|
+
//==========================
|
|
2
|
+
// CSS RULES FOR FOOTER
|
|
3
|
+
//==========================
|
|
4
|
+
|
|
5
|
+
@use 'root' as root;
|
|
6
|
+
|
|
7
|
+
footer {
|
|
8
|
+
display: flex;
|
|
9
|
+
justify-content: space-around;
|
|
10
|
+
width: 100%;
|
|
11
|
+
padding: root.$header-padding-y root.$header-padding-x;
|
|
12
|
+
background-color: #2e7253;
|
|
13
|
+
|
|
14
|
+
h6 {
|
|
15
|
+
margin-bottom: 0.75rem;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
ul {
|
|
19
|
+
list-style: none;
|
|
20
|
+
padding: 0;
|
|
21
|
+
margin: 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
small {
|
|
25
|
+
display: flex;
|
|
26
|
+
gap: 1rem;
|
|
27
|
+
}
|
|
28
28
|
}
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
//==========================
|
|
2
|
-
// CSS RULES FOR THE ENTIRE SITE
|
|
3
|
-
//==========================
|
|
4
|
-
|
|
5
|
-
// Getting root rules from _root.scss
|
|
6
|
-
@use 'root' as root;
|
|
7
|
-
|
|
8
|
-
// Frameworks imports
|
|
9
|
-
@import "../modules/frameworks/bootstrap";
|
|
10
|
-
// @import "../modules/frameworks/bulma";
|
|
11
|
-
// @import "../modules/frameworks/foundation";
|
|
12
|
-
// @import "../modules/frameworks/uikit";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// Modules imports
|
|
16
|
-
@import "typography";
|
|
17
|
-
|
|
18
|
-
@import "header";
|
|
19
|
-
@import "footer";
|
|
20
|
-
|
|
21
|
-
@import "animations";
|
|
22
|
-
@import "mobile";
|
|
23
|
-
|
|
24
|
-
//==========================
|
|
25
|
-
// Global css rules for the entire site
|
|
26
|
-
//==========================
|
|
27
|
-
|
|
28
|
-
*,
|
|
29
|
-
*::before,
|
|
30
|
-
*::after {
|
|
31
|
-
margin: 0;
|
|
32
|
-
padding: 0;
|
|
33
|
-
box-sizing: border-box;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
body {
|
|
37
|
-
display: flex;
|
|
38
|
-
flex-direction: column;
|
|
39
|
-
min-height: 100svh;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
main {
|
|
43
|
-
flex: 1;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
a {
|
|
47
|
-
text-decoration: none !important;
|
|
1
|
+
//==========================
|
|
2
|
+
// CSS RULES FOR THE ENTIRE SITE
|
|
3
|
+
//==========================
|
|
4
|
+
|
|
5
|
+
// Getting root rules from _root.scss
|
|
6
|
+
@use 'root' as root;
|
|
7
|
+
|
|
8
|
+
// Frameworks imports
|
|
9
|
+
@import "../modules/frameworks/bootstrap";
|
|
10
|
+
// @import "../modules/frameworks/bulma";
|
|
11
|
+
// @import "../modules/frameworks/foundation";
|
|
12
|
+
// @import "../modules/frameworks/uikit";
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
// Modules imports
|
|
16
|
+
@import "typography";
|
|
17
|
+
|
|
18
|
+
@import "header";
|
|
19
|
+
@import "footer";
|
|
20
|
+
|
|
21
|
+
@import "animations";
|
|
22
|
+
@import "mobile";
|
|
23
|
+
|
|
24
|
+
//==========================
|
|
25
|
+
// Global css rules for the entire site
|
|
26
|
+
//==========================
|
|
27
|
+
|
|
28
|
+
*,
|
|
29
|
+
*::before,
|
|
30
|
+
*::after {
|
|
31
|
+
margin: 0;
|
|
32
|
+
padding: 0;
|
|
33
|
+
box-sizing: border-box;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
body {
|
|
37
|
+
display: flex;
|
|
38
|
+
flex-direction: column;
|
|
39
|
+
min-height: 100svh;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
main {
|
|
43
|
+
flex: 1;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
a {
|
|
47
|
+
text-decoration: none !important;
|
|
48
48
|
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
//==========================
|
|
2
|
-
// CSS RULES FOR HEADER
|
|
3
|
-
//==========================
|
|
4
|
-
|
|
5
|
-
// Getting root rules from _root.scss
|
|
6
|
-
@use 'root' as root;
|
|
7
|
-
|
|
8
|
-
header {
|
|
9
|
-
height: root.$header-height;
|
|
10
|
-
width: 100%;
|
|
11
|
-
display: flex;
|
|
12
|
-
justify-content: center;
|
|
13
|
-
align-items: center;
|
|
14
|
-
padding: root.$header-padding-y root.$header-padding-x;
|
|
15
|
-
background-color: root.$primary;
|
|
16
|
-
background-color: #2e7253;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
nav {
|
|
20
|
-
display: flex;
|
|
21
|
-
justify-content: space-between;
|
|
22
|
-
align-items: center;
|
|
23
|
-
width: 100%;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
nav .logo {
|
|
27
|
-
padding: 10px;
|
|
1
|
+
//==========================
|
|
2
|
+
// CSS RULES FOR HEADER
|
|
3
|
+
//==========================
|
|
4
|
+
|
|
5
|
+
// Getting root rules from _root.scss
|
|
6
|
+
@use 'root' as root;
|
|
7
|
+
|
|
8
|
+
header {
|
|
9
|
+
height: root.$header-height;
|
|
10
|
+
width: 100%;
|
|
11
|
+
display: flex;
|
|
12
|
+
justify-content: center;
|
|
13
|
+
align-items: center;
|
|
14
|
+
padding: root.$header-padding-y root.$header-padding-x;
|
|
15
|
+
background-color: root.$primary;
|
|
16
|
+
background-color: #2e7253;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
nav {
|
|
20
|
+
display: flex;
|
|
21
|
+
justify-content: space-between;
|
|
22
|
+
align-items: center;
|
|
23
|
+
width: 100%;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
nav .logo {
|
|
27
|
+
padding: 10px;
|
|
28
28
|
}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
//==========================
|
|
2
|
-
// CSS RULES FOR RESPONSIVE
|
|
3
|
-
//==========================
|
|
4
|
-
|
|
5
|
-
// Getting root rules from _root.scss
|
|
6
|
-
@use 'root' as root;
|
|
7
|
-
|
|
8
|
-
//==========================
|
|
9
|
-
// MEDIA QUERIES
|
|
10
|
-
//==========================
|
|
11
|
-
|
|
12
|
-
@media (max-width: 1400px) {
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
@media (max-width: 1200px) {
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
@media (max-width: 992px) {
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
@media (max-width: 768px) {
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
@media (max-width: 576px) {
|
|
29
|
-
|
|
1
|
+
//==========================
|
|
2
|
+
// CSS RULES FOR RESPONSIVE
|
|
3
|
+
//==========================
|
|
4
|
+
|
|
5
|
+
// Getting root rules from _root.scss
|
|
6
|
+
@use 'root' as root;
|
|
7
|
+
|
|
8
|
+
//==========================
|
|
9
|
+
// MEDIA QUERIES
|
|
10
|
+
//==========================
|
|
11
|
+
|
|
12
|
+
@media (max-width: 1400px) {
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@media (max-width: 1200px) {
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@media (max-width: 992px) {
|
|
21
|
+
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@media (max-width: 768px) {
|
|
25
|
+
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@media (max-width: 576px) {
|
|
29
|
+
|
|
30
30
|
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
// NOTE: This file contains only Sass variables (no CSS output).
|
|
2
|
-
// When imported with @import, all variables are global and may be
|
|
3
|
-
// overwritten by other imported files with the same variable names.
|
|
4
|
-
// Use @use 'root' as root; to avoid namespace collisions.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
//==========================
|
|
8
|
-
// STRUCTURE
|
|
9
|
-
//==========================
|
|
10
|
-
$header-height: 10vh;
|
|
11
|
-
$header-padding-y: 15px;
|
|
12
|
-
$header-padding-x: 15px;
|
|
13
|
-
|
|
14
|
-
//==========================
|
|
15
|
-
// COLORS — BASE
|
|
16
|
-
//==========================
|
|
17
|
-
$primary: rgba(0, 0, 0, 0.5);
|
|
18
|
-
$secondary: #a3dcff;
|
|
19
|
-
$accent: #f9a8c9;
|
|
20
|
-
|
|
21
|
-
//==========================
|
|
22
|
-
// COLORS — NEUTRALS
|
|
23
|
-
//==========================
|
|
24
|
-
$white: #ffffff;
|
|
25
|
-
$light: #f5f5f5;
|
|
26
|
-
$muted: #888888;
|
|
27
|
-
$dark: #2d2d2d;
|
|
28
|
-
|
|
29
|
-
//==========================
|
|
30
|
-
// COLORS — SEMANTIC
|
|
31
|
-
//==========================
|
|
32
|
-
$success: #198754;
|
|
33
|
-
$warning: #ffc107;
|
|
34
|
-
$danger: #dc3545;
|
|
1
|
+
// NOTE: This file contains only Sass variables (no CSS output).
|
|
2
|
+
// When imported with @import, all variables are global and may be
|
|
3
|
+
// overwritten by other imported files with the same variable names.
|
|
4
|
+
// Use @use 'root' as root; to avoid namespace collisions.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
//==========================
|
|
8
|
+
// STRUCTURE
|
|
9
|
+
//==========================
|
|
10
|
+
$header-height: 10vh;
|
|
11
|
+
$header-padding-y: 15px;
|
|
12
|
+
$header-padding-x: 15px;
|
|
13
|
+
|
|
14
|
+
//==========================
|
|
15
|
+
// COLORS — BASE
|
|
16
|
+
//==========================
|
|
17
|
+
$primary: rgba(0, 0, 0, 0.5);
|
|
18
|
+
$secondary: #a3dcff;
|
|
19
|
+
$accent: #f9a8c9;
|
|
20
|
+
|
|
21
|
+
//==========================
|
|
22
|
+
// COLORS — NEUTRALS
|
|
23
|
+
//==========================
|
|
24
|
+
$white: #ffffff;
|
|
25
|
+
$light: #f5f5f5;
|
|
26
|
+
$muted: #888888;
|
|
27
|
+
$dark: #2d2d2d;
|
|
28
|
+
|
|
29
|
+
//==========================
|
|
30
|
+
// COLORS — SEMANTIC
|
|
31
|
+
//==========================
|
|
32
|
+
$success: #198754;
|
|
33
|
+
$warning: #ffc107;
|
|
34
|
+
$danger: #dc3545;
|
|
35
35
|
$info: #0dcaf0;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
// Getting root rules from _root.scss
|
|
2
|
-
@use "root" as root;
|
|
3
|
-
|
|
4
|
-
html {
|
|
5
|
-
font-size: 16px;
|
|
6
|
-
scroll-behavior: smooth;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
body {
|
|
10
|
-
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
a {
|
|
14
|
-
text-decoration: none;
|
|
1
|
+
// Getting root rules from _root.scss
|
|
2
|
+
@use "root" as root;
|
|
3
|
+
|
|
4
|
+
html {
|
|
5
|
+
font-size: 16px;
|
|
6
|
+
scroll-behavior: smooth;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
body {
|
|
10
|
+
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
a {
|
|
14
|
+
text-decoration: none;
|
|
15
15
|
}
|