@nadicodeai/design-system 2.0.0 → 3.0.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 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 escalates by the ladder in the root `AGENTS.md` "Commands": `npm run check -w @nadicodeai/design-system` and `npm run test -w @nadicodeai/design-system` before pushing. `check` carries the `DESIGN.md` contract lint, so a contract edit needs no separate command. This workspace has no app to boot: it ships a package, and `examples/` specimens are static HTML pages served from the repo root by `../../scripts/lib/static-design-server.ts`, which `npm run test:visual` starts.
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/npm-publishing.md` |
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/npm-publishing.md`).
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,49 @@
1
1
  # Design Language
2
2
 
3
- NadicodeAI's shared vocabulary for reusable visual decisions and interface structures. This context lets the design system, React UI package, website, and Portal describe the same visual ideas without inventing package-specific synonyms.
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 design-contract values owned by no single product and available to every product: colour roles and their dark pairs, the two type families and the type scale, spacing, radius, material, elevation, motion, the icon render, and the brand marks and fonts. A value stays foundation whether one product renders it or three.
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 way of applying the foundation: its direction, density, which steps of each scale it uses and where, its dark-mode stance, its structural grammar, and its motion budget. There are three, one rulebook each: website, Portal, and the Nadia desktop app; a register adds rules and redefines no foundation value.
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
- **Brand tier**:
28
- The full-strength campi used for identity, imagery, and section grounds. Brand-tier colors are planes, not interface states.
17
+ **Neutral spine**:
18
+ The achromatic colour roles that carry grounds, chrome, hierarchy, and every control in every Register. Chromatic colour is reserved for the semantic feedback roles, the verde brand accent in its scoped duties, the chart palettes, and the Agent identity palette.
29
19
 
30
20
  **Functional tier**:
31
- The numeric color scales and semantic roles used by product UI, charts, and status. Functional-tier colors express interaction and meaning rather than brand fields.
21
+ The semantic colour roles and chart colours used for interface state and data.
32
22
 
33
- **Campo**:
34
- A named, full-strength brand color field from the design contract. A campo has no steps or hover variants.
23
+ **Agent identity palette**:
24
+ The five full-strength hues, plus the white and ink poles, that paint Agent identity visuals, the brand book's identity planes, and generated editorial imagery. Emitted as the `identity-*` colour tokens.
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.
27
+ **Identity plane**:
28
+ A surface painted edge to edge in one Agent identity palette colour.
42
29
 
43
30
  ### Structure and surfaces
44
31
 
45
32
  **Page grammar**:
46
- The shared structural system of frames, rows, lanes, fills, seams, markers, grids, and stages used to compose NadicodeAI pages.
33
+ The shared structural vocabulary of frames, rows, lanes, fills, seams, markers, grids, and stages.
47
34
 
48
35
  **Seam**:
49
- A visible structural line in the page grammar: the shared edge where a frame, row, lane, or grid cell meets its neighbour. Exactly one element owns and draws each seam, so no coordinate is ever drawn twice, and seam placement is computed from grid math rather than eyeballed; the rule and the tokens that colour it live in `packages/design-system/DESIGN.md` "Seam Ownership" and "Layout". This is the visual sense of the word only. Its architectural sense, a boundary in code a test can substitute, is general software vocabulary and not part of the design language.
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.
36
+ The visible structural line where parts of the Page grammar meet.
56
37
 
57
38
  **Status vocabulary**:
58
- The one way the product shows a status. What it is, which carrier renders it, and which tone each value takes live in `packages/design-system/DESIGN.md` "Status Vocabulary".
39
+ The shared five-tone visual language for product status. Each product owns its status families, values, and mapping to those tones.
59
40
 
60
41
  **Content surface**:
61
- A visual family for presenting a concrete content type, such as an image or artifact, inside the page grammar.
42
+ A visual family for presenting a specific kind of content inside the Page grammar.
62
43
 
63
44
  **Agentic work surface**:
64
- A NadicodeAI visual family for showing people and agents working together through conversations, artifacts, approvals, tools, handoffs, traces, and inspectable state.
45
+ A visual family outside the conversation renderer for work output and workflow state, such as memory, run progress, identity, and handoffs.
65
46
 
66
47
  **Agent visual**:
