@nadicodeai/design-system 2.0.0 → 2.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/AGENTS.md +9 -3
- package/CONTEXT.md +12 -53
- package/DESIGN.md +36 -72
- package/dist/css/index.css +7 -7
- package/dist/tailwind/nadicode.tailwind.json +6 -6
- package/dist/tokens/nadicode.dtcg-resolved.json +39 -39
- package/dist/tokens/nadicode.dtcg.json +29 -29
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -4,7 +4,13 @@ The `@nadicodeai/design-system` npm workspace. `DESIGN.md` is the normative cont
|
|
|
4
4
|
|
|
5
5
|
## Commands
|
|
6
6
|
|
|
7
|
-
Proof
|
|
7
|
+
Proof follows [the repository pipeline](../../docs/agents/develop.md#the-pipeline):
|
|
8
|
+
`npm run check -w @nadicodeai/design-system` and
|
|
9
|
+
`npm run test -w @nadicodeai/design-system` before pushing. `check` carries the
|
|
10
|
+
`DESIGN.md` contract lint, so a contract edit needs no separate command. This
|
|
11
|
+
workspace has no app to boot: it ships a package, and `examples/` specimens are
|
|
12
|
+
static HTML pages served from the repo root by
|
|
13
|
+
`../../scripts/lib/static-design-server.ts`, which `npm run test:visual` starts.
|
|
8
14
|
|
|
9
15
|
| Command | When |
|
|
10
16
|
| --- | --- |
|
|
@@ -27,7 +33,7 @@ Proof escalates by the ladder in the root `AGENTS.md` "Commands": `npm run check
|
|
|
27
33
|
| React consumption | `../ui/docs/consuming-cross-repo.md` |
|
|
28
34
|
| Logo hierarchy, usage, geometry, and asset delivery | `DESIGN.md` "Brand media authority". Static package routes in `README.md`. Implementation routes through `src/assets/`. `dist/` is generated, never hand-edited |
|
|
29
35
|
| `examples/` specimen work | `examples/` plus the `write-clearly` skill for specimen copy (guard: `tests/guards/examples-package-coherence.test.ts`) |
|
|
30
|
-
| Releasing a change to package-consumed output | `../../docs/agents/
|
|
36
|
+
| Releasing a change to package-consumed output | `../../docs/agents/publish.md` |
|
|
31
37
|
| Visual test implementation | `playwright.visual.config.ts` and `tests/visual/` |
|
|
32
38
|
|
|
33
39
|
## Boundaries
|
|
@@ -40,5 +46,5 @@ Proof escalates by the ladder in the root `AGENTS.md` "Commands": `npm run check
|
|
|
40
46
|
- Seams and grids are computed, single-owner, never eyeballed (doctrine home: `DESIGN.md` "## Layout" and "Seam Ownership").
|
|
41
47
|
- Authoring is contract-first: a visual behavior comes from `DESIGN.md`, from our own shipped surfaces, or from an explicit user approval, never from another product's rendered output. Screenshots verify, they never author. Ask when the contract leaves a decision open, and stop and re-read `DESIGN.md` before a second visual patch to the same component.
|
|
42
48
|
- Name everything as NadicodeAI-owned primitives. A source brand never appears in a name, a comment, a contract, or any living design document.
|
|
43
|
-
- Any change to package-consumed output ends with an explicit release decision, a version bump or a `[no-publish]` commit marker (enforced by the pre-push release gate, procedure: `../../docs/agents/
|
|
49
|
+
- Any change to package-consumed output ends with an explicit release decision, a version bump or a `[no-publish]` commit marker (enforced by the pre-push release gate, procedure: `../../docs/agents/publish.md`).
|
|
44
50
|
- The deleted `design-canvas/` prototypes and static chat/autoplay surface live only in git history. `src/css/motion.css` owns shared runtime motion primitives. Never reconstruct the prototypes or add a runtime JS surface.
|
package/CONTEXT.md
CHANGED
|
@@ -1,87 +1,46 @@
|
|
|
1
1
|
# Design Language
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The shared vocabulary for NadicodeAI's reusable visual decisions and interface structures.
|
|
4
4
|
|
|
5
5
|
## Language
|
|
6
6
|
|
|
7
7
|
### Foundations
|
|
8
8
|
|
|
9
|
-
**Design contract**:
|
|
10
|
-
The normative specification for reusable design tokens, page grammar, component semantics, and visual-surface meanings. Implementations realize the contract; they do not redefine it.
|
|
11
|
-
|
|
12
|
-
**Design token**:
|
|
13
|
-
A named reusable visual value from the design contract, such as a color, spacing, radius, or typography value. A one-off component detail is not a token.
|
|
14
|
-
|
|
15
9
|
**Foundation**:
|
|
16
|
-
The
|
|
10
|
+
The visual values shared by every NadicodeAI product, including colour roles, typography, spacing, shape, material, elevation, motion, icons, and brand assets.
|
|
17
11
|
_Avoid_: Palette, base theme
|
|
18
12
|
|
|
19
13
|
**Register**:
|
|
20
|
-
One product's
|
|
14
|
+
One product's visual rules for applying the Foundation. NadicodeAI has three Registers: website, Portal, and Nadia desktop.
|
|
21
15
|
_Avoid_: Theme, skin
|
|
22
16
|
|
|
23
|
-
**Scale step**:
|
|
24
|
-
One numbered value in a functional color scale whose number carries the same interaction or contrast role across every scale.
|
|
25
|
-
_Avoid_: Shade, tint
|
|
26
|
-
|
|
27
17
|
**Brand tier**:
|
|
28
|
-
The
|
|
18
|
+
The Campo fields used for brand identity, imagery, and large surface grounds.
|
|
29
19
|
|
|
30
20
|
**Functional tier**:
|
|
31
|
-
The
|
|
21
|
+
The semantic colour roles and chart colours used for interface state and data.
|
|
32
22
|
|
|
33
23
|
**Campo**:
|
|
34
|
-
A named, full-strength brand
|
|
24
|
+
A named, full-strength brand colour field.
|
|
35
25
|
_Avoid_: Swatch, theme color
|
|
36
26
|
|
|
37
|
-
**One campo per room**:
|
|
38
|
-
The composition rule that one section or image field owns one campo, with adjacent fields separated by a clear luminance change.
|
|
39
|
-
|
|
40
|
-
**Luminance jump**:
|
|
41
|
-
The perceptual brightness difference that makes the edge between adjacent campi, or between a campo and its text, read clearly.
|
|
42
|
-
|
|
43
27
|
### Structure and surfaces
|
|
44
28
|
|
|
45
29
|
**Page grammar**:
|
|
46
|
-
The shared structural
|
|
30
|
+
The shared structural vocabulary of frames, rows, lanes, fills, seams, markers, grids, and stages.
|
|
47
31
|
|
|
48
32
|
**Seam**:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
**CSS primitive**:
|
|
52
|
-
A low-level, framework-agnostic CSS helper for geometry, type, seams, fills, or structural behavior. It carries no product-specific meaning.
|
|
53
|
-
|
|
54
|
-
**CSS component**:
|
|
55
|
-
A framework-agnostic visual component that remains useful on both static and interactive surfaces without owning an app feature.
|
|
33
|
+
The visible structural line where parts of the Page grammar meet.
|
|
56
34
|
|
|
57
35
|
**Status vocabulary**:
|
|
58
|
-
The
|
|
36
|
+
The shared five-tone visual language for product status. Each product owns its status families, values, and mapping to those tones.
|
|
59
37
|
|
|
60
38
|
**Content surface**:
|
|
61
|
-
A visual family for presenting a
|
|
39
|
+
A visual family for presenting a specific kind of content inside the Page grammar.
|
|
62
40
|
|
|
63
41
|
**Agentic work surface**:
|
|
64
|
-
A
|
|
42
|
+
A visual family outside the conversation renderer for work output and workflow state, such as memory, run progress, identity, and handoffs.
|
|
65
43
|
|
|
66
44
|
**Agent visual**:
|
|
67
|
-
The decorative metaball identity assigned
|
|
68
|
-
type. It identifies the Agent across products without carrying status, runtime
|
|
69
|
-
activity, capability, or work output.
|
|
45
|
+
The decorative metaball identity assigned to an Agent type across products.
|
|
70
46
|
_Avoid_: Agent glyph, Agent avatar
|
|
71
|
-
|
|
72
|
-
**App-owned product feature**:
|
|
73
|
-
A product-specific route, screen, use case, or behavior owned by the consuming app rather than by the reusable design or UI packages.
|
|
74
|
-
|
|
75
|
-
### React composition
|
|
76
|
-
|
|
77
|
-
**React adapter**:
|
|
78
|
-
A thin typed React interface over approved design-system CSS grammar or assets. It exposes the shared implementation without taking ownership of it.
|
|
79
|
-
|
|
80
|
-
**Reusable composition**:
|
|
81
|
-
A React component that combines shared grammar, primitives, slots, variants, and responsive behavior into a repeatable product or marketing pattern.
|
|
82
|
-
|
|
83
|
-
**Reusable section**:
|
|
84
|
-
A reusable composition for one recurring content role, such as an introduction, proof area, media block, or call to action.
|
|
85
|
-
|
|
86
|
-
**Specimen**:
|
|
87
|
-
A runnable example that assembles shipped pieces for inspection without inventing new design rules.
|
package/DESIGN.md
CHANGED
|
@@ -10,10 +10,10 @@ description: >-
|
|
|
10
10
|
colors:
|
|
11
11
|
primary: "#007a3c"
|
|
12
12
|
on-primary: "#ffffff"
|
|
13
|
-
action: "#
|
|
13
|
+
action: "#111111"
|
|
14
14
|
action-foreground: "#ffffff"
|
|
15
|
-
action-hover: "#
|
|
16
|
-
action-active: "#
|
|
15
|
+
action-hover: "#2e2e2e"
|
|
16
|
+
action-active: "#000000"
|
|
17
17
|
ink: "#111111"
|
|
18
18
|
body: "#444444"
|
|
19
19
|
muted: "#6b6b6b"
|
|
@@ -92,10 +92,10 @@ colors:
|
|
|
92
92
|
dark-seam: "#1a1a1a"
|
|
93
93
|
dark-primary: "#2fd584"
|
|
94
94
|
dark-on-primary: "#0a0a0a"
|
|
95
|
-
dark-action: "#
|
|
95
|
+
dark-action: "#ffffff"
|
|
96
96
|
dark-action-foreground: "#0a0a0a"
|
|
97
|
-
dark-action-hover: "#
|
|
98
|
-
dark-action-active: "#
|
|
97
|
+
dark-action-hover: "#e4e4e4"
|
|
98
|
+
dark-action-active: "#d6d6d6"
|
|
99
99
|
dark-link: "#4ecf8c"
|
|
100
100
|
dark-link-deep: "#93e3b8"
|
|
101
101
|
dark-link-bg-soft: "#00351c"
|
|
@@ -290,7 +290,7 @@ spacing:
|
|
|
290
290
|
|
|
291
291
|
## Overview
|
|
292
292
|
|
|
293
|
-
NadicodeAI is an AI agency for SMBs. The design system
|
|
293
|
+
NadicodeAI is an AI agency for SMBs. The design system makes the website and the shipped product read as one family: a calm, high-contrast monochrome architecture in which the identity layer — Nadia's portrait, the Agent identity visuals, and the verde brand accent in its scoped duties — is the expressive element. Structure, chrome, and controls are neutral; a desaturated screen loses nothing structural. The interface helps a pragmatic buyer understand the work: repeated workflows, agents working beside people, inspectable outputs, human approval.
|
|
294
294
|
|
|
295
295
|
One foundation, three registers. The foundation is every `core` value in this contract: the colour roles and their dark pairs, the two type families and the type scale, the spacing ladder and the control geometry, the radius scale, the material values, the four-rung elevation ladder, the motion durations and easings, the icon render, and the brand marks. It is owned by no single product and available to every product; a value stays foundation whether one product renders it or three. A register is one product's way of applying it: its direction, its density, the rungs and steps it reaches for, its dark-mode stance, its structural grammar, its motion budget. The three registers are the website, the Portal, and the Nadia desktop app; `## Registers` names each one's rulebook, its own token families, and its dark-mode stance.
|
|
296
296
|
|
|
@@ -300,16 +300,16 @@ The kernel is the reusable implementation layer. `DESIGN.md` defines the reusabl
|
|
|
300
300
|
|
|
301
301
|
## Colors
|
|
302
302
|
|
|
303
|
-
|
|
303
|
+
Neutrals carry the interface: grounds, chrome, hierarchy, and every control come from the achromatic spine, and the strongest contrast on any surface lands on the primary action. Chromatic colour appears where it says something a reader already knows how to read: the semantic feedback hues, the verde brand accent in its scoped duties (links, success, presence, identity marks), the chart palettes on data, and the Agent identity palette inside the Agent visuals. Chrome, sections, and controls stay unpainted.
|
|
304
304
|
|
|
305
|
-
Interaction states are material, not meaning: focus, hover, and selection read as contrast steps on the neutral spine
|
|
305
|
+
Interaction states are material, not meaning: focus, hover, and selection read as contrast steps on the neutral spine. A hover ground is a neutral step; the only change a control hover carries is a step inside its own family, as `{colors.action-hover}` does on the action control. Cobalto stays on info and running.
|
|
306
306
|
|
|
307
|
-
Every value a role needs is carried by the role token itself; the ten-step numeric scale families were removed deliberately and must not be reintroduced. Two neutral page grounds sit under the roles below: `{colors.background-100}` (page default, white) and `{colors.background-200}` (soft, used sparingly). The neutral spine — `{colors.ink}`, `{colors.body}`, `{colors.muted}`, `{colors.canvas}`, `{colors.canvas-soft}`, `{colors.canvas-soft-2}`, `{colors.line}`, `{colors.seam}` — is strictly achromatic: every neutral is an equal-channel gray (OKLCH chroma 0) in both themes. The five
|
|
307
|
+
Every value a role needs is carried by the role token itself; the ten-step numeric scale families were removed deliberately and must not be reintroduced. Two neutral page grounds sit under the roles below: `{colors.background-100}` (page default, white) and `{colors.background-200}` (soft, used sparingly). The neutral spine — `{colors.ink}`, `{colors.body}`, `{colors.muted}`, `{colors.canvas}`, `{colors.canvas-soft}`, `{colors.canvas-soft-2}`, `{colors.line}`, `{colors.seam}` — is strictly achromatic: every neutral is an equal-channel gray (OKLCH chroma 0) in both themes. The five identity-palette hues are cross-spectrum equals, so any neutral bias would flatter one and dirty another; hue arrives full-strength through the chromatic roles or not at all, and no tint ever paints an app surface. Colours are authored as sRGB hex here and emitted as `oklch()` in the generated CSS.
|
|
308
308
|
|
|
309
309
|
### Semantic roles (functional tier)
|
|
310
310
|
|
|
311
|
-
- **
|
|
312
|
-
- **
|
|
311
|
+
- **Action** (`{colors.action}` = ink `#111111`, `{colors.action-foreground}` = white, `{colors.action-hover}`, `{colors.action-active}`): the primary-control family is neutral — a white label on the ink field in light shells, and in dark shells the `dark-action-*` roles, a white control carrying a near-black label. Maximum contrast belongs to the thing that acts. The shadcn `primary` roles map here.
|
|
312
|
+
- **Brand accent — verde** (`{colors.primary}` = deep verde `#007a3c`, white `{colors.on-primary}` text on its field): identity marks, logo contexts, and brand accents. Verde's working duties are exactly the scoped roles below — links, success, and Nadia's presence — and the brighter verde `#00a85a` stays the imagery-tier anchor, never carrying normal-size white text.
|
|
313
313
|
- **Canvas / Line / Input / Cross / Seam** (`{colors.canvas}`, `{colors.line}`, `{colors.input}`, `{colors.cross}`, `{colors.seam}`): white content cells, the universal decorative 1 px divider, the resting-control boundary, the stronger mark/crosshair gray, and the dashed connector guide. `{colors.line}` owns ordinary seams and is deliberately quiet — a decorative hairline, not held to a non-text contrast floor. `{colors.input}` owns fields and other interactive boundaries and clears the 3:1 non-text floor against its canvas. Never darken a decorative border locally to make it behave like a control.
|
|
314
314
|
- **Body / Muted** (`{colors.body}`, `{colors.muted}`): `{colors.body}` is readable supporting copy and clears AA on canvas; `{colors.muted}` is restricted to disabled, inactive, and placeholder content. Do not use muted text for ordinary descriptions, labels, or help text.
|
|
315
315
|
- **Focus ring** (`{colors.focus-ring}` / `{colors.dark-focus-ring}`): the ink keyboard-focus indicator, a full-opacity `outline` of `{spacing.focus-outline-width}` at `{spacing.focus-outline-offset}` offset, never a box-shadow. Focus is a state of material, so the indicator is the maximum-contrast neutral on each ground rather than a hue; the offset keeps it independent of the resting border, and it clears the 3:1 non-text floor against the adjacent canvas.
|
|
@@ -317,38 +317,27 @@ Every value a role needs is carried by the role token itself; the ten-step numer
|
|
|
317
317
|
- **Link** (`{colors.link}`, `{colors.link-deep}`, `{colors.link-bg-soft}`): inline links, navigational accents, approved/example proof states, and the green entity-status tone. Green, keeping the Italian signal without turning the interface into flag decoration; `link` and `link-deep` clear AA as text on canvas, and `link-bg-soft` is the tinted green ground for link and tag chrome only: a message or conversation plane is a neutral surface, never a link-tinted one.
|
|
318
318
|
- **Navigation selection** (`{colors.navigation-selection-bg}`, `{colors.navigation-selection-fg}`, `{colors.navigation-selection-hover}`): the selected destination in persistent product navigation, a neutral ink pill. Selection is a place, not a meaning, so it holds by contrast on the neutral spine; cobalto belongs to the semantic info and running roles only. The dark counterparts are tuned independently for the black console. Resting and hover pairs clear AA for text, and the offset focus outline stays visible against both the pill fill and the adjacent canvas.
|
|
319
319
|
- **Semantic feedback** (`{colors.success}` = verde with `{colors.success-soft}`/`{colors.success-deep}`; `{colors.error}` = rosso funzionale `#d3302f` with `{colors.error-soft}`/`{colors.error-deep}`; `{colors.warning}` = giallo `#ffc220` with `{colors.warning-soft}`/`{colors.warning-deep}`; `{colors.info}` = cobalto `#1e3cff` with `{colors.info-soft}`/`{colors.info-deep}`): validation, caution, approval, and operational feedback. In each pair the `-soft` value is the tinted tag/banner ground and the `-deep` value is the AA-clearing text on it. On a solid `error` fill (the shadcn `destructive` role) text is white; on a solid `warning` or `success` fill text is ink. The success pair intentionally reuses the link pair's AA-safe verde values; its feedback meaning remains distinct from inline navigation and entity-status semantics.
|
|
320
|
-
- **Accent** (`{colors.accent}` = arancio `#ff5a1f`):
|
|
320
|
+
- **Accent** (`{colors.accent}` = arancio `#ff5a1f`): a small emphasis mark for exception flags and highlights; it appears as a mark, carries no text, and paints no fill or background. The identically-named shadcn surface role is a different thing — a neutral (`{colors.canvas-soft-2}` light, `{colors.dark-canvas-soft-2}` dark) with no hue.
|
|
321
321
|
- **Flag Red** (`{colors.flag-red}` = `#d3302f`): the identity-mark red alias. It shares its hex with `{colors.error}` but stays a distinct role name — `flag-red` is identity, `error` is validation feedback. The attention accent is arancio, not flag red.
|
|
322
322
|
- **Verde vivo** (`{colors.verde-vivo}` = `#008c45`, dark `{colors.dark-verde-vivo}` = `#62d494`): Nadia's presence accent. It paints the marks that say *Nadia herself is here*: the first-run medallion, a live-presence indicator beside her portrait. It is a mark colour, never a control fill, a text colour, a link, or a status; `action`, `link`, and `success` keep their jobs. It clears the 3:1 non-text floor on `{colors.canvas}` (4.3:1) and `{colors.dark-canvas}` (11.4:1) and carries no text of its own. White on it is 4.34:1, below AA for normal text, so a label never sits on a `verde-vivo` fill; the ring, halo, or portrait sits on it and the words sit on the canvas.
|
|
323
323
|
- **Workflow States** (`{colors.state-ready}` neutral, `{colors.state-running}` cobalto, `{colors.state-review}` giallo, `{colors.state-blocked}` rosso, `{colors.state-complete}` verde): the left-border/state vocabulary for agentic work surfaces — cobalto means in motion, verde means done. The dark counterparts (`{colors.dark-state-ready}`, `{colors.dark-state-running}`, `{colors.dark-state-review}`, `{colors.dark-state-blocked}`, `{colors.dark-state-complete}`) keep the same functional identity. These colours are carried by non-text state accents only — meter and bullet segments, delta marks, and the brand book's own rails; label text stays on the neutral foreground roles for contrast in both themes. Status is not one of their jobs: every status the product renders is the Badge status vocabulary (see `## Status Vocabulary`), which reads from the semantic feedback and link pairs, and the two token sets never cross.
|
|
324
324
|
|
|
325
325
|
### Chart categoricals (functional tier)
|
|
326
326
|
|
|
327
|
-
- **Charts** (`{colors.chart-1}`…`{colors.chart-6}`): the categorical series palette — cobalto, verde, giallo, rosso, plus a functional-only teal and viola.
|
|
327
|
+
- **Charts** (`{colors.chart-1}`…`{colors.chart-6}`): the categorical series palette — cobalto, verde, giallo, rosso, plus a functional-only teal and viola. Chart colours belong to data surfaces only; identity planes and generated imagery draw from the Agent identity palette. Two light slots are series-tuned so the set clears the categorical data bands on the white data surface: `chart-3` steps the giallo darker (the campo giallo `{colors.campo-giallo}` overshoots the categorical lightness band and reads too pale as a mark) and `chart-5` makes the teal more chromatic (the raw functional teal otherwise sits under the chroma floor and reads gray). The darker giallo still falls below the 3:1 mark-contrast line and is carried by the always-on legend/direct-label/table relief the charting method already mandates — never a per-surface patch. On the dark canvas all six series carry dark-tuned steps (`{colors.dark-chart-1}`…`{colors.dark-chart-6}`), remapped in the `.dark` scope so any consumer reading the semantic token gets the right hue in both modes. Clearing the 3:1 WCAG 1.4.11 data-mark floor is necessary but not sufficient on the black canvas: full-strength hues read as loud blocks there, so each dark step lightens or desaturates while keeping series identity — the dark giallo and teal deliberately stay bright to hold their per-series deuteranopia separation from rosso — and all six clear 3:1 against `{colors.dark-canvas}`.
|
|
328
328
|
- **Categorical distinguishability**: the same-family neighbours are held apart — `chart-3`/`chart-4` (giallo/rosso) and `chart-2`/`chart-5` (verde/teal) each clear a CIEDE2000 ≥ 20 normal / ≥ 15 deuteranopia-simulated floor, in the light set and the dark-tuned set alike. Two proximities are brand-locked and exempt from the numeric floor: `chart-2`/`chart-4` (verde/rosso, the flag pair, which collapses under red-green deficiency by identity) and `chart-1`/`chart-6` (cobalto/viola, adjacent blue-violet). Charts using the full six carry redundant encoding (direct labels, position, or pattern), never hue alone, so these two pairs stay readable under colour-vision deficiency.
|
|
329
329
|
|
|
330
|
-
###
|
|
330
|
+
### Agent identity palette
|
|
331
331
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
- `{colors.campo-verde}` (Verde Bandiera), `{colors.campo-rosso}` (Rosso Bandiera), and `{colors.campo-cobalto}` pair with `{colors.campo-bianco}` (white) type.
|
|
335
|
-
- `{colors.campo-arancio}` (vermilion) and `{colors.campo-giallo}` (giallo) pair with `{colors.campo-inchiostro}` (ink) type.
|
|
336
|
-
- `{colors.campo-inchiostro}` pairs with white type; `{colors.campo-bianco}` pairs with ink type.
|
|
337
|
-
|
|
338
|
-
Four campo rules govern their use:
|
|
339
|
-
|
|
340
|
-
1. **One campo per room.** A section owns exactly one field; adjacent sections must jump in luminance, so two mid-tone rooms never touch.
|
|
341
|
-
2. **Type on a campo is bianco or inchiostro only.** Arancio and Giallo carry ink; Verde, Rosso, Cobalto, and Inchiostro carry white. No tinted text on fields.
|
|
342
|
-
3. **Campi are planes, not chips.** The minimum duty of a campo is a section ground, poster field, or full media mount. UI states come from the functional roles, never campi.
|
|
343
|
-
4. **One paint box.** Generated editorial imagery draws its flat fields from these values; `skills/marketing/blog-imagegen/references/editorial-register.md` references these tokens and keeps no private palette.
|
|
332
|
+
Five full-strength hues are the system's expressive chromatic range: verde `{colors.campo-verde}`, rosso `{colors.campo-rosso}`, cobalto `{colors.campo-cobalto}`, arancio `{colors.campo-arancio}`, and giallo `{colors.campo-giallo}`, with `{colors.campo-bianco}` and `{colors.campo-inchiostro}` as the white and ink poles that carry type beside them. They live in exactly three places: the Agent identity visuals (the metaball recipes in [`packages/ui/docs/agent-visual.md`](../ui/docs/agent-visual.md)), the brand book's identity planes, and generated editorial imagery (`skills/marketing/blog-imagegen/references/editorial-register.md` reads these tokens and keeps no private palette). They appear at full strength with no tints, steps, or hover variants; interface states come from the semantic roles. The `campo-*` spelling is the emitted compatibility token name; renaming this family across its consumers is its own tracked migration.
|
|
344
333
|
|
|
345
334
|
### Dark primitives
|
|
346
335
|
|
|
347
|
-
**Dark Primitives** (`{colors.dark-canvas}`, `{colors.dark-ink}`, `{colors.dark-line}`, and siblings) are the source tokens for the generated shadcn `.dark` role map — mode-bearing primitives, not a separate palette; consuming apps opt in by applying a `.dark` ancestor through their runtime theme provider. `dark-canvas` is true black: the only base plane for dark product shells. The remaining dark neutrals (`dark-canvas-soft`, `dark-canvas-soft-2`, `dark-ink`, `dark-body`, `dark-muted`, `dark-line`, `dark-input`, `dark-seam`, `dark-on-primary`, `dark-scrim`, and the neutral `dark-selection`/`dark-cross` marks) are exact equal-channel grays (OKLCH chroma 0), so no hue paints a surface. The soft canvas steps belong only to bounded interaction states such as hover, selection, keycaps, and inline controls; they never replace true black as a page, section, card, popover, sidebar, or large-panel ground. `dark-input` is the resting-control boundary, held brighter than the decorative `dark-line` border so a field edge clears the non-text floor before `{colors.dark-focus-ring}` appears. Chroma lives only in the intentional accents: `dark-primary
|
|
336
|
+
**Dark Primitives** (`{colors.dark-canvas}`, `{colors.dark-ink}`, `{colors.dark-line}`, and siblings) are the source tokens for the generated shadcn `.dark` role map — mode-bearing primitives, not a separate palette; consuming apps opt in by applying a `.dark` ancestor through their runtime theme provider. `dark-canvas` is true black: the only base plane for dark product shells. The remaining dark neutrals (`dark-canvas-soft`, `dark-canvas-soft-2`, `dark-ink`, `dark-body`, `dark-muted`, `dark-line`, `dark-input`, `dark-seam`, `dark-on-primary`, `dark-scrim`, and the neutral `dark-selection`/`dark-cross` marks) are exact equal-channel grays (OKLCH chroma 0), so no hue paints a surface. The soft canvas steps belong only to bounded interaction states such as hover, selection, keycaps, and inline controls; they never replace true black as a page, section, card, popover, sidebar, or large-panel ground. `dark-input` is the resting-control boundary, held brighter than the decorative `dark-line` border so a field edge clears the non-text floor before `{colors.dark-focus-ring}` appears. The `dark-action` family is a white control stepping through light grays, ink-labelled — the primary control stays neutral on black. Chroma lives only in the intentional accents: `dark-primary` is the brightened brand verde for identity marks, `dark-link`/`dark-link-deep` a lighter verde for links, and `dark-error`/`dark-error-deep`, `dark-warning`/`dark-warning-deep`, `dark-info`/`dark-info-deep`, `dark-success`/`dark-success-deep` the brightened feedback hues, each `*-soft` a deep tinted ground. `dark-navigation-selection-*` and `dark-focus-ring` sit on the neutral spine: selection and focus are material states, not meanings. The `dark-state-*` workflow family is not a text role; it preserves the matching ready/running/review/blocked/complete rail colours for 3 px state accents while text stays on neutral foreground roles. `dark-selection-bg`/`dark-selection-fg` invert the light selection, `dark-scrim` supplies the modal foreground, and `dark-cross` is the visible mark gray, brighter than the decorative `dark-line`. Never reintroduce chroma into the neutral set.
|
|
348
337
|
|
|
349
|
-
This achromatic-neutral discipline is not dark-specific: it governs the generated shadcn surface-role bridge in both the light `:root` and dark `.dark` maps. The neutral surface family — `background`, `card`, `popover`, `muted`, `secondary`, `sidebar`, `sidebar-accent`, their neutral foreground/border variants, plus `border` and `input` — resolves only to exact equal-channel grays (OKLCH chroma 0) in both themes. Hue in the role bridge is reserved for explicit semantic roles
|
|
338
|
+
This achromatic-neutral discipline is not dark-specific: it governs the generated shadcn surface-role bridge in both the light `:root` and dark `.dark` maps. The neutral surface family — `background`, `card`, `popover`, `muted`, `secondary`, `sidebar`, `sidebar-accent`, their neutral foreground/border variants, plus `border` and `input` — resolves only to exact equal-channel grays (OKLCH chroma 0) in both themes. Hue in the role bridge is reserved for the explicit semantic roles `destructive`, `success`, and `warning`; `primary` resolves to the neutral action family. The focus rings (`ring`/`sidebar-ring`) and the `sidebar-primary*` navigation-selection family resolve to equal-channel grays like the surface family: focus and selection are material states, and no interaction state carries a hue. In dark product shells, `background`, `card`, `popover`, and `sidebar` share `{colors.dark-canvas}` so page chrome, cards, tables, overlays, and nav rails read as one console. `muted`, `secondary`, and `accent` retain the `dark-canvas-soft` steps for small interaction states such as hover, selected rows, keycaps, and inline controls. Large product surfaces never take a tinted or soft-panel fill by default.
|
|
350
339
|
|
|
351
|
-
|
|
340
|
+
A colour leaves this contract only through an explicit palette migration decision; what the current website kernel happens to consume is not palette authority.
|
|
352
341
|
|
|
353
342
|
## Data Visualization
|
|
354
343
|
|
|
@@ -577,7 +566,7 @@ Public page-grammar cells are not cards and remain square because their parent f
|
|
|
577
566
|
|
|
578
567
|
## Motion
|
|
579
568
|
|
|
580
|
-
Motion
|
|
569
|
+
Motion reports state: things move when something changes, briefly, and settle. Continuous, ambient motion is scarce and purposeful — the Agent identity visuals are its natural carrier — and repeated interactions stay fast and quiet. Motion preserves meaning when movement is reduced.
|
|
581
570
|
|
|
582
571
|
The durations and easings live in `core.motion` of the authored token extension ("CSS Architecture & Token Pipeline"); the Google design schema defines no motion group. The build emits every duration as `--nc-duration-*` and every easing as `--nc-ease-*`. `src/css/motion.css` owns the keyframes, the `nc-anim-*` and `nc-transition-*` classes, and the reduced-motion law, and references those names; it declares no duration, easing, or alias of its own. A register decides where motion appears; it never picks a duration outside this list.
|
|
583
572
|
|
|
@@ -681,41 +670,16 @@ whole map in one module and no surface picks a status colour anywhere else.
|
|
|
681
670
|
|
|
682
671
|
## Do's and Don'ts
|
|
683
672
|
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
-
|
|
687
|
-
-
|
|
688
|
-
-
|
|
689
|
-
-
|
|
690
|
-
-
|
|
691
|
-
-
|
|
692
|
-
-
|
|
693
|
-
-
|
|
694
|
-
- Do use fixed height tokens for default component/specimen height and let content grow only when required.
|
|
695
|
-
- Do separate different story beats into separate rows.
|
|
696
|
-
- Do use the full-lane `stage` geometry for one major use-case/artifact story, not as a container for every page concept.
|
|
697
|
-
- Do use Agent identity visuals only to identify an Agent or its explicit type; use assistant-ui and the agentic work surfaces above for conversations, artifacts, review states, and work output.
|
|
698
|
-
- Do keep ordinary CSS components compact and subordinate to the page grammar.
|
|
699
|
-
- Do use pricing, logo, banner, and showcase compositions only when the page truly contains that content type.
|
|
700
|
-
|
|
701
|
-
### Don't
|
|
702
|
-
|
|
703
|
-
- Don't create naked centered 10-column sections without visible ownership of columns 1 and 12.
|
|
704
|
-
- Don't draw the same seam from two adjacent elements.
|
|
705
|
-
- Don't add borders inside cells to fix visual seams; fix the owner layer.
|
|
706
|
-
- Don't use a 1 px decorative line as an input boundary, or locally increase card border weight to manufacture hierarchy.
|
|
707
|
-
- Don't stack borders or rings around an elevated surface, promote a resting card because its content is important, or blur modal scrims.
|
|
708
|
-
- Don't tune seam contrast with local opacity, raw colors, or component-specific border colors.
|
|
709
|
-
- Don't use viewport-scaled typography.
|
|
710
|
-
- Don't use gradients, decorative blobs, or atmospheric chrome as the page structure.
|
|
711
|
-
- Don't apply the page grammar or the Portal's glass to the desktop; each register's structure and chrome are its own.
|
|
712
|
-
- Don't put text on a `{colors.verde-vivo}` fill.
|
|
713
|
-
- Don't reach for a vendor shadow utility; the four `nc-elevation-*` rungs are the ladder this contract owns.
|
|
714
|
-
- Don't name NadicodeAI components after external reference brands.
|
|
715
|
-
- Don't promote homepage-specific copy, one-off page order, or prototype-only modules into this contract.
|
|
716
|
-
- Don't use one full-lane stage to present multiple unrelated use cases.
|
|
717
|
-
- Don't add component prop APIs, state matrices, screenshots, component implementation notes, page placement examples, or framework-specific instructions to this file. (The token-pipeline architecture section is contract, not component documentation.)
|
|
718
|
-
- Don't use pricing, logo, or banner compositions as placeholder credibility or decoration when the underlying content does not exist.
|
|
673
|
+
This section states the correct form; a complete positive definition is the whole rule.
|
|
674
|
+
|
|
675
|
+
- Pages are continuous `page-row` sequences inside one `page-frame`; centered content sits in the 10-column `active-lane` with columns 1 and 12 visibly owned — by empty canvas, `side-fill`, guide strips, or component-owned fillers.
|
|
676
|
+
- Every visible line has one owner: ordinary seams are `{spacing.guide}` at `{colors.line}`, tuned only at the token contract; control boundaries are `{colors.input}` / `{colors.dark-input}`; keyboard focus is the dedicated focus-ring roles; crosshairs are `{colors.cross}` at `{spacing.guide}` weight.
|
|
677
|
+
- Page structure is architectural: hairlines, luminance, spacing, and the grammar above. One material role per product container; structural page-grammar cells are border-only; the four `nc-elevation-*` rungs are the complete shadow vocabulary; modal scrims stay unblurred.
|
|
678
|
+
- Typography uses fixed token sizes stepped by breakpoint; components take their default heights from the exported height tokens and grow only when real content requires it.
|
|
679
|
+
- Each row carries one story beat; the full-lane `stage` presents one major use-case story; pricing, logo, banner, and showcase compositions appear when the page truly contains that content, with real, approved material.
|
|
680
|
+
- Agent identity visuals identify an Agent or its explicit type; conversations, artifacts, review states, and work output belong to assistant-ui and the agentic work surfaces. Text beside `{colors.verde-vivo}` sits on the canvas.
|
|
681
|
+
- Components are named as NadicodeAI-owned primitives, and this file carries contract only: tokens, semantics, and application rules — component prop APIs, state matrices, screenshots, and page-specific material live with their owners.
|
|
682
|
+
- Each register keeps its own structure and chrome: the page grammar on the website, the material ladder in the Portal and the desktop, the desktop window following the operating system.
|
|
719
683
|
|
|
720
684
|
## Iconography
|
|
721
685
|
|
|
@@ -961,15 +925,15 @@ An alias is written in the short `{core.color.canvas}` form here; the build rewr
|
|
|
961
925
|
"muted-foreground": {"$value":"{core.color.body}"},
|
|
962
926
|
"popover": {"$value":"{core.color.canvas}"},
|
|
963
927
|
"popover-foreground": {"$value":"{core.color.ink}"},
|
|
964
|
-
"primary": {"$value":"{core.color.
|
|
965
|
-
"primary-foreground": {"$value":"{core.color.
|
|
928
|
+
"primary": {"$value":"{core.color.action}"},
|
|
929
|
+
"primary-foreground": {"$value":"{core.color.action-foreground}"},
|
|
966
930
|
"secondary": {"$value":"{core.color.canvas-soft}"},
|
|
967
931
|
"secondary-foreground": {"$value":"{core.color.ink}"},
|
|
968
932
|
"accent": {"$value":"{core.color.canvas-soft-2}"},
|
|
969
933
|
"accent-foreground": {"$value":"{core.color.ink}"},
|
|
970
934
|
"border": {"$value":"{core.color.line}"},
|
|
971
935
|
"input": {"$value":"{core.color.seam}"},
|
|
972
|
-
"ring": {"$value":"{core.color.
|
|
936
|
+
"ring": {"$value":"{core.color.focus-ring}"},
|
|
973
937
|
"midground": {"$value":"{core.color.body}"},
|
|
974
938
|
"composer-ring": {"$value":"{core.color.primary}"},
|
|
975
939
|
"destructive": {"$value":"{core.color.error}"},
|
|
@@ -990,15 +954,15 @@ An alias is written in the short `{core.color.canvas}` form here; the build rewr
|
|
|
990
954
|
"muted-foreground": {"$value":"{core.color.dark-muted}"},
|
|
991
955
|
"popover": {"$value":"{core.color.dark-canvas}"},
|
|
992
956
|
"popover-foreground": {"$value":"{core.color.dark-ink}"},
|
|
993
|
-
"primary": {"$value":"{core.color.dark-
|
|
994
|
-
"primary-foreground": {"$value":"{core.color.dark-
|
|
957
|
+
"primary": {"$value":"{core.color.dark-action}"},
|
|
958
|
+
"primary-foreground": {"$value":"{core.color.dark-action-foreground}"},
|
|
995
959
|
"secondary": {"$value":"{core.color.dark-canvas-soft-2}"},
|
|
996
960
|
"secondary-foreground": {"$value":"{core.color.dark-body}"},
|
|
997
961
|
"accent": {"$value":"{core.color.dark-canvas-soft-2}"},
|
|
998
962
|
"accent-foreground": {"$value":"{core.color.dark-ink}"},
|
|
999
963
|
"border": {"$value":"{core.color.dark-line}"},
|
|
1000
964
|
"input": {"$value":"{core.color.dark-input}"},
|
|
1001
|
-
"ring": {"$value":"{core.color.dark-
|
|
965
|
+
"ring": {"$value":"{core.color.dark-focus-ring}"},
|
|
1002
966
|
"midground": {"$value":"{core.color.dark-muted}"},
|
|
1003
967
|
"composer-ring": {"$value":"{core.color.dark-success}"},
|
|
1004
968
|
"destructive": {"$value":"{core.color.flag-red}"},
|
package/dist/css/index.css
CHANGED
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
:root {
|
|
44
44
|
--nc-primary: oklch(0.5075 0.1338 151.91);
|
|
45
45
|
--nc-on-primary: oklch(1.0000 0.0000 0.00);
|
|
46
|
-
--nc-action: oklch(0.
|
|
46
|
+
--nc-action: oklch(0.1776 0.0000 0.00);
|
|
47
47
|
--nc-action-foreground: oklch(1.0000 0.0000 0.00);
|
|
48
|
-
--nc-action-hover: oklch(0.
|
|
49
|
-
--nc-action-active: oklch(0.
|
|
48
|
+
--nc-action-hover: oklch(0.3012 0.0000 0.00);
|
|
49
|
+
--nc-action-active: oklch(0.0000 0.0000 0.00);
|
|
50
50
|
--nc-ink: oklch(0.1776 0.0000 0.00);
|
|
51
51
|
--nc-body: oklch(0.3867 0.0000 0.00);
|
|
52
52
|
--nc-muted: oklch(0.5278 0.0000 0.00);
|
|
@@ -125,10 +125,10 @@
|
|
|
125
125
|
--nc-dark-seam: oklch(0.2178 0.0000 0.00);
|
|
126
126
|
--nc-dark-primary: oklch(0.7727 0.1753 155.96);
|
|
127
127
|
--nc-dark-on-primary: oklch(0.1448 0.0000 0.00);
|
|
128
|
-
--nc-dark-action: oklch(
|
|
128
|
+
--nc-dark-action: oklch(1.0000 0.0000 0.00);
|
|
129
129
|
--nc-dark-action-foreground: oklch(0.1448 0.0000 0.00);
|
|
130
|
-
--nc-dark-action-hover: oklch(0.
|
|
131
|
-
--nc-dark-action-active: oklch(0.
|
|
130
|
+
--nc-dark-action-hover: oklch(0.9189 0.0000 0.00);
|
|
131
|
+
--nc-dark-action-active: oklch(0.8761 0.0000 0.00);
|
|
132
132
|
--nc-dark-link: oklch(0.7661 0.1498 157.10);
|
|
133
133
|
--nc-dark-link-deep: oklch(0.8524 0.0996 159.83);
|
|
134
134
|
--nc-dark-link-bg-soft: oklch(0.2893 0.0697 156.32);
|
|
@@ -670,7 +670,7 @@
|
|
|
670
670
|
--sidebar-border: var(--nc-dark-line);
|
|
671
671
|
--sidebar-ring: var(--nc-dark-focus-ring);
|
|
672
672
|
}
|
|
673
|
-
@theme { --color-*: initial; --color-nc-primary: oklch(0.5075 0.1338 151.91); --color-nc-on-primary: oklch(1.0000 0.0000 0.00); --color-nc-action: oklch(0.5075 0.1338 151.91); --color-nc-action-foreground: oklch(1.0000 0.0000 0.00); --color-nc-action-hover: oklch(0.4285 0.1117 152.40); --color-nc-action-active: oklch(0.2722 0.0643 157.47); --color-nc-ink: oklch(0.1776 0.0000 0.00); --color-nc-body: oklch(0.3867 0.0000 0.00); --color-nc-muted: oklch(0.5278 0.0000 0.00); --color-nc-canvas: oklch(1.0000 0.0000 0.00); --color-nc-canvas-soft: oklch(0.9851 0.0000 0.00); --color-nc-canvas-soft-2: oklch(0.9702 0.0000 0.00); --color-nc-material-workspace: oklch(0.9761 0.0000 0.00); --color-nc-material-solid: oklch(1.0000 0.0000 0.00); --color-nc-line: oklch(0.9219 0.0000 0.00); --color-nc-input: oklch(0.5624 0.0000 0.00); --color-nc-seam: oklch(0.8699 0.0000 0.00); --color-nc-cross: oklch(0.6830 0.0000 0.00); --color-nc-focus-ring: oklch(0.1776 0.0000 0.00); --color-nc-scrim: oklch(0.1776 0.0000 0.00); --color-nc-link: oklch(0.4815 0.1209 154.24); --color-nc-link-deep: oklch(0.3852 0.0953 154.99); --color-nc-link-bg-soft: oklch(0.9170 0.0519 161.77); --color-nc-accent: oklch(0.6824 0.2108 37.70); --color-nc-info: oklch(0.5005 0.2804 266.17); --color-nc-info-soft: oklch(0.9457 0.0259 276.40); --color-nc-info-deep: oklch(0.3197 0.1758 266.79); --color-nc-success: oklch(0.6415 0.1644 153.23); --color-nc-success-soft: oklch(0.9170 0.0519 161.77); --color-nc-success-deep: oklch(0.3852 0.0953 154.99); --color-nc-error: oklch(0.5688 0.1995 26.59); --color-nc-error-soft: oklch(0.9522 0.0207 17.52); --color-nc-error-deep: oklch(0.4235 0.1525 27.08); --color-nc-warning: oklch(0.8466 0.1678 84.63); --color-nc-warning-soft: oklch(0.9649 0.0461 90.87); --color-nc-warning-deep: oklch(0.4834 0.0995 82.44); --color-nc-flag-red: oklch(0.5688 0.1995 26.59); --color-nc-verde-vivo: oklch(0.5604 0.1485 151.68); --color-nc-selection-bg: oklch(0.1776 0.0000 0.00); --color-nc-selection-fg: oklch(0.9851 0.0000 0.00); --color-nc-navigation-selection-bg: oklch(0.9461 0.0000 0.00); --color-nc-navigation-selection-fg: oklch(0.1776 0.0000 0.00); --color-nc-navigation-selection-hover: oklch(0.9219 0.0000 0.00); --color-nc-state-ready: oklch(0.5278 0.0000 0.00); --color-nc-state-running: oklch(0.5005 0.2804 266.17); --color-nc-state-review: oklch(0.8466 0.1678 84.63); --color-nc-state-blocked: oklch(0.5688 0.1995 26.59); --color-nc-state-complete: oklch(0.6415 0.1644 153.23); --color-nc-background-100: oklch(1.0000 0.0000 0.00); --color-nc-background-200: oklch(0.9851 0.0000 0.00); --color-nc-campo-verde: oklch(0.6415 0.1644 153.23); --color-nc-campo-rosso: oklch(0.5688 0.1995 26.59); --color-nc-campo-arancio: oklch(0.6824 0.2108 37.70); --color-nc-campo-giallo: oklch(0.8466 0.1678 84.63); --color-nc-campo-cobalto: oklch(0.5005 0.2804 266.17); --color-nc-campo-inchiostro: oklch(0.0000 0.0000 0.00); --color-nc-campo-bianco: oklch(1.0000 0.0000 0.00); --color-nc-chart-1: oklch(0.5005 0.2804 266.17); --color-nc-chart-2: oklch(0.6415 0.1644 153.23); --color-nc-chart-3: oklch(0.7638 0.1562 86.86); --color-nc-chart-4: oklch(0.5688 0.1995 26.59); --color-nc-chart-5: oklch(0.6161 0.1062 208.85); --color-nc-chart-6: oklch(0.5015 0.1883 294.99); --color-nc-chart-seq-1: oklch(0.6998 0.1347 269.48); --color-nc-chart-seq-2: oklch(0.5724 0.1897 270.11); --color-nc-chart-seq-3: oklch(0.4725 0.2271 267.41); --color-nc-chart-seq-4: oklch(0.3989 0.1934 267.50); --color-nc-chart-seq-5: oklch(0.3270 0.1487 267.91); --color-nc-chart-div-warm: oklch(0.7592 0.1560 83.30); --color-nc-chart-div-mid: oklch(0.5278 0.0000 0.00); --color-nc-chart-div-cool: oklch(0.5923 0.2215 269.61); --color-nc-dark-canvas: oklch(0.0000 0.0000 0.00); --color-nc-dark-canvas-soft: oklch(0.1776 0.0000 0.00); --color-nc-dark-canvas-soft-2: oklch(0.2178 0.0000 0.00); --color-nc-dark-material-workspace: oklch(0.0000 0.0000 0.00); --color-nc-dark-material-solid: oklch(0.0000 0.0000 0.00); --color-nc-dark-ink: oklch(0.9461 0.0000 0.00); --color-nc-dark-body: oklch(0.8297 0.0000 0.00); --color-nc-dark-muted: oklch(0.6500 0.0000 0.00); --color-nc-dark-line: oklch(0.2686 0.0000 0.00); --color-nc-dark-input: oklch(0.5208 0.0000 0.00); --color-nc-dark-seam: oklch(0.2178 0.0000 0.00); --color-nc-dark-primary: oklch(0.7727 0.1753 155.96); --color-nc-dark-on-primary: oklch(0.1448 0.0000 0.00); --color-nc-dark-action: oklch(0.7727 0.1753 155.96); --color-nc-dark-action-foreground: oklch(0.1448 0.0000 0.00); --color-nc-dark-action-hover: oklch(0.7661 0.1498 157.10); --color-nc-dark-action-active: oklch(0.7019 0.1753 153.20); --color-nc-dark-link: oklch(0.7661 0.1498 157.10); --color-nc-dark-link-deep: oklch(0.8524 0.0996 159.83); --color-nc-dark-link-bg-soft: oklch(0.2893 0.0697 156.32); --color-nc-dark-focus-ring: oklch(0.9461 0.0000 0.00); --color-nc-dark-scrim: oklch(0.9461 0.0000 0.00); --color-nc-dark-error: oklch(0.7955 0.0980 21.02); --color-nc-dark-error-soft: oklch(0.2296 0.0728 26.06); --color-nc-dark-error-deep: oklch(0.8856 0.0534 19.64); --color-nc-dark-warning: oklch(0.8939 0.1387 90.47); --color-nc-dark-warning-soft: oklch(0.3135 0.0643 85.04); --color-nc-dark-warning-deep: oklch(0.9320 0.0896 90.86); --color-nc-dark-info: oklch(0.7067 0.1528 272.08); --color-nc-dark-info-soft: oklch(0.2118 0.1033 268.28); --color-nc-dark-info-deep: oklch(0.8222 0.0888 274.44); --color-nc-dark-cyan: oklch(0.7820 0.1247 190.99); --color-nc-dark-cyan-soft: oklch(0.8646 0.1000 187.55); --color-nc-dark-cyan-deep: oklch(0.6347 0.1029 191.54); --color-nc-dark-success: oklch(0.7019 0.1753 153.20); --color-nc-dark-success-soft: oklch(0.2893 0.0697 156.32); --color-nc-dark-success-deep: oklch(0.8524 0.0996 159.83); --color-nc-dark-state-ready: oklch(0.5624 0.0000 0.00); --color-nc-dark-state-running: oklch(0.5923 0.2215 269.61); --color-nc-dark-state-review: oklch(0.8466 0.1678 84.63); --color-nc-dark-state-blocked: oklch(0.5688 0.1995 26.59); --color-nc-dark-state-complete: oklch(0.6415 0.1644 153.23); --color-nc-dark-selection-bg: oklch(0.9461 0.0000 0.00); --color-nc-dark-selection-fg: oklch(0.1448 0.0000 0.00); --color-nc-dark-navigation-selection-bg: oklch(0.2178 0.0000 0.00); --color-nc-dark-navigation-selection-fg: oklch(0.9461 0.0000 0.00); --color-nc-dark-navigation-selection-hover: oklch(0.2686 0.0000 0.00); --color-nc-dark-cross: oklch(0.4495 0.0000 0.00); --color-nc-dark-verde-vivo: oklch(0.7868 0.1398 156.43); --color-nc-dark-chart-1: oklch(0.5923 0.2215 269.61); --color-nc-dark-chart-2: oklch(0.6415 0.1644 153.23); --color-nc-dark-chart-3: oklch(0.8939 0.1387 90.47); --color-nc-dark-chart-4: oklch(0.6627 0.1685 23.66); --color-nc-dark-chart-5: oklch(0.7820 0.1247 190.99); --color-nc-dark-chart-6: oklch(0.6297 0.1321 299.36); --color-nc-dark-chart-seq-1: oklch(0.5724 0.1897 270.11); --color-nc-dark-chart-seq-2: oklch(0.6998 0.1347 269.48); --color-nc-dark-chart-seq-3: oklch(0.8072 0.0884 269.44); --color-nc-dark-chart-seq-4: oklch(0.8877 0.0514 270.78); --color-nc-dark-chart-seq-5: oklch(0.9619 0.0179 272.31); --color-nc-dark-chart-div-warm: oklch(0.8939 0.1387 90.47); --color-nc-dark-chart-div-mid: oklch(0.9219 0.0000 0.00); --color-nc-dark-chart-div-cool: oklch(0.8222 0.0888 274.44); --font-display-xl: Geist, Inter, system-ui, -apple-system, sans-serif; --font-display-lg: Geist, Inter, system-ui, -apple-system, sans-serif; --font-display-md: Geist, Inter, system-ui, -apple-system, sans-serif; --font-display-sm: Geist, Inter, system-ui, -apple-system, sans-serif; --font-title-lg: Geist, Inter, system-ui, -apple-system, sans-serif; --font-title-md: Geist, Inter, system-ui, -apple-system, sans-serif; --font-title-sm: Geist, Inter, system-ui, -apple-system, sans-serif; --font-body-lg: Geist, Inter, system-ui, -apple-system, sans-serif; --font-body-md: Geist, Inter, system-ui, -apple-system, sans-serif; --font-body-md-strong: Geist, Inter, system-ui, -apple-system, sans-serif; --font-body-sm: Geist, Inter, system-ui, -apple-system, sans-serif; --font-body-sm-strong: Geist, Inter, system-ui, -apple-system, sans-serif; --font-caption: Geist, Inter, system-ui, -apple-system, sans-serif; --font-caption-strong: Geist, Inter, system-ui, -apple-system, sans-serif; --font-caption-mono: Geist Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, monospace; --font-code: Geist Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, monospace; --font-button-md: Geist, Inter, system-ui, -apple-system, sans-serif; --font-button-lg: Geist, Inter, system-ui, -apple-system, sans-serif; --text-display-xl: 72px; --text-display-xl--line-height: 74px; --leading-display-xl: 74px; --text-display-xl--letter-spacing: -1.5px; --tracking-display-xl: -1.5px; --text-display-xl--font-weight: 600; --font-weight-display-xl: 600; --text-display-lg: 52px; --text-display-lg--line-height: 54px; --leading-display-lg: 54px; --text-display-lg--letter-spacing: -1px; --tracking-display-lg: -1px; --text-display-lg--font-weight: 600; --font-weight-display-lg: 600; --text-display-md: 24px; --text-display-md--line-height: 32px; --leading-display-md: 32px; --text-display-md--letter-spacing: 0px; --tracking-display-md: 0px; --text-display-md--font-weight: 600; --font-weight-display-md: 600; --text-display-sm: 20px; --text-display-sm--line-height: 28px; --leading-display-sm: 28px; --text-display-sm--letter-spacing: 0px; --tracking-display-sm: 0px; --text-display-sm--font-weight: 600; --font-weight-display-sm: 600; --text-title-lg: 40px; --text-title-lg--line-height: 41px; --leading-title-lg: 41px; --text-title-lg--letter-spacing: 0px; --tracking-title-lg: 0px; --text-title-lg--font-weight: 600; --font-weight-title-lg: 600; --text-title-md: 30px; --text-title-md--line-height: 32px; --leading-title-md: 32px; --text-title-md--letter-spacing: 0px; --tracking-title-md: 0px; --text-title-md--font-weight: 600; --font-weight-title-md: 600; --text-title-sm: 22px; --text-title-sm--line-height: 25px; --leading-title-sm: 25px; --text-title-sm--letter-spacing: 0px; --tracking-title-sm: 0px; --text-title-sm--font-weight: 600; --font-weight-title-sm: 600; --text-body-lg: 18px; --text-body-lg--line-height: 27px; --leading-body-lg: 27px; --text-body-lg--letter-spacing: 0px; --tracking-body-lg: 0px; --text-body-lg--font-weight: 400; --font-weight-body-lg: 400; --text-body-md: 16px; --text-body-md--line-height: 25px; --leading-body-md: 25px; --text-body-md--letter-spacing: 0px; --tracking-body-md: 0px; --text-body-md--font-weight: 400; --font-weight-body-md: 400; --text-body-md-strong: 16px; --text-body-md-strong--line-height: 24px; --leading-body-md-strong: 24px; --text-body-md-strong--letter-spacing: 0px; --tracking-body-md-strong: 0px; --text-body-md-strong--font-weight: 500; --font-weight-body-md-strong: 500; --text-body-sm: 14px; --text-body-sm--line-height: 20px; --leading-body-sm: 20px; --text-body-sm--letter-spacing: 0px; --tracking-body-sm: 0px; --text-body-sm--font-weight: 400; --font-weight-body-sm: 400; --text-body-sm-strong: 14px; --text-body-sm-strong--line-height: 20px; --leading-body-sm-strong: 20px; --text-body-sm-strong--letter-spacing: 0px; --tracking-body-sm-strong: 0px; --text-body-sm-strong--font-weight: 500; --font-weight-body-sm-strong: 500; --text-caption: 12px; --text-caption--line-height: 16px; --leading-caption: 16px; --text-caption--letter-spacing: 0px; --tracking-caption: 0px; --text-caption--font-weight: 400; --font-weight-caption: 400; --text-caption-strong: 12px; --text-caption-strong--line-height: 16px; --leading-caption-strong: 16px; --text-caption-strong--letter-spacing: 0px; --tracking-caption-strong: 0px; --text-caption-strong--font-weight: 500; --font-weight-caption-strong: 500; --text-caption-mono: 12px; --text-caption-mono--line-height: 16px; --leading-caption-mono: 16px; --text-caption-mono--letter-spacing: 0px; --tracking-caption-mono: 0px; --text-caption-mono--font-weight: 500; --font-weight-caption-mono: 500; --text-code: 13px; --text-code--line-height: 20px; --leading-code: 20px; --text-code--letter-spacing: 0px; --tracking-code: 0px; --text-code--font-weight: 400; --font-weight-code: 400; --text-button-md: 14px; --text-button-md--line-height: 18px; --leading-button-md: 18px; --text-button-md--letter-spacing: 0px; --tracking-button-md: 0px; --text-button-md--font-weight: 500; --font-weight-button-md: 500; --text-button-lg: 16px; --text-button-lg--line-height: 24px; --leading-button-lg: 24px; --text-button-lg--letter-spacing: 0px; --tracking-button-lg: 0px; --text-button-lg--font-weight: 500; --font-weight-button-lg: 500; --radius-none: 0px; --radius-xs: 2px; --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; --radius-xl: 10px; --radius-2xl: 12px; --radius-3xl: 16px; --radius-pill-sm: 64px; --radius-pill: 100px; --radius-full: 9999px; --ease-nc-emphasized: cubic-bezier(0.3, 0.7, 0.2, 1); --ease-nc-out-strong: cubic-bezier(0.23, 1, 0.32, 1); --ease-nc-in-out-strong: cubic-bezier(0.77, 0, 0.175, 1); --ease-nc-drawer: cubic-bezier(0.32, 0.72, 0, 1); --outline-width-focus: var(--spacing-nadicode-focus-outline-width); --outline-offset-focus: var(--spacing-nadicode-focus-outline-offset); --opacity-scrim: var(--nc-material-scrim-opacity); --spacing-nadicode-xxs: 4px; --spacing-nadicode-xs: 8px; --spacing-nadicode-sm: 12px; --spacing-nadicode-md: 16px; --spacing-nadicode-lg: 24px; --spacing-nadicode-xl: 32px; --spacing-nadicode-2xl: 40px; --spacing-nadicode-3xl: 48px; --spacing-nadicode-4xl: 64px; --spacing-nadicode-5xl: 96px; --spacing-nadicode-6xl: 128px; --spacing-nadicode-guide: 1px; --spacing-nadicode-icon-stroke: 1.6px; --spacing-nadicode-focus-outline-width: 2px; --spacing-nadicode-focus-outline-offset: 2px; --spacing-nadicode-control-height: 32px; --spacing-nadicode-control-padding-inline: 10px; --spacing-nadicode-touch-target: 44px; --spacing-nadicode-section: 192px; --spacing-nadicode-page-pad: 24px; --spacing-nadicode-page-max-mobile: 448px; --spacing-nadicode-page-max-tablet: 624px; --spacing-nadicode-page-max-desktop: 1440px; --spacing-nadicode-frame-max: 1392px; --spacing-nadicode-frame-gap: 24px; --spacing-nadicode-cell-padding: 24px; --spacing-nadicode-section-gap: 48px; --spacing-nadicode-cross-size-mobile: 11px; --spacing-nadicode-cross-size-tablet: 15px; --spacing-nadicode-cross-size-desktop: 21px; --spacing-nadicode-h-strip-mobile: 72px; --spacing-nadicode-h-strip-tablet: 80px; --spacing-nadicode-h-strip-desktop: 88px; --spacing-nadicode-h-cell-sm: 120px; --spacing-nadicode-h-cell-md-mobile: 144px; --spacing-nadicode-h-cell-md-tablet: 160px; --spacing-nadicode-h-cell-md-desktop: 168px; --spacing-nadicode-h-cell-lg-mobile: 220px; --spacing-nadicode-h-cell-lg-desktop: 240px; --spacing-nadicode-h-visual-mobile: 276px; --spacing-nadicode-h-visual-tablet: 318px; --spacing-nadicode-h-visual-desktop: 360px; --spacing-nadicode-h-precision-mobile: 276px; --spacing-nadicode-h-precision-tablet: 480px; --spacing-nadicode-h-precision-desktop: 720px; --spacing-nadicode-h-hero-mobile: 560px; --spacing-nadicode-h-hero-desktop: 720px; --spacing-nadicode-h-action-strip-mobile: 20px; --spacing-nadicode-h-action-strip-desktop: 32px; --spacing-nadicode-h-action-body-mobile: 320px; --spacing-nadicode-h-action-body-tablet: 338px; --spacing-nadicode-h-action-band: 260px; --spacing-nadicode-h-feature-mobile: 360px; --spacing-nadicode-h-feature-tablet: 400px; --spacing-nadicode-h-feature-desktop: 456px; --spacing-nadicode-h-editorial-feature-mobile: 360px; --spacing-nadicode-h-editorial-feature-tablet: 440px; --spacing-nadicode-h-editorial-feature-desktop: 560px; --spacing-nadicode-h-bento-primary: 384px; --spacing-nadicode-h-bento-secondary: 240px; --spacing-nadicode-h-bento-mobile-copy: 248px; --spacing-nadicode-h-bento-mobile-main: 537px; --spacing-nadicode-h-bento-strip: 20px; --spacing-nadicode-filter-chip-gap: 6px; --spacing-nadicode-filter-chip-height: 28px; --spacing-nadicode-filter-chip-icon: 14px; --spacing-control-height: var(--spacing-nadicode-control-height); --spacing-control-padding-inline: var(--spacing-nadicode-control-padding-inline); --spacing-touch-target: var(--spacing-nadicode-touch-target); }
|
|
673
|
+
@theme { --color-*: initial; --color-nc-primary: oklch(0.5075 0.1338 151.91); --color-nc-on-primary: oklch(1.0000 0.0000 0.00); --color-nc-action: oklch(0.1776 0.0000 0.00); --color-nc-action-foreground: oklch(1.0000 0.0000 0.00); --color-nc-action-hover: oklch(0.3012 0.0000 0.00); --color-nc-action-active: oklch(0.0000 0.0000 0.00); --color-nc-ink: oklch(0.1776 0.0000 0.00); --color-nc-body: oklch(0.3867 0.0000 0.00); --color-nc-muted: oklch(0.5278 0.0000 0.00); --color-nc-canvas: oklch(1.0000 0.0000 0.00); --color-nc-canvas-soft: oklch(0.9851 0.0000 0.00); --color-nc-canvas-soft-2: oklch(0.9702 0.0000 0.00); --color-nc-material-workspace: oklch(0.9761 0.0000 0.00); --color-nc-material-solid: oklch(1.0000 0.0000 0.00); --color-nc-line: oklch(0.9219 0.0000 0.00); --color-nc-input: oklch(0.5624 0.0000 0.00); --color-nc-seam: oklch(0.8699 0.0000 0.00); --color-nc-cross: oklch(0.6830 0.0000 0.00); --color-nc-focus-ring: oklch(0.1776 0.0000 0.00); --color-nc-scrim: oklch(0.1776 0.0000 0.00); --color-nc-link: oklch(0.4815 0.1209 154.24); --color-nc-link-deep: oklch(0.3852 0.0953 154.99); --color-nc-link-bg-soft: oklch(0.9170 0.0519 161.77); --color-nc-accent: oklch(0.6824 0.2108 37.70); --color-nc-info: oklch(0.5005 0.2804 266.17); --color-nc-info-soft: oklch(0.9457 0.0259 276.40); --color-nc-info-deep: oklch(0.3197 0.1758 266.79); --color-nc-success: oklch(0.6415 0.1644 153.23); --color-nc-success-soft: oklch(0.9170 0.0519 161.77); --color-nc-success-deep: oklch(0.3852 0.0953 154.99); --color-nc-error: oklch(0.5688 0.1995 26.59); --color-nc-error-soft: oklch(0.9522 0.0207 17.52); --color-nc-error-deep: oklch(0.4235 0.1525 27.08); --color-nc-warning: oklch(0.8466 0.1678 84.63); --color-nc-warning-soft: oklch(0.9649 0.0461 90.87); --color-nc-warning-deep: oklch(0.4834 0.0995 82.44); --color-nc-flag-red: oklch(0.5688 0.1995 26.59); --color-nc-verde-vivo: oklch(0.5604 0.1485 151.68); --color-nc-selection-bg: oklch(0.1776 0.0000 0.00); --color-nc-selection-fg: oklch(0.9851 0.0000 0.00); --color-nc-navigation-selection-bg: oklch(0.9461 0.0000 0.00); --color-nc-navigation-selection-fg: oklch(0.1776 0.0000 0.00); --color-nc-navigation-selection-hover: oklch(0.9219 0.0000 0.00); --color-nc-state-ready: oklch(0.5278 0.0000 0.00); --color-nc-state-running: oklch(0.5005 0.2804 266.17); --color-nc-state-review: oklch(0.8466 0.1678 84.63); --color-nc-state-blocked: oklch(0.5688 0.1995 26.59); --color-nc-state-complete: oklch(0.6415 0.1644 153.23); --color-nc-background-100: oklch(1.0000 0.0000 0.00); --color-nc-background-200: oklch(0.9851 0.0000 0.00); --color-nc-campo-verde: oklch(0.6415 0.1644 153.23); --color-nc-campo-rosso: oklch(0.5688 0.1995 26.59); --color-nc-campo-arancio: oklch(0.6824 0.2108 37.70); --color-nc-campo-giallo: oklch(0.8466 0.1678 84.63); --color-nc-campo-cobalto: oklch(0.5005 0.2804 266.17); --color-nc-campo-inchiostro: oklch(0.0000 0.0000 0.00); --color-nc-campo-bianco: oklch(1.0000 0.0000 0.00); --color-nc-chart-1: oklch(0.5005 0.2804 266.17); --color-nc-chart-2: oklch(0.6415 0.1644 153.23); --color-nc-chart-3: oklch(0.7638 0.1562 86.86); --color-nc-chart-4: oklch(0.5688 0.1995 26.59); --color-nc-chart-5: oklch(0.6161 0.1062 208.85); --color-nc-chart-6: oklch(0.5015 0.1883 294.99); --color-nc-chart-seq-1: oklch(0.6998 0.1347 269.48); --color-nc-chart-seq-2: oklch(0.5724 0.1897 270.11); --color-nc-chart-seq-3: oklch(0.4725 0.2271 267.41); --color-nc-chart-seq-4: oklch(0.3989 0.1934 267.50); --color-nc-chart-seq-5: oklch(0.3270 0.1487 267.91); --color-nc-chart-div-warm: oklch(0.7592 0.1560 83.30); --color-nc-chart-div-mid: oklch(0.5278 0.0000 0.00); --color-nc-chart-div-cool: oklch(0.5923 0.2215 269.61); --color-nc-dark-canvas: oklch(0.0000 0.0000 0.00); --color-nc-dark-canvas-soft: oklch(0.1776 0.0000 0.00); --color-nc-dark-canvas-soft-2: oklch(0.2178 0.0000 0.00); --color-nc-dark-material-workspace: oklch(0.0000 0.0000 0.00); --color-nc-dark-material-solid: oklch(0.0000 0.0000 0.00); --color-nc-dark-ink: oklch(0.9461 0.0000 0.00); --color-nc-dark-body: oklch(0.8297 0.0000 0.00); --color-nc-dark-muted: oklch(0.6500 0.0000 0.00); --color-nc-dark-line: oklch(0.2686 0.0000 0.00); --color-nc-dark-input: oklch(0.5208 0.0000 0.00); --color-nc-dark-seam: oklch(0.2178 0.0000 0.00); --color-nc-dark-primary: oklch(0.7727 0.1753 155.96); --color-nc-dark-on-primary: oklch(0.1448 0.0000 0.00); --color-nc-dark-action: oklch(1.0000 0.0000 0.00); --color-nc-dark-action-foreground: oklch(0.1448 0.0000 0.00); --color-nc-dark-action-hover: oklch(0.9189 0.0000 0.00); --color-nc-dark-action-active: oklch(0.8761 0.0000 0.00); --color-nc-dark-link: oklch(0.7661 0.1498 157.10); --color-nc-dark-link-deep: oklch(0.8524 0.0996 159.83); --color-nc-dark-link-bg-soft: oklch(0.2893 0.0697 156.32); --color-nc-dark-focus-ring: oklch(0.9461 0.0000 0.00); --color-nc-dark-scrim: oklch(0.9461 0.0000 0.00); --color-nc-dark-error: oklch(0.7955 0.0980 21.02); --color-nc-dark-error-soft: oklch(0.2296 0.0728 26.06); --color-nc-dark-error-deep: oklch(0.8856 0.0534 19.64); --color-nc-dark-warning: oklch(0.8939 0.1387 90.47); --color-nc-dark-warning-soft: oklch(0.3135 0.0643 85.04); --color-nc-dark-warning-deep: oklch(0.9320 0.0896 90.86); --color-nc-dark-info: oklch(0.7067 0.1528 272.08); --color-nc-dark-info-soft: oklch(0.2118 0.1033 268.28); --color-nc-dark-info-deep: oklch(0.8222 0.0888 274.44); --color-nc-dark-cyan: oklch(0.7820 0.1247 190.99); --color-nc-dark-cyan-soft: oklch(0.8646 0.1000 187.55); --color-nc-dark-cyan-deep: oklch(0.6347 0.1029 191.54); --color-nc-dark-success: oklch(0.7019 0.1753 153.20); --color-nc-dark-success-soft: oklch(0.2893 0.0697 156.32); --color-nc-dark-success-deep: oklch(0.8524 0.0996 159.83); --color-nc-dark-state-ready: oklch(0.5624 0.0000 0.00); --color-nc-dark-state-running: oklch(0.5923 0.2215 269.61); --color-nc-dark-state-review: oklch(0.8466 0.1678 84.63); --color-nc-dark-state-blocked: oklch(0.5688 0.1995 26.59); --color-nc-dark-state-complete: oklch(0.6415 0.1644 153.23); --color-nc-dark-selection-bg: oklch(0.9461 0.0000 0.00); --color-nc-dark-selection-fg: oklch(0.1448 0.0000 0.00); --color-nc-dark-navigation-selection-bg: oklch(0.2178 0.0000 0.00); --color-nc-dark-navigation-selection-fg: oklch(0.9461 0.0000 0.00); --color-nc-dark-navigation-selection-hover: oklch(0.2686 0.0000 0.00); --color-nc-dark-cross: oklch(0.4495 0.0000 0.00); --color-nc-dark-verde-vivo: oklch(0.7868 0.1398 156.43); --color-nc-dark-chart-1: oklch(0.5923 0.2215 269.61); --color-nc-dark-chart-2: oklch(0.6415 0.1644 153.23); --color-nc-dark-chart-3: oklch(0.8939 0.1387 90.47); --color-nc-dark-chart-4: oklch(0.6627 0.1685 23.66); --color-nc-dark-chart-5: oklch(0.7820 0.1247 190.99); --color-nc-dark-chart-6: oklch(0.6297 0.1321 299.36); --color-nc-dark-chart-seq-1: oklch(0.5724 0.1897 270.11); --color-nc-dark-chart-seq-2: oklch(0.6998 0.1347 269.48); --color-nc-dark-chart-seq-3: oklch(0.8072 0.0884 269.44); --color-nc-dark-chart-seq-4: oklch(0.8877 0.0514 270.78); --color-nc-dark-chart-seq-5: oklch(0.9619 0.0179 272.31); --color-nc-dark-chart-div-warm: oklch(0.8939 0.1387 90.47); --color-nc-dark-chart-div-mid: oklch(0.9219 0.0000 0.00); --color-nc-dark-chart-div-cool: oklch(0.8222 0.0888 274.44); --font-display-xl: Geist, Inter, system-ui, -apple-system, sans-serif; --font-display-lg: Geist, Inter, system-ui, -apple-system, sans-serif; --font-display-md: Geist, Inter, system-ui, -apple-system, sans-serif; --font-display-sm: Geist, Inter, system-ui, -apple-system, sans-serif; --font-title-lg: Geist, Inter, system-ui, -apple-system, sans-serif; --font-title-md: Geist, Inter, system-ui, -apple-system, sans-serif; --font-title-sm: Geist, Inter, system-ui, -apple-system, sans-serif; --font-body-lg: Geist, Inter, system-ui, -apple-system, sans-serif; --font-body-md: Geist, Inter, system-ui, -apple-system, sans-serif; --font-body-md-strong: Geist, Inter, system-ui, -apple-system, sans-serif; --font-body-sm: Geist, Inter, system-ui, -apple-system, sans-serif; --font-body-sm-strong: Geist, Inter, system-ui, -apple-system, sans-serif; --font-caption: Geist, Inter, system-ui, -apple-system, sans-serif; --font-caption-strong: Geist, Inter, system-ui, -apple-system, sans-serif; --font-caption-mono: Geist Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, monospace; --font-code: Geist Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, monospace; --font-button-md: Geist, Inter, system-ui, -apple-system, sans-serif; --font-button-lg: Geist, Inter, system-ui, -apple-system, sans-serif; --text-display-xl: 72px; --text-display-xl--line-height: 74px; --leading-display-xl: 74px; --text-display-xl--letter-spacing: -1.5px; --tracking-display-xl: -1.5px; --text-display-xl--font-weight: 600; --font-weight-display-xl: 600; --text-display-lg: 52px; --text-display-lg--line-height: 54px; --leading-display-lg: 54px; --text-display-lg--letter-spacing: -1px; --tracking-display-lg: -1px; --text-display-lg--font-weight: 600; --font-weight-display-lg: 600; --text-display-md: 24px; --text-display-md--line-height: 32px; --leading-display-md: 32px; --text-display-md--letter-spacing: 0px; --tracking-display-md: 0px; --text-display-md--font-weight: 600; --font-weight-display-md: 600; --text-display-sm: 20px; --text-display-sm--line-height: 28px; --leading-display-sm: 28px; --text-display-sm--letter-spacing: 0px; --tracking-display-sm: 0px; --text-display-sm--font-weight: 600; --font-weight-display-sm: 600; --text-title-lg: 40px; --text-title-lg--line-height: 41px; --leading-title-lg: 41px; --text-title-lg--letter-spacing: 0px; --tracking-title-lg: 0px; --text-title-lg--font-weight: 600; --font-weight-title-lg: 600; --text-title-md: 30px; --text-title-md--line-height: 32px; --leading-title-md: 32px; --text-title-md--letter-spacing: 0px; --tracking-title-md: 0px; --text-title-md--font-weight: 600; --font-weight-title-md: 600; --text-title-sm: 22px; --text-title-sm--line-height: 25px; --leading-title-sm: 25px; --text-title-sm--letter-spacing: 0px; --tracking-title-sm: 0px; --text-title-sm--font-weight: 600; --font-weight-title-sm: 600; --text-body-lg: 18px; --text-body-lg--line-height: 27px; --leading-body-lg: 27px; --text-body-lg--letter-spacing: 0px; --tracking-body-lg: 0px; --text-body-lg--font-weight: 400; --font-weight-body-lg: 400; --text-body-md: 16px; --text-body-md--line-height: 25px; --leading-body-md: 25px; --text-body-md--letter-spacing: 0px; --tracking-body-md: 0px; --text-body-md--font-weight: 400; --font-weight-body-md: 400; --text-body-md-strong: 16px; --text-body-md-strong--line-height: 24px; --leading-body-md-strong: 24px; --text-body-md-strong--letter-spacing: 0px; --tracking-body-md-strong: 0px; --text-body-md-strong--font-weight: 500; --font-weight-body-md-strong: 500; --text-body-sm: 14px; --text-body-sm--line-height: 20px; --leading-body-sm: 20px; --text-body-sm--letter-spacing: 0px; --tracking-body-sm: 0px; --text-body-sm--font-weight: 400; --font-weight-body-sm: 400; --text-body-sm-strong: 14px; --text-body-sm-strong--line-height: 20px; --leading-body-sm-strong: 20px; --text-body-sm-strong--letter-spacing: 0px; --tracking-body-sm-strong: 0px; --text-body-sm-strong--font-weight: 500; --font-weight-body-sm-strong: 500; --text-caption: 12px; --text-caption--line-height: 16px; --leading-caption: 16px; --text-caption--letter-spacing: 0px; --tracking-caption: 0px; --text-caption--font-weight: 400; --font-weight-caption: 400; --text-caption-strong: 12px; --text-caption-strong--line-height: 16px; --leading-caption-strong: 16px; --text-caption-strong--letter-spacing: 0px; --tracking-caption-strong: 0px; --text-caption-strong--font-weight: 500; --font-weight-caption-strong: 500; --text-caption-mono: 12px; --text-caption-mono--line-height: 16px; --leading-caption-mono: 16px; --text-caption-mono--letter-spacing: 0px; --tracking-caption-mono: 0px; --text-caption-mono--font-weight: 500; --font-weight-caption-mono: 500; --text-code: 13px; --text-code--line-height: 20px; --leading-code: 20px; --text-code--letter-spacing: 0px; --tracking-code: 0px; --text-code--font-weight: 400; --font-weight-code: 400; --text-button-md: 14px; --text-button-md--line-height: 18px; --leading-button-md: 18px; --text-button-md--letter-spacing: 0px; --tracking-button-md: 0px; --text-button-md--font-weight: 500; --font-weight-button-md: 500; --text-button-lg: 16px; --text-button-lg--line-height: 24px; --leading-button-lg: 24px; --text-button-lg--letter-spacing: 0px; --tracking-button-lg: 0px; --text-button-lg--font-weight: 500; --font-weight-button-lg: 500; --radius-none: 0px; --radius-xs: 2px; --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; --radius-xl: 10px; --radius-2xl: 12px; --radius-3xl: 16px; --radius-pill-sm: 64px; --radius-pill: 100px; --radius-full: 9999px; --ease-nc-emphasized: cubic-bezier(0.3, 0.7, 0.2, 1); --ease-nc-out-strong: cubic-bezier(0.23, 1, 0.32, 1); --ease-nc-in-out-strong: cubic-bezier(0.77, 0, 0.175, 1); --ease-nc-drawer: cubic-bezier(0.32, 0.72, 0, 1); --outline-width-focus: var(--spacing-nadicode-focus-outline-width); --outline-offset-focus: var(--spacing-nadicode-focus-outline-offset); --opacity-scrim: var(--nc-material-scrim-opacity); --spacing-nadicode-xxs: 4px; --spacing-nadicode-xs: 8px; --spacing-nadicode-sm: 12px; --spacing-nadicode-md: 16px; --spacing-nadicode-lg: 24px; --spacing-nadicode-xl: 32px; --spacing-nadicode-2xl: 40px; --spacing-nadicode-3xl: 48px; --spacing-nadicode-4xl: 64px; --spacing-nadicode-5xl: 96px; --spacing-nadicode-6xl: 128px; --spacing-nadicode-guide: 1px; --spacing-nadicode-icon-stroke: 1.6px; --spacing-nadicode-focus-outline-width: 2px; --spacing-nadicode-focus-outline-offset: 2px; --spacing-nadicode-control-height: 32px; --spacing-nadicode-control-padding-inline: 10px; --spacing-nadicode-touch-target: 44px; --spacing-nadicode-section: 192px; --spacing-nadicode-page-pad: 24px; --spacing-nadicode-page-max-mobile: 448px; --spacing-nadicode-page-max-tablet: 624px; --spacing-nadicode-page-max-desktop: 1440px; --spacing-nadicode-frame-max: 1392px; --spacing-nadicode-frame-gap: 24px; --spacing-nadicode-cell-padding: 24px; --spacing-nadicode-section-gap: 48px; --spacing-nadicode-cross-size-mobile: 11px; --spacing-nadicode-cross-size-tablet: 15px; --spacing-nadicode-cross-size-desktop: 21px; --spacing-nadicode-h-strip-mobile: 72px; --spacing-nadicode-h-strip-tablet: 80px; --spacing-nadicode-h-strip-desktop: 88px; --spacing-nadicode-h-cell-sm: 120px; --spacing-nadicode-h-cell-md-mobile: 144px; --spacing-nadicode-h-cell-md-tablet: 160px; --spacing-nadicode-h-cell-md-desktop: 168px; --spacing-nadicode-h-cell-lg-mobile: 220px; --spacing-nadicode-h-cell-lg-desktop: 240px; --spacing-nadicode-h-visual-mobile: 276px; --spacing-nadicode-h-visual-tablet: 318px; --spacing-nadicode-h-visual-desktop: 360px; --spacing-nadicode-h-precision-mobile: 276px; --spacing-nadicode-h-precision-tablet: 480px; --spacing-nadicode-h-precision-desktop: 720px; --spacing-nadicode-h-hero-mobile: 560px; --spacing-nadicode-h-hero-desktop: 720px; --spacing-nadicode-h-action-strip-mobile: 20px; --spacing-nadicode-h-action-strip-desktop: 32px; --spacing-nadicode-h-action-body-mobile: 320px; --spacing-nadicode-h-action-body-tablet: 338px; --spacing-nadicode-h-action-band: 260px; --spacing-nadicode-h-feature-mobile: 360px; --spacing-nadicode-h-feature-tablet: 400px; --spacing-nadicode-h-feature-desktop: 456px; --spacing-nadicode-h-editorial-feature-mobile: 360px; --spacing-nadicode-h-editorial-feature-tablet: 440px; --spacing-nadicode-h-editorial-feature-desktop: 560px; --spacing-nadicode-h-bento-primary: 384px; --spacing-nadicode-h-bento-secondary: 240px; --spacing-nadicode-h-bento-mobile-copy: 248px; --spacing-nadicode-h-bento-mobile-main: 537px; --spacing-nadicode-h-bento-strip: 20px; --spacing-nadicode-filter-chip-gap: 6px; --spacing-nadicode-filter-chip-height: 28px; --spacing-nadicode-filter-chip-icon: 14px; --spacing-control-height: var(--spacing-nadicode-control-height); --spacing-control-padding-inline: var(--spacing-nadicode-control-padding-inline); --spacing-touch-target: var(--spacing-nadicode-touch-target); }
|
|
674
674
|
@theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-primary-hover: var(--primary-hover); --color-primary-active: var(--primary-active); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-placeholder: var(--placeholder); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-destructive-foreground: var(--destructive-foreground); --color-warning: var(--warning); --color-warning-foreground: var(--warning-foreground); --color-success: var(--success); --color-success-foreground: var(--success-foreground); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); --color-scrim: var(--scrim); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); --color-chart-4: var(--chart-4); --color-chart-5: var(--chart-5); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-primary-hover: var(--sidebar-primary-hover); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); }
|
|
675
675
|
}
|
|
676
676
|
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
"colors": {
|
|
5
5
|
"primary": "#007a3c",
|
|
6
6
|
"on-primary": "#ffffff",
|
|
7
|
-
"action": "#
|
|
7
|
+
"action": "#111111",
|
|
8
8
|
"action-foreground": "#ffffff",
|
|
9
|
-
"action-hover": "#
|
|
10
|
-
"action-active": "#
|
|
9
|
+
"action-hover": "#2e2e2e",
|
|
10
|
+
"action-active": "#000000",
|
|
11
11
|
"ink": "#111111",
|
|
12
12
|
"body": "#444444",
|
|
13
13
|
"muted": "#6b6b6b",
|
|
@@ -86,10 +86,10 @@
|
|
|
86
86
|
"dark-seam": "#1a1a1a",
|
|
87
87
|
"dark-primary": "#2fd584",
|
|
88
88
|
"dark-on-primary": "#0a0a0a",
|
|
89
|
-
"dark-action": "#
|
|
89
|
+
"dark-action": "#ffffff",
|
|
90
90
|
"dark-action-foreground": "#0a0a0a",
|
|
91
|
-
"dark-action-hover": "#
|
|
92
|
-
"dark-action-active": "#
|
|
91
|
+
"dark-action-hover": "#e4e4e4",
|
|
92
|
+
"dark-action-active": "#d6d6d6",
|
|
93
93
|
"dark-link": "#4ecf8c",
|
|
94
94
|
"dark-link-deep": "#93e3b8",
|
|
95
95
|
"dark-link-bg-soft": "#00351c",
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
"$value": {
|
|
32
32
|
"colorSpace": "srgb",
|
|
33
33
|
"components": [
|
|
34
|
-
0,
|
|
35
|
-
0.
|
|
36
|
-
0.
|
|
34
|
+
0.067,
|
|
35
|
+
0.067,
|
|
36
|
+
0.067
|
|
37
37
|
],
|
|
38
|
-
"hex": "#
|
|
38
|
+
"hex": "#111111"
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
"action-foreground": {
|
|
@@ -53,11 +53,11 @@
|
|
|
53
53
|
"$value": {
|
|
54
54
|
"colorSpace": "srgb",
|
|
55
55
|
"components": [
|
|
56
|
-
0,
|
|
57
|
-
0.
|
|
58
|
-
0.
|
|
56
|
+
0.18,
|
|
57
|
+
0.18,
|
|
58
|
+
0.18
|
|
59
59
|
],
|
|
60
|
-
"hex": "#
|
|
60
|
+
"hex": "#2e2e2e"
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
63
|
"action-active": {
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"colorSpace": "srgb",
|
|
66
66
|
"components": [
|
|
67
67
|
0,
|
|
68
|
-
0
|
|
69
|
-
0
|
|
68
|
+
0,
|
|
69
|
+
0
|
|
70
70
|
],
|
|
71
|
-
"hex": "#
|
|
71
|
+
"hex": "#000000"
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
74
|
"ink": {
|
|
@@ -933,11 +933,11 @@
|
|
|
933
933
|
"$value": {
|
|
934
934
|
"colorSpace": "srgb",
|
|
935
935
|
"components": [
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
936
|
+
1,
|
|
937
|
+
1,
|
|
938
|
+
1
|
|
939
939
|
],
|
|
940
|
-
"hex": "#
|
|
940
|
+
"hex": "#ffffff"
|
|
941
941
|
}
|
|
942
942
|
},
|
|
943
943
|
"dark-action-foreground": {
|
|
@@ -955,22 +955,22 @@
|
|
|
955
955
|
"$value": {
|
|
956
956
|
"colorSpace": "srgb",
|
|
957
957
|
"components": [
|
|
958
|
-
0.
|
|
959
|
-
0.
|
|
960
|
-
0.
|
|
958
|
+
0.894,
|
|
959
|
+
0.894,
|
|
960
|
+
0.894
|
|
961
961
|
],
|
|
962
|
-
"hex": "#
|
|
962
|
+
"hex": "#e4e4e4"
|
|
963
963
|
}
|
|
964
964
|
},
|
|
965
965
|
"dark-action-active": {
|
|
966
966
|
"$value": {
|
|
967
967
|
"colorSpace": "srgb",
|
|
968
968
|
"components": [
|
|
969
|
-
0.
|
|
970
|
-
0.
|
|
971
|
-
0.
|
|
969
|
+
0.839,
|
|
970
|
+
0.839,
|
|
971
|
+
0.839
|
|
972
972
|
],
|
|
973
|
-
"hex": "#
|
|
973
|
+
"hex": "#d6d6d6"
|
|
974
974
|
}
|
|
975
975
|
},
|
|
976
976
|
"dark-link": {
|
|
@@ -3835,11 +3835,11 @@
|
|
|
3835
3835
|
"$value": {
|
|
3836
3836
|
"colorSpace": "srgb",
|
|
3837
3837
|
"components": [
|
|
3838
|
-
0,
|
|
3839
|
-
0.
|
|
3840
|
-
0.
|
|
3838
|
+
0.067,
|
|
3839
|
+
0.067,
|
|
3840
|
+
0.067
|
|
3841
3841
|
],
|
|
3842
|
-
"hex": "#
|
|
3842
|
+
"hex": "#111111"
|
|
3843
3843
|
}
|
|
3844
3844
|
},
|
|
3845
3845
|
"primary-foreground": {
|
|
@@ -3923,11 +3923,11 @@
|
|
|
3923
3923
|
"$value": {
|
|
3924
3924
|
"colorSpace": "srgb",
|
|
3925
3925
|
"components": [
|
|
3926
|
-
0,
|
|
3927
|
-
0.
|
|
3928
|
-
0.
|
|
3926
|
+
0.067,
|
|
3927
|
+
0.067,
|
|
3928
|
+
0.067
|
|
3929
3929
|
],
|
|
3930
|
-
"hex": "#
|
|
3930
|
+
"hex": "#111111"
|
|
3931
3931
|
}
|
|
3932
3932
|
},
|
|
3933
3933
|
"midground": {
|
|
@@ -4124,11 +4124,11 @@
|
|
|
4124
4124
|
"$value": {
|
|
4125
4125
|
"colorSpace": "srgb",
|
|
4126
4126
|
"components": [
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4127
|
+
1,
|
|
4128
|
+
1,
|
|
4129
|
+
1
|
|
4130
4130
|
],
|
|
4131
|
-
"hex": "#
|
|
4131
|
+
"hex": "#ffffff"
|
|
4132
4132
|
}
|
|
4133
4133
|
},
|
|
4134
4134
|
"primary-foreground": {
|
|
@@ -4212,11 +4212,11 @@
|
|
|
4212
4212
|
"$value": {
|
|
4213
4213
|
"colorSpace": "srgb",
|
|
4214
4214
|
"components": [
|
|
4215
|
-
0.
|
|
4216
|
-
0.
|
|
4217
|
-
0.
|
|
4215
|
+
0.929,
|
|
4216
|
+
0.929,
|
|
4217
|
+
0.929
|
|
4218
4218
|
],
|
|
4219
|
-
"hex": "#
|
|
4219
|
+
"hex": "#ededed"
|
|
4220
4220
|
}
|
|
4221
4221
|
},
|
|
4222
4222
|
"midground": {
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
"$value": {
|
|
32
32
|
"colorSpace": "srgb",
|
|
33
33
|
"components": [
|
|
34
|
-
0,
|
|
35
|
-
0.
|
|
36
|
-
0.
|
|
34
|
+
0.067,
|
|
35
|
+
0.067,
|
|
36
|
+
0.067
|
|
37
37
|
],
|
|
38
|
-
"hex": "#
|
|
38
|
+
"hex": "#111111"
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
"action-foreground": {
|
|
@@ -53,11 +53,11 @@
|
|
|
53
53
|
"$value": {
|
|
54
54
|
"colorSpace": "srgb",
|
|
55
55
|
"components": [
|
|
56
|
-
0,
|
|
57
|
-
0.
|
|
58
|
-
0.
|
|
56
|
+
0.18,
|
|
57
|
+
0.18,
|
|
58
|
+
0.18
|
|
59
59
|
],
|
|
60
|
-
"hex": "#
|
|
60
|
+
"hex": "#2e2e2e"
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
63
|
"action-active": {
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"colorSpace": "srgb",
|
|
66
66
|
"components": [
|
|
67
67
|
0,
|
|
68
|
-
0
|
|
69
|
-
0
|
|
68
|
+
0,
|
|
69
|
+
0
|
|
70
70
|
],
|
|
71
|
-
"hex": "#
|
|
71
|
+
"hex": "#000000"
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
74
|
"ink": {
|
|
@@ -933,11 +933,11 @@
|
|
|
933
933
|
"$value": {
|
|
934
934
|
"colorSpace": "srgb",
|
|
935
935
|
"components": [
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
936
|
+
1,
|
|
937
|
+
1,
|
|
938
|
+
1
|
|
939
939
|
],
|
|
940
|
-
"hex": "#
|
|
940
|
+
"hex": "#ffffff"
|
|
941
941
|
}
|
|
942
942
|
},
|
|
943
943
|
"dark-action-foreground": {
|
|
@@ -955,22 +955,22 @@
|
|
|
955
955
|
"$value": {
|
|
956
956
|
"colorSpace": "srgb",
|
|
957
957
|
"components": [
|
|
958
|
-
0.
|
|
959
|
-
0.
|
|
960
|
-
0.
|
|
958
|
+
0.894,
|
|
959
|
+
0.894,
|
|
960
|
+
0.894
|
|
961
961
|
],
|
|
962
|
-
"hex": "#
|
|
962
|
+
"hex": "#e4e4e4"
|
|
963
963
|
}
|
|
964
964
|
},
|
|
965
965
|
"dark-action-active": {
|
|
966
966
|
"$value": {
|
|
967
967
|
"colorSpace": "srgb",
|
|
968
968
|
"components": [
|
|
969
|
-
0.
|
|
970
|
-
0.
|
|
971
|
-
0.
|
|
969
|
+
0.839,
|
|
970
|
+
0.839,
|
|
971
|
+
0.839
|
|
972
972
|
],
|
|
973
|
-
"hex": "#
|
|
973
|
+
"hex": "#d6d6d6"
|
|
974
974
|
}
|
|
975
975
|
},
|
|
976
976
|
"dark-link": {
|
|
@@ -3768,10 +3768,10 @@
|
|
|
3768
3768
|
"$value": "{nadicode.core.color.ink}"
|
|
3769
3769
|
},
|
|
3770
3770
|
"primary": {
|
|
3771
|
-
"$value": "{nadicode.core.color.
|
|
3771
|
+
"$value": "{nadicode.core.color.action}"
|
|
3772
3772
|
},
|
|
3773
3773
|
"primary-foreground": {
|
|
3774
|
-
"$value": "{nadicode.core.color.
|
|
3774
|
+
"$value": "{nadicode.core.color.action-foreground}"
|
|
3775
3775
|
},
|
|
3776
3776
|
"secondary": {
|
|
3777
3777
|
"$value": "{nadicode.core.color.canvas-soft}"
|
|
@@ -3792,7 +3792,7 @@
|
|
|
3792
3792
|
"$value": "{nadicode.core.color.seam}"
|
|
3793
3793
|
},
|
|
3794
3794
|
"ring": {
|
|
3795
|
-
"$value": "{nadicode.core.color.
|
|
3795
|
+
"$value": "{nadicode.core.color.focus-ring}"
|
|
3796
3796
|
},
|
|
3797
3797
|
"midground": {
|
|
3798
3798
|
"$value": "{nadicode.core.color.body}"
|
|
@@ -3849,10 +3849,10 @@
|
|
|
3849
3849
|
"$value": "{nadicode.core.color.dark-ink}"
|
|
3850
3850
|
},
|
|
3851
3851
|
"primary": {
|
|
3852
|
-
"$value": "{nadicode.core.color.dark-
|
|
3852
|
+
"$value": "{nadicode.core.color.dark-action}"
|
|
3853
3853
|
},
|
|
3854
3854
|
"primary-foreground": {
|
|
3855
|
-
"$value": "{nadicode.core.color.dark-
|
|
3855
|
+
"$value": "{nadicode.core.color.dark-action-foreground}"
|
|
3856
3856
|
},
|
|
3857
3857
|
"secondary": {
|
|
3858
3858
|
"$value": "{nadicode.core.color.dark-canvas-soft-2}"
|
|
@@ -3873,7 +3873,7 @@
|
|
|
3873
3873
|
"$value": "{nadicode.core.color.dark-input}"
|
|
3874
3874
|
},
|
|
3875
3875
|
"ring": {
|
|
3876
|
-
"$value": "{nadicode.core.color.dark-
|
|
3876
|
+
"$value": "{nadicode.core.color.dark-focus-ring}"
|
|
3877
3877
|
},
|
|
3878
3878
|
"midground": {
|
|
3879
3879
|
"$value": "{nadicode.core.color.dark-muted}"
|