@donkit-ai/design-system 0.2.8 → 0.2.9

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/README.md CHANGED
@@ -38,7 +38,7 @@ npm install @donkit-ai/design-system@latest
38
38
  ## Компоненты
39
39
 
40
40
  - **Button** - кнопки с вариантами (primary, secondary, ghost) и размерами (small, medium, large)
41
- - **Tabs** - вкладки с вариантами secondary border) и ghost (без border), состоянием selected (small, medium, large)
41
+ - **Tabs** - вкладки с состоянием selected в трех размерах (small, medium, large)
42
42
  - **Input** - текстовые поля с поддержкой иконок, ошибок и подсказок (small, medium)
43
43
  - **Stepper** - числовое поле с кнопками +/- для изменения значения (small, medium)
44
44
  - **Card** - карточки двух типов: info (информационная, прозрачный фон) и interactive (интерактивная с hover эффектом)
@@ -200,13 +200,13 @@ document.documentElement.setAttribute('data-theme', 'light');
200
200
  - Font Family: **Fira Mono** (fallback: SF Mono, Monaco, Cascadia Code, Roboto Mono, monospace)
201
201
 
202
202
  **Размеры шрифтов (mobile → tablet → desktop):**
203
- - `--font-size-h1`: 36px → 40px → 48px
204
- - `--font-size-h2`: 28px → 32px → 36px
205
- - `--font-size-h3`: 24px → 28px → 32px
206
- - `--font-size-h4`: 16px → 20px → 24px
207
- - `--font-size-p1`: 16px → 16px20px
208
- - `--font-size-p2`: 12px → 16px → 16px
209
- - `--font-size-p3`: 12px → 12px → 14px
203
+ - `--font-size-h1`: 32px → 40px → 40px
204
+ - `--font-size-h2`: 28px → 36px → 36px
205
+ - `--font-size-h3`: 24px → 28px → 28px
206
+ - `--font-size-h4`: 18px → 20px → 20px
207
+ - `--font-size-p1`: 16px → 18px18px
208
+ - `--font-size-p2`: 14px → 16px → 16px
209
+ - `--font-size-p3`: 12px → 14px → 14px
210
210
 
211
211
  **Letter Spacing (трекинг для мелких кеглей):**
212
212
  - Меньше 20px → +2% (0.02em)
@@ -214,10 +214,10 @@ document.documentElement.setAttribute('data-theme', 'light');
214
214
  - Меньше 14px → +6% (0.06em)
215
215
 
216
216
  Адаптивные значения трекинга:
217
- - `--letter-spacing-h4`: 0.02em → 0 → 0 (16px / 20px / 24px)
218
- - `--letter-spacing-p1`: 0.02em → 0.02em → 0 (16px / 16px / 20px)
219
- - `--letter-spacing-p2`: 0.06em → 0.02em → 0.02em (12px / 16px / 16px)
220
- - `--letter-spacing-p3`: 0.06em → 0.06em → 0.04em (12px / 12px / 14px)
217
+ - `--letter-spacing-h4`: 0.02em → 0 → 0 (18px / 20px / 20px)
218
+ - `--letter-spacing-p1`: 0.02em → 0.02em → 0.02em (16px / 18px / 18px)
219
+ - `--letter-spacing-p2`: 0.04em → 0.02em → 0.02em (14px / 16px / 16px)
220
+ - `--letter-spacing-p3`: 0.06em → 0.04em → 0.04em (12px / 14px / 14px)
221
221
 
222
222
  ### Переходы
223
223
 
@@ -327,27 +327,14 @@ document.documentElement.setAttribute('data-theme', 'light');
327
327
 
328
328
  ### Tabs
329
329
 
330
- Вкладки с двумя вариантами оформления: secondary (с border) и ghost (без border).
330
+ Вкладки с минималистичным дизайном без border.
331
331
 