67
- The decorative metaball identity assigned explicitly to a persistent Agent by
68
- type. It identifies the Agent across products without carrying status, runtime
69
- activity, capability, or work output.
48
+ The decorative metaball identity assigned to an Agent type across products.
70
49
  _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: "#007a3c"
13
+ action: "#111111"
14
14
  action-foreground: "#ffffff"
15
- action-hover: "#00602f"
16
- action-active: "#00301a"
15
+ action-hover: "#2e2e2e"
16
+ action-active: "#000000"
17
17
  ink: "#111111"
18
18
  body: "#444444"
19
19
  muted: "#6b6b6b"
@@ -58,13 +58,13 @@ colors:
58
58
  state-complete: "#00a85a"
59
59
  background-100: "#ffffff"
60
60
  background-200: "#fafafa"
61
- campo-verde: "#00a85a"
62
- campo-rosso: "#d3302f"
63
- campo-arancio: "#ff5a1f"
64
- campo-giallo: "#ffc220"
65
- campo-cobalto: "#1e3cff"
66
- campo-inchiostro: "#000000"
67
- campo-bianco: "#ffffff"
61
+ identity-verde: "#00a85a"
62
+ identity-rosso: "#d3302f"
63
+ identity-arancio: "#ff5a1f"
64
+ identity-giallo: "#ffc220"
65
+ identity-cobalto: "#1e3cff"
66
+ identity-ink: "#000000"
67
+ identity-white: "#ffffff"
68
68
  chart-1: "#1e3cff"
69
69
  chart-2: "#00a85a"
70
70
  chart-3: "#ddaa00"
@@ -92,10 +92,10 @@ colors:
92
92
  dark-seam: "#1a1a1a"
93
93
  dark-primary: "#2fd584"
94
94
  dark-on-primary: "#0a0a0a"
95
- dark-action: "#2fd584"
95
+ dark-action: "#ffffff"
96
96
  dark-action-foreground: "#0a0a0a"
97
- dark-action-hover: "#4ecf8c"
98
- dark-action-active: "#17bd68"
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 exists to make the public website and the shipped product feel engineered, clear, and serious without becoming enterprise software theatre. The interface should help a pragmatic buyer understand the work: repeated workflows, agents trained with people, inspectable outputs, human approval, and one useful first use case.
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
- The colour system is two families that never mix. The **functional tier** the semantic role tokens plus the chart series drives every product and interface state. The **brand tier** the campi paints marketing and identity surfaces only. A functional role is never a poster field, and a campo is never a UI state.
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, never as identity colour. Verde stays on action, links, presence, and success; cobalto stays on info and running. A hover ground is a neutral step; the only hue a hover carries is a semantic fill stepping inside its own family, as `{colors.action-hover}` does on the action control.
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 campi are cross-spectrum equals, so any neutral bias would flatter one field 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.
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
- - **Primary brand anchor** (`{colors.primary}` = deep verde `#007a3c`): identity marks and brand accents in UI. Text on the deep verde field is white (`{colors.on-primary}`), which clears AA comfortably at this depth; the brighter campo verde `#00a85a` stays the imagery-tier anchor and never carries normal-size white text.
312
- - **Action** (`{colors.action}` = deep verde, `{colors.action-foreground}` = white, `{colors.action-hover}`, `{colors.action-active}`): the primary-control family a white label on the deep verde field, hover and active stepping darker. The shadcn `primary` roles map here. Dark mode uses the `dark-action-*` roles, a brightened verde that clears the dark canvas and carries a near-black label.
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`): the attention accent for highlights, exception flags, and emphasis marks. It is an accent only — never a fill, background, or body-text colour, and it never carries text. Do not conflate this functional `accent` with the identically-named shadcn surface role: that role is a neutral (`{colors.canvas-soft-2}` in light, `{colors.dark-canvas-soft-2}` in dark) and carries no hue despite the shared word.
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. Functional only: never place chart colours on marketing surfaces, campi, or generated imagery. 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}`.
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 identity giallo `{colors.identity-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
- ### Brand tier — i campi
330
+ ### Agent identity palette
331
331
 
332
- The campi are full-strength named brand fields. They carry NO tints, NO steps, and NO hover variants; UI states always come from the functional roles, never from a campo.
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.identity-verde}`, rosso `{colors.identity-rosso}`, cobalto `{colors.identity-cobalto}`, arancio `{colors.identity-arancio}`, and giallo `{colors.identity-giallo}`, with `{colors.identity-white}` and `{colors.identity-ink}` as the white and ink poles that carry type beside them. The family emits under the `identity-*` spelling, and that is the one name every consumer uses. 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.
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`/`dark-action`/`dark-action-hover`/`dark-action-active` are a brightened verde for the primary control (ink-labelled), `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.
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: `primary`, `destructive`, `success`, and `warning`. 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.
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
- Do not delete a color because the current website kernel does not consume it. Prototype usage is not palette authority; removals require an explicit palette migration decision.
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 clarifies state, feedback, hierarchy, or continuity; it does not decorate routine work. Repeated interactions stay fast and quiet, while rare explanatory moments may be more expressive. Motion preserves meaning when movement is reduced.
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
- ### Do
685
-
686
- - Do build pages as continuous `page-row` sequences inside one `page-frame`.
687
- - Do keep centered content in the 10-column `active-lane` while preserving visible ownership of columns 1 and 12.
688
- - Do use `side-fill`, guide strips, or component-owned fillers whenever content does not occupy the outer columns.
689
- - Do use `{spacing.guide}` and `{colors.line}` for ordinary seams.
690
- - Do use `{colors.input}` / `{colors.dark-input}` for resting control boundaries and the dedicated focus-ring roles for keyboard focus.
691
- - Do use exactly one material role per product container; structural page-grammar cells remain border-only, while product cards, menus, popovers, dialogs, sheets, and takeovers use their specified material treatment.
692
- - Do tune line visibility by changing `{colors.line}` at the token contract, then rebuilding generated exports.
693
- - Do use `{colors.cross}` for crosshair color while keeping crosshair weight equal to `{spacing.guide}`.
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.primary}"},
965
- "primary-foreground": {"$value":"{core.color.on-primary}"},
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.primary}"},
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-primary}"},
994
- "primary-foreground": {"$value":"{core.color.dark-on-primary}"},
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-primary}"},
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}"},
@@ -1145,7 +1109,7 @@ The approved transparent Nadia master ships at `assets/nadia-solid-surface`. The
1145
1109
 
