@noobsociety/nsds 0.3.0 → 0.4.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/CHANGELOG.md +46 -1
- package/CONTRIBUTING.md +43 -2
- package/README.md +87 -36
- package/SECURITY.md +38 -4
- package/dist/client/index.cjs +1 -0
- package/dist/client/index.d.cts +6 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +5 -0
- package/dist/components/_card-base.css +99 -0
- package/dist/components/hud/HUDBar.d.ts +16 -3
- package/dist/components/hud/HUDChat.d.ts +26 -0
- package/dist/components/hud/HUDJoystick.d.ts +21 -0
- package/dist/components/hud/HUDMinimap.d.ts +14 -0
- package/dist/components/hud/HUDPanel.d.ts +25 -0
- package/dist/components/hud/HUDTabWindow.d.ts +37 -0
- package/dist/components/hud-editor.css +197 -0
- package/dist/components/icons/RPGIcon.d.ts +15 -11
- package/dist/components/icons/registry.d.ts +37 -0
- package/dist/components/primitives.css +50 -20
- package/dist/components/react/index.d.ts +12 -2
- package/dist/components/scene-builder.css +740 -0
- package/dist/components/scene-builder.js +3039 -0
- package/dist/components/shared/constants.d.ts +41 -0
- package/dist/components/shared/styles.d.ts +1 -42
- package/dist/index.cjs +1 -1
- package/dist/index.js +6173 -1821
- package/dist/registry-BizUEm6W.js +136 -0
- package/dist/registry-Cyq-qspU.cjs +1 -0
- package/dist/styles.css +1 -0
- package/dist/tailwind/preset.cjs +108 -0
- package/dist/tailwind/preset.d.cts +3 -3
- package/dist/tokens/base.css +17 -4
- package/dist/tokens/colors.css +57 -53
- package/dist/tokens/hud.css +119 -78
- package/dist/tokens/motion.css +57 -23
- package/dist/tokens/spacing.css +39 -39
- package/dist/tokens/typography.css +20 -20
- package/package.json +41 -12
- package/dist/tailwind/package.json +0 -1
- package/dist/tailwind/preset.d.ts +0 -4
- package/dist/tailwind/preset.js +0 -144
package/dist/tokens/hud.css
CHANGED
|
@@ -9,125 +9,166 @@
|
|
|
9
9
|
vital bar colours that have no homepage analogue) the token is defined independently. */
|
|
10
10
|
|
|
11
11
|
:root {
|
|
12
|
-
|
|
13
12
|
/* ── Fonts ─────────────────────────────────────────────────── */
|
|
14
|
-
--hud-font:
|
|
15
|
-
--hud-font-ui: var(--ns-font-body);
|
|
13
|
+
--hud-font: var(--ns-font-pixel); /* chrome labels, tab caps, key glyphs */
|
|
14
|
+
--hud-font-ui: var(--ns-font-body); /* draggable windows, dialogue, inventory */
|
|
15
|
+
|
|
16
|
+
/* ── HUD text scale (pixel-perfect at 24×24 grid) ───────────── */
|
|
17
|
+
--hud-text-xs: 4px;
|
|
18
|
+
--hud-text-sm: 5px;
|
|
19
|
+
--hud-text-md: 7px;
|
|
20
|
+
--hud-text-lg: 9px;
|
|
21
|
+
--hud-text-xl: 11px;
|
|
16
22
|
|
|
17
23
|
/* ── Accent / currency ─────────────────────────────────────── */
|
|
18
24
|
/* DS is source of truth: game migrates from #ffe066 → --ns-gold (#e6db74). */
|
|
19
|
-
--hud-gold:
|
|
20
|
-
--hud-talents: var(--ns-gold);
|
|
25
|
+
--hud-gold: var(--ns-gold);
|
|
26
|
+
--hud-talents: var(--ns-gold); /* Talents wallet number */
|
|
21
27
|
|
|
22
28
|
/* ── Text ───────────────────────────────────────────────────── */
|
|
23
|
-
--hud-text:
|
|
29
|
+
--hud-text: var(--ns-ink);
|
|
24
30
|
--hud-text-dim: var(--ns-ink-dim);
|
|
25
|
-
--hud-shadow:
|
|
31
|
+
--hud-shadow: none; /* no text-shadow at HUD pixel sizes */
|
|
26
32
|
--hud-bar-shadow: none;
|
|
27
33
|
|
|
28
34
|
/* ── Surfaces ───────────────────────────────────────────────── */
|
|
29
35
|
/* Game chrome glass: lighter than --ns-glass so the world reads through. */
|
|
30
|
-
--hud-glass:
|
|
36
|
+
--hud-glass: rgba(12, 16, 22, 0.62);
|
|
31
37
|
--hud-glass-blur: 6px;
|
|
32
|
-
--hud-bg:
|
|
33
|
-
--hud-bg-strong:
|
|
34
|
-
--hud-track:
|
|
35
|
-
--hud-line:
|
|
36
|
-
--hud-
|
|
38
|
+
--hud-bg: rgba(0, 0, 0, 0.35);
|
|
39
|
+
--hud-bg-strong: rgba(0, 0, 0, 0.72);
|
|
40
|
+
--hud-track: rgba(255, 255, 255, 0.1); /* bar + XP track background */
|
|
41
|
+
--hud-line: rgba(255, 255, 255, 0.18);
|
|
42
|
+
--hud-divider: var(--hud-line);
|
|
43
|
+
--hud-avatar-bg: rgba(72, 86, 116, 0.82);
|
|
37
44
|
|
|
38
45
|
/* ── Input / selection ─────────────────────────────────────── */
|
|
39
|
-
--hud-input-bg:
|
|
40
|
-
--hud-sel-bg:
|
|
41
|
-
--hud-sel-fg:
|
|
46
|
+
--hud-input-bg: rgba(10, 14, 20, 0.55);
|
|
47
|
+
--hud-sel-bg: var(--ns-ink);
|
|
48
|
+
--hud-sel-fg: var(--ns-bg-1);
|
|
42
49
|
|
|
43
50
|
/* ── Elements (identity.ts ELEMENT_DISPLAY) ───────────────────── */
|
|
44
51
|
/* ── Elements (identity.ts ELEMENT_DISPLAY exact colors) ─────────── */
|
|
45
52
|
--hud-el-neutral: #888780;
|
|
46
|
-
--hud-el-earth:
|
|
47
|
-
--hud-el-wind:
|
|
48
|
-
--hud-el-water:
|
|
49
|
-
--hud-el-fire:
|
|
50
|
-
--hud-el-light:
|
|
51
|
-
--hud-el-dark:
|
|
52
|
-
--hud-el-void:
|
|
53
|
+
--hud-el-earth: #639922;
|
|
54
|
+
--hud-el-wind: #5dcaa5;
|
|
55
|
+
--hud-el-water: #378add;
|
|
56
|
+
--hud-el-fire: #ba7517;
|
|
57
|
+
--hud-el-light: #fac775;
|
|
58
|
+
--hud-el-dark: #888780;
|
|
59
|
+
--hud-el-void: #7f77dd;
|
|
53
60
|
|
|
54
61
|
/* ── Vital bars ─────────────────────────────────────────────── */
|
|
55
62
|
/* HP — green track, bright fill, low-HP red warning */
|
|
56
|
-
--hud-hp:
|
|
57
|
-
--hud-hp-fill:
|
|
58
|
-
--hud-hp-low:
|
|
59
|
-
--hud-hp-label:
|
|
63
|
+
--hud-hp: var(--hud-track); /* track background */
|
|
64
|
+
--hud-hp-fill: #4caf73; /* normal fill */
|
|
65
|
+
--hud-hp-low: #cc3333; /* fill under 30% → also pulses */
|
|
66
|
+
--hud-hp-label: #88ee88; /* "HP" label text in classic bar */
|
|
60
67
|
/* MP — blue track, bright fill, low-MP muted */
|
|
61
|
-
--hud-mp:
|
|
62
|
-
--hud-mp-fill:
|
|
63
|
-
--hud-mp-low:
|
|
64
|
-
--hud-mp-label:
|
|
68
|
+
--hud-mp: var(--hud-track); /* track background (internal id: sp) */
|
|
69
|
+
--hud-mp-fill: #5b9bd5; /* normal fill */
|
|
70
|
+
--hud-mp-low: #4f7fc0; /* fill under 30% */
|
|
71
|
+
--hud-mp-label: #8888ee; /* "MP"/"SP" label text */
|
|
72
|
+
|
|
73
|
+
/* Stamina — segmented endurance bar */
|
|
74
|
+
--hud-stamina-fill: #5dcaa5; /* teal fill */
|
|
75
|
+
--hud-stamina-label: #8fe6cc; /* stamina label text */
|
|
65
76
|
|
|
66
77
|
/* ── XP tracks ──────────────────────────────────────────────── */
|
|
67
78
|
/* Three independent mastery tracks: Base (BXP), Tech (TXP), Weapon (WXP). */
|
|
68
|
-
--hud-xp-base:
|
|
69
|
-
--hud-xp-base-rgb:
|
|
70
|
-
--hud-xp-base-label:
|
|
71
|
-
--hud-xp-job:
|
|
72
|
-
--hud-xp-job-rgb:
|
|
73
|
-
--hud-xp-job-label:
|
|
74
|
-
--hud-xp-weapon:
|
|
75
|
-
--hud-xp-weapon-rgb:
|
|
76
|
-
--hud-xp-weapon-label:
|
|
79
|
+
--hud-xp-base: #4488cc; /* BXP fill — steel blue */
|
|
80
|
+
--hud-xp-base-rgb: 68 136 204; /* @kind other */
|
|
81
|
+
--hud-xp-base-label: #88aaee; /* BXP label */
|
|
82
|
+
--hud-xp-job: #8855cc; /* TXP fill — purple */
|
|
83
|
+
--hud-xp-job-rgb: 136 85 204; /* @kind other */
|
|
84
|
+
--hud-xp-job-label: #aa88ee; /* TXP label */
|
|
85
|
+
--hud-xp-weapon: #cc8844; /* WXP fill — amber */
|
|
86
|
+
--hud-xp-weapon-rgb: 204 136 68; /* @kind other */
|
|
87
|
+
--hud-xp-weapon-label: #eeaa66; /* WXP label */
|
|
77
88
|
|
|
78
89
|
/* Progress bars in the player card detail (Marks / Craft). */
|
|
79
|
-
--hud-marks-track:
|
|
80
|
-
--hud-marks-fill:
|
|
81
|
-
--hud-craft-track:
|
|
82
|
-
--hud-craft-fill:
|
|
90
|
+
--hud-marks-track: #3a2e6e;
|
|
91
|
+
--hud-marks-fill: #7f77dd;
|
|
92
|
+
--hud-craft-track: #4a2e0a;
|
|
93
|
+
--hud-craft-fill: #ba7517;
|
|
83
94
|
|
|
84
95
|
/* ── Chat log channel tones ─────────────────────────────────── */
|
|
85
96
|
/* Logs tab (battle narration) vs Chat tab (social stream). */
|
|
86
|
-
--hud-tone-battle: #ff8888;
|
|
87
|
-
--hud-tone-world:
|
|
88
|
-
--hud-tone-gain:
|
|
89
|
-
--hud-tone-say:
|
|
97
|
+
--hud-tone-battle: #ff8888; /* combat hits, defeat lines */
|
|
98
|
+
--hud-tone-world: #88ccff; /* map announcements, world events */
|
|
99
|
+
--hud-tone-gain: #aaffaa; /* EXP / loot / discovery / rewards */
|
|
100
|
+
--hud-tone-say: #cccccc; /* player speech, system messages */
|
|
90
101
|
|
|
91
102
|
/* ── Status / buffs ─────────────────────────────────────────── */
|
|
92
|
-
--hud-danger:
|
|
93
|
-
--hud-buff:
|
|
94
|
-
--hud-debuff:
|
|
103
|
+
--hud-danger: var(--ns-pink); /* death zone, error states */
|
|
104
|
+
--hud-buff: var(--ns-green); /* positive effect glyphs */
|
|
105
|
+
--hud-debuff: #ee6666; /* negative effect glyphs */
|
|
95
106
|
|
|
96
107
|
/* ── Minimap ────────────────────────────────────────────────── */
|
|
97
|
-
--hud-minimap-bg:
|
|
98
|
-
--hud-minimap-edge: #2a4a2a;
|
|
99
|
-
--hud-minimap-
|
|
100
|
-
--hud-minimap-
|
|
101
|
-
--hud-minimap-
|
|
102
|
-
--hud-minimap-
|
|
108
|
+
--hud-minimap-bg: #091509; /* canvas fill */
|
|
109
|
+
--hud-minimap-edge: #2a4a2a; /* outer diamond stroke */
|
|
110
|
+
--hud-minimap-path: var(--hud-gold); /* paths / points of interest */
|
|
111
|
+
--hud-minimap-player: #ffffff; /* player dot */
|
|
112
|
+
--hud-minimap-enemy: #ff5a5a; /* aggressive mob dot */
|
|
113
|
+
--hud-minimap-npc: #f4c542; /* interactable / NPC dot */
|
|
114
|
+
--hud-minimap-dest: var(--ns-cyan); /* walk-goal diamond */
|
|
103
115
|
|
|
104
116
|
/* ── Geometry ───────────────────────────────────────────────── */
|
|
105
|
-
--hud-radius:
|
|
117
|
+
--hud-radius: 4px;
|
|
106
118
|
--hud-radius-sm: 2px;
|
|
119
|
+
--hud-grid-overlay: rgba(255, 255, 255, 0.07); /* drag-mode grid line tint */
|
|
120
|
+
|
|
121
|
+
/* ── Scene Builder editor chrome ────────────────────────────── */
|
|
122
|
+
/* Canvas-editing affordances for the HUD composer (resize handles, delete
|
|
123
|
+
buttons, align bar, swatches, ghost, tooltips). Consumed by
|
|
124
|
+
components/scene-builder.css — the source of truth for the editor's look.
|
|
125
|
+
The black-ink shadows below live in tokens (not literals) so every editing
|
|
126
|
+
overlay shares one stroke/ring vocabulary. */
|
|
127
|
+
--hud-edit-handle: 5px; /* resize-handle box */
|
|
128
|
+
--hud-edit-handle-fill: rgb(var(--ns-gold-rgb) / 0.95);
|
|
129
|
+
--hud-edit-handle-ring: 0 0 0 1px rgba(0, 0, 0, 0.6);
|
|
130
|
+
--hud-edit-del: 10px; /* per-element + floating delete */
|
|
131
|
+
--hud-edit-btn: 22px; /* header chrome buttons */
|
|
132
|
+
--hud-edit-toggle-h: 18px; /* grid / hud / bg toggles */
|
|
133
|
+
--hud-edit-ring: rgba(0, 0, 0, 0.5); /* floater & tooltip 1px ring / drop shadow */
|
|
134
|
+
--hud-edit-hover: rgba(255, 255, 255, 0.06); /* subtle chrome hover fill */
|
|
135
|
+
--hud-edit-overlay: rgba(255, 255, 255, 0.1); /* align-button resting fill */
|
|
136
|
+
/* White HUD text over the world: 4-corner pixel stroke (+ soft glow on labels). */
|
|
137
|
+
--hud-edit-stroke:
|
|
138
|
+
-1px -1px 0 rgba(0, 0, 0, 0.92), 1px -1px 0 rgba(0, 0, 0, 0.92), -1px 1px 0 rgba(0, 0, 0, 0.92),
|
|
139
|
+
1px 1px 0 rgba(0, 0, 0, 0.92), 0 0 4px rgba(0, 0, 0, 0.6);
|
|
140
|
+
--hud-edit-stroke-bar:
|
|
141
|
+
-1px -1px 0 rgba(0, 0, 0, 0.92), 1px -1px 0 rgba(0, 0, 0, 0.92), -1px 1px 0 rgba(0, 0, 0, 0.92),
|
|
142
|
+
1px 1px 0 rgba(0, 0, 0, 0.92);
|
|
107
143
|
|
|
108
144
|
/* ── Cross-layout geometry (640×360 design space) ───────────── */
|
|
109
145
|
/* The HUD lives in a 3×3 grid over the 640×360 canvas.
|
|
110
146
|
Each corner pocket sits inside its cell with 5% padding per axis. */
|
|
111
|
-
--hud-cross-cell-w: calc(640px / 3); /* @kind other */
|
|
112
|
-
--hud-cross-cell-h: calc(360px / 3); /* @kind other */
|
|
113
|
-
--hud-cross-pad-x:
|
|
147
|
+
--hud-cross-cell-w: calc(640px / 3); /* @kind other */ /* 213.33px */
|
|
148
|
+
--hud-cross-cell-h: calc(360px / 3); /* @kind other */ /* 120px */
|
|
149
|
+
--hud-cross-pad-x: calc(var(--hud-cross-cell-w) * 0.05); /* 10.67px */
|
|
114
150
|
/* NOTE: CSS percentage padding always resolves to % of the element WIDTH,
|
|
115
151
|
so pad-y equals pad-x, not 5% of the cell height. */
|
|
116
|
-
--hud-cross-pad-y:
|
|
117
|
-
|
|
118
|
-
/* ──
|
|
119
|
-
/*
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
--hud-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
152
|
+
--hud-cross-pad-y: calc(var(--hud-cross-cell-w) * 0.05); /* 10.67px — same as pad-x */
|
|
153
|
+
|
|
154
|
+
/* ── Game canvas & 24×24 drag grid ─────────────────────────── */
|
|
155
|
+
/* Source of truth for the 667×375 HUD canvas and its 24×24 placement grid.
|
|
156
|
+
All HUD element positioning uses grid-column / grid-row spans.
|
|
157
|
+
No element may span fewer than 1 cell on either axis. */
|
|
158
|
+
--hud-canvas-bg: #000; /* outer background behind the game canvas */
|
|
159
|
+
--hud-canvas-w: 667px; /* design canvas width */
|
|
160
|
+
--hud-canvas-h: 375px; /* design canvas height */
|
|
161
|
+
--hud-grid-cols: 24; /* @kind other */
|
|
162
|
+
--hud-grid-rows: 24; /* @kind other */
|
|
163
|
+
--hud-grid-gap: 2px; /* gap between cells */
|
|
164
|
+
/* Cell dimensions (canvas minus gaps, divided by count) */
|
|
165
|
+
--hud-cell-w: calc((667px - 23 * 2px) / 24); /* @kind spacing */ /* ≈27.8px */
|
|
166
|
+
--hud-cell-h: calc((375px - 23 * 2px) / 24); /* @kind spacing */ /* ≈15.6px */
|
|
167
|
+
|
|
168
|
+
/* ── Minimum interactive tap target: 2×2 cells ──────────────── */
|
|
169
|
+
/* No HUD button, slot, or icon may be smaller than this.
|
|
170
|
+
Passive elements (bars, dividers, borders) are exempt.
|
|
171
|
+
At runtime HUD scales ~2–3×, mapping these to ≥44px real px. */
|
|
172
|
+
--hud-min-tap-w: calc(var(--hud-cell-w) * 2); /* @kind spacing */ /* ≈55.6px */
|
|
173
|
+
--hud-min-tap-h: calc(var(--hud-cell-h) * 2); /* @kind spacing */ /* ≈31.2px */
|
|
133
174
|
}
|
package/dist/tokens/motion.css
CHANGED
|
@@ -1,63 +1,97 @@
|
|
|
1
1
|
/* NoobSociety — Motion tokens & keyframes */
|
|
2
2
|
:root {
|
|
3
3
|
/* ── Durations ────────────────────────────────────────────── */
|
|
4
|
-
--ns-dur-fast:
|
|
5
|
-
--ns-dur-base:
|
|
6
|
-
--ns-dur-slow:
|
|
7
|
-
--ns-dur-xslow:
|
|
4
|
+
--ns-dur-fast: 150ms; /* @kind other */
|
|
5
|
+
--ns-dur-base: 200ms; /* @kind other */
|
|
6
|
+
--ns-dur-slow: 400ms; /* @kind other */
|
|
7
|
+
--ns-dur-xslow: 600ms; /* @kind other */
|
|
8
8
|
|
|
9
9
|
/* ── Easings ──────────────────────────────────────────────── */
|
|
10
|
-
--ns-ease-out:
|
|
11
|
-
--ns-ease-in-out: ease-in-out;
|
|
12
|
-
--ns-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
10
|
+
--ns-ease-out: ease-out; /* @kind other */
|
|
11
|
+
--ns-ease-in-out: ease-in-out; /* @kind other */
|
|
12
|
+
--ns-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /* @kind other */
|
|
13
13
|
|
|
14
14
|
/* ── Transitions (common shorthand) ──────────────────────── */
|
|
15
|
-
--ns-transition-fast: var(--ns-dur-fast) var(--ns-ease-out);
|
|
16
|
-
--ns-transition-base: var(--ns-dur-base) var(--ns-ease-out);
|
|
15
|
+
--ns-transition-fast: var(--ns-dur-fast) var(--ns-ease-out); /* @kind other */
|
|
16
|
+
--ns-transition-base: var(--ns-dur-base) var(--ns-ease-out); /* @kind other */
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
/* ── Keyframes ────────────────────────────────────────────────── */
|
|
20
20
|
|
|
21
21
|
/* Character idle bob (with centered offset) */
|
|
22
22
|
@keyframes ns-bob {
|
|
23
|
-
0%,
|
|
24
|
-
|
|
23
|
+
0%,
|
|
24
|
+
100% {
|
|
25
|
+
transform: translateX(-50%) translateY(0);
|
|
26
|
+
}
|
|
27
|
+
50% {
|
|
28
|
+
transform: translateX(-50%) translateY(-6px);
|
|
29
|
+
}
|
|
25
30
|
}
|
|
26
31
|
|
|
27
32
|
/* Generic idle bob (no X offset) */
|
|
28
33
|
@keyframes ns-bob-plain {
|
|
29
|
-
0%,
|
|
30
|
-
|
|
34
|
+
0%,
|
|
35
|
+
100% {
|
|
36
|
+
transform: translateY(0);
|
|
37
|
+
}
|
|
38
|
+
50% {
|
|
39
|
+
transform: translateY(-5px);
|
|
40
|
+
}
|
|
31
41
|
}
|
|
32
42
|
|
|
33
43
|
/* Pixel text blink (e.g. "Press Start") */
|
|
34
44
|
@keyframes ns-blink {
|
|
35
|
-
0%,
|
|
36
|
-
|
|
45
|
+
0%,
|
|
46
|
+
55% {
|
|
47
|
+
opacity: 1;
|
|
48
|
+
}
|
|
49
|
+
56%,
|
|
50
|
+
100% {
|
|
51
|
+
opacity: 0;
|
|
52
|
+
}
|
|
37
53
|
}
|
|
38
54
|
|
|
39
55
|
/* Star field twinkle */
|
|
40
56
|
@keyframes ns-twinkle {
|
|
41
|
-
0%,
|
|
42
|
-
|
|
57
|
+
0%,
|
|
58
|
+
100% {
|
|
59
|
+
opacity: 0.7;
|
|
60
|
+
}
|
|
61
|
+
50% {
|
|
62
|
+
opacity: 0.35;
|
|
63
|
+
}
|
|
43
64
|
}
|
|
44
65
|
|
|
45
66
|
/* Section arrow nudge */
|
|
46
67
|
@keyframes ns-arrow {
|
|
47
|
-
0%,
|
|
48
|
-
|
|
68
|
+
0%,
|
|
69
|
+
100% {
|
|
70
|
+
transform: translateX(-50%) translateY(0);
|
|
71
|
+
}
|
|
72
|
+
50% {
|
|
73
|
+
transform: translateX(-50%) translateY(5px);
|
|
74
|
+
}
|
|
49
75
|
}
|
|
50
76
|
|
|
51
77
|
/* Live pulse dot */
|
|
52
78
|
@keyframes ns-live {
|
|
53
|
-
0%
|
|
54
|
-
|
|
55
|
-
|
|
79
|
+
0% {
|
|
80
|
+
box-shadow: 0 0 0 0 rgba(166, 226, 46, 0.7);
|
|
81
|
+
}
|
|
82
|
+
70% {
|
|
83
|
+
box-shadow: 0 0 0 7px rgba(166, 226, 46, 0);
|
|
84
|
+
}
|
|
85
|
+
100% {
|
|
86
|
+
box-shadow: 0 0 0 0 rgba(166, 226, 46, 0);
|
|
87
|
+
}
|
|
56
88
|
}
|
|
57
89
|
|
|
58
90
|
/* Reduced motion: disable all ns animations */
|
|
59
91
|
@media (prefers-reduced-motion: reduce) {
|
|
60
|
-
*,
|
|
92
|
+
*,
|
|
93
|
+
*::before,
|
|
94
|
+
*::after {
|
|
61
95
|
animation: none !important;
|
|
62
96
|
scroll-behavior: auto !important;
|
|
63
97
|
}
|
package/dist/tokens/spacing.css
CHANGED
|
@@ -4,60 +4,60 @@
|
|
|
4
4
|
|
|
5
5
|
:root {
|
|
6
6
|
/* ── Base scale (4px grid, expressed in rem) ──────────────────── */
|
|
7
|
-
--ns-space-1:
|
|
8
|
-
--ns-space-2:
|
|
9
|
-
--ns-space-3:
|
|
10
|
-
--ns-space-4:
|
|
11
|
-
--ns-space-5:
|
|
12
|
-
--ns-space-6:
|
|
13
|
-
--ns-space-7:
|
|
14
|
-
--ns-space-8:
|
|
15
|
-
--ns-space-10:
|
|
16
|
-
--ns-space-12:
|
|
17
|
-
--ns-space-14:
|
|
18
|
-
--ns-space-16:
|
|
19
|
-
--ns-space-20:
|
|
20
|
-
--ns-space-24:
|
|
7
|
+
--ns-space-1: 0.25rem; /* 4px */
|
|
8
|
+
--ns-space-2: 0.5rem; /* 8px */
|
|
9
|
+
--ns-space-3: 0.75rem; /* 12px */
|
|
10
|
+
--ns-space-4: 1rem; /* 16px */
|
|
11
|
+
--ns-space-5: 1.25rem; /* 20px */
|
|
12
|
+
--ns-space-6: 1.5rem; /* 24px */
|
|
13
|
+
--ns-space-7: 1.75rem; /* 28px */
|
|
14
|
+
--ns-space-8: 2rem; /* 32px */
|
|
15
|
+
--ns-space-10: 2.5rem; /* 40px */
|
|
16
|
+
--ns-space-12: 3rem; /* 48px */
|
|
17
|
+
--ns-space-14: 3.5rem; /* 56px */
|
|
18
|
+
--ns-space-16: 4rem; /* 64px */
|
|
19
|
+
--ns-space-20: 5rem; /* 80px */
|
|
20
|
+
--ns-space-24: 5.75rem; /* 92px */
|
|
21
21
|
|
|
22
22
|
/* ── Fluid layout tokens (viewport-responsive) ────────────────── */
|
|
23
|
-
--ns-fluid-container:
|
|
24
|
-
--ns-fluid-section-top:
|
|
25
|
-
--ns-fluid-section-bottom:
|
|
26
|
-
--ns-fluid-gap-cards:
|
|
27
|
-
--ns-fluid-card-pad:
|
|
28
|
-
--ns-fluid-hero-gap:
|
|
29
|
-
--ns-fluid-footer-gap:
|
|
23
|
+
--ns-fluid-container: clamp(1rem, 4vw, 2rem); /* @kind spacing */
|
|
24
|
+
--ns-fluid-section-top: clamp(2.5rem, 8svh, 4rem); /* @kind spacing */
|
|
25
|
+
--ns-fluid-section-bottom: clamp(4rem, 10svh, 5.5rem); /* @kind spacing */
|
|
26
|
+
--ns-fluid-gap-cards: clamp(0.75rem, 2vw, 1.5rem); /* @kind spacing */
|
|
27
|
+
--ns-fluid-card-pad: clamp(1rem, 2vw, 1.25rem); /* @kind spacing */
|
|
28
|
+
--ns-fluid-hero-gap: clamp(1.5rem, 4vw, 3rem); /* @kind spacing */
|
|
29
|
+
--ns-fluid-footer-gap: clamp(2rem, 5vw, 3rem); /* @kind spacing */
|
|
30
30
|
|
|
31
31
|
/* ── Fixed layout ─────────────────────────────────────────────── */
|
|
32
|
-
--ns-container:
|
|
33
|
-
--ns-header-h:
|
|
34
|
-
--ns-section-min:
|
|
32
|
+
--ns-container: 1080px;
|
|
33
|
+
--ns-header-h: 4rem; /* 64px — sticky header */
|
|
34
|
+
--ns-section-min: calc(100svh - var(--ns-header-h));
|
|
35
35
|
|
|
36
36
|
/* ── Radii ────────────────────────────────────────────────────── */
|
|
37
|
-
--ns-radius-sm:
|
|
38
|
-
--ns-radius-md:
|
|
39
|
-
--ns-radius-lg:
|
|
40
|
-
--ns-radius-xl:
|
|
41
|
-
--ns-radius-full:
|
|
37
|
+
--ns-radius-sm: 0.25rem; /* 4px */
|
|
38
|
+
--ns-radius-md: 0.5rem; /* 8px */
|
|
39
|
+
--ns-radius-lg: 0.625rem; /* 10px */
|
|
40
|
+
--ns-radius-xl: 0.75rem; /* 12px */
|
|
41
|
+
--ns-radius-full: 9999px;
|
|
42
42
|
|
|
43
43
|
/* ── Shadows ──────────────────────────────────────────────────── */
|
|
44
|
-
--ns-shadow-card-rest:
|
|
44
|
+
--ns-shadow-card-rest: none;
|
|
45
45
|
--ns-shadow-card-hover: 0 1rem 2.125rem rgba(0, 0, 0, 0.38);
|
|
46
|
-
--ns-shadow-modal:
|
|
47
|
-
--ns-shadow-btn:
|
|
48
|
-
--ns-shadow-arrow:
|
|
46
|
+
--ns-shadow-modal: 0 1.5rem 3.5rem rgba(0, 0, 0, 0.5);
|
|
47
|
+
--ns-shadow-btn: 0 0.1875rem 0 var(--ns-gold-shadow);
|
|
48
|
+
--ns-shadow-arrow: 0 0 0 0.25rem rgba(230, 219, 116, 0.12), 0 0.75rem 1.75rem rgba(0, 0, 0, 0.36);
|
|
49
49
|
|
|
50
50
|
/* ── Borders ──────────────────────────────────────────────────── */
|
|
51
|
-
--ns-border-card:
|
|
51
|
+
--ns-border-card: 1px solid var(--ns-line);
|
|
52
52
|
--ns-border-card-strong: 1px solid var(--ns-line-strong);
|
|
53
|
-
--ns-border-gold:
|
|
53
|
+
--ns-border-gold: 2px solid var(--ns-gold-deep);
|
|
54
54
|
|
|
55
55
|
/* ── Blur ─────────────────────────────────────────────────────── */
|
|
56
|
-
--ns-blur-glass:
|
|
57
|
-
--ns-blur-header: blur(12px);
|
|
56
|
+
--ns-blur-glass: blur(8px); /* @kind other */
|
|
57
|
+
--ns-blur-header: blur(12px); /* @kind other */
|
|
58
58
|
|
|
59
59
|
/* ── Component sizing ──────────────────────────────────────────── */
|
|
60
|
-
--ns-icon-slot:
|
|
60
|
+
--ns-icon-slot: 2.625rem; /* 42px */
|
|
61
61
|
--ns-icon-slot-sm: 1.625rem; /* 26px */
|
|
62
|
-
--ns-arrow-size:
|
|
62
|
+
--ns-arrow-size: 2.125rem; /* 34px */
|
|
63
63
|
}
|
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
/* NoobSociety — Typography tokens */
|
|
2
2
|
:root {
|
|
3
3
|
/* ── Font families ────────────────────────────────────────── */
|
|
4
|
-
--ns-font-body:
|
|
4
|
+
--ns-font-body: 'Inter', system-ui, sans-serif;
|
|
5
5
|
--ns-font-pixel: 'Press Start 2P', system-ui, sans-serif;
|
|
6
6
|
|
|
7
7
|
/* ── Type scale ───────────────────────────────────────────── */
|
|
8
|
-
--ns-text-xs:
|
|
9
|
-
--ns-text-sm:
|
|
10
|
-
--ns-text-base: 1rem;
|
|
11
|
-
--ns-text-lg:
|
|
12
|
-
--ns-text-xl:
|
|
13
|
-
--ns-text-2xl:
|
|
14
|
-
--ns-text-3xl:
|
|
15
|
-
--ns-text-4xl:
|
|
8
|
+
--ns-text-xs: 0.75rem; /* 12px */
|
|
9
|
+
--ns-text-sm: 0.875rem; /* 14px */
|
|
10
|
+
--ns-text-base: 1rem; /* 16px */
|
|
11
|
+
--ns-text-lg: 1.125rem; /* 18px */
|
|
12
|
+
--ns-text-xl: 1.25rem; /* 20px */
|
|
13
|
+
--ns-text-2xl: 1.5rem; /* 24px */
|
|
14
|
+
--ns-text-3xl: 1.875rem; /* 30px */
|
|
15
|
+
--ns-text-4xl: 2.25rem; /* 36px */
|
|
16
16
|
|
|
17
17
|
/* ── Pixel font scale ─────────────────────────────────────── */
|
|
18
18
|
--ns-pixel-2xs: 7px;
|
|
19
|
-
--ns-pixel-xs:
|
|
20
|
-
--ns-pixel-sm:
|
|
19
|
+
--ns-pixel-xs: 8px;
|
|
20
|
+
--ns-pixel-sm: 9px;
|
|
21
21
|
--ns-pixel-base: 11px;
|
|
22
|
-
--ns-pixel-md:
|
|
23
|
-
--ns-pixel-lg:
|
|
24
|
-
--ns-pixel-xl:
|
|
22
|
+
--ns-pixel-md: 12px;
|
|
23
|
+
--ns-pixel-lg: 13px;
|
|
24
|
+
--ns-pixel-xl: 1.6rem; /* hero accent title */
|
|
25
25
|
--ns-pixel-2xl: clamp(2rem, 1rem + 3vw, 3.5rem); /* @kind other */
|
|
26
26
|
--ns-title-section: clamp(1.8rem, 1rem + 2vw, 2.4rem); /* @kind other */
|
|
27
27
|
|
|
28
28
|
/* ── Line heights ─────────────────────────────────────────── */
|
|
29
|
-
--ns-leading-tight:
|
|
30
|
-
--ns-leading-snug:
|
|
29
|
+
--ns-leading-tight: 1.08;
|
|
30
|
+
--ns-leading-snug: 1.35;
|
|
31
31
|
--ns-leading-normal: 1.45;
|
|
32
32
|
--ns-leading-relaxed: 1.6;
|
|
33
|
-
--ns-leading-pixel:
|
|
33
|
+
--ns-leading-pixel: 1.5; /* for Press Start 2P */
|
|
34
34
|
|
|
35
35
|
/* ── Font weights ─────────────────────────────────────────── */
|
|
36
|
-
--ns-weight-normal:
|
|
37
|
-
--ns-weight-medium:
|
|
36
|
+
--ns-weight-normal: 400;
|
|
37
|
+
--ns-weight-medium: 500;
|
|
38
38
|
--ns-weight-semibold: 600;
|
|
39
|
-
--ns-weight-bold:
|
|
39
|
+
--ns-weight-bold: 700;
|
|
40
40
|
|
|
41
41
|
/* ── Section eyebrow ─────────────────────────────────────────*/
|
|
42
42
|
/* font: 700 13px/1 var(--ns-font-body); letter-spacing: .18em; text-transform: uppercase; color: var(--ns-gold) */
|