332
332
  ```jsx
333
333
  import { Tabs, Tab } from '@donkit-ai/design-system';
334
334
  import { AlertCircle } from 'lucide-react';
335
335
 
336
- // Secondary tabs (default) - с border
337
- <Tabs size="medium" variant="secondary">
338
- <Tab selected={selectedTab === 'tab1'} onClick={() => setSelectedTab('tab1')}>
339
- Overview
340
- </Tab>
341
- <Tab selected={selectedTab === 'tab2'} onClick={() => setSelectedTab('tab2')}>
342
- Details
343
- </Tab>
344
- <Tab selected={selectedTab === 'tab3'} onClick={() => setSelectedTab('tab3')}>
345
- Settings
346
- </Tab>
347
- </Tabs>
348
-
349
- // Ghost tabs - без border, минималистичный стиль
350
- <Tabs size="medium" variant="ghost">
336
+ // Basic tabs
337
+ <Tabs size="medium">
351
338
  <Tab selected={selectedTab === 'tab1'} onClick={() => setSelectedTab('tab1')}>
352
339
  Overview
353
340
  </Tab>
@@ -360,7 +347,7 @@ import { AlertCircle } from 'lucide-react';
360
347
  </Tabs>
361
348
 
362
349
  // With icons (всегда 20px для Tabs)
363
- <Tabs size="small" variant="secondary">
350
+ <Tabs size="small">
364
351
  <Tab
365
352
  selected={selectedTab === 'alerts'}
366
353
  onClick={() => setSelectedTab('alerts')}
@@ -374,19 +361,16 @@ import { AlertCircle } from 'lucide-react';
374
361
  </Tabs>
375
362
 
376
363
  // Disabled tab
377
- <Tabs size="medium" variant="secondary">
364
+ <Tabs size="medium">
378
365
  <Tab selected>Active</Tab>
379
366
  <Tab disabled>Disabled</Tab>
380
367
  </Tabs>
381
368
  ```
382
369
 
383
- **Варианты:**
384
- - **secondary** (default) - с border, как вторичные кнопки
385
- - Selected: фон `--color-item-bg-selected`, border `--color-border-selected`
386
- - Hover: фон `--color-item-bg-hover`, border `--color-border-hover`
387
- - **ghost** - без border, минималистичный
388
- - Selected: фон `--color-item-bg-selected`
389
- - Hover: фон `--color-item-bg-hover`
370
+ **Стили:**
371
+ - Selected: фон `--color-item-bg-selected`, текст `--color-txt-icon-1`
372
+ - Hover: фон `--color-item-bg-hover`, текст `--color-txt-icon-1`
373
+ - Default: текст `--color-txt-icon-2`
390
374
 
391
375
  **Размеры:** small, medium, large
392
376
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@donkit-ai/design-system",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "description": "Donkit Design System - minimal design tokens and React components",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -4,7 +4,6 @@
4
4
  gap: var(--space-s);
5
5
  padding: var(--space-s);
6
6
  border-radius: var(--radius-s);
7
- border: 1px solid;
8
7
  }
9
8
 