1146
1110
  All three forms derive from one authored, framework-neutral geometry source exported as `@nadicodeai/design-system/assets/logo-geometry`. The lockup combines the shared mark and wordmark geometry at the established proportion and spacing. No SVG, React component, favicon, document, or app re-authors, traces, typesets, or rearranges those shapes.
1147
1111
 
1148
- Use the positive form on `{colors.canvas}` and the soft neutral canvases: ink letterforms and link with the primary verde link and `AI` suffix. Use the inverse form on `{colors.campo-inchiostro}`: campo-bianco letterforms and link with the dark-primary verde link and `AI` suffix. On `{colors.campo-verde}`, use the supplied on-verde form with one ink link and one white link. On photography, place the logo in a quiet area or over a scrim that keeps every part legible; when neither is available, mount it on an approved solid field. One surface uses one treatment.
1112
+ Use the positive form on `{colors.canvas}` and the soft neutral canvases: ink letterforms and link with the primary verde link and `AI` suffix. Use the inverse form on `{colors.identity-ink}`: `{colors.identity-white}` letterforms and link with the dark-primary verde link and `AI` suffix. On `{colors.identity-verde}`, use the supplied on-verde form with one ink link and one white link. On photography, place the logo in a quiet area or over a scrim that keeps every part legible; when neither is available, mount it on an approved solid field. One surface uses one treatment.
1149
1113
 
1150
1114
  The clear-space unit is the rendered width of one link stroke in the mark. Keep at least one unit free on every side of the mark and lockup, with no text, rule, image, or container edge inside it. A wordmark used alone keeps the same unit that the mark would have at the wordmark's capital height. Minimum rendered sizes are 16 CSS pixels or 5 mm for the mark, 130 CSS pixels or 32 mm wide for the lockup, and 96 CSS pixels or 25 mm wide for the wordmark. Browser and operating-system icon slots use the supplied favicon or app-icon files at the platform's required size and are exempt from the screen minimum. Never compress, crop, or distort a logo to fit.
1151
1115
 
@@ -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.5075 0.1338 151.91);
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.4285 0.1117 152.40);
49
- --nc-action-active: oklch(0.2722 0.0643 157.47);
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);
@@ -91,13 +91,13 @@
91
91
  --nc-state-complete: oklch(0.6415 0.1644 153.23);
