@jctrejosi/components-seed 1.0.1
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/.prettierrc +13 -0
- package/README.md +186 -0
- package/bundle/components/index.d.ts +5 -0
- package/bundle/components/portfolios/ContactForm/Andromeda/ContactFormAndromeda.stories.d.ts +5 -0
- package/bundle/components/portfolios/ContactForm/Andromeda/defaults.d.ts +3 -0
- package/bundle/components/portfolios/ContactForm/Andromeda/index.d.ts +2 -0
- package/bundle/components/portfolios/ContactForm/Andromeda/translations.d.ts +38 -0
- package/bundle/components/portfolios/ContactForm/Andromeda/types.d.ts +4 -0
- package/bundle/components/portfolios/HeroSection/Andromeda/HeroSectionAndromeda.stories.d.ts +5 -0
- package/bundle/components/portfolios/HeroSection/Andromeda/defaults.d.ts +3 -0
- package/bundle/components/portfolios/HeroSection/Andromeda/index.d.ts +2 -0
- package/bundle/components/portfolios/HeroSection/Andromeda/translations.d.ts +27 -0
- package/bundle/components/portfolios/HeroSection/Andromeda/types.d.ts +5 -0
- package/bundle/components/portfolios/IntroductionSection/Andromeda/IntroductionSectionAndromeda.stories.d.ts +5 -0
- package/bundle/components/portfolios/IntroductionSection/Andromeda/defaults.d.ts +3 -0
- package/bundle/components/portfolios/IntroductionSection/Andromeda/index.d.ts +2 -0
- package/bundle/components/portfolios/IntroductionSection/Andromeda/translations.d.ts +33 -0
- package/bundle/components/portfolios/IntroductionSection/Andromeda/types.d.ts +2 -0
- package/bundle/components/portfolios/WorkSection/Andromeda/WorkSectionAndromeda.stories.d.ts +5 -0
- package/bundle/components/portfolios/WorkSection/Andromeda/defaults.d.ts +3 -0
- package/bundle/components/portfolios/WorkSection/Andromeda/index.d.ts +2 -0
- package/bundle/components/portfolios/WorkSection/Andromeda/translations.d.ts +12 -0
- package/bundle/components/portfolios/WorkSection/Andromeda/types.d.ts +12 -0
- package/bundle/components/ui/ScrollSnap/Andromeda/ScrollSnapAndromeda.stories.d.ts +5 -0
- package/bundle/components/ui/ScrollSnap/Andromeda/defaults.d.ts +3 -0
- package/bundle/components/ui/ScrollSnap/Andromeda/index.d.ts +2 -0
- package/bundle/components/ui/ScrollSnap/Andromeda/types.d.ts +9 -0
- package/bundle/index.css +1 -0
- package/bundle/index.d.ts +3 -0
- package/bundle/index.es.js +811 -0
- package/bundle/index.umd.js +23 -0
- package/bundle/types/index.d.ts +6 -0
- package/bundle/types/props-components.d.ts +6 -0
- package/bundle/utils/index.d.ts +1 -0
- package/bundle/utils/returnTranslations.d.ts +2 -0
- package/eslint.config.js +55 -0
- package/package.json +81 -0
package/.prettierrc
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"semi": false,
|
|
3
|
+
"singleQuote": true,
|
|
4
|
+
"jsxSingleQuote": false,
|
|
5
|
+
"trailingComma": "es5",
|
|
6
|
+
"printWidth": 80,
|
|
7
|
+
"tabWidth": 2,
|
|
8
|
+
"useTabs": false,
|
|
9
|
+
"bracketSpacing": true,
|
|
10
|
+
"arrowParens": "always",
|
|
11
|
+
"endOfLine": "lf",
|
|
12
|
+
"proseWrap": "always"
|
|
13
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# components-seed
|
|
2
|
+
|
|
3
|
+
Librería de componentes React (variantes por *constelación*) para portafolios y landing pages. Componentes modulares, estilizados con **CSS variables** (`var(--...)`), listos para consumir desde otros proyectos y para publicar en npm.
|
|
4
|
+
|
|
5
|
+
------
|
|
6
|
+
|
|
7
|
+
## Qué hace
|
|
8
|
+
|
|
9
|
+
- Exporta componentes listos (`HeroSectionAndromeda`, `ContactFormAndromeda`, `ScrollSnapAndromeda`, `WorkSectionAndromeda`, etc.).
|
|
10
|
+
- Estilos por componente; uso intensivo de `var(--...)` para tematización.
|
|
11
|
+
- Incluye carpeta `bundle/` con los builds compilados (`index.css`, `index.es.js`, `index.umd.js`).
|
|
12
|
+
- Script TypeScript `scripts/update-css-vars.ts` que inserta en cada `.css` un comentario inicial con las variables `--xxx` usadas (documentación automática).
|
|
13
|
+
|
|
14
|
+
------
|
|
15
|
+
|
|
16
|
+
## Instalación
|
|
17
|
+
|
|
18
|
+
### Desde npm (consumidor)
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
npm install components-seed
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### En desarrollo (usar el paquete local)
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
# en la librería
|
|
28
|
+
npm install
|
|
29
|
+
npm link
|
|
30
|
+
npm run bundle:watch # mantiene a la escucha para generar /bundle
|
|
31
|
+
# en el proyecto consumidor
|
|
32
|
+
npm link components-seed
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
------
|
|
36
|
+
|
|
37
|
+
## Ejemplo de uso
|
|
38
|
+
|
|
39
|
+
Importa los estilos de la librería en el main.tsx
|
|
40
|
+
|
|
41
|
+
```react
|
|
42
|
+
import 'components-seed/bundle/index.css'
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Importa un componente desde la librería
|
|
46
|
+
|
|
47
|
+
```react
|
|
48
|
+
import { ExampleComponent } from 'components-seed'
|
|
49
|
+
|
|
50
|
+
export const Home = () => (
|
|
51
|
+
<ExampleComponent someProp="value" />
|
|
52
|
+
)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Recuerda:** las variables CSS globales (`:root { --base-color-7: ... }`) deben definirse en el proyecto para que los colores concuerden.
|
|
56
|
+
|
|
57
|
+
------
|
|
58
|
+
|
|
59
|
+
## Estructura del proyecto
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
.
|
|
63
|
+
├── bundle
|
|
64
|
+
│ ├── index.css
|
|
65
|
+
│ ├── index.es.js
|
|
66
|
+
│ └── index.umd.js
|
|
67
|
+
├── src
|
|
68
|
+
│ ├── components
|
|
69
|
+
│ │ ├── ContactForm(Type-Component)
|
|
70
|
+
│ │ │ └── Andromeda(Constelation-Name)
|
|
71
|
+
│ │ │ ├── index.tsx
|
|
72
|
+
│ │ │ └── styles.module.css
|
|
73
|
+
│ └── index.ts
|
|
74
|
+
├── scripts
|
|
75
|
+
│ ├── generate-components-index.ts
|
|
76
|
+
│ ├── generate-types-index.ts
|
|
77
|
+
│ ├── generate-utils-index.ts
|
|
78
|
+
│ └── update-css-vars.ts
|
|
79
|
+
├── package.json
|
|
80
|
+
├── .prettierrc
|
|
81
|
+
└── eslint.config.js
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
------
|
|
85
|
+
|
|
86
|
+
## Scripts (`package.json`)
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"scripts": {
|
|
91
|
+
"dev": "vite",
|
|
92
|
+
"build": "tsc -b && vite build",
|
|
93
|
+
"preview": "vite preview",
|
|
94
|
+
"lint": "eslint . --ext .ts,.tsx --fix",
|
|
95
|
+
"lint:fix": "eslint . --fix",
|
|
96
|
+
"lint:css": "stylelint \"**/*.css\" --fix",
|
|
97
|
+
"format": "prettier --write .",
|
|
98
|
+
"generate:types": "ts-node ./src/scripts/generate-types-index.ts",
|
|
99
|
+
"generate:utils": "ts-node ./src/scripts/generate-utils-index.ts",
|
|
100
|
+
"generate:components": "ts-node ./src/scripts/generate-components-index.ts",
|
|
101
|
+
"comment-css-variables": "ts-node ./src/scripts/comment-css-variables.ts",
|
|
102
|
+
"generate-indexes": "ts-node ./src/scripts",
|
|
103
|
+
"bundle": "npm run generate-indexes && tsc -b && vite build",
|
|
104
|
+
"bundle:watch": "vite build --watch"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
------
|
|
110
|
+
|
|
111
|
+
## Publicar en npm
|
|
112
|
+
|
|
113
|
+
1. Ejecuta localmente:
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
npm run lint
|
|
117
|
+
npm run format
|
|
118
|
+
npm run bundle
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
2. Bump de versión:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
npm version patch
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
3. Login (si es necesario):
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
npm login
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
4. Publicar:
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
npm publish --access public
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
5. En proyecto consumidor:
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
npm install components-seed@X.Y.Z
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
------
|
|
146
|
+
|
|
147
|
+
## VS Code — configuración recomendada (pegar en `.vscode/` del workspace consumidor)
|
|
148
|
+
|
|
149
|
+
### `.vscode/settings.json`
|
|
150
|
+
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
|
|
154
|
+
"editor.formatOnSave": true,
|
|
155
|
+
"editor.codeActionsOnSave": {
|
|
156
|
+
"source.fixAll.eslint": "always",
|
|
157
|
+
"source.organizeImports": "always",
|
|
158
|
+
"source.removeUnusedImports": "always",
|
|
159
|
+
"source.sortImports": "always"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Notas VS Code**
|
|
165
|
+
|
|
166
|
+
- `prettier.configPath` apunta al `.prettierrc` dentro del paquete `components-seed` instalado. Esto unifica formato entre librería y consumidor.
|
|
167
|
+
- Si usas path-aliases en `tsconfig.json`, añade `eslint-import-resolver-typescript` para que ESLint resuelva importaciones.
|
|
168
|
+
|
|
169
|
+
------
|
|
170
|
+
|
|
171
|
+
## Buenas prácticas antes de publicar
|
|
172
|
+
|
|
173
|
+
1. `npm run lint && npm run format && npm run build && npm run comment-css-variables`.
|
|
174
|
+
2. Verifica `bundle/index.css` y builds (`index.es.js`, `index.umd.js`).
|
|
175
|
+
3. Prueba localmente instalando el paquete desde la ruta: `npm install /ruta/a/components-seed` y ejecuta el proyecto consumidor.
|
|
176
|
+
4. Mantén `prepublishOnly` para no olvidar pasos.
|
|
177
|
+
|
|
178
|
+
------
|
|
179
|
+
|
|
180
|
+
## Cómo añadir una nueva constelación (rápido)
|
|
181
|
+
|
|
182
|
+
1. Copia la carpeta base del componente (p. ej. `src/components/HeroSection/Andromeda`) → renombra `Antlia`.
|
|
183
|
+
2. Ajusta `index.tsx` y el `.css` correspondiente.
|
|
184
|
+
3. Ejecuta `npm run comment-css-variables`.
|
|
185
|
+
4. Ejecuta `npm run bundle`.
|
|
186
|
+
5. Bump version y publicar.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare const translationsSources: {
|
|
2
|
+
title: {
|
|
3
|
+
es: string;
|
|
4
|
+
en: string;
|
|
5
|
+
};
|
|
6
|
+
subtitle: {
|
|
7
|
+
es: string;
|
|
8
|
+
en: string;
|
|
9
|
+
};
|
|
10
|
+
label_name: {
|
|
11
|
+
es: string;
|
|
12
|
+
en: string;
|
|
13
|
+
};
|
|
14
|
+
label_email: {
|
|
15
|
+
es: string;
|
|
16
|
+
en: string;
|
|
17
|
+
};
|
|
18
|
+
label_message: {
|
|
19
|
+
es: string;
|
|
20
|
+
en: string;
|
|
21
|
+
};
|
|
22
|
+
placeholder_name: {
|
|
23
|
+
es: string;
|
|
24
|
+
en: string;
|
|
25
|
+
};
|
|
26
|
+
placeholder_email: {
|
|
27
|
+
es: string;
|
|
28
|
+
en: string;
|
|
29
|
+
};
|
|
30
|
+
placeholder_message: {
|
|
31
|
+
es: string;
|
|
32
|
+
en: string;
|
|
33
|
+
};
|
|
34
|
+
button: {
|
|
35
|
+
es: string;
|
|
36
|
+
en: string;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const translationsDefault: {
|
|
2
|
+
title_web: {
|
|
3
|
+
es: string;
|
|
4
|
+
en: string;
|
|
5
|
+
pt: string;
|
|
6
|
+
};
|
|
7
|
+
title_developer: {
|
|
8
|
+
es: string;
|
|
9
|
+
en: string;
|
|
10
|
+
pt: string;
|
|
11
|
+
};
|
|
12
|
+
subtitle: {
|
|
13
|
+
es: string;
|
|
14
|
+
en: string;
|
|
15
|
+
pt: string;
|
|
16
|
+
};
|
|
17
|
+
highlight_1: {
|
|
18
|
+
es: string;
|
|
19
|
+
en: string;
|
|
20
|
+
pt: string;
|
|
21
|
+
};
|
|
22
|
+
highlight_2: {
|
|
23
|
+
es: string;
|
|
24
|
+
en: string;
|
|
25
|
+
pt: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const translationsSources: {
|
|
2
|
+
hi_there: {
|
|
3
|
+
es: string;
|
|
4
|
+
en: string;
|
|
5
|
+
pt: string;
|
|
6
|
+
};
|
|
7
|
+
i_am: {
|
|
8
|
+
es: string;
|
|
9
|
+
en: string;
|
|
10
|
+
pt: string;
|
|
11
|
+
};
|
|
12
|
+
name: string;
|
|
13
|
+
developer_focus: {
|
|
14
|
+
es: string;
|
|
15
|
+
en: string;
|
|
16
|
+
pt: string;
|
|
17
|
+
};
|
|
18
|
+
enjoy_simplifying: {
|
|
19
|
+
es: string;
|
|
20
|
+
en: string;
|
|
21
|
+
pt: string;
|
|
22
|
+
};
|
|
23
|
+
digital_garden: {
|
|
24
|
+
es: string;
|
|
25
|
+
en: string;
|
|
26
|
+
pt: string;
|
|
27
|
+
};
|
|
28
|
+
find_me_on: {
|
|
29
|
+
es: string;
|
|
30
|
+
en: string;
|
|
31
|
+
pt: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BasePropComponents } from '../../../../types';
|
|
2
|
+
export type ItemWorkSection = {
|
|
3
|
+
name?: string;
|
|
4
|
+
logo?: string;
|
|
5
|
+
link?: {
|
|
6
|
+
url: string;
|
|
7
|
+
text: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export type WorkSectionAndromedaProps = BasePropComponents & {
|
|
11
|
+
items?: ItemWorkSection[];
|
|
12
|
+
};
|
package/bundle/index.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._wrapper_lsl1r_1{position:relative}._container_lsl1r_9{height:100vh;overflow-y:scroll;scroll-behavior:smooth;scroll-snap-type:y mandatory}._section_lsl1r_23{align-items:center;display:flex;height:100vh;justify-content:center;scroll-snap-align:start}._dots_lsl1r_39{align-items:flex-end;bottom:6rem;display:flex;flex-direction:column;gap:2rem;position:fixed;right:6rem;z-index:10}._dot_lsl1r_39{align-items:center;color:var(--dot-color);font-size:var(--link-size);cursor:pointer;display:flex;position:relative}._dotActive_lsl1r_79{color:var(--dot-active-color);text-decoration:underline}._dot_lsl1r_39:after{background-color:var(--dot-color);content:"";cursor:pointer;display:inline-block;height:12px;margin-left:.5rem;margin-top:.1rem;transform:rotate(45deg);transition:background .3s,transform .3s,border .3s;vertical-align:middle;width:12px}._dotActive_lsl1r_79:after{background-color:transparent;border:2px solid var(--dot-active-color);transform:rotate(0)}._container_b15b5_1{text-align:center;background-color:var(--bg-primary);display:flex;justify-content:center;align-items:center;width:100%;height:100%;background-repeat:no-repeat;background-size:cover;background-position:center;background-image:var(--bg-image, var(--bg-colored-patterns))}._workSection_b15b5_29{max-width:90rem}._title_b15b5_37{color:var(--title-color);font-size:2.5rem;font-weight:700;margin-bottom:.5rem}._subtitle_b15b5_51{color:var(--subtitle-color);font-size:1rem;margin-bottom:3rem}._grid_b15b5_63{display:flex;flex-wrap:wrap;gap:2rem;justify-content:center}._card_b15b5_77{background-color:var(--item-bg);border-radius:.75rem;box-shadow:0 4px 12px #0000000d;padding:2rem;text-align:center;transition:transform .2s;width:10rem}._card_b15b5_77:hover{transform:translateY(-4px)}._logo_b15b5_105{height:50px;margin-bottom:1rem;object-fit:contain;width:90%}._info_b15b5_119{align-items:center;display:flex;flex-direction:column}._info_b15b5_119 a{color:var(--link-color);font-size:.9rem;margin-top:1rem}._main_container_1czxf_1{background-repeat:no-repeat;background-size:cover;background-position:center;background-image:var(--bg-image, var(--bg-colored-shapes));display:flex;width:100%;height:100%;align-items:center;justify-content:center}._container_1czxf_25{background-color:var(--bg-container, var(--bg-primary));border-radius:12px;color:var(--text-color);margin:0 auto;max-width:700px;padding:6rem 4rem;text-align:left}._title_1czxf_45{font-size:var(--title-size);font-weight:700;margin-bottom:1rem}._paragraph_1czxf_57{color:var(--p-color, var(--text-color));font-size:var(--p-size, var(--text-size));line-height:1.7}._highlight_1czxf_69{color:var(--highlight-color, var(--text-color));font-weight:700}._social_1czxf_79{color:var(--social-color, var(--text-color));font-size:var(--social-size, 1rem);margin-top:2rem}._icons_1czxf_91{display:flex;font-size:1.4rem;gap:1rem;margin-top:.5rem}._icons_1czxf_91 a{color:var(--icon-color);transition:color .3s}._icons_1czxf_91 a:hover{color:var(--icon-hover-color)}._hero_1tt2n_1{align-items:center;box-sizing:border-box;display:flex;flex-direction:row;height:100%;position:relative;width:100%}._left_1tt2n_21{background-color:var(--bg-left, var(--bg-primary));display:flex;flex:1;flex-direction:column;height:100%;justify-content:center;min-width:0;padding:0 25rem 0 15rem;position:relative;background-repeat:no-repeat;background-size:cover;background-position:center;background-image:var(--bg-image-left, var(--bg-colored-shapes))}._left_1tt2n_21:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:10rem;background-color:var(--bg-secondary);pointer-events:none}._overlay_1tt2n_75{background-position:center;background-size:contain;display:flex;height:auto;position:absolute;width:10rem;z-index:0}._title_1tt2n_95{color:var(--title-color);display:flex;font-size:var(--title-size);font-weight:700;gap:1rem;line-height:1.2;position:relative;z-index:1}._word_1_1tt2n_117{color:var(--word-1-color, var(--text-color));display:flex}._word_2_1tt2n_127{color:var(--word-2-color, var(--text-color))}._subtitle_1tt2n_135{color:var(--subtitle-color);font-size:var(--subtitle-size);margin-top:2rem;position:relative;z-index:1}._highlights_1tt2n_151{display:flex;flex-direction:row;gap:1rem;margin-top:2rem;position:relative;z-index:1}._highlights_1tt2n_151 p{background-color:var(--highlight-bg-color, transparent);border-radius:.5rem;color:var(--highlight-color, var(--text-color));font-size:var(--highlight-size, var(--text-size))}._right_1tt2n_183{align-items:center;background-color:var(--bg-right, var(--bg-secondary));display:flex;height:100%;justify-content:center;padding:0 4rem;width:30rem;background-repeat:no-repeat;background-size:cover;background-position:center;background-image:var(--bg-image-right, var(--bg-colored-patterns))}._image_1tt2n_211{filter:drop-shadow(0 0 5px var(--shadow-color, rgb(0 0 0 / 50%)));height:auto;object-fit:cover;position:relative;right:19rem;width:250px}._container_1k2dg_1{margin:0 auto;max-width:800px;padding:4rem 2rem;text-align:center}._title_1k2dg_15{color:var(--title-color);font-size:2rem;font-weight:700}._subtitle_1k2dg_27{color:var(--introduction-color, var(--subtitle-color));margin:1rem 0 2rem}._form_1k2dg_37{display:flex;flex-direction:column;gap:2rem;text-align:left}._row_1k2dg_51{display:flex;flex-flow:row wrap;gap:2rem}._field_1k2dg_63{color:var(--field-color, var(--label-color));display:flex;flex:1;flex-direction:column;gap:.5rem}._field_1k2dg_63:focus-within label{color:var(--input-focus-color, var(--focus-color))}._field_1k2dg_63 label{font-size:.9rem}._field_1k2dg_63 input,._field_1k2dg_63 textarea{background:transparent;border:none;border-bottom:1px solid var(--field-color, var(--border-color));color:var(--input-text-color, var(--text-color));font-size:1rem;outline:none;padding:.5rem;resize:vertical}._field_1k2dg_63 input::placeholder,._field_1k2dg_63 textarea::placeholder{color:var(--placeholder-color, var(--dark-50))}._field_1k2dg_63 input:focus,._field_1k2dg_63 textarea:focus{border-bottom-color:var(--field-focus-color, var(--border-focus-color))}._button_1k2dg_139{align-self:flex-start;background:none;border:1px solid var(--btn-color);color:var(--btn-color);cursor:pointer;font-weight:700;letter-spacing:1px;padding:.75rem 2rem;text-transform:uppercase;transition:background .3s,border-color .3s,color .3s}._button_1k2dg_139:hover{border:1px solid var(--btn-hover-color);color:var(--btn-hover-color)}html{font-size:10px}*,*:before,*:after{margin:0}h1,h2,h3,h4,h5,h6,p{margin:0;padding:0}h1{font-size:3.2rem;font-weight:700}h2{font-size:2.4rem;font-weight:700}h3{font-size:1.9rem;font-weight:700}h4{font-size:1.6rem;font-weight:700}h5{font-size:1.4rem;font-weight:700}h6{font-size:1.2rem;font-weight:700}p{font-size:1.6rem;font-weight:400}:root{--base-color-1: #f1f0f8;--base-color-2: #e0eaf5;--base-color-3: #92badd;--base-color-4: #cc9c7b;--base-color-5: #bfb0b8;--base-color-6: #ff871f;--base-color-7: #06b635;--base-color-8: #262946;--base-color-9: #4a557a;--base-color-10: #505452;--base-color-11: #1a1a1a;--dark-0: #fff;--dark-10: #f0f0f0;--dark-20: #d9d9d9;--dark-30: #bfbfbf;--dark-40: #a6a6a6;--dark-50: #8c8c8c;--dark-60: #737373;--dark-70: #595959;--dark-80: #404040;--dark-90: #262626;--dark-100: #000}:root{--anchor-color: var(--base-color-6);--link-size: 1.4rem;--bg-alter: var(--base-color-10);--bg-primary: var(--base-color-11);--bg-secondary: var(--base-color-10);--dot-active-color: var(--base-color-7);--dot-color: var(--base-color-1);--input-placeholder-color: var(--dark-30);--input-text-color: var(--base-color-1);--input-focus-color: var(--base-color-6);--item-bg: var(--base-color-10);--label-color: var(--base-color-1);--label-size: 1.4rem;--subtitle-color: var(--base-color-3);--subtitle-size: 2.4rem;--text-size: 1.6rem;--text-color: var(--base-color-1);--title-color: var(--base-color-2);--title-size: 4rem;--btn-color: var(--base-color-6);--btn-hover-color: var(--base-color-7);--btn-size: 1.4rem;--icon-color: var(--base-color-1);--icon-hover-color: var(--base-color-7)}:root{--bg-animated-shape: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' version='1.1' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:svgjs='http://svgjs.dev/svgjs' width='1440' height='560' preserveAspectRatio='none' viewBox='0 0 1440 560'%3e%3cg mask='url(%26quot%3b%23SvgjsMask1099%26quot%3b)' fill='none'%3e%3cpath d='M835.4460459492756 343.8942085666494L745.4435415390737 174.2342483205265 654.0063332232542 315.0352017950725z' fill='rgba(3%2c 97%2c 24%2c 0.34)' class='triangle-float2'%3e%3c/path%3e%3cpath d='M1211.400721888432 503.1256761889057L1321.4033350130999 520.5483785028928 1292.5360819217465 346.8331076588971z' fill='rgba(3%2c 97%2c 24%2c 0.34)' class='triangle-float3'%3e%3c/path%3e%3cpath d='M227.0019975497408-17.050050152712082L142.63630151930334-54.61207808148331 128.47610764136525 90.71747992855848z' fill='rgba(3%2c 97%2c 24%2c 0.34)' class='triangle-float2'%3e%3c/path%3e%3cpath d='M874.6287543604512 519.6256654603628L730.3087848919715 446.0909681459135 656.7740875775222 590.4109376143932 801.0940570460019 663.9456349288425z' fill='rgba(3%2c 97%2c 24%2c 0.34)' class='triangle-float2'%3e%3c/path%3e%3cpath d='M546.9830255308609 273.1897397095199L467.93473064097617 234.63531022115887 508.42859604249986 352.23803459940467z' fill='rgba(3%2c 97%2c 24%2c 0.34)' class='triangle-float1'%3e%3c/path%3e%3cpath d='M1241.1814043617085 77.40198201367728L1347.5437624023707 163.53252128797612 1327.3119436360073-28.96037602698489z' fill='rgba(3%2c 97%2c 24%2c 0.34)' class='triangle-float1'%3e%3c/path%3e%3cpath d='M533.6676041863468 399.5514158811449L569.6401226969189 265.300149123478 435.3888559392519 229.32763061290595 399.41633742867987 363.5788973705729z' fill='rgba(3%2c 97%2c 24%2c 0.34)' class='triangle-float2'%3e%3c/path%3e%3cpath d='M1015.3131644734469 264.8500368159374L1056.0051877223464 348.2810484047901 1098.7441760622996 224.15801356703795z' fill='rgba(3%2c 97%2c 24%2c 0.34)' class='triangle-float3'%3e%3c/path%3e%3cpath d='M979.7713904668635 104.18811206996597L854.0464862901187 25.62647267818113 901.2097510750787 229.91301624671084z' fill='rgba(3%2c 97%2c 24%2c 0.34)' class='triangle-float3'%3e%3c/path%3e%3cpath d='M53.91709046713074 263.86987185305236L142.79176594509582 254.5287670524557 133.45066114449912 165.65409157449062 44.575985666534066 174.9951963750873z' fill='rgba(3%2c 97%2c 24%2c 0.34)' class='triangle-float3'%3e%3c/path%3e%3c/g%3e%3cdefs%3e%3cmask id='SvgjsMask1099'%3e%3crect width='1440' height='560' fill='white'%3e%3c/rect%3e%3c/mask%3e%3cstyle%3e %40keyframes float1 %7b 0%25%7btransform: translate(0%2c 0)%7d 50%25%7btransform: translate(-10px%2c 0)%7d 100%25%7btransform: translate(0%2c 0)%7d %7d .triangle-float1 %7b animation: float1 5s infinite%3b %7d %40keyframes float2 %7b 0%25%7btransform: translate(0%2c 0)%7d 50%25%7btransform: translate(-5px%2c -5px)%7d 100%25%7btransform: translate(0%2c 0)%7d %7d .triangle-float2 %7b animation: float2 4s infinite%3b %7d %40keyframes float3 %7b 0%25%7btransform: translate(0%2c 0)%7d 50%25%7btransform: translate(0%2c -10px)%7d 100%25%7btransform: translate(0%2c 0)%7d %7d .triangle-float3 %7b animation: float3 6s infinite%3b %7d %3c/style%3e%3c/defs%3e%3c/svg%3e");--bg-colored-shapes: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' version='1.1' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:svgjs='http://svgjs.dev/svgjs' width='1440' height='560' preserveAspectRatio='none' viewBox='0 0 1440 560'%3e%3cg mask='url(%26quot%3b%23SvgjsMask1015%26quot%3b)' fill='none'%3e%3cpath d='M124.12 326.69 a52.75 52.75 0 1 0 105.5 0 a52.75 52.75 0 1 0 -105.5 0z' stroke='rgba(197%2c 47%2c 47%2c 1)'%3e%3c/path%3e%3cpath d='M912.4 302.72a17.37 17.37 0 1 0 4.18 34.48z' fill='rgba(19%2c 164%2c 41%2c 1)'%3e%3c/path%3e%3cpath d='M894.35 431.68a5.69 5.69 0 1 0-10.33 4.79z' fill='rgba(19%2c 164%2c 41%2c 1)'%3e%3c/path%3e%3cpath d='M1412.13 392.86a13.89 13.89 0 1 0-14.16-23.9z' fill='%23d3b714'%3e%3c/path%3e%3cpath d='M865.65 464.34L872.68 464.34L872.68 493.6L865.65 493.6z' fill='%23d3b714'%3e%3c/path%3e%3cpath d='M201.2 69.99 a41.77 41.77 0 1 0 83.54 0 a41.77 41.77 0 1 0 -83.54 0z' fill='rgba(197%2c 47%2c 47%2c 1)'%3e%3c/path%3e%3cpath d='M144.87 72.85 a12.92 12.92 0 1 0 25.84 0 a12.92 12.92 0 1 0 -25.84 0z' fill='rgba(197%2c 47%2c 47%2c 1)'%3e%3c/path%3e%3cpath d='M537.32 31.03a46.54 46.54 0 1 0 83.76 40.61z' stroke='rgba(197%2c 47%2c 47%2c 1)'%3e%3c/path%3e%3cpath d='M350.99 470.66L353.09 470.66L353.09 472.76L350.99 472.76z' fill='rgba(19%2c 164%2c 41%2c 1)'%3e%3c/path%3e%3cpath d='M1028.74 74.99L1051.08 74.99L1051.08 97.33L1028.74 97.33z' fill='rgba(197%2c 47%2c 47%2c 1)'%3e%3c/path%3e%3cpath d='M226.92 550.68 a8.25 8.25 0 1 0 16.5 0 a8.25 8.25 0 1 0 -16.5 0z' fill='%23d3b714'%3e%3c/path%3e%3cpath d='M636.4 342.79L640.5 342.79L640.5 346.89L636.4 346.89z' fill='%23d3b714'%3e%3c/path%3e%3cpath d='M90.24 218.69 a1.21 1.21 0 1 0 2.42 0 a1.21 1.21 0 1 0 -2.42 0z' stroke='rgba(197%2c 178%2c 47%2c 0)'%3e%3c/path%3e%3cpath d='M1134.33 287.95L1172.35 287.95L1172.35 325.97L1134.33 325.97z' stroke='%23d3b714'%3e%3c/path%3e%3cpath d='M0.89 410.53L25.88 410.53L25.88 435.14L0.89 435.14z' fill='%23d3b714'%3e%3c/path%3e%3cpath d='M964.75 7.68L971.39 7.68L971.39 59.27L964.75 59.27z' fill='rgba(19%2c 164%2c 41%2c 1)'%3e%3c/path%3e%3cpath d='M967.12 450.52a4.12 4.12 0 1 0 0.52-8.23z' stroke='%23d3b714'%3e%3c/path%3e%3cpath d='M106.86 222.14a55.8 55.8 0 1 0 91.24 64.27z' stroke='rgba(197%2c 178%2c 47%2c 0)'%3e%3c/path%3e%3cpath d='M1276.84 260.39L1315.7 260.39L1315.7 304.65L1276.84 304.65z' fill='rgba(19%2c 164%2c 41%2c 1)'%3e%3c/path%3e%3cpath d='M752.64 505.94 a20.26 20.26 0 1 0 40.52 0 a20.26 20.26 0 1 0 -40.52 0z' fill='rgba(19%2c 164%2c 41%2c 1)'%3e%3c/path%3e%3cpath d='M446.9 2.61L468.25 2.61L468.25 23.96L446.9 23.96z' fill='rgba(197%2c 178%2c 47%2c 0)'%3e%3c/path%3e%3cpath d='M966.61 254.42L1010.43 254.42L1010.43 298.24L966.61 298.24z' fill='rgba(19%2c 164%2c 41%2c 1)'%3e%3c/path%3e%3cpath d='M1204.21 176.84L1205.56 176.84L1205.56 178.19L1204.21 178.19z' fill='rgba(19%2c 164%2c 41%2c 1)'%3e%3c/path%3e%3cpath d='M1337.77 197.01a37.5 37.5 0 1 0 68.88-29.66z' fill='%23d3b714'%3e%3c/path%3e%3cpath d='M315.58 157.99L364.43 157.99L364.43 206.84L315.58 206.84z' stroke='rgba(197%2c 178%2c 47%2c 0)'%3e%3c/path%3e%3cpath d='M84.31 467.08a20.25 20.25 0 1 0-17.61-36.47z' stroke='%23d3b714'%3e%3c/path%3e%3cpath d='M1262.73 465.31a41.38 41.38 0 1 0 57.76-59.26z' stroke='rgba(197%2c 178%2c 47%2c 0)'%3e%3c/path%3e%3cpath d='M365.42 493.92L405.54 493.92L405.54 534.04L365.42 534.04z' stroke='rgba(197%2c 47%2c 47%2c 1)'%3e%3c/path%3e%3cpath d='M120.1 579.6a32.61 32.61 0 1 0-4.31-65.08z' fill='rgba(197%2c 47%2c 47%2c 1)'%3e%3c/path%3e%3cpath d='M935.11 525.14L973.91 525.14L973.91 551.85L935.11 551.85z' stroke='rgba(19%2c 164%2c 41%2c 1)'%3e%3c/path%3e%3cpath d='M275.71 73.59 a7.02 7.02 0 1 0 14.04 0 a7.02 7.02 0 1 0 -14.04 0z' fill='rgba(197%2c 47%2c 47%2c 1)'%3e%3c/path%3e%3cpath d='M747.02 266.69a44.63 44.63 0 1 0 88.26 13.36z' stroke='rgba(197%2c 47%2c 47%2c 1)'%3e%3c/path%3e%3cpath d='M589.06 271.34L605.45 271.34L605.45 302.67L589.06 302.67z' fill='rgba(197%2c 178%2c 47%2c 0)'%3e%3c/path%3e%3c/g%3e%3cdefs%3e%3cmask id='SvgjsMask1015'%3e%3crect width='1440' height='560' fill='white'%3e%3c/rect%3e%3c/mask%3e%3c/defs%3e%3c/svg%3e");--bg-colored-patterns: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' version='1.1' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:svgjs='http://svgjs.dev/svgjs' width='1440' height='720' preserveAspectRatio='none' viewBox='0 0 1440 720'%3e%3cg mask='url(%26quot%3b%23SvgjsMask1062%26quot%3b)' fill='none'%3e%3crect width='116' height='116' clip-path='url(%26quot%3b%23SvgjsClipPath1063%26quot%3b)' x='1313.44' y='147.37' fill='url(%26quot%3b%23SvgjsPattern1064%26quot%3b)' transform='rotate(187.53%2c 1371.44%2c 205.37)'%3e%3c/rect%3e%3crect width='185.4' height='185.4' clip-path='url(%26quot%3b%23SvgjsClipPath1065%26quot%3b)' x='1257.68' y='197.52' fill='url(%26quot%3b%23SvgjsPattern1066%26quot%3b)' transform='rotate(311.49%2c 1350.38%2c 290.22)'%3e%3c/rect%3e%3cpath d='M381.1 15.37L370.52 8.15 375.25-3.75 364.67-10.97 369.39-22.88 358.82-30.1 363.54-42M388.75 13.03L378.17 5.81 382.9-6.09 372.32-13.31 377.04-25.22 366.46-32.44 371.19-44.34M396.4 10.69L385.82 3.47 390.55-8.44 379.97-15.66 384.69-27.56 374.11-34.78 378.84-46.68' stroke='%23e73635' stroke-width='2.24' stroke-dasharray='3%2c 3'%3e%3c/path%3e%3crect width='232.76' height='232.76' clip-path='url(%26quot%3b%23SvgjsClipPath1067%26quot%3b)' x='965.55' y='36.34' fill='url(%26quot%3b%23SvgjsPattern1068%26quot%3b)' transform='rotate(173.82%2c 1081.93%2c 152.72)'%3e%3c/rect%3e%3cpath d='M879.4 566.77 L821.4599999999999 492.8L786.3280392565729 593.886960743427z' fill='%23037b0b'%3e%3c/path%3e%3crect width='132.2' height='132.2' clip-path='url(%26quot%3b%23SvgjsClipPath1069%26quot%3b)' x='708.77' y='165.07' fill='url(%26quot%3b%23SvgjsPattern1070%26quot%3b)' transform='rotate(303.38%2c 774.87%2c 231.17)'%3e%3c/rect%3e%3cpath d='M1026.59 572.39a5.6 5.6 0 1 0 7.26-8.53 5.6 5.6 0 1 0-7.26 8.53zM1036.96 560.2a5.6 5.6 0 1 0 7.26-8.53 5.6 5.6 0 1 0-7.26 8.53zM1047.33 548.01a5.6 5.6 0 1 0 7.25-8.53 5.6 5.6 0 1 0-7.25 8.53zM1057.69 535.83a5.6 5.6 0 1 0 7.26-8.54 5.6 5.6 0 1 0-7.26 8.54zM1018.05 607.13a5.6 5.6 0 1 0 7.26-8.53 5.6 5.6 0 1 0-7.26 8.53zM1028.42 594.94a5.6 5.6 0 1 0 7.25-8.53 5.6 5.6 0 1 0-7.25 8.53zM1038.78 582.76a5.6 5.6 0 1 0 7.26-8.54 5.6 5.6 0 1 0-7.26 8.54zM1049.15 570.57a5.6 5.6 0 1 0 7.25-8.53 5.6 5.6 0 1 0-7.25 8.53zM1009.51 641.88a5.6 5.6 0 1 0 7.25-8.54 5.6 5.6 0 1 0-7.25 8.54zM1019.87 629.69a5.6 5.6 0 1 0 7.26-8.53 5.6 5.6 0 1 0-7.26 8.53zM1030.24 617.5a5.6 5.6 0 1 0 7.26-8.53 5.6 5.6 0 1 0-7.26 8.53zM1040.6 605.31a5.6 5.6 0 1 0 7.26-8.53 5.6 5.6 0 1 0-7.26 8.53z' fill='%23d3b714'%3e%3c/path%3e%3cpath d='M1157.7 775.94 L1133.46 756.6600000000001L1166.6040444408093 745.2759555591907z' stroke='%23d3b714' stroke-width='1.94'%3e%3c/path%3e%3crect width='473.28' height='473.28' clip-path='url(%26quot%3b%23SvgjsClipPath1071%26quot%3b)' x='-5.55' y='418.02' fill='url(%26quot%3b%23SvgjsPattern1072%26quot%3b)' transform='rotate(153.52%2c 231.09%2c 654.66)'%3e%3c/rect%3e%3c/g%3e%3cdefs%3e%3cmask id='SvgjsMask1062'%3e%3crect width='1440' height='720' fill='white'%3e%3c/rect%3e%3c/mask%3e%3cpattern x='0' y='0' width='116' height='11.6' patternUnits='userSpaceOnUse' id='SvgjsPattern1064'%3e%3crect width='116' height='5.8' x='0' y='0' fill='%23e73635'%3e%3c/rect%3e%3crect width='116' height='5.8' x='0' y='5.8' fill='rgba(0%2c 0%2c 0%2c 0)'%3e%3c/rect%3e%3c/pattern%3e%3cclipPath id='SvgjsClipPath1063'%3e%3ccircle r='29' cx='1371.44' cy='205.37'%3e%3c/circle%3e%3c/clipPath%3e%3cpattern x='0' y='0' width='10.3' height='10.3' patternUnits='userSpaceOnUse' id='SvgjsPattern1066'%3e%3cpath d='M5.15 1L5.15 9.3M1 5.15L9.3 5.15' stroke='%23037b0b' fill='none' stroke-width='1'%3e%3c/path%3e%3c/pattern%3e%3cclipPath id='SvgjsClipPath1065'%3e%3ccircle r='46.35' cx='1350.38' cy='290.22'%3e%3c/circle%3e%3c/clipPath%3e%3cpattern x='0' y='0' width='232.76' height='10.58' patternUnits='userSpaceOnUse' id='SvgjsPattern1068'%3e%3crect width='232.76' height='5.29' x='0' y='0' fill='%23e73635'%3e%3c/rect%3e%3crect width='232.76' height='5.29' x='0' y='5.29' fill='rgba(0%2c 0%2c 0%2c 0)'%3e%3c/rect%3e%3c/pattern%3e%3cclipPath id='SvgjsClipPath1067'%3e%3ccircle r='58.19' cx='1081.93' cy='152.72'%3e%3c/circle%3e%3c/clipPath%3e%3cpattern x='0' y='0' width='132.2' height='13.22' patternUnits='userSpaceOnUse' id='SvgjsPattern1070'%3e%3crect width='132.2' height='6.61' x='0' y='0' fill='%23037b0b'%3e%3c/rect%3e%3crect width='132.2' height='6.61' x='0' y='6.61' fill='rgba(0%2c 0%2c 0%2c 0)'%3e%3c/rect%3e%3c/pattern%3e%3cclipPath id='SvgjsClipPath1069'%3e%3ccircle r='33.05' cx='774.87' cy='231.17'%3e%3c/circle%3e%3c/clipPath%3e%3cpattern x='0' y='0' width='9.86' height='9.86' patternUnits='userSpaceOnUse' id='SvgjsPattern1072'%3e%3cpath d='M4.93 1L4.93 8.86M1 4.93L8.86 4.93' stroke='%23037b0b' fill='none' stroke-width='2.49'%3e%3c/path%3e%3c/pattern%3e%3cclipPath id='SvgjsClipPath1071'%3e%3ccircle r='118.32' cx='231.09' cy='654.66'%3e%3c/circle%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e")}
|