10
9
  .ds-alert--no-title {
@@ -59,7 +58,6 @@
59
58
  /* Variants */
60
59
  .ds-alert--info {
61
60
  background: linear-gradient(var(--color-status-info-bg), var(--color-status-info-bg)), var(--color-bg);
62
- border-color: var(--color-status-info);
63
61
  color: var(--color-status-info);
64
62
  }
65
63
 
@@ -69,7 +67,6 @@
69
67
 
70
68
  .ds-alert--success {
71
69
  background: linear-gradient(var(--color-status-success-bg), var(--color-status-success-bg)), var(--color-bg);
72
- border-color: var(--color-status-success);
73
70
  color: var(--color-status-success);
74
71
  }
75
72
 
@@ -79,7 +76,6 @@
79
76
 
80
77
  .ds-alert--warning {
81
78
  background: linear-gradient(var(--color-status-warning-bg), var(--color-status-warning-bg)), var(--color-bg);
82
- border-color: var(--color-status-warning);
83
79
  color: var(--color-status-warning);
84
80
  }
85
81
 
@@ -89,7 +85,6 @@
89
85
 
90
86
  .ds-alert--error {
91
87
  background: linear-gradient(var(--color-status-error-bg), var(--color-status-error-bg)), var(--color-bg);
92
- border-color: var(--color-status-error);
93
88
  color: var(--color-status-error);
94
89
  }
95
90
 
@@ -24,35 +24,29 @@
24
24
  .ds-badge--default {
25
25
  background-color: var(--color-item-bg);
26
26
  color: var(--color-txt-icon-2);
27
- border: 1px solid var(--color-txt-icon-2);
28
27
  }
29
28
 
30
29
  .ds-badge--info {
31
30
  background-color: var(--color-status-info-bg);
32
31
  color: var(--color-status-info);
33
- border: 1px solid var(--color-status-info);
34
32
  }
35
33
 
36
34
  .ds-badge--success {
37
35
  background-color: var(--color-status-success-bg);
38
36
  color: var(--color-status-success);
39
- border: 1px solid var(--color-status-success);
40
37
  }
41
38
 
42
39
  .ds-badge--warning {
43
40
  background-color: var(--color-status-warning-bg);
44
41
  color: var(--color-status-warning);
45
- border: 1px solid var(--color-status-warning);
46
42
  }
47
43
 
48
44
  .ds-badge--error {
49
45
  background-color: var(--color-status-error-bg);
50
46
  color: var(--color-status-error);
51
- border: 1px solid var(--color-status-error);
52
47
  }
53
48
 
54
49
  .ds-badge--accent {
55
50
  background-color: var(--color-red-10);
56
51
  color: var(--color-accent);
57
- border: 1px solid var(--color-accent);
58
52
  }
@@ -59,22 +59,22 @@
59
59
 
60
60
  /* Sizes */
61
61
  .ds-button--small {
62
- height: calc(20px + var(--space-xs) * 2);
63
- padding: 0 var(--space-s);
62
+ height: var(--height-s);
63
+ padding: 0 calc(var(--height-s) / 2);
64
64
  font-size: var(--font-size-p2);
65
65
  border-radius: var(--radius-xs);
66
66
  }
67
67
 
68
68
  .ds-button--medium {
69
- height: calc(24px + var(--space-s) * 2);
70
- padding: 0 var(--space-s);
69
+ height: var(--height-m);
70
+ padding: 0 calc(var(--height-m) / 2);
71
71
  font-size: var(--font-size-p1);
72
72
  border-radius: var(--radius-s);
73
73
  }
74
74
 
75
75
  .ds-button--large {
76
- height: calc(28px + var(--space-m) * 2);
77
- padding: 0 var(--space-m);
76
+ height: var(--height-l);
77
+ padding: 0 calc(var(--height-l) / 2);
78
78
  font-size: var(--font-size-h4);
79
79
  border-radius: var(--radius-s);
80
80
  gap: var(--space-s);
@@ -59,33 +59,33 @@
59
59
 
60
60
  /* Sizes */
61
61
  .ds-input--small {
62
- height: calc(20px + var(--space-xs) * 2);
63
- padding: 0 var(--space-s);
62
+ height: var(--height-s);
63
+ padding: 0 calc(var(--height-s) / 4);
64
64
  font-size: var(--font-size-p2);
65
65
  border-radius: var(--radius-xs);
66
66
  }
67
67
 
68
68
  .ds-input--medium {
69
- height: calc(24px + var(--space-s) * 2);
70
- padding: 0 var(--space-s);
69
+ height: var(--height-m);
70
+ padding: 0 calc(var(--height-m) / 4);
71
71
  font-size: var(--font-size-p1);
72
72
  border-radius: var(--radius-s);
73
73
  }
74
74
 
75
75
  .ds-input--with-icon.ds-input--small {
76
- padding-left: calc(var(--space-s) + 20px + var(--space-xs));
76
+ padding-left: calc(var(--height-s) / 4 + 20px + var(--height-s) / 4);
77
77
  }
78
78
 
79
79
  .ds-input--with-icon.ds-input--medium {
80
- padding-left: calc(var(--space-s) + 24px + var(--space-xs));
80
+ padding-left: calc(var(--height-m) / 4 + 24px + var(--height-m) / 4);
81
81
  }
82
82
 
83
83
  .ds-input--with-icon-right.ds-input--small {
84
- padding-right: calc(var(--space-s) + 20px + var(--space-xs));
84
+ padding-right: calc(var(--height-s) / 4 + 20px + var(--height-s) / 4);
85
85
  }
86
86
 
87
87
  .ds-input--with-icon-right.ds-input--medium {
88
- padding-right: calc(var(--space-s) + 24px + var(--space-xs));
88
+ padding-right: calc(var(--height-m) / 4 + 24px + var(--height-m) / 4);
89
89
  }
90
90
 
91
91
  .ds-input-icon {
@@ -97,11 +97,11 @@
97
97
  }
98
98
 
99
99
  .ds-input-icon--small {
100
- left: var(--space-xs);
100
+ left: 8px;
101
101
  }
102
102
 
103
103
  .ds-input-icon--medium {
104
- left: var(--space-s);
104
+ left: 11px;
105
105
  }
106
106
 
107
107
  .ds-input-icon-right {
@@ -122,11 +122,11 @@
122
122
  }
123
123
 
124
124
  .ds-input-icon-right--small {
125
- right: var(--space-xs);
125
+ right: 8px;
126
126
  }
127
127
 
128
128
  .ds-input-icon-right--medium {
129
- right: var(--space-s);
129
+ right: 11px;
130
130
  }
131
131
 
132
132
  .ds-input-hint {
@@ -61,15 +61,15 @@
61
61
 
62
62
  /* Sizes */
63
63
  .ds-select-trigger--small {
64
- height: calc(20px + var(--space-xs) * 2);
65
- padding: 0 var(--space-s);
64
+ height: var(--height-s);
65
+ padding: 0 calc(var(--height-s) / 4);
66
66
  font-size: var(--font-size-p2);
67
67
  border-radius: var(--radius-xs);
68
68
  }
69
69
 
70
70
  .ds-select-trigger--medium {
71
- height: calc(24px + var(--space-s) * 2);
72
- padding: 0 var(--space-s);
71
+ height: var(--height-m);
72
+ padding: 0 calc(var(--height-m) / 4);
73
73
  font-size: var(--font-size-p1);
74
74
  border-radius: var(--radius-s);
75
75
  }
@@ -135,14 +135,14 @@
135
135
  }
136
136
 
137
137
  .ds-select-option--small {
138
- min-height: calc(20px + var(--space-xs) * 2);
139
- padding: var(--space-xs) var(--space-s);
138
+ min-height: var(--height-s);
139
+ padding: var(--space-xs) calc(var(--height-s) / 4);
140
140
  font-size: var(--font-size-p2);
141
141
  }
142
142
 
143
143
  .ds-select-option--medium {
144
- min-height: calc(24px + var(--space-s) * 2);
145
- padding: var(--space-s);
144
+ min-height: var(--height-m);
145
+ padding: var(--space-xs) calc(var(--height-m) / 4);
146
146
  font-size: var(--font-size-p1);
147
147
  }
148
148
 
@@ -100,13 +100,13 @@
100
100
 
101
101
  /* Small */
102
102
  .ds-stepper--small .ds-stepper-button {
103
- width: 32px;
104
- height: 32px;
103
+ width: var(--height-s);
104
+ height: var(--height-s);
105
105
  padding: 0;
106
106
  }
107
107
 
108
108
  .ds-stepper--small .ds-stepper-input {
109
- height: 32px;
109
+ height: var(--height-s);
110
110
  font-size: var(--font-size-p2);
111
111
  letter-spacing: var(--letter-spacing-p2);
112
112
  padding: 0 var(--space-xs);
@@ -114,13 +114,13 @@
114
114
 
115
115
  /* Medium */
116
116
  .ds-stepper--medium .ds-stepper-button {
117
- width: 40px;
118
- height: 40px;
117
+ width: var(--height-m);
118
+ height: var(--height-m);
119
119
  padding: 0;
120
120
  }
121
121
 
122
122
  .ds-stepper--medium .ds-stepper-input {
123
- height: 40px;
123
+ height: var(--height-m);
124
124
  font-size: var(--font-size-p1);
125
125
  letter-spacing: var(--letter-spacing-p1);
126
126
  padding: 0 var(--space-s);
@@ -56,7 +56,7 @@ export function Stepper({
56
56
  disabled && 'ds-stepper--disabled',
57
57
  ].filter(Boolean).join(' ');
58
58
 
59
- const iconSize = size === 'small' ? 16 : 20;
59
+ const iconSize = size === 'small' ? 20 : 24;
60
60
 
61
61
  return (
62
62
  <div className={className}>
@@ -20,20 +20,6 @@
20
20
  }
21
21
 
22
22
  /* Variants */
23
- .ds-tab--secondary {
24
- border: 1px solid var(--color-border);
25
- }
26
-
27
- .ds-tab--secondary:hover:not(.ds-tab--selected):not(:disabled) {
28
- background-color: var(--color-item-bg-hover);
29
- border-color: var(--color-border-hover);
30
- }
31
-
32
- .ds-tab--secondary.ds-tab--selected {
33
- background-color: var(--color-item-bg-selected);
34
- border-color: var(--color-border-selected);
35
- }
36
-
37
23
  .ds-tab--ghost {
38
24
  border: none;
39
25
  color: var(--color-txt-icon-2);
@@ -51,22 +37,22 @@
51
37
 
52
38
  /* Sizes */
53
39
  .ds-tab--small {
54
- height: calc(20px + var(--space-xs) * 2);
55
- padding: 0 var(--space-s);
40
+ height: var(--height-s);
41
+ padding: 0 calc(var(--height-s) / 2);
56
42
  font-size: var(--font-size-p2);
57
43
  border-radius: var(--radius-xs);
58
44
  }
59
45
 
60
46
  .ds-tab--medium {
61
- height: calc(24px + var(--space-s) * 2);
62
- padding: 0 var(--space-s);
47
+ height: var(--height-m);
48
+ padding: 0 calc(var(--height-m) / 2);
63
49
  font-size: var(--font-size-p1);
64
50
  border-radius: var(--radius-s);
65
51
  }
66
52
 
67
53
  .ds-tab--large {
68
- height: calc(28px + var(--space-m) * 2);
69
- padding: 0 var(--space-m);
54
+ height: var(--height-l);
55
+ padding: 0 calc(var(--height-l) / 2);
70
56
  font-size: var(--font-size-p1);
71
57
  border-radius: var(--radius-s);
72
58
  gap: var(--space-s);
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import './Tabs.css';
3
3
 
4
- export function Tabs({ children, size = 'medium', variant = 'secondary', ...props }) {
4
+ export function Tabs({ children, size = 'medium', variant = 'ghost', ...props }) {
5
5
  return (
6
6
  <div className="ds-tabs" role="tablist" {...props}>
7
7
  {React.Children.map(children, (child) => {
@@ -14,7 +14,7 @@ export function Tabs({ children, size = 'medium', variant = 'secondary', ...prop
14
14
  );
15
15
  }
16
16
 
17
- export function Tab({ children, selected = false, onClick, size = 'medium', variant = 'secondary', disabled = false, icon, ...props }) {
17
+ export function Tab({ children, selected = false, onClick, size = 'medium', variant = 'ghost', disabled = false, icon, ...props }) {
18
18
  const isIconOnly = icon && !children;
19
19
 
20
20
  const className = [
@@ -28,8 +28,10 @@
28
28
  transition: border-color var(--transition-normal);
29
29
  line-height: 1.5;
30
30
  resize: vertical;
31
- /* Кастомный resize handle (уголок) */
32
- background-image: linear-gradient(135deg, transparent 0%, transparent 50%, var(--color-border) 50%, var(--color-border) 56%, transparent 56%, transparent 62%, var(--color-border) 62%, var(--color-border) 68%, transparent 68%);
31
+ /* Кастомный resize handle */
32
+ background:
33
+ linear-gradient(135deg, transparent 6px, var(--color-border) 6px, var(--color-border) 7px, transparent 7px),
34
+ linear-gradient(135deg, transparent 10px, var(--color-border) 10px, var(--color-border) 11px, transparent 11px);
33
35
  background-repeat: no-repeat;
34
36
  background-position: bottom right;
35
37
  background-size: 12px 12px;
@@ -41,14 +43,24 @@
41
43
 
42
44
  .ds-textarea:hover:not(:disabled) {
43
45
  border-color: var(--color-border-hover);
44
- background-image: linear-gradient(135deg, transparent 0%, transparent 50%, var(--color-border-hover) 50%, var(--color-border-hover) 56%, transparent 56%, transparent 62%, var(--color-border-hover) 62%, var(--color-border-hover) 68%, transparent 68%);
46
+ background:
47
+ linear-gradient(135deg, transparent 6px, var(--color-border-hover) 6px, var(--color-border-hover) 7px, transparent 7px),
48
+ linear-gradient(135deg, transparent 10px, var(--color-border-hover) 10px, var(--color-border-hover) 11px, transparent 11px);
49
+ background-repeat: no-repeat;
50
+ background-position: bottom right;
51
+ background-size: 12px 12px;
45
52
  }
46
53
 
47
54
  .ds-textarea:focus,
48
55
  .ds-textarea:active {
49
56
  outline: none;
50
57
  border-color: var(--color-border-hover);
51
- background-image: linear-gradient(135deg, transparent 0%, transparent 50%, var(--color-border-hover) 50%, var(--color-border-hover) 56%, transparent 56%, transparent 62%, var(--color-border-hover) 62%, var(--color-border-hover) 68%, transparent 68%);
58
+ background:
59
+ linear-gradient(135deg, transparent 6px, var(--color-border-hover) 6px, var(--color-border-hover) 7px, transparent 7px),
60
+ linear-gradient(135deg, transparent 10px, var(--color-border-hover) 10px, var(--color-border-hover) 11px, transparent 11px);
61
+ background-repeat: no-repeat;
62
+ background-position: bottom right;
63
+ background-size: 12px 12px;
52
64
  }
53
65
 
54
66
  .ds-textarea:disabled {
@@ -57,12 +69,17 @@
57
69
 
58
70
  .ds-textarea--error {
59
71
  border-color: var(--color-error);
60
- background-image: linear-gradient(135deg, transparent 0%, transparent 50%, var(--color-error) 50%, var(--color-error) 56%, transparent 56%, transparent 62%, var(--color-error) 62%, var(--color-error) 68%, transparent 68%);
72
+ background:
73
+ linear-gradient(135deg, transparent 6px, var(--color-error) 6px, var(--color-error) 7px, transparent 7px),
74
+ linear-gradient(135deg, transparent 10px, var(--color-error) 10px, var(--color-error) 11px, transparent 11px);
75
+ background-repeat: no-repeat;
76
+ background-position: bottom right;
77
+ background-size: 12px 12px;
61
78
  }
62
79
 
63
80
  .ds-textarea--no-resize {
64
81
  resize: none;
65
- background-image: none;
82
+ background: none;
66
83
  }
67
84
 
68
85
  /* Sizes */
@@ -160,13 +160,22 @@
160
160
  /* =====================================
161
161
  * 4) Border radius
162
162
  * ===================================*/
163
- --radius-xs: 2px;
164
- --radius-s: 4px;
163
+ --radius-xs: 4px;
164
+ --radius-s: 6px;
165
165
  }
166
166
 
167
167
  :root {
168
168
  /* =====================================
169
- * 5) Typography scale (mobile/tablet/desktop)
169
+ * 5) Component heights
170
+ * ===================================*/
171
+ --height-s: 32px;
172
+ --height-m: 44px;
173
+ --height-l: 56px;
174
+ }
175
+
176
+ :root {
177
+ /* =====================================
178
+ * 6) Typography scale (mobile/tablet/desktop)
170
179
  * ===================================*/
171
180
  /* Base typography settings */
172
181
  font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
@@ -174,21 +183,21 @@
174
183
  font-weight: 400;
175
184
 
176
185
  /* Mobile (default) */
177
- --font-size-h1: 36px;
186
+ --font-size-h1: 32px;
178
187
  --font-size-h2: 28px;
179
188
  --font-size-h3: 24px;
180
- --font-size-h4: 16px;
189
+ --font-size-h4: 18px;
181
190
  --font-size-p1: 16px;
182
- --font-size-p2: 12px;
191
+ --font-size-p2: 14px;
183
192
  --font-size-p3: 12px;
184
193
 
185
194
  /* Letter spacing (tracking) for small font sizes */
186
195
  --letter-spacing-h1: 0;
187
196
  --letter-spacing-h2: 0;
188
197
  --letter-spacing-h3: 0;
189
- --letter-spacing-h4: 0.02em; /* 16px → +2% */
198
+ --letter-spacing-h4: 0.02em; /* 18px → +2% */
190
199
  --letter-spacing-p1: 0.02em; /* 16px → +2% */
191
- --letter-spacing-p2: 0.06em; /* 12px → +6% */
200
+ --letter-spacing-p2: 0.04em; /* 14px → +4% */
192
201
  --letter-spacing-p3: 0.06em; /* 12px → +6% */
193
202
  }
194
203
 
@@ -196,33 +205,33 @@
196
205
  :root {
197
206
  /* Tablet */
198
207
  --font-size-h1: 40px;
199
- --font-size-h2: 32px;
208
+ --font-size-h2: 36px;
200
209
  --font-size-h3: 28px;
201
210
  --font-size-h4: 20px;
202
- --font-size-p1: 16px;
211
+ --font-size-p1: 18px;
203
212
  --font-size-p2: 16px;
204
- --font-size-p3: 12px;
213
+ --font-size-p3: 14px;
205
214
 
206
215
  --letter-spacing-h4: 0; /* 20px → no tracking */
207
- --letter-spacing-p1: 0.02em; /* 16px → +2% */
216
+ --letter-spacing-p1: 0.02em; /* 18px → +2% */
208
217
  --letter-spacing-p2: 0.02em; /* 16px → +2% */
209
- --letter-spacing-p3: 0.06em; /* 12px → +6% */
218
+ --letter-spacing-p3: 0.04em; /* 14px → +4% */
210
219
  }
211
220
  }
212
221
 
213
222
  @media (min-width: 1280px) {
214
223
  :root {
215
224
  /* Desktop */
216
- --font-size-h1: 48px;
225
+ --font-size-h1: 40px;
217
226
  --font-size-h2: 36px;
218
- --font-size-h3: 32px;
219
- --font-size-h4: 24px;
220
- --font-size-p1: 20px;
227
+ --font-size-h3: 28px;
228
+ --font-size-h4: 20px;
229
+ --font-size-p1: 18px;
221
230
  --font-size-p2: 16px;
222
231
  --font-size-p3: 14px;
223
232
 
224
- --letter-spacing-h4: 0; /* 24px → no tracking */
225
- --letter-spacing-p1: 0; /* 20pxno tracking */
233
+ --letter-spacing-h4: 0; /* 20px → no tracking */
234
+ --letter-spacing-p1: 0.02em; /* 18px+2% */
226
235
  --letter-spacing-p2: 0.02em; /* 16px → +2% */
227
236
  --letter-spacing-p3: 0.04em; /* 14px → +4% */
228
237
  }
@@ -230,7 +239,7 @@
230
239
 
231
240
  :root {
232
241
  /* =====================================
233
- * 5) Additional layout tokens
242
+ * 7) Additional layout tokens
234
243
  * ===================================*/
235
244
  /* Mobile (default) */
236
245
  --page-padding-hor: 16px;