92
92
  --nc-background-100: oklch(1.0000 0.0000 0.00);
93
93
  --nc-background-200: oklch(0.9851 0.0000 0.00);
94
- --nc-campo-verde: oklch(0.6415 0.1644 153.23);
95
- --nc-campo-rosso: oklch(0.5688 0.1995 26.59);
96
- --nc-campo-arancio: oklch(0.6824 0.2108 37.70);
97
- --nc-campo-giallo: oklch(0.8466 0.1678 84.63);
98
- --nc-campo-cobalto: oklch(0.5005 0.2804 266.17);
99
- --nc-campo-inchiostro: oklch(0.0000 0.0000 0.00);
100
- --nc-campo-bianco: oklch(1.0000 0.0000 0.00);
94
+ --nc-identity-verde: oklch(0.6415 0.1644 153.23);
95
+ --nc-identity-rosso: oklch(0.5688 0.1995 26.59);
96
+ --nc-identity-arancio: oklch(0.6824 0.2108 37.70);
97
+ --nc-identity-giallo: oklch(0.8466 0.1678 84.63);
98
+ --nc-identity-cobalto: oklch(0.5005 0.2804 266.17);
99
+ --nc-identity-ink: oklch(0.0000 0.0000 0.00);
100
+ --nc-identity-white: oklch(1.0000 0.0000 0.00);
101
101
  --nc-chart-1: oklch(0.5005 0.2804 266.17);
102
102
  --nc-chart-2: oklch(0.6415 0.1644 153.23);
103
103
  --nc-chart-3: oklch(0.7638 0.1562 86.86);
@@ -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(0.7727 0.1753 155.96);
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.7661 0.1498 157.10);
131
- --nc-dark-action-active: oklch(0.7019 0.1753 153.20);
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);
@@ -602,7 +602,7 @@
602
602
  --accent: var(--nc-canvas-soft-2);
603
603
  --accent-foreground: var(--nc-ink);
604
604
  --destructive: var(--nc-error);
605
- --destructive-foreground: var(--nc-campo-bianco);
605
+ --destructive-foreground: var(--nc-identity-white);
606
606
  --warning: var(--nc-warning);
607
607
  --warning-foreground: var(--nc-ink);
608
608
  --success: var(--nc-success);
@@ -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-identity-verde: oklch(0.6415 0.1644 153.23); --color-nc-identity-rosso: oklch(0.5688 0.1995 26.59); --color-nc-identity-arancio: oklch(0.6824 0.2108 37.70); --color-nc-identity-giallo: oklch(0.8466 0.1678 84.63); --color-nc-identity-cobalto: oklch(0.5005 0.2804 266.17); --color-nc-identity-ink: oklch(0.0000 0.0000 0.00); --color-nc-identity-white: 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": "#007a3c",
7
+ "action": "#111111",
8
8
  "action-foreground": "#ffffff",
9
- "action-hover": "#00602f",
10
- "action-active": "#00301a",
9
+ "action-hover": "#2e2e2e",
10
+ "action-active": "#000000",
11
11
  "ink": "#111111",
12
12
  "body": "#444444",
13
13
  "muted": "#6b6b6b",
@@ -52,13 +52,13 @@
52
52
  "state-complete": "#00a85a",
53
53
  "background-100": "#ffffff",
54
54
  "background-200": "#fafafa",
55
- "campo-verde": "#00a85a",
56
- "campo-rosso": "#d3302f",
57
- "campo-arancio": "#ff5a1f",
58
- "campo-giallo": "#ffc220",
59
- "campo-cobalto": "#1e3cff",
60
- "campo-inchiostro": "#000000",
61
- "campo-bianco": "#ffffff",
55
+ "identity-verde": "#00a85a",
56
+ "identity-rosso": "#d3302f",
57
+ "identity-arancio": "#ff5a1f",
58
+ "identity-giallo": "#ffc220",
59
+ "identity-cobalto": "#1e3cff",
60
+ "identity-ink": "#000000",
61
+ "identity-white": "#ffffff",
62
62
  "chart-1": "#1e3cff",
63
63
  "chart-2": "#00a85a",
64
64
  "chart-3": "#ddaa00",
@@ -86,10 +86,10 @@
86
86
  "dark-seam": "#1a1a1a",
87
87
  "dark-primary": "#2fd584",
