@dammgo/vena-visual-engine 0.1.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 dammgo labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,45 @@
1
+ # VENA Visual Engine v0.1.0 🚀
2
+
3
+ > **"Engineering as Art. Sovereignty as Standard."**
4
+
5
+ ## 🧬 The Manifesto
6
+
7
+ The web has been colonized by the generic. AI-generated interfaces have commoditized "good taste," filling our screens with predictable shadows, rounded corners, and a lack of character. Every app looks like a template of a template.
8
+
9
+ **VENA Visual Engine** is a rebellion. It is not another CSS framework for "friendly" apps. It is a **Sovereign Infrastructure** for building digital interfaces that reflect precision, authority, and longevity.
10
+
11
+ We don't build "UI components"; we build **Visual Protocols**.
12
+
13
+ ---
14
+
15
+ ## 🏛️ Axioms of the Engine
16
+
17
+ 1. **Precision over Organic:** We reject the "round-everything" culture. Surfaces should feel like precision-cut steel, not plastic bubbles.
18
+ 2. **Infrastructure over Ornament:** Every pixel must justify its existence. If it's just "decoration," it's noise.
19
+ 3. **The Active Pulse:** Interfaces are not static; they are live signals. We treat the rendering process as a vital pulse of data.
20
+ 4. **Sovereignty:** Total control over the design grammar. No dependence on industry "safe" standards that dilute identity.
21
+
22
+ ---
23
+
24
+ ## 🛠️ Technical Core
25
+
26
+ VENA Visual Engine is built as a high-performance **Visual Syntax** that can be injected into any project. It leverages the power of atomic CSS engines to provide:
27
+
28
+ - **BOS Protocol Presets:** Ready-to-use visual laws for the erpbsg ecosystem.
29
+ - **Precision Tokens:** Mathematical scales for typography and spacing based on the BOS Golden Ratio.
30
+ - **Atmospheric Glows:** Cinematic lighting systems for deep-space (Dark Mode) interfaces.
31
+
32
+ ---
33
+
34
+ ## 🚀 Usage
35
+
36
+ *Documentation in progress. This is the seed of a new visual era.*
37
+
38
+ ```bash
39
+ # Clone the rebellion
40
+ git clone https://github.com/dammgo/vena-visual-engine
41
+ ```
42
+
43
+ ---
44
+ **dammgo labs** - _Institutionalizing the Future._
45
+ © 2026. Distributed under the MIT License.
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@dammgo/vena-visual-engine",
3
+ "version": "0.1.0",
4
+ "description": "The Sovereign Visual Engine. A rebellion against generic AI-generated interfaces, built for infrastructure longevity.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "license": "MIT",
16
+ "author": "dammgo labs",
17
+ "homepage": "https://kr.dammgo.com",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/dammgo/vena-visual-engine"
21
+ },
22
+ "keywords": [
23
+ "css",
24
+ "visual-engine",
25
+ "design-system",
26
+ "sovereignty",
27
+ "unocss",
28
+ "tailwind",
29
+ "dammgo"
30
+ ],
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "scripts": {
35
+ "dev": "unocss",
36
+ "build": "unocss build && tsc",
37
+ "showroom:dev": "astro dev --root showroom",
38
+ "showroom:build": "astro build --root showroom",
39
+ "test": "echo \"Error: no test specified\" && exit 1"
40
+ },
41
+ "peerDependencies": {
42
+ "unocss": "^65.0.0"
43
+ },
44
+ "devDependencies": {
45
+ "@unocss/astro": "^65.4.3",
46
+ "astro": "^5.17.1",
47
+ "unocss": "^65.4.3",
48
+ "typescript": "^5.7.3"
49
+ }
50
+ }
@@ -0,0 +1,11 @@
1
+ import { defineConfig } from 'astro/config';
2
+ import UnoCSS from '@unocss/astro';
3
+
4
+ export default defineConfig({
5
+ root: './showroom',
6
+ integrations: [
7
+ UnoCSS({
8
+ injectReset: true,
9
+ }),
10
+ ],
11
+ });
@@ -0,0 +1,126 @@
1
+ ---
2
+ // D:\OneDrive\code-workspace\dammgo\vena-visual-engine\showroom\src\pages\index.astro
3
+ ---
4
+
5
+ <html lang="en">
6
+ <head>
7
+ <meta charset="utf-8" />
8
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
9
+ <meta name="viewport" content="width=device-width" />
10
+ <meta name="generator" content={Astro.generator} />
11
+ <title>VENA Visual Engine | Sovereign Showroom</title>
12
+ </head>
13
+ <body class="bg-bos-slate min-h-screen text-bos-white p-12 font-ui selection:bg-bos-pink selection:text-bos-white">
14
+
15
+ <header class="mb-32 flex justify-between items-end border-b border-white/5 pb-12">
16
+ <div>
17
+ <h1 class="font-brand font-black text-7xl tracking-tighter mb-4">
18
+ VENA<span class="text-bos-pink">.</span>VISUAL<span class="text-bos-pink">.</span>ENGINE
19
+ </h1>
20
+ <p class="font-mono text-bos-gray tracking-[0.8em] text-[10px] uppercase">
21
+ The Sovereign Visual Protocol // dammgo labs // v0.1.0
22
+ </p>
23
+ </div>
24
+ <div class="text-right">
25
+ <div class="flex items-center gap-3 justify-end mb-2">
26
+ <div class="w-2 h-2 rounded-full bg-bos-pink animate-pulse"></div>
27
+ <p class="font-mono text-bos-pink text-[10px] tracking-widest">SIGNAL: STEADY</p>
28
+ </div>
29
+ <p class="font-mono text-white/20 text-[10px]">AUTH_CORE: VERIFIED</p>
30
+ </div>
31
+ </header>
32
+
33
+ <main class="space-y-48">
34
+
35
+ <!-- SECCIÓN 05: PROTOCOLOS DE CAPTURA (Sovereign Inputs) -->
36
+ <section>
37
+ <div class="flex items-center gap-4 mb-12">
38
+ <span class="text-bos-pink font-mono text-xs">05</span>
39
+ <h2 class="text-authority text-2xl tracking-widest">sovereign_inputs</h2>
40
+ <span class="h-px flex-1 bg-gradient-to-r from-bos-pink/50 to-transparent"></span>
41
+ <span class="font-mono text-[10px] text-bos-gray uppercase">Status: Capturing_Data</span>
42
+ </div>
43
+
44
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-16">
45
+
46
+ <!-- CAMPOS DE TEXTO Y SELECCIÓN -->
47
+ <div class="space-y-12">
48
+ <div class="space-y-4">
49
+ <label class="block font-mono text-[10px] text-bos-gray uppercase tracking-widest">Director_Identification</label>
50
+ <input type="text" class="bos-input w-full" placeholder="Enter Credential ID..." />
51
+ </div>
52
+
53
+ <div class="space-y-4">
54
+ <label class="block font-mono text-[10px] text-bos-gray uppercase tracking-widest">Operational_Status</label>
55
+ <div class="flex gap-8">
56
+ <label class="flex items-center gap-3 cursor-pointer group">
57
+ <input type="radio" name="status" class="bos-radio" checked />
58
+ <span class="font-mono text-xs opacity-50 group-hover:opacity-100 transition-opacity">ACTIVE_NODE</span>
59
+ </label>
60
+ <label class="flex items-center gap-3 cursor-pointer group">
61
+ <input type="radio" name="status" class="bos-radio" />
62
+ <span class="font-mono text-xs opacity-50 group-hover:opacity-100 transition-opacity">MAINTENANCE</span>
63
+ </label>
64
+ </div>
65
+ </div>
66
+
67
+ <div class="space-y-4">
68
+ <label class="flex items-center gap-3 cursor-pointer group">
69
+ <input type="checkbox" class="bos-checkbox" />
70
+ <span class="font-mono text-xs opacity-50 group-hover:opacity-100 transition-opacity uppercase">Encrypt_Data_Payload</span>
71
+ </label>
72
+ </div>
73
+ </div>
74
+
75
+ <!-- SELECTOR DE FECHA (Vector Temporal) -->
76
+ <div class="space-y-4">
77
+ <label class="block font-mono text-[10px] text-bos-gray uppercase tracking-widest">Temporal_Vector_Lock</label>
78
+ <div class="bos-surface p-6">
79
+ <div class="flex justify-between items-center mb-6 border-b border-white/5 pb-4">
80
+ <span class="font-brand font-black text-xl">FEBRUARY 2026</span>
81
+ <div class="flex gap-2">
82
+ <button class="w-8 h-8 border border-white/10 flex items-center justify-center hover:bg-bos-pink transition-colors">←</button>
83
+ <button class="w-8 h-8 border border-white/10 flex items-center justify-center hover:bg-bos-pink transition-colors">→</button>
84
+ </div>
85
+ </div>
86
+ <div class="grid grid-cols-7 gap-2 text-center mb-4">
87
+ {['S','M','T','W','T','F','S'].map(d => <span class="font-mono text-[10px] text-bos-pink opacity-50">{d}</span>)}
88
+ </div>
89
+ <div class="grid grid-cols-7 gap-2">
90
+ {Array.from({length: 28}).map((_, i) => (
91
+ <button class={`aspect-square flex items-center justify-center font-mono text-xs border border-transparent hover:border-bos-pink transition-all ${i === 15 ? 'precision-bracket text-bos-pink' : 'opacity-40'}`}>
92
+ {i + 1}
93
+ </button>
94
+ ))}
95
+ </div>
96
+ <div class="mt-6 synapse-line"></div>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </section>
101
+
102
+ <!-- (Resto de los protocolos anteriores se mantienen para referencia...) -->
103
+ <section class="opacity-30 grayscale pointer-events-none">
104
+ <h2 class="text-authority text-sm mb-4">Existing_Protocols_Archive</h2>
105
+ <p class="font-mono text-[10px]">ERPBSG_HUB // DAMMGO_CORP // VENA_CORE // KODE_REBOOT</p>
106
+ </section>
107
+
108
+ </main>
109
+
110
+ <footer class="mt-48 border-t border-white/5 py-12 flex justify-between items-center">
111
+ <p class="font-mono text-[10px] text-bos-gray tracking-[0.5em]">
112
+ DAMMGO LABS // 2026 // SOVEREIGN_INFRASTRUCTURE
113
+ </p>
114
+ </footer>
115
+
116
+ <style is:global>
117
+ @keyframes scan {
118
+ from { transform: translateY(-100%); }
119
+ to { transform: translateY(500px); }
120
+ }
121
+ ::-webkit-scrollbar { width: 4px; }
122
+ ::-webkit-scrollbar-track { background: #020617; }
123
+ ::-webkit-scrollbar-thumb { background: #E91E63; }
124
+ </style>
125
+ </body>
126
+ </html>
package/src/index.ts ADDED
@@ -0,0 +1,64 @@
1
+ import { definePreset, presetUno, presetWebFonts } from 'unocss'
2
+
3
+ export const presetVena = definePreset(() => {
4
+ return {
5
+ name: '@dammgo/vena-visual-engine',
6
+ theme: {
7
+ colors: {
8
+ bos: {
9
+ slate: '#020617',
10
+ pink: '#E91E63',
11
+ white: '#f8fafc',
12
+ gray: '#94a3b8',
13
+ cobalt: '#00d4ff',
14
+ void: '#0d1117',
15
+ surface: '#161b22', // Absorbido de vena-pulse docs
16
+ armor: '#30363d', // Absorbido de vena-pulse docs
17
+ },
18
+ // Mapeo de compatibilidad para evitar roturas
19
+ void: '#0d1117',
20
+ cobalt: '#00d4ff',
21
+ armor: '#30363d',
22
+ muted: '#8b949e',
23
+ },
24
+ borderRadius: {
25
+ 'bos-sm': '2px',
26
+ 'bos-md': '4px',
27
+ 'bos-lg': '6px',
28
+ },
29
+ // PUNTO FINO: Curva de animación oficial del BOS
30
+ easing: {
31
+ 'bos-pulse': 'cubic-bezier(0.4, 0, 0.2, 1)',
32
+ }
33
+ },
34
+ presets: [
35
+ presetUno(),
36
+ presetWebFonts({
37
+ provider: 'google',
38
+ fonts: {
39
+ brand: 'Montserrat:400,700,900',
40
+ ui: 'Inter:400,500,600,700',
41
+ mono: 'JetBrains Mono:400,700',
42
+ },
43
+ }),
44
+ ],
45
+ shortcuts: [
46
+ ['bos-surface', 'bg-bos-surface/40 backdrop-blur-md border border-bos-armor/30 rounded-bos-sm shadow-none'],
47
+ ['precision-bracket', 'relative before:content-[""] before:absolute before:-top-1 before:-left-1 before:w-2 before:h-2 before:border-t-1 before:border-l-1 before:border-bos-pink after:content-[""] after:absolute after:-bottom-1 after:-right-1 after:w-2 after:h-2 after:border-b-1 after:border-r-1 after:border-bos-pink'],
48
+ ['infra-grid', 'relative before:content-[""] before:absolute before:inset-0 before:opacity-0 before:pointer-events-none before:[background-image:radial-gradient(#f8fafc_1px,transparent_1px)] before:[background-size:10px_10px] focus-within:before:opacity-10 before:transition-opacity'],
49
+ ['synapse-line', 'h-1 bg-white/5 relative overflow-hidden after:content-[""] after:absolute after:inset-0 after:bg-gradient-to-r after:from-transparent after:via-bos-pink after:to-transparent after:animate-pulse'],
50
+ ['text-authority', 'font-brand font-black uppercase tracking-widest text-bos-white'],
51
+
52
+ // PROTOCOLO: Cinematic Loading (Radar Sweep)
53
+ ['bos-loader', 'relative overflow-hidden before:content-[""] before:absolute before:inset-0 before:bg-gradient-to-r before:from-transparent before:via-bos-cobalt/20 before:to-transparent before:animate-scan'],
54
+
55
+ // Inputs Soberanos
56
+ ['bos-input', 'bos-surface infra-grid px-4 py-3 font-mono text-sm bg-transparent outline-none focus:precision-bracket transition-all placeholder:opacity-20'],
57
+ ['bos-checkbox', 'w-4 h-4 border border-white/20 rounded-bos-sm bg-white/5 appearance-none cursor-pointer checked:bg-bos-pink checked:border-bos-pink checked:shadow-[0_0_10px_rgba(233,30,99,0.5)] transition-all'],
58
+ ['bos-radio', 'w-4 h-4 border border-white/20 rounded-full bg-white/5 appearance-none cursor-pointer checked:border-bos-pink transition-all relative after:content-[""] after:absolute after:top-1/2 after:left-1/2 after:-translate-x-1/2 after:-translate-y-1/2 after:w-0 after:h-0 checked:after:w-2 checked:after:h-2 after:bg-bos-pink after:rounded-full after:transition-all'],
59
+ ],
60
+ rules: [
61
+ ['animate-scan', { animation: 'scan 2s linear infinite' }],
62
+ ],
63
+ }
64
+ })
package/tsconfig.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "module": "ESNext",
5
+ "moduleResolution": "node",
6
+ "declaration": true,
7
+ "outDir": "./dist",
8
+ "strict": true,
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "baseUrl": ".",
13
+ "paths": {
14
+ "@/*": ["src/*"]
15
+ }
16
+ },
17
+ "include": ["src/**/*"],
18
+ "exclude": ["node_modules", "dist", "showroom"]
19
+ }
package/uno.config.ts ADDED
@@ -0,0 +1,62 @@
1
+ import {
2
+ defineConfig,
3
+ presetUno,
4
+ presetWebFonts,
5
+ transformerDirectives,
6
+ transformerVariantGroup,
7
+ } from 'unocss'
8
+
9
+ export default defineConfig({
10
+ theme: {
11
+ colors: {
12
+ bos: {
13
+ slate: '#020617', // Base de profundidad
14
+ pink: '#E91E63', // El pulso erpbsg
15
+ white: '#f8fafc', // Claridad
16
+ gray: '#94a3b8', // Muted Infrastructure
17
+ cobalt: '#00d4ff', // VENA Intelligence
18
+ void: '#0d1117', // VENA Base
19
+ },
20
+ },
21
+ fontFamily: {
22
+ brand: 'Montserrat, sans-serif', // Autoridad
23
+ ui: 'Inter, sans-serif', // Operación
24
+ mono: 'JetBrains Mono, monospace', // Precisión técnica
25
+ },
26
+ borderRadius: {
27
+ 'bos-sm': '2px',
28
+ 'bos-md': '4px',
29
+ 'bos-lg': '6px',
30
+ },
31
+ },
32
+ presets: [
33
+ presetUno(),
34
+ presetWebFonts({
35
+ provider: 'google',
36
+ fonts: {
37
+ brand: 'Montserrat:400,700,900',
38
+ ui: 'Inter:400,500,600,700',
39
+ mono: 'JetBrains Mono:400,700',
40
+ },
41
+ }),
42
+ ],
43
+ transformers: [
44
+ transformerDirectives(),
45
+ transformerVariantGroup(),
46
+ ],
47
+ shortcuts: [
48
+ ['bos-surface', 'bg-white/3 backdrop-blur-lg border border-white/10 rounded-bos-sm shadow-none'],
49
+ ['precision-bracket', 'relative before:content-[""] before:absolute before:-top-1 before:-left-1 before:w-2 before:h-2 before:border-t-1 before:border-l-1 before:border-bos-pink after:content-[""] after:absolute after:-bottom-1 after:-right-1 after:w-2 after:h-2 after:border-b-1 after:border-r-1 after:border-bos-pink'],
50
+ ['infra-grid', 'relative before:content-[""] before:absolute before:inset-0 before:opacity-0 before:pointer-events-none before:[background-image:radial-gradient(#f8fafc_1px,transparent_1px)] before:[background-size:10px_10px] focus-within:before:opacity-10 before:transition-opacity'],
51
+ ['synapse-line', 'h-1 bg-white/5 relative overflow-hidden after:content-[""] after:absolute after:inset-0 after:bg-gradient-to-r after:from-transparent after:via-bos-pink after:to-transparent after:animate-pulse'],
52
+ ['text-authority', 'font-brand font-black uppercase tracking-widest text-bos-white'],
53
+
54
+ // PROTOCOLOS DE CAPTURA (Punto Fino)
55
+ ['bos-input', 'bos-surface infra-grid px-4 py-3 font-mono text-sm bg-transparent outline-none focus:precision-bracket transition-all placeholder:opacity-20'],
56
+ ['bos-checkbox', 'w-4 h-4 border border-white/20 rounded-bos-sm bg-white/5 appearance-none cursor-pointer checked:bg-bos-pink checked:border-bos-pink checked:shadow-[0_0_10px_rgba(233,30,99,0.5)] transition-all relative after:content-[""] after:absolute after:inset-0 after:bg-bos-pink after:opacity-0 checked:after:opacity-20'],
57
+ ['bos-radio', 'w-4 h-4 border border-white/20 rounded-full bg-white/5 appearance-none cursor-pointer checked:border-bos-pink transition-all relative after:content-[""] after:absolute after:top-1/2 after:left-1/2 after:-translate-x-1/2 after:-translate-y-1/2 after:w-0 after:h-0 checked:after:w-2 checked:after:h-2 after:bg-bos-pink after:rounded-full after:transition-all'],
58
+ ],
59
+ rules: [
60
+ ['animate-scan', { animation: 'scan 2s linear infinite' }],
61
+ ],
62
+ })
package/uno.css ADDED
@@ -0,0 +1,497 @@
1
+ /* layer: preflights */
2
+ *,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}
3
+ /* cyrillic-ext */
4
+ @font-face {
5
+ font-family: 'Inter';
6
+ font-style: normal;
7
+ font-weight: 400;
8
+ font-display: swap;
9
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU.woff2) format('woff2');
10
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
11
+ }
12
+ /* cyrillic */
13
+ @font-face {
14
+ font-family: 'Inter';
15
+ font-style: normal;
16
+ font-weight: 400;
17
+ font-display: swap;
18
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU.woff2) format('woff2');
19
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
20
+ }
21
+ /* greek-ext */
22
+ @font-face {
23
+ font-family: 'Inter';
24
+ font-style: normal;
25
+ font-weight: 400;
26
+ font-display: swap;
27
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU.woff2) format('woff2');
28
+ unicode-range: U+1F00-1FFF;
29
+ }
30
+ /* greek */
31
+ @font-face {
32
+ font-family: 'Inter';
33
+ font-style: normal;
34
+ font-weight: 400;
35
+ font-display: swap;
36
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU.woff2) format('woff2');
37
+ unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
38
+ }
39
+ /* vietnamese */
40
+ @font-face {
41
+ font-family: 'Inter';
42
+ font-style: normal;
43
+ font-weight: 400;
44
+ font-display: swap;
45
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU.woff2) format('woff2');
46
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
47
+ }
48
+ /* latin-ext */
49
+ @font-face {
50
+ font-family: 'Inter';
51
+ font-style: normal;
52
+ font-weight: 400;
53
+ font-display: swap;
54
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU.woff2) format('woff2');
55
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
56
+ }
57
+ /* latin */
58
+ @font-face {
59
+ font-family: 'Inter';
60
+ font-style: normal;
61
+ font-weight: 400;
62
+ font-display: swap;
63
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2) format('woff2');
64
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
65
+ }
66
+ /* cyrillic-ext */
67
+ @font-face {
68
+ font-family: 'Inter';
69
+ font-style: normal;
70
+ font-weight: 500;
71
+ font-display: swap;
72
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU.woff2) format('woff2');
73
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
74
+ }
75
+ /* cyrillic */
76
+ @font-face {
77
+ font-family: 'Inter';
78
+ font-style: normal;
79
+ font-weight: 500;
80
+ font-display: swap;
81
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU.woff2) format('woff2');
82
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
83
+ }
84
+ /* greek-ext */
85
+ @font-face {
86
+ font-family: 'Inter';
87
+ font-style: normal;
88
+ font-weight: 500;
89
+ font-display: swap;
90
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU.woff2) format('woff2');
91
+ unicode-range: U+1F00-1FFF;
92
+ }
93
+ /* greek */
94
+ @font-face {
95
+ font-family: 'Inter';
96
+ font-style: normal;
97
+ font-weight: 500;
98
+ font-display: swap;
99
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU.woff2) format('woff2');
100
+ unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
101
+ }
102
+ /* vietnamese */
103
+ @font-face {
104
+ font-family: 'Inter';
105
+ font-style: normal;
106
+ font-weight: 500;
107
+ font-display: swap;
108
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU.woff2) format('woff2');
109
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
110
+ }
111
+ /* latin-ext */
112
+ @font-face {
113
+ font-family: 'Inter';
114
+ font-style: normal;
115
+ font-weight: 500;
116
+ font-display: swap;
117
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU.woff2) format('woff2');
118
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
119
+ }
120
+ /* latin */
121
+ @font-face {
122
+ font-family: 'Inter';
123
+ font-style: normal;
124
+ font-weight: 500;
125
+ font-display: swap;
126
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2) format('woff2');
127
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
128
+ }
129
+ /* cyrillic-ext */
130
+ @font-face {
131
+ font-family: 'Inter';
132
+ font-style: normal;
133
+ font-weight: 600;
134
+ font-display: swap;
135
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU.woff2) format('woff2');
136
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
137
+ }
138
+ /* cyrillic */
139
+ @font-face {
140
+ font-family: 'Inter';
141
+ font-style: normal;
142
+ font-weight: 600;
143
+ font-display: swap;
144
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU.woff2) format('woff2');
145
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
146
+ }
147
+ /* greek-ext */
148
+ @font-face {
149
+ font-family: 'Inter';
150
+ font-style: normal;
151
+ font-weight: 600;
152
+ font-display: swap;
153
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU.woff2) format('woff2');
154
+ unicode-range: U+1F00-1FFF;
155
+ }
156
+ /* greek */
157
+ @font-face {
158
+ font-family: 'Inter';
159
+ font-style: normal;
160
+ font-weight: 600;
161
+ font-display: swap;
162
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU.woff2) format('woff2');
163
+ unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
164
+ }
165
+ /* vietnamese */
166
+ @font-face {
167
+ font-family: 'Inter';
168
+ font-style: normal;
169
+ font-weight: 600;
170
+ font-display: swap;
171
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU.woff2) format('woff2');
172
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
173
+ }
174
+ /* latin-ext */
175
+ @font-face {
176
+ font-family: 'Inter';
177
+ font-style: normal;
178
+ font-weight: 600;
179
+ font-display: swap;
180
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU.woff2) format('woff2');
181
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
182
+ }
183
+ /* latin */
184
+ @font-face {
185
+ font-family: 'Inter';
186
+ font-style: normal;
187
+ font-weight: 600;
188
+ font-display: swap;
189
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2) format('woff2');
190
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
191
+ }
192
+ /* cyrillic-ext */
193
+ @font-face {
194
+ font-family: 'Inter';
195
+ font-style: normal;
196
+ font-weight: 700;
197
+ font-display: swap;
198
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU.woff2) format('woff2');
199
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
200
+ }
201
+ /* cyrillic */
202
+ @font-face {
203
+ font-family: 'Inter';
204
+ font-style: normal;
205
+ font-weight: 700;
206
+ font-display: swap;
207
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU.woff2) format('woff2');
208
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
209
+ }
210
+ /* greek-ext */
211
+ @font-face {
212
+ font-family: 'Inter';
213
+ font-style: normal;
214
+ font-weight: 700;
215
+ font-display: swap;
216
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU.woff2) format('woff2');
217
+ unicode-range: U+1F00-1FFF;
218
+ }
219
+ /* greek */
220
+ @font-face {
221
+ font-family: 'Inter';
222
+ font-style: normal;
223
+ font-weight: 700;
224
+ font-display: swap;
225
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU.woff2) format('woff2');
226
+ unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
227
+ }
228
+ /* vietnamese */
229
+ @font-face {
230
+ font-family: 'Inter';
231
+ font-style: normal;
232
+ font-weight: 700;
233
+ font-display: swap;
234
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU.woff2) format('woff2');
235
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
236
+ }
237
+ /* latin-ext */
238
+ @font-face {
239
+ font-family: 'Inter';
240
+ font-style: normal;
241
+ font-weight: 700;
242
+ font-display: swap;
243
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU.woff2) format('woff2');
244
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
245
+ }
246
+ /* latin */
247
+ @font-face {
248
+ font-family: 'Inter';
249
+ font-style: normal;
250
+ font-weight: 700;
251
+ font-display: swap;
252
+ src: url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2) format('woff2');
253
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
254
+ }
255
+ /* cyrillic-ext */
256
+ @font-face {
257
+ font-family: 'JetBrains Mono';
258
+ font-style: normal;
259
+ font-weight: 400;
260
+ font-display: swap;
261
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwgknk-6nFg.woff2) format('woff2');
262
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
263
+ }
264
+ /* cyrillic */
265
+ @font-face {
266
+ font-family: 'JetBrains Mono';
267
+ font-style: normal;
268
+ font-weight: 400;
269
+ font-display: swap;
270
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwgknk-6nFg.woff2) format('woff2');
271
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
272
+ }
273
+ /* greek */
274
+ @font-face {
275
+ font-family: 'JetBrains Mono';
276
+ font-style: normal;
277
+ font-weight: 400;
278
+ font-display: swap;
279
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwgknk-6nFg.woff2) format('woff2');
280
+ unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
281
+ }
282
+ /* vietnamese */
283
+ @font-face {
284
+ font-family: 'JetBrains Mono';
285
+ font-style: normal;
286
+ font-weight: 400;
287
+ font-display: swap;
288
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwgknk-6nFg.woff2) format('woff2');
289
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
290
+ }
291
+ /* latin-ext */
292
+ @font-face {
293
+ font-family: 'JetBrains Mono';
294
+ font-style: normal;
295
+ font-weight: 400;
296
+ font-display: swap;
297
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwgknk-6nFg.woff2) format('woff2');
298
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
299
+ }
300
+ /* latin */
301
+ @font-face {
302
+ font-family: 'JetBrains Mono';
303
+ font-style: normal;
304
+ font-weight: 400;
305
+ font-display: swap;
306
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwgknk-4.woff2) format('woff2');
307
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
308
+ }
309
+ /* cyrillic-ext */
310
+ @font-face {
311
+ font-family: 'JetBrains Mono';
312
+ font-style: normal;
313
+ font-weight: 700;
314
+ font-display: swap;
315
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwgknk-6nFg.woff2) format('woff2');
316
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
317
+ }
318
+ /* cyrillic */
319
+ @font-face {
320
+ font-family: 'JetBrains Mono';
321
+ font-style: normal;
322
+ font-weight: 700;
323
+ font-display: swap;
324
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwgknk-6nFg.woff2) format('woff2');
325
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
326
+ }
327
+ /* greek */
328
+ @font-face {
329
+ font-family: 'JetBrains Mono';
330
+ font-style: normal;
331
+ font-weight: 700;
332
+ font-display: swap;
333
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwgknk-6nFg.woff2) format('woff2');
334
+ unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
335
+ }
336
+ /* vietnamese */
337
+ @font-face {
338
+ font-family: 'JetBrains Mono';
339
+ font-style: normal;
340
+ font-weight: 700;
341
+ font-display: swap;
342
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwgknk-6nFg.woff2) format('woff2');
343
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
344
+ }
345
+ /* latin-ext */
346
+ @font-face {
347
+ font-family: 'JetBrains Mono';
348
+ font-style: normal;
349
+ font-weight: 700;
350
+ font-display: swap;
351
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwgknk-6nFg.woff2) format('woff2');
352
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
353
+ }
354
+ /* latin */
355
+ @font-face {
356
+ font-family: 'JetBrains Mono';
357
+ font-style: normal;
358
+ font-weight: 700;
359
+ font-display: swap;
360
+ src: url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwgknk-4.woff2) format('woff2');
361
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
362
+ }
363
+ /* cyrillic-ext */
364
+ @font-face {
365
+ font-family: 'Montserrat';
366
+ font-style: normal;
367
+ font-weight: 400;
368
+ font-display: swap;
369
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format('woff2');
370
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
371
+ }
372
+ /* cyrillic */
373
+ @font-face {
374
+ font-family: 'Montserrat';
375
+ font-style: normal;
376
+ font-weight: 400;
377
+ font-display: swap;
378
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format('woff2');
379
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
380
+ }
381
+ /* vietnamese */
382
+ @font-face {
383
+ font-family: 'Montserrat';
384
+ font-style: normal;
385
+ font-weight: 400;
386
+ font-display: swap;
387
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format('woff2');
388
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
389
+ }
390
+ /* latin-ext */
391
+ @font-face {
392
+ font-family: 'Montserrat';
393
+ font-style: normal;
394
+ font-weight: 400;
395
+ font-display: swap;
396
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format('woff2');
397
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
398
+ }
399
+ /* latin */
400
+ @font-face {
401
+ font-family: 'Montserrat';
402
+ font-style: normal;
403
+ font-weight: 400;
404
+ font-display: swap;
405
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format('woff2');
406
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
407
+ }
408
+ /* cyrillic-ext */
409
+ @font-face {
410
+ font-family: 'Montserrat';
411
+ font-style: normal;
412
+ font-weight: 700;
413
+ font-display: swap;
414
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format('woff2');
415
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
416
+ }
417
+ /* cyrillic */
418
+ @font-face {
419
+ font-family: 'Montserrat';
420
+ font-style: normal;
421
+ font-weight: 700;
422
+ font-display: swap;
423
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format('woff2');
424
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
425
+ }
426
+ /* vietnamese */
427
+ @font-face {
428
+ font-family: 'Montserrat';
429
+ font-style: normal;
430
+ font-weight: 700;
431
+ font-display: swap;
432
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format('woff2');
433
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
434
+ }
435
+ /* latin-ext */
436
+ @font-face {
437
+ font-family: 'Montserrat';
438
+ font-style: normal;
439
+ font-weight: 700;
440
+ font-display: swap;
441
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format('woff2');
442
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
443
+ }
444
+ /* latin */
445
+ @font-face {
446
+ font-family: 'Montserrat';
447
+ font-style: normal;
448
+ font-weight: 700;
449
+ font-display: swap;
450
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format('woff2');
451
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
452
+ }
453
+ /* cyrillic-ext */
454
+ @font-face {
455
+ font-family: 'Montserrat';
456
+ font-style: normal;
457
+ font-weight: 900;
458
+ font-display: swap;
459
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format('woff2');
460
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
461
+ }
462
+ /* cyrillic */
463
+ @font-face {
464
+ font-family: 'Montserrat';
465
+ font-style: normal;
466
+ font-weight: 900;
467
+ font-display: swap;
468
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format('woff2');
469
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
470
+ }
471
+ /* vietnamese */
472
+ @font-face {
473
+ font-family: 'Montserrat';
474
+ font-style: normal;
475
+ font-weight: 900;
476
+ font-display: swap;
477
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format('woff2');
478
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
479
+ }
480
+ /* latin-ext */
481
+ @font-face {
482
+ font-family: 'Montserrat';
483
+ font-style: normal;
484
+ font-weight: 900;
485
+ font-display: swap;
486
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format('woff2');
487
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
488
+ }
489
+ /* latin */
490
+ @font-face {
491
+ font-family: 'Montserrat';
492
+ font-style: normal;
493
+ font-weight: 900;
494
+ font-display: swap;
495
+ src: url(https://fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format('woff2');
496
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
497
+ }