88
88
  "dark-on-primary": "#0a0a0a",
89
- "dark-action": "#2fd584",
89
+ "dark-action": "#ffffff",
90
90
  "dark-action-foreground": "#0a0a0a",
91
- "dark-action-hover": "#4ecf8c",
92
- "dark-action-active": "#17bd68",
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.478,
36
- 0.235
34
+ 0.067,
35
+ 0.067,
36
+ 0.067
37
37
  ],
38
- "hex": "#007a3c"
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.376,
58
- 0.184
56
+ 0.18,
57
+ 0.18,
58
+ 0.18
59
59
  ],
60
- "hex": "#00602f"
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.188,
69
- 0.102
68
+ 0,
69
+ 0
70
70
  ],
71
- "hex": "#00301a"
71
+ "hex": "#000000"
72
72
  }
73
73
  },
74
74
  "ink": {
@@ -555,7 +555,7 @@
555
555
  "hex": "#fafafa"
556
556
  }
557
557
  },
558
- "campo-verde": {
558
+ "identity-verde": {
559
559
  "$value": {
560
560
  "colorSpace": "srgb",
561
561
  "components": [
@@ -566,7 +566,7 @@
566
566
  "hex": "#00a85a"
567
567
  }
568
568
  },
569
- "campo-rosso": {
569
+ "identity-rosso": {
570
570
  "$value": {
571
571
  "colorSpace": "srgb",
572
572
  "components": [
@@ -577,7 +577,7 @@
577
577
  "hex": "#d3302f"
578
578
  }
579
579
  },
580
- "campo-arancio": {
580
+ "identity-arancio": {
581
581
  "$value": {
582
582
  "colorSpace": "srgb",
583
583
  "components": [
@@ -588,7 +588,7 @@
588
588
  "hex": "#ff5a1f"
589
589
  }
590
590
  },
591
- "campo-giallo": {
591
+ "identity-giallo": {
592
592
  "$value": {
593
593
  "colorSpace": "srgb",
594
594
  "components": [
@@ -599,7 +599,7 @@
599
599
  "hex": "#ffc220"
600
600
  }
601
601
  },
602
- "campo-cobalto": {
602
+ "identity-cobalto": {
603
603
  "$value": {
604
604
  "colorSpace": "srgb",
605
605
  "components": [
@@ -610,7 +610,7 @@
610
610
  "hex": "#1e3cff"
611
611
  }
612
612
  },
613
- "campo-inchiostro": {
613
+ "identity-ink": {
614
614
  "$value": {
615
615
  "colorSpace": "srgb",
616
616
  "components": [
@@ -621,7 +621,7 @@
621
621
  "hex": "#000000"
622
622
  }
623
623
  },
624
- "campo-bianco": {
624
+ "identity-white": {
625
625
  "$value": {
626
626
  "colorSpace": "srgb",
627
627
  "components": [
@@ -933,11 +933,11 @@
933
933
  "$value": {
934
934
  "colorSpace": "srgb",
935
935
  "components": [
936
- 0.184,
937
- 0.835,
938
- 0.518
936
+ 1,
937
+ 1,
938
+ 1
939
939
  ],
940
- "hex": "#2fd584"
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.306,
959
- 0.812,
960
- 0.549
958
+ 0.894,
959
+ 0.894,
960
+ 0.894
961
961
  ],
962
- "hex": "#4ecf8c"
962
+ "hex": "#e4e4e4"
963
963
  }
964
964
  },
965
965
  "dark-action-active": {
966
966
  "$value": {
967
967
  "colorSpace": "srgb",
968
968
  "components": [
969
- 0.09,
970
- 0.741,
971
- 0.408
969
+ 0.839,
970
+ 0.839,
971
+ 0.839
972
972
  ],
973
- "hex": "#17bd68"
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.478,
3840
- 0.235
3838
+ 0.067,
3839
+ 0.067,
3840
+ 0.067
3841
3841
  ],
3842
- "hex": "#007a3c"
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.478,
3928
- 0.235
3926
+ 0.067,
3927
+ 0.067,
3928
+ 0.067
3929
3929
  ],
3930
- "hex": "#007a3c"
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
- 0.184,
4128
- 0.835,
4129
- 0.518
4127
+ 1,
4128
+ 1,
4129
+ 1
4130
4130
  ],
4131
- "hex": "#2fd584"
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.184,
4216
- 0.835,
4217
- 0.518
4215
+ 0.929,
4216
+ 0.929,
4217
+ 0.929
4218
4218
  ],
4219
- "hex": "#2fd584"
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.478,
36
- 0.235
34
+ 0.067,
35
+ 0.067,
36
+ 0.067
37
37
  ],
38
- "hex": "#007a3c"
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.376,
58
- 0.184
56
+ 0.18,
57
+ 0.18,
58
+ 0.18
59
59
  ],
60
- "hex": "#00602f"
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.188,
69
- 0.102
68
+ 0,
69
+ 0
70
70
  ],
71
- "hex": "#00301a"
71
+ "hex": "#000000"
72
72
  }
73
73
  },
74
74
  "ink": {
@@ -555,7 +555,7 @@
555
555
  "hex": "#fafafa"
556
556
  }
557
557
  },
558
- "campo-verde": {
558
+ "identity-verde": {
559
559
  "$value": {
560
560
  "colorSpace": "srgb",
561
561
  "components": [
@@ -566,7 +566,7 @@
566
566
  "hex": "#00a85a"
567
567
  }
568
568
  },
569
- "campo-rosso": {
569
+ "identity-rosso": {
570
570
  "$value": {
571
571
  "colorSpace": "srgb",
572
572
  "components": [
@@ -577,7 +577,7 @@
577
577
  "hex": "#d3302f"
578
578
  }
579
579
  },
580
- "campo-arancio": {
580
+ "identity-arancio": {
581
581
  "$value": {
582
582
  "colorSpace": "srgb",
583
583
  "components": [
@@ -588,7 +588,7 @@
588
588
  "hex": "#ff5a1f"
589
589
  }
590
590
  },
591
- "campo-giallo": {
591
+ "identity-giallo": {
592
592
  "$value": {
593
593
  "colorSpace": "srgb",
594
594
  "components": [
@@ -599,7 +599,7 @@
599
599
  "hex": "#ffc220"
600
600
  }
601
601
  },
602
- "campo-cobalto": {
602
+ "identity-cobalto": {
603
603
  "$value": {
604
604
  "colorSpace": "srgb",
605
605
  "components": [
@@ -610,7 +610,7 @@
610
610
  "hex": "#1e3cff"
611
611
  }
612
612
  },
613
- "campo-inchiostro": {
613
+ "identity-ink": {
614
614
  "$value": {
615
615
  "colorSpace": "srgb",
616
616
  "components": [
@@ -621,7 +621,7 @@
621
621
  "hex": "#000000"
622
622
  }
623
623
  },
624
- "campo-bianco": {
624
+ "identity-white": {
625
625
  "$value": {
626
626
  "colorSpace": "srgb",
627
627
  "components": [
@@ -933,11 +933,11 @@
933
933
  "$value": {
934
934
  "colorSpace": "srgb",
935
935
  "components": [
936
- 0.184,
937
- 0.835,
938
- 0.518
936
+ 1,
937
+ 1,
938
+ 1
939
939
  ],
940
- "hex": "#2fd584"
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.306,
959
- 0.812,
960
- 0.549
958
+ 0.894,
959
+ 0.894,
960
+ 0.894
961
961
  ],
962
- "hex": "#4ecf8c"
962
+ "hex": "#e4e4e4"
963
963
  }
964
964
  },
965
965
  "dark-action-active": {
966
966
  "$value": {
967
967
  "colorSpace": "srgb",
968
968
  "components": [
969
- 0.09,
970
- 0.741,
971
- 0.408
969
+ 0.839,
970
+ 0.839,
971
+ 0.839
972
972
  ],
973
- "hex": "#17bd68"
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.primary}"
3771
+ "$value": "{nadicode.core.color.action}"
3772
3772
  },
3773
3773
  "primary-foreground": {
3774
- "$value": "{nadicode.core.color.on-primary}"
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.primary}"
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-primary}"
3852
+ "$value": "{nadicode.core.color.dark-action}"
3853
3853
  },
3854
3854
  "primary-foreground": {
3855
- "$value": "{nadicode.core.color.dark-on-primary}"
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-primary}"
3876
+ "$value": "{nadicode.core.color.dark-focus-ring}"
3877
3877
  },
3878
3878
  "midground": {
3879
3879
  "$value": "{nadicode.core.color.dark-muted}"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nadicodeai/design-system",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"