@nadicodeai/ui 12.1.133 → 12.1.135

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.
Files changed (32) hide show
  1. package/dist/components/agent-orb.d.ts +8 -5
  2. package/dist/components/agent-orb.d.ts.map +1 -1
  3. package/dist/components/agent-orb.js +8 -5
  4. package/dist/components/data-table.d.ts +1 -1
  5. package/dist/components/data-table.js +2 -5
  6. package/dist/components/record-identity.d.ts +1 -1
  7. package/dist/components/record-identity.d.ts.map +1 -1
  8. package/dist/components/record-identity.js +2 -4
  9. package/dist/components/record-list.d.ts +1 -1
  10. package/dist/components/record-list.js +1 -1
  11. package/dist/components/scope-switcher.d.ts +1 -1
  12. package/dist/components/scope-switcher.d.ts.map +1 -1
  13. package/dist/components/scope-switcher.js +5 -2
  14. package/dist/components/table-layouts.d.ts +7 -7
  15. package/dist/components/table-layouts.js +7 -7
  16. package/dist/components/table.d.ts +2 -2
  17. package/dist/components/table.js +2 -2
  18. package/dist/internal/agent-orb-motion.d.ts +36 -5
  19. package/dist/internal/agent-orb-motion.d.ts.map +1 -1
  20. package/dist/internal/agent-orb-motion.js +153 -37
  21. package/dist/internal/agent-orb.d.ts.map +1 -1
  22. package/dist/internal/agent-orb.js +38 -20
  23. package/dist/internal/table-compact-line.d.ts +0 -5
  24. package/dist/internal/table-compact-line.d.ts.map +1 -1
  25. package/dist/internal/table-compact-line.js +1 -6
  26. package/dist/showcase/specimens/other.js +1 -1
  27. package/dist/showcase/specimens/status.d.ts +2 -1
  28. package/dist/showcase/specimens/status.d.ts.map +1 -1
  29. package/dist/showcase/specimens/status.js +17 -3
  30. package/dist/showcase/usage.generated.js +6 -6
  31. package/dist/standalone/index.js +1 -1
  32. package/package.json +2 -2
@@ -186,7 +186,7 @@ export const USAGE = [
186
186
  summary: "Entity rows: objects a person opens or acts on, one line each on one resting card: the identity mark and name over what it is, a few facts, a status only for the exception, when it happened, at most two row commands, and the three dots last.",
187
187
  when: "“Use `<Entity>` for a row of descriptive content paired with one or two controls (member rows, integration rows, domain rows).” (https://vercel.com/geist/entity) Ours: the records are things a person opens or acts on and that name themselves: projects, deployments, domains, members, integrations, Agents, Skills, mailboxes. A list inside another page: an Overview's exceptions, an object page's \"Needs attention\". A page whose whole job is the list is a `CollectionPage`, which draws this. Values edited in place (a domain, an environment variable) are the same rows with an `editor`: the row expands into its form. Of the three kinds of list, entity rows and rows edited in place are this; records compared across columns are a `DataTable`.",
188
188
  instead: "“For tabular data with sortable columns and shared row shape, use `Table` instead.” (https://vercel.com/geist/entity) “For a static key/value metadata block on a detail page, use `Description`.” (https://vercel.com/geist/entity) Ours: Geist's `Table` is a `DataTable`: this list has no visible headings and at most three facts, so a fourth fact is a table, and anything more than a few facts lives on the record's page. A screen gives `RecordList` the records and what each one says, never its own toolbar, table, rows or menus, and nothing else draws a record row. Its `Description` is `ObjectFacts`. Events in time are an `ActivityFeed`. Reusable things a person adds from a catalogue are a `LibraryShelf`. A descriptive row with prose is an `Item`.",
189
- behaviour: "One bordered card, a 1 px rule between records and none after the last. A row is 72 px, with 16 px above and below, and its columns stand left to right at the widths the list declares, so a person reads every list the same way: the `select` box (40 px, only when the list is picked from, an optional column), the identity (the rest: the one column without a size), the facts (each its `size`), the status (`status.size`), the time (`time.size`, tabular), the `checklist` ring (52 px, only when the record has steps to be ready) and the commands (`commandsSize`; left out, 64 px for the three dots alone). A `checklist` puts the record's `ProgressChecklist` ring just before its commands, where Vercel ends a project's row with its Production Checklist; the ring opens its own drawer, never the row. Every row has its 32 px mark, its name (600) and, under it, one muted 14 px line; `name` and the mark are required; a record with nothing to say under its name leaves the line out and is the name alone, never a dash. Give every column a `size` in pixels; the name takes the rest. With `layout=\"line\"`, as on Vercel's Projects page, the facts and the status share one muted line, joined by a middle dot, in a column as wide as the name's, and the row stays one line (mark, name over its line, that summary, the time, the ring, the three dots) on a card from 448 px, and on a narrower card the summary and the time move under the name as one muted line joined by a middle dot, in the same row, their labels read by assistive technology only. Rows of `columns` follow the same rule once the card is narrower than their columns: the facts and the time leave the row for that one line, ending in an ellipsis, never a labelled list, and the status stands beside the name, which ends in an ellipsis before it, so the exception is never the part a phone's line cuts. `facts` takes at most three. A menu of one command that is not destructive, with no row command, is that command's button, except in a `line` row, which keeps it in the three dots as Vercel's project row does; without a `commandsSize` the column is as wide as the widest such button, so its label is never cut. Status is only for the exception, empty for the usual record, and its column stands only while a record in the list shows one, so the name and its line keep the room; the commands column likewise stands only while a record has a command, a menu or a message, or the rows open, and it widens for a failed action's next steps only while a row shows one. Never the three dots before the button, a decorative icon for the record's mark, a status on every row, or a destructive button on every row: a destructive command stays in the three dots. A `line` row's summary joins only the facts the record has, so it never ends in a dot. A failed or refused action of the record shows as its catalogue message inside its own row, never a notice under the row: it replaces the detail line, with its next steps beside its commands, or under the message on a card too narrow for the row's columns. With `open` the whole row is one target and takes the `accent` hover, and a row that only opens ends in a muted chevron; a row that opens nothing never reacts to hover. With `editor` the record's row opens its form under its line. `empty` is required: `null` is the choice to draw nothing for a list with no records, and any other value is the state it draws. A note about the whole list is `footer.note`: one muted line, an optional *Learn more* after it at the left and one secondary action at the right, in a strip of its own under the count and the paging, as Vercel ends its deployments list (\"Deployment retention is enabled. Learn more\", *View recently deleted*). Colour is neutral, the name in ink and every other cell in the body grey, except the status badge and a failed action's message. “Pick the variant by what the user needs: no-results for a filtered list that returned zero rows, blank slate or informational for a resource the user hasn’t created, cleared for completed work, permission for role or tier denials, error for a failed load.” (https://vercel.com/geist/empty-state) Ours: `failed`, `noMatch` and `empty` are those variants, drawn inside the card. “The right column holds at most one or two controls. If the row needs more, move secondary actions into a `Dots Menu`.” (https://vercel.com/geist/entity) Ours: one or two row commands (outline buttons of 32 px) stand before the three dots (36 px), the Dots Menu. “Render the Skeleton variant (`entity-with-skeleton`) during load instead of an empty row, and swap to real content once data resolves.” (https://vercel.com/geist/entity) Ours: three still skeleton rows hold the place, in a region that announces what replaces them; then the first that holds: the failed read, no match, the empty state, the rows.",
189
+ behaviour: "One bordered card, a 1 px rule between records and none after the last. A row is 72 px, with 16 px above and below, and its columns stand left to right at the widths the list declares, so a person reads every list the same way: the `select` box (40 px, only when the list is picked from, an optional column), the identity (the rest: the one column without a size), the facts (each its `size`), the status (`status.size`), the time (`time.size`, tabular), the `checklist` ring (52 px, only when the record has steps to be ready) and the commands (`commandsSize`; left out, 64 px for the three dots alone). A `checklist` puts the record's `ProgressChecklist` ring just before its commands, where Vercel ends a project's row with its Production Checklist; the ring opens its own drawer, never the row. Every row has its 32 px mark, its name (600) and, under it, one muted 14 px line; `name` and the mark are required; a record with nothing to say under its name leaves the line out and is the name alone, never a dash. Give every column a `size` in pixels; the name takes the rest. With `layout=\"line\"`, as on Vercel's Projects page, the facts and the status share one muted line, joined by a middle dot, in a column as wide as the name's, and the row stays one line (mark, name over its line, that summary, the time, the ring, the three dots) on a card from 448 px, and on a narrower card the summary and the time move under the name as muted text joined by a middle dot that wraps, in the same row, their labels read by assistive technology only. Rows of `columns` follow the same rule once the card is narrower than their columns: the facts and the time leave the row for that muted text, wrapping so every value stays readable, never a labelled list, and the status stands beside the name, which ends in an ellipsis before it, so the exception is never the part a phone's line cuts. `facts` takes at most three. A menu of one command that is not destructive, with no row command, is that command's button, except in a `line` row, which keeps it in the three dots as Vercel's project row does; without a `commandsSize` the column is as wide as the widest such button, so its label is never cut. Status is only for the exception, empty for the usual record, and its column stands only while a record in the list shows one, so the name and its line keep the room; the commands column likewise stands only while a record has a command, a menu or a message, or the rows open, and it widens for a failed action's next steps only while a row shows one. Never the three dots before the button, a decorative icon for the record's mark, a status on every row, or a destructive button on every row: a destructive command stays in the three dots. A `line` row's summary joins only the facts the record has, so it never ends in a dot. A failed or refused action of the record shows as its catalogue message inside its own row, never a notice under the row: it replaces the detail line, with its next steps beside its commands, or under the message on a card too narrow for the row's columns. With `open` the whole row is one target and takes the `accent` hover, and a row that only opens ends in a muted chevron; a row that opens nothing never reacts to hover. With `editor` the record's row opens its form under its line. `empty` is required: `null` is the choice to draw nothing for a list with no records, and any other value is the state it draws. A note about the whole list is `footer.note`: one muted line, an optional *Learn more* after it at the left and one secondary action at the right, in a strip of its own under the count and the paging, as Vercel ends its deployments list (\"Deployment retention is enabled. Learn more\", *View recently deleted*). Colour is neutral, the name in ink and every other cell in the body grey, except the status badge and a failed action's message. “Pick the variant by what the user needs: no-results for a filtered list that returned zero rows, blank slate or informational for a resource the user hasn’t created, cleared for completed work, permission for role or tier denials, error for a failed load.” (https://vercel.com/geist/empty-state) Ours: `failed`, `noMatch` and `empty` are those variants, drawn inside the card. “The right column holds at most one or two controls. If the row needs more, move secondary actions into a `Dots Menu`.” (https://vercel.com/geist/entity) Ours: one or two row commands (outline buttons of 32 px) stand before the three dots (36 px), the Dots Menu. “Render the Skeleton variant (`entity-with-skeleton`) during load instead of an empty row, and swap to real content once data resolves.” (https://vercel.com/geist/entity) Ours: three still skeleton rows hold the place, in a region that announces what replaces them; then the first that holds: the failed read, no match, the empty state, the rows.",
190
190
  words: '“Lead the left column with a scannable identifier: an `Avatar` or icon, a Title Case label, then sentence-case secondary metadata (`Member since Mar 14, 2026`).” (https://vercel.com/geist/entity) Ours: the name is the record\'s own and the labels around it are sentence case, not Title Case. “Keep right-column buttons Verb + Noun (`Remove Member`, `Resend Invite`). Bare verbs like `Remove` or `Confirm` lose context once the row scrolls offscreen.” (https://vercel.com/geist/entity) Ours: every string is the product\'s: `label` names the list, a time\'s `phrase` writes its sentence ("Updated {when}"), `missing` is what a screen reader hears for a record with no time, the menu\'s `label` reads "More for {record}". A row command names its result in sentence case ("Edit domain"). A status is the exception\'s word ("Needs attention"), never "Active" on every row.',
191
191
  access: '“Wrap the loading region in `aria-busy="true"` and announce completion with `aria-live="polite"` on the destination container, not the skeleton itself.” (https://vercel.com/geist/skeleton) Ours: the loading rows sit in one `SkeletonRegion` that is busy while they stand and announces what replaces them. A table named by `label`, its column headings read by assistive technology only. The row link carries `open.label`; the three dots carry the menu\'s `label`, and the menu\'s first line names the record. The loading rows are a status named by `loadingLabel`, inside the one live region that announces what replaces them. “For multi-select rows, the leading `Checkbox` carries `aria-label="Select {entity name}"` so the row is selectable without relying on the visual label.” (https://vercel.com/geist/entity) Ours: each box is named by `select.label`, which reads "Select {record}".',
192
192
  },
@@ -626,7 +626,7 @@ export const USAGE = [
626
626
  summary: "An Agent, anywhere: her orb, the only thing that moves on its own.",
627
627
  when: 'An Agent, anywhere: 20 in the sidebar, 32 in a row, 64 on her Profile card, 96 in an Agent card, 160 on entry. There is no other Agent picture. The sizes are 20, 24, 32, 40, 64, 96 and 160 px, and no other. On a photograph the orb takes the stronger `presence="over-picture"` weight; everywhere else it is `plain`.',
628
628
  instead: 'A person is an `Avatar`. The system\'s own wait is the waiting line, never an orb. An orb in artwork, such as a sign-in picture, takes `motion="ambient"` and claims no activity. An orb that stands for an Agent shows her real state.',
629
- behaviour: "The only thing that moves on its own. Idle turns at its form's own pace and breathes; working and thinking move with their cue, the ribbon around working and three dots above thinking; waiting holds; blocked makes one interrupted effort and stops; done celebrates once and settles back into idle. A surface that only knows a machine checked in draws idle. No state draws a circle around the orb. Ambient motion moves the form at its own pace with no state pose or cue. Reduced motion: movement stops, a thinking or working orb breathes between full ink and 0.45 opacity so busy still reads as busy, and an ambient orb holds still. An orb is one of seven forms, `ribbon`, `lattice`, `orbit`, `globe`, `network`, `braid` and `morph`, in one colour a person chose: cobalto, verde or arancio, or none, which draws it in the text colour. Giallo is not offered because it fails 3:1 on white; rosso is not offered because it is the error red. nadicode's own two Agents are the only ones with a figure nobody chooses, the same at every size and in every state. Nadia is her striped ribbon, the form `nadia`: azzurro, verde, the text colour and rosso along its whole length. Sofia, the Agent that looks up a new company, is her sister, the form `sofia`: the same ribbon turned to face Nadia's, striped cobalto, giallo, the text colour and arancio, the identity hues Nadia does not wear. Neither figure is ever stored as an Agent's look. An Agent's form is stored as `orb:<form>` and its colour as the identity hex or nothing; a template declares its starting look the same way. The stored-appearance resolver reads it: the root Agent always draws as Nadia, an unknown form draws `orbit`, an unknown colour the text colour, and a stored rosso draws arancio. The retired `forma:*` shapes each draw one of the seven forms, so an Agent that chose one before the orbs keeps a distinct look. An Agent's look is a person's choice and is never derived from a name, id or role. A template that names no look is the one exception: `templateAgentOrb` gives it a form and colour fixed by its slug, so the templates in a gallery differ and the Portal and Nadia draw the same one; Nadia and Sofia keep their figures.",
629
+ behaviour: "The only thing that moves on its own. Idle particles turn at 86.4% of the form's native pace, with a separate 6.4 s breath. Working sweeps a ribbon every 3.2 s; thinking passes three pulses over 2.4 s. Waiting leans softly as centered pause bars arrive; blocked recoils as a centered stop sign lands. Both entrances settle over 2 s, then waiting breathes and blocked holds still. Done celebrates once over 4.8 s, then rests at 72% of native particle speed with the Idle breath. A state change interrupts the previous gesture; `motionKey` replays it and `paused` freezes it. A surface that only knows a machine checked in draws idle. No state draws a circle around the orb. Ambient motion moves the form at its own pace with no state pose or cue. Reduced motion: movement stops, a thinking or working orb breathes between full ink and 0.45 opacity so busy still reads as busy, an ambient orb holds still, and waiting and blocked keep their centered signs without an entrance gesture. An orb is one of seven forms, `ribbon`, `lattice`, `orbit`, `globe`, `network`, `braid` and `morph`, in one colour a person chose: cobalto, verde or arancio, or none, which draws it in the text colour. Giallo is not offered because it fails 3:1 on white; rosso is not offered because it is the error red. nadicode's own two Agents are the only ones with a figure nobody chooses, the same at every size and in every state. Nadia is her striped ribbon, the form `nadia`: azzurro, verde, the text colour and rosso along its whole length. Sofia, the Agent that looks up a new company, is her sister, the form `sofia`: the same ribbon turned to face Nadia's, striped cobalto, giallo, the text colour and arancio, the identity hues Nadia does not wear. Neither figure is ever stored as an Agent's look. An Agent's form is stored as `orb:<form>` and its colour as the identity hex or nothing; a template declares its starting look the same way. The stored-appearance resolver reads it: the root Agent always draws as Nadia, an unknown form draws `orbit`, an unknown colour the text colour, and a stored rosso draws arancio. The retired `forma:*` shapes each draw one of the seven forms, so an Agent that chose one before the orbs keeps a distinct look. An Agent's look is a person's choice and is never derived from a name, id or role. A template that names no look is the one exception: `templateAgentOrb` gives it a form and colour fixed by its slug, so the templates in a gallery differ and the Portal and Nadia draw the same one; Nadia and Sofia keep their figures.",
630
630
  words: "Text sits beside the orb, never on it. Where the exact state matters a word names it: *Working*, *Waiting for you*.",
631
631
  access: '`role="img"` labelled with the Agent\'s name, and her state where it matters; `decorative` when her name is already beside it.',
632
632
  },
@@ -780,7 +780,7 @@ export const USAGE = [
780
780
  summary: 'A record\'s identity in a row (DESIGN.md "Tables and missing values"): its mark at 32, its name, and under it one muted `detail` line saying what the record is or where it comes from, so the row reads without a column heading.',
781
781
  when: "The first cell of every collection row: the mark, the name, and one muted line saying what the record is or where it comes from, so the row reads without a heading.",
782
782
  instead: "An Agent in a gallery is `AgentListRow`; a model is `ModelIdentity`. A descriptive item with prose and actions is `Item`.",
783
- behaviour: "The mark stands 16 px before the name. The name is semibold (600) ink and the detail a muted 14 px line, two lines with no gap between them, so the row is an entity row; `mark` is required; a record with nothing to say under its name leaves `detail` out and is the name alone, never a dash, which is a table cell's missing value and not a record's. The name holds one line and ends in an ellipsis, whole in its title, with a `hint` such as an ID read after it. The detail is one line too and ends in an ellipsis, whole in its title when it is text; in a row on a card narrower than its columns, the facts that leave the row join it after a middle dot, so the record stays the name over one line, and a status that leaves the row stands beside the name, which ends in an ellipsis before it. `wraps` only when the name is the whole record, such as a memory, and then the detail wraps too. The table owns the link.",
783
+ behaviour: "The mark stands 16 px before the name. The name is semibold (600) ink and the detail a muted 14 px line, two lines with no gap between them, so the row is an entity row; `mark` is required; a record with nothing to say under its name leaves `detail` out and is the name alone, never a dash, which is a table cell's missing value and not a record's. The name holds one line and ends in an ellipsis, whole in its title, with a `hint` such as an ID read after it. The detail is one line too and ends in an ellipsis, whole in its title when it is text; in a row on a card narrower than its columns, the facts that leave the row join it after a middle dot and wrap so every value stays readable, and a status that leaves the row stands beside the name, which ends in an ellipsis before it. `wraps` only when the name is the whole record, such as a memory, and then the detail wraps too. The table owns the link.",
784
784
  words: '“Lead the left column with a scannable identifier: an `Avatar` or icon, a Title Case label, then sentence-case secondary metadata (`Member since Mar 14, 2026`).” (https://vercel.com/geist/entity) Ours: the name as the record calls itself, and the detail in sentence case: kind, then relation, three to six words, "Company skill · every Agent has it".',
785
785
  access: "The name is the row link's text; the mark is decorative; the title carries the full name.",
786
786
  },
@@ -868,7 +868,7 @@ export const USAGE = [
868
868
  summary: "Says which part of the account a page reads, and changes it.",
869
869
  when: "Changing which part of the account a page reads, such as Analytics' scope, or switching between objects from the shell's top bar with `variant=\"navigation\"`.",
870
870
  instead: "A viewer with one scope and nothing to create reads its name with no control, which this draws by itself. Finding anything is `CommandDialog`; narrowing rows is `CollectionFilters`.",
871
- behaviour: "A ghost trigger, at most 16rem, opens a 288 px popover with focus in its search. Navigation omits the visible prefix, carries each option's identity mark and opens a 384 px popover constrained to the viewport. Type to filter, Enter chooses and closes; choosing the current one changes nothing. The caller writes the choice to the URL in `onValueChange`, so sibling pages keep it. An optional create command sits last.",
871
+ behaviour: "A ghost trigger, at most 16rem, opens a 288 px popover with focus in its search. Navigation omits the visible prefix, wraps the selected name on phones instead of cutting it, carries each option's identity mark and opens a 384 px popover constrained to the viewport. Type to filter, Enter chooses and closes; choosing the current one changes nothing. The caller writes the choice to the URL in `onValueChange`, so sibling pages keep it. An optional create command sits last.",
872
872
  words: '`copy.label` names what is chosen ("Scope") beside the current scope\'s name. Search and empty lines name the thing: "Find a scope", "No scope matches".',
873
873
  access: 'The trigger reads "Scope: All customers"; the popover has a hidden title; options are a listbox with the current one checked.',
874
874
  },
@@ -1022,7 +1022,7 @@ export const USAGE = [
1022
1022
  summary: "Records compared across columns: the same facts for every record, read down a column and across a row, inside their `TableCard`.",
1023
1023
  when: "“Use `<Table>` for tabular data where rows share the same shape and at least one column is sortable or comparable across rows.” (https://vercel.com/geist/table) Ours: the person compares: usage per Agent, statements, invoices, customers with their partner and count. The columns are fixed, each has a heading, and at least one is a figure or can be sorted. There are three kinds of list. Objects a person opens (a project, a deployment, a member, an integration) are entity rows: a `RecordList`. Values edited in place (a domain, an environment variable) are entity rows that expand into their form: a `RecordList`'s `editor`. Records compared across columns are this table.",
1024
1024
  instead: "“For a row of descriptive content paired with a single action (membership row, integration row), use `Entity` instead.” (https://vercel.com/geist/table) “For a key/value metadata block on a detail page, use `Description`, not a two-column table.” (https://vercel.com/geist/table) Ours: Geist's `Entity` is a `RecordList` row. A registry of entities whose columns `RecordList` cannot hold, more than three facts beside a filter bar the product owns, as Vercel's Deployments list, is this table with `rows=\"entities\"`, which draws the same rows: headings for assistive technology only, 72 px rows, a `RecordIdentity` in the identity column. Its `Description` is `ObjectFacts`. A list on a page of its own is a `CollectionPage`. A descriptive list is `ItemGroup`.",
1025
- behaviour: "Every column has a `header`; a column without one does not compile. The headings are always visible, medium weight in the cells' body grey, 48 px high, with 12 px of room under the labels and then the rule, so the first row starts at the rule like every other; rows are 40 px. Each column is as wide as its definition's `size`, in pixels, and the columns without one share the rest, so a table gives a size to every column but the one that takes the spare width; a value too long for its column ends in an ellipsis, whole in its title (a record's name carries its own), unless the column `wraps`; a column marked `identifier` holds ids or paths and is cut in the middle instead. The last column trails unless it `wraps` or is `centered`; a `centered` column's heading and values sit in the middle of it. Records are divided by a 1 px rule, none after the last. The first and last columns stand in from the card's edges by the card's spacing, so the first lines up with the title. Records of several kinds stand in one table under `group` headings (Vercel's Usage page: *Delivery network*, *Functions*): a heading row that spans the columns, in ink, medium text, 36 px high with the same rule under it, one per group in the order the groups first appear, never a second table; a heading is the group's name and carries no figure of its own. A row that opens a record takes `accent` on hover, and any row on focus within and while its menu is open; a row that opens nothing never reacts to hover. A selected row takes `muted`; headers and footers never highlight and carry no fill. A row never scrolls sideways: on a card narrower than its columns (the sized ones and 160 px for each without a size) the row keeps its name and its `primaryColumns`, and every other column leaves it, its value joining the one muted line under the name, joined by a middle dot and ending in an ellipsis (a `Tag` reads as its text there, and a `wraps` column's prose wraps the line whole), or `dropped` when its `compact` says so, or beside an entity row's name, which ends in an ellipsis before it, when it says `name`, as Vercel's lists read on a phone: no labels, no second line; an `optional` column's empty value is left out of the line. A table whose every column is in `primaryColumns`, a settings matrix, lays out by its content there instead, so the name wraps beside the columns. A document's table, such as a legal page's, is read whole instead: its columns take the `wraps` option, so their words wrap and the row grows, and it keeps its header row; in the compact layout every cell but the identity wraps between words. A bounded page's paging stands in the card's footer strip at its trailing edge, opposite `footer`, which stands at the leading edge: its `status` (\"Page 2 of 7\") before Previous and Next, which are the product's router links (`previousLink`, `nextLink`) when each page is its own address, and buttons otherwise; the one that leads nowhere stays, disabled. A note about the whole table is `footerNote`, in a strip of its own under that one: one muted line, an optional *Learn more* after it at the left and one secondary action at the right (Vercel's deployments list ends \"Deployment retention is enabled. Learn more\" with *View recently deleted*); it is the one place a table says a sentence. Colour is neutral: headings and cells in the body grey, no hue, except a status badge or a tone the cell itself carries. “When the underlying list is empty (filter cleared, never created), render `Empty State` outside the table rather than an empty `<Table.Body>`.” (https://vercel.com/geist/table) “After an async filter change, wrap the region in `aria-live=\"polite\"` so screen readers announce the new state.” (https://vercel.com/geist/empty-state) Ours: empty sits outside the body, in a polite live region that stays in place so a filter that empties the table is announced. “Sortable column headers are buttons. The visible label stays Title Case; the sort-direction arrow is decorative and the button announces the next sort state to assistive tech.” (https://vercel.com/geist/table) Ours: the order has one owner, the app's `sorting`, which the URL holds, so no heading is a button and every page of a paged list follows one order. “Apply `tabular-nums` (or Geist Mono) to numeric columns so digits align across rows for comparison.” (https://vercel.com/geist/table) Ours: a numeric column trails in tabular figures.",
1025
+ behaviour: "Every column has a `header`; a column without one does not compile. The headings are always visible, medium weight in the cells' body grey, 48 px high, with 12 px of room under the labels and then the rule, so the first row starts at the rule like every other; rows are 40 px. Each column is as wide as its definition's `size`, in pixels, and the columns without one share the rest, so a table gives a size to every column but the one that takes the spare width; a value too long for its column ends in an ellipsis, whole in its title (a record's name carries its own), unless the column `wraps`; a column marked `identifier` holds ids or paths and is cut in the middle instead. The last column trails unless it `wraps` or is `centered`; a `centered` column's heading and values sit in the middle of it. Records are divided by a 1 px rule, none after the last. The first and last columns stand in from the card's edges by the card's spacing, so the first lines up with the title. Records of several kinds stand in one table under `group` headings (Vercel's Usage page: *Delivery network*, *Functions*): a heading row that spans the columns, in ink, medium text, 36 px high with the same rule under it, one per group in the order the groups first appear, never a second table; a heading is the group's name and carries no figure of its own. A row that opens a record takes `accent` on hover, and any row on focus within and while its menu is open; a row that opens nothing never reacts to hover. A selected row takes `muted`; headers and footers never highlight and carry no fill. A row never scrolls sideways: on a card narrower than its columns (the sized ones and 160 px for each without a size) the row keeps its name and its `primaryColumns`, and every other column leaves it, its value joining the one muted line under the name, joined by a middle dot (a `Tag` reads as its text there); entity facts wrap below the name so every value stays readable, while other rows end in an ellipsis unless a column `wraps`, or `dropped` when its `compact` says so, or beside an entity row's name, which ends in an ellipsis before it, when it says `name`, as Vercel's lists read on a phone: no labels, no second line; an `optional` column's empty value is left out of the line. A table whose every column is in `primaryColumns`, a settings matrix, lays out by its content there instead, so the name wraps beside the columns. A document's table, such as a legal page's, is read whole instead: its columns take the `wraps` option, so their words wrap and the row grows, and it keeps its header row; in the compact layout every cell but the identity wraps between words. A bounded page's paging stands in the card's footer strip at its trailing edge, opposite `footer`, which stands at the leading edge: its `status` (\"Page 2 of 7\") before Previous and Next, which are the product's router links (`previousLink`, `nextLink`) when each page is its own address, and buttons otherwise; the one that leads nowhere stays, disabled. A note about the whole table is `footerNote`, in a strip of its own under that one: one muted line, an optional *Learn more* after it at the left and one secondary action at the right (Vercel's deployments list ends \"Deployment retention is enabled. Learn more\" with *View recently deleted*); it is the one place a table says a sentence. Colour is neutral: headings and cells in the body grey, no hue, except a status badge or a tone the cell itself carries. “When the underlying list is empty (filter cleared, never created), render `Empty State` outside the table rather than an empty `<Table.Body>`.” (https://vercel.com/geist/table) “After an async filter change, wrap the region in `aria-live=\"polite\"` so screen readers announce the new state.” (https://vercel.com/geist/empty-state) Ours: empty sits outside the body, in a polite live region that stays in place so a filter that empties the table is announced. “Sortable column headers are buttons. The visible label stays Title Case; the sort-direction arrow is decorative and the button announces the next sort state to assistive tech.” (https://vercel.com/geist/table) Ours: the order has one owner, the app's `sorting`, which the URL holds, so no heading is a button and every page of a paged list follows one order. “Apply `tabular-nums` (or Geist Mono) to numeric columns so digits align across rows for comparison.” (https://vercel.com/geist/table) Ours: a numeric column trails in tabular figures.",
1026
1026
  words: '“Column headers (`<Table.Head>`) are Title Case nouns or noun phrases: `Last Used`, `Requests (7d)`, `Created`, `Status`. Never sentences.” (https://vercel.com/geist/table) “Render `—` in cells where a value is unknown or not applicable. Don’t substitute `N/A`, `null`, or an empty string.” (https://vercel.com/geist/table) “Use the canonical short relative-time form in cells (`2m ago`, `5h ago`); switch to `Mar 14, 2026` past 7 days. See `Relative Time Card`.” (https://vercel.com/geist/table) “Pagination labels are `Previous` and `Next`. Page-count copy reads `Page 2 of 7` or `21–40 of 142` with an en-dash inside the range.” (https://vercel.com/geist/table) Ours: headings are sentence case nouns with their unit, "Cost (€)", "Tokens", where Geist writes Title Case. The words of a time and of Previous and Next are the product\'s catalogue, in both languages. The footer is a count or the paging; totals and paging each stand in a footer zone of their own, the paging at the trailing edge; the summary row is a labelled total. Italian headings run a third longer and never wrap.',
1027
1027
  access: 'A native table named by `tableLabel`, which is required; `th scope="col"`; the record\'s name is the row\'s one link. A sorted column\'s heading carries `aria-sort`. Ours: a missing value is a hidden "—" with screen-reader text, never blank.',
1028
1028
  },
@@ -1198,7 +1198,7 @@ export const USAGE = [
1198
1198
  summary: "The native table every comparison is drawn with: a head row, figure rows of one line, and cells padded the same at every width.",
1199
1199
  when: "“Use `<Table>` for tabular data where rows share the same shape and at least one column is sortable or comparable across rows.” (https://vercel.com/geist/table) Ours: a fixed table a composition draws itself: a summary inside a card, a list of plan limits, figures compared down a column. A table of records is `DataTable`, which draws this one, inside a `TableCard`. It does not virtualize its rows; that is a separate capability.",
1200
1200
  instead: "“For a row of descriptive content paired with a single action (membership row, integration row), use `Entity` instead.” (https://vercel.com/geist/table) “For a key/value metadata block on a detail page, use `Description`, not a two-column table.” (https://vercel.com/geist/table) “When the underlying list is empty (filter cleared, never created), render `Empty State` outside the table rather than an empty `<Table.Body>`.” (https://vercel.com/geist/table) Ours: Geist's `Entity` is `Item`, or `RecordList` when the row names a record; its `Description` is `ObjectFacts`; its `Empty State` is `EmptyState`. Records with sorting, paging and an empty state are `DataTable`.",
1201
- behaviour: 'A head row 48 px high, with 12 px of room under its labels and then a 1 px rule, so the first row starts at the rule like every other; body rows 40 px (a cell that holds a control, such as the three dots, is padded just enough to keep the row at 40), every cell padded 8 px sideways and 10 px above and below in the body, and headings at 14 px / 20 px, weight 500, visible because people compare by them. Body rows have no rule between them unless the body is `bordered`, which draws it straight across the row. In a body that is not `bordered`, the first and last cell of a row take a 6 px corner, so a stripe or a highlight reads as a rounded bar; a `bordered` row keeps square corners, so its rule meets the edge. The last column, its heading and its cells, aligns to the trailing edge; any other numeric column takes `text-right` and `tabular-nums` to match. `striped`, `bordered` and `interactive` belong to `TableBody`: stripes fill the odd rows with `muted` (a selected row there takes `accent`), `bordered` draws a rule between rows (not after the last) and no frame, and an interactive row takes `accent` on hover, on focus within and while its menu is open, over a stripe; a row that opens nothing is not `interactive`. Headers and footers never highlight and carry no fill, and a selected row (`data-state="selected"`) takes `muted`; a footer has a rule above it and ink, medium text. A column\'s width is a `TableCol` in a `TableColgroup`. The table has no fill or edge of its own: it takes its enclosing surface, whose `Card` owns the outer edge, and a visible header and every record but the last end in a quiet 1 px `border` rule. A table that opens nothing implies no action on hover. `density="comfortable"` is the entity row of a record that names itself. On a card narrower than its `compactDetails` layout a row never scrolls sideways: its secondary columns leave the row and their values stand in the `TableDetailRow` under it, one muted line joined by a middle dot that ends in an ellipsis, their labels read by assistive technology only, as Vercel\'s lists read on a phone; a `Tag` there reads as its plain text, and a fact that `wraps` lets the line wrap whole instead of ending in an ellipsis. An entity row (`density="comfortable"`) keeps its record on one 72 px row instead: its facts join the line under the name that `RecordIdentity` draws (`TableCompactLine`), so the row is the name over one line. Colour is neutral throughout: headings and cells share the body grey and a heading differs by weight, the footer is ink, and the hue of a state lives in the `StatusBadge` of a cell, never in the row. “Sortable column headers are buttons. The visible label stays Title Case; the sort-direction arrow is decorative and the button announces the next sort state to assistive tech.” (https://vercel.com/geist/table) Ours: no heading sorts the rows, so no heading is a button; the order is the page\'s, through a `CollectionSort` above the list, and only `aria-sort` marks the column it follows. “Apply `tabular-nums` (or Geist Mono) to numeric columns so digits align across rows for comparison.” (https://vercel.com/geist/table) Ours: `DataTable` sets it on a numeric column; in a `Table` a figure\'s cell takes `tabular-nums`.',
1201
+ behaviour: 'A head row 48 px high, with 12 px of room under its labels and then a 1 px rule, so the first row starts at the rule like every other; body rows 40 px (a cell that holds a control, such as the three dots, is padded just enough to keep the row at 40), every cell padded 8 px sideways and 10 px above and below in the body, and headings at 14 px / 20 px, weight 500, visible because people compare by them. Body rows have no rule between them unless the body is `bordered`, which draws it straight across the row. In a body that is not `bordered`, the first and last cell of a row take a 6 px corner, so a stripe or a highlight reads as a rounded bar; a `bordered` row keeps square corners, so its rule meets the edge. The last column, its heading and its cells, aligns to the trailing edge; any other numeric column takes `text-right` and `tabular-nums` to match. `striped`, `bordered` and `interactive` belong to `TableBody`: stripes fill the odd rows with `muted` (a selected row there takes `accent`), `bordered` draws a rule between rows (not after the last) and no frame, and an interactive row takes `accent` on hover, on focus within and while its menu is open, over a stripe; a row that opens nothing is not `interactive`. Headers and footers never highlight and carry no fill, and a selected row (`data-state="selected"`) takes `muted`; a footer has a rule above it and ink, medium text. A column\'s width is a `TableCol` in a `TableColgroup`. The table has no fill or edge of its own: it takes its enclosing surface, whose `Card` owns the outer edge, and a visible header and every record but the last end in a quiet 1 px `border` rule. A table that opens nothing implies no action on hover. `density="comfortable"` is the entity row of a record that names itself. On a card narrower than its `compactDetails` layout a row never scrolls sideways: its secondary columns leave the row and their values stand in the `TableDetailRow` under it, one muted line joined by a middle dot that ends in an ellipsis, their labels read by assistive technology only, as Vercel\'s lists read on a phone; a `Tag` there reads as its plain text, and a fact that `wraps` lets the line wrap whole instead of ending in an ellipsis. An entity row (`density="comfortable"`) keeps its facts in the identity cell instead: they join the text under the name that `RecordIdentity` draws (`TableCompactLine`), and wrap so every value stays readable. Colour is neutral throughout: headings and cells share the body grey and a heading differs by weight, the footer is ink, and the hue of a state lives in the `StatusBadge` of a cell, never in the row. “Sortable column headers are buttons. The visible label stays Title Case; the sort-direction arrow is decorative and the button announces the next sort state to assistive tech.” (https://vercel.com/geist/table) Ours: no heading sorts the rows, so no heading is a button; the order is the page\'s, through a `CollectionSort` above the list, and only `aria-sort` marks the column it follows. “Apply `tabular-nums` (or Geist Mono) to numeric columns so digits align across rows for comparison.” (https://vercel.com/geist/table) Ours: `DataTable` sets it on a numeric column; in a `Table` a figure\'s cell takes `tabular-nums`.',
1202
1202
  words: "“Column headers (`<Table.Head>`) are Title Case nouns or noun phrases: `Last Used`, `Requests (7d)`, `Created`, `Status`. Never sentences.” (https://vercel.com/geist/table) “Render `—` in cells where a value is unknown or not applicable. Don’t substitute `N/A`, `null`, or an empty string.” (https://vercel.com/geist/table) “Use the canonical short relative-time form in cells (`2m ago`, `5h ago`); switch to `Mar 14, 2026` past 7 days. See `Relative Time Card`.” (https://vercel.com/geist/table) Ours: headings are sentence case nouns with their unit, *Cost (€)*, *Tokens*, where Geist writes Title Case. Italian headings run a third longer and never wrap. A missing value is `TableValue`'s dash, read as its `missingLabel`. The table is always named: its `aria-label` says what it lists (*Usage by Agent*).",
1203
1203
  access: 'A native `table` named by `aria-label` or `aria-labelledby`, which the types require, or `aria-hidden` when it is only the placeholder of a loading view; `th scope="col"`, with `aria-sort` on the column the rows are ordered by.',
1204
1204
  },
@@ -1,3 +1,3 @@
1
- export const agentOrbScript = "\"use strict\";(()=>{function U(n,e,t){return n+(e-n)*t}function at(n){return n-Math.floor(n)}function V(n,e){let t=Math.floor(n),a=Math.floor(e),o=n-t,s=e-a;o=o*o*(3-2*o),s=s*s*(3-2*s);let r=_(t,a),u=_(t+1,a),c=_(t,a+1),M=_(t+1,a+1);return r+(u-r)*o+(c-r)*s+(r-u-c+M)*o*s}function _(n,e){let t=Math.sin(n*12.9898+e*78.233)*43758.5453;return t-Math.floor(t)}function J(n,e){let t=Math.PI*(3-Math.sqrt(5)),a=1-2*(n+.5)/e,o=Math.sqrt(1-a*a),s=n*t;return[o*Math.cos(s),a,o*Math.sin(s)]}function Pt(n,e){return Math.atan2(Math.sin(n-e),Math.cos(n-e))}function j(n,e,t,a,o){let s=Math.sin(e),r=Math.cos(e),u=Math.sin(n),c=Math.cos(n);return(M,O,l)=>{let i=M*c+l*u,p=-M*u+l*c,m=O*r-p*s,b=O*s+p*r;return[t+i*o,a-m*o,b]}}function rt(n,e,t,a){if(!a){let s=Math.round((t?1-n:n)*255);return`rgba(${s},${s},${s},${e})`}let o=s=>Math.round(t?s*(1-n):s+(255-s)*n);return`rgba(${o(a.r)},${o(a.g)},${o(a.b)},${e})`}function it(n,e,t,a=.3,o){for(let s of e){let r=s.a??1,u=Math.min(1,Math.max(0,s.white));n.fillStyle=rt(u,r,t,o),n.beginPath(),n.arc(s.x,s.y,s.r,0,Math.PI*2),n.fill()}}function ct(n,e,t,a){for(let o of e){let s=o.a??1,r=Math.min(1,Math.max(0,o.white));n.strokeStyle=rt(r,s,t,a),n.lineWidth=o.w,n.beginPath(),n.moveTo(o.x1,o.y1),n.lineTo(o.x2,o.y2),n.stroke()}}function q(n,e,t=.3){let a=[];for(let o of n)(o.a??1)<.02||(o.r=Math.max(t,o.r),a.push(o));return a.sort((o,s)=>o.z-s.z),{dots:a,lines:e.filter(o=>(o.a??1)>=.02)}}function ht(n,e,t,a){e.lines.length&&ct(n,e.lines,t,a),it(n,e.dots,t,.3,a)}function $(n,e){return(n/300)**e}var St=[[\"latRings\",\"lonDensity\"],[\"rings\",\"lonDensity\"],[\"lanes\",\"segs\"]],At=[\"orbitN\",\"ghostN\",\"nodeN\",\"strandN\",\"signals\"],vt=[\"iconD\"],kt=[\"rBase\",\"rDepth\",\"rActive\",\"rDot\",\"ghostR\",\"partR\",\"partRDepth\",\"nodeR\",\"nodeRDepth\"];function Rt(n,e){let t={...n},a=new Set,o=Math.sqrt(e);for(let[s,r]of St){let u=t[s],c=t[r];u!=null&&c!=null&&!a.has(s)&&!a.has(r)&&(t[s]=Math.max(2,Math.round(u*o)),t[r]=Math.max(2,Math.round(c*o)),a.add(s),a.add(r))}for(let s of At){let r=t[s];r!=null&&r!==0&&!a.has(s)&&(t[s]=Math.max(1,Math.round(r*e)))}for(let s of vt){let r=t[s];r!=null&&(t[s]=Math.max(.02,r*e))}return t}function Dt(n,e){let t={...n};for(let a of kt){let o=t[a];o!=null&&(t[a]=o*e)}return t.rSizeMul=(t.rSizeMul??1)*e,t}var zt={globe:{latRings:17,lonDensity:44,rBase:.6,rDepth:1.7,rBoost:1,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},orbits:{orbitN:12,ghostN:40,ghostR:.9,ghostA:.5,particles:3,partR:1.2,partRDepth:1.6,rsPow:.6,rMin:.3},rubik:{latRings:15,lonDensity:40,moveCount:14,rBase:.6,rDepth:1.7,rActive:.3,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},wave:{rings:15,lonDensity:40,rBase:.6,rDepth:1.7,rsPow:.6,rMin:.3},web:{nodeN:30,thr:.72,signals:5,nodeR:1.4,nodeRDepth:1.8,lineW:.8,rsPow:.6,rMin:.3},braid:{strandN:52,turns:3,ghostN:150,rBase:1.2,rDepth:1.8,rsPow:.6,rMin:.3},ribbon:{lanes:5,segs:88,ghostN:150,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},ring:{lanes:5,segs:88,ghostN:0,faceOn:1,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},morph:{rDot:.021,iconD:1,rMin:.25}},It=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.76,r=j(e*.4,.3,a,o,1),u=$(n,t.rsPow??.6),c=[],M=t.ghostN??150;for(let i=0;i<M;i++){let p=J(i,M),[m,b,h]=r(p[0]*s,p[1]*s,p[2]*s),g=(h/s+1)/2;c.push({x:m,y:b,z:h,r:.8*u,white:.78,a:.1+.22*g})}let O=t.strandN??52,l=t.turns??3;for(let i=0;i<3;i++){let p=i/3*2*Math.PI;for(let m=0;m<O;m++){let b=(at(m/O+e*.045)*2-1)*.96,h=Math.sqrt(Math.max(0,1-b*b)),g=Math.min(1,(1-Math.abs(b))/.1),y=b*Math.PI*l+p,f=1+.075*Math.sin(b*Math.PI*l*2+p*2+e*.8),d=h*s*f,[x,S,w]=r(Math.cos(y)*d,b*s*f,Math.sin(y)*d),P=(w/s+1)/2;c.push({x,y:S,z:w,r:((t.rBase??1.2)+(t.rDepth??1.8)*P)*u,white:.55-.45*P,a:g*(.45+.55*P)})}}return q(c,[],t.rMin)};function Ct(n,e,t,a){let o=2*e*t+a,s=n%o,r=new Array(e).fill(0),u=-1;if(s<2*e*t){let c=Math.floor(s/t),M=(s-c*t)/t,l=1-(1-Math.min(1,M/.7))**3;if(c<e){for(let i=0;i<c;i++)r[i]=1;r[c]=l,u=c}else{let i=2*e-1-c;for(let p=0;p<i;p++)r[p]=1;r[i]=1-l,u=i}}return{amount:r,active:u}}function Et(n,e,t){let[a,o,s]=n,r=!1;for(let u=0;u<e.length;u++){if(t.amount[u]<=0)continue;let c=e[u],M=c.axis===0?a:c.axis===1?o:s;if(M<c.lo||M>=c.hi)continue;u===t.active&&(r=!0);let O=c.ang*t.amount[u],l=Math.cos(O),i=Math.sin(O);if(c.axis===0){let p=o*l-s*i;s=o*i+s*l,o=p}else if(c.axis===1){let p=a*l+s*i;s=-a*i+s*l,a=p}else{let p=a*l-o*i;o=a*i+o*l,a=p}}return[a,o,s,r]}function Ft(n){let e=[];for(let t=0;t<n;t++){let a=Math.min(2,Math.floor(_(t,2.3)*3)),o=-1+.5*Math.min(3,Math.floor(_(t,5.9)*4)),s=_(t,7.7)<.5?1:-1;e.push({axis:a,lo:o,hi:o+.5,ang:s*Math.PI/2})}return e}var Nt=(n,e,t)=>{let o=n/2,s=n/2,r=n/2*.82,u=.4+.06*Math.sin(e*.35),c=j(e*.5,u,o,s,r),M=e*(.5+(1.7-.5)*(t.scanMul??1)),O=$(n,t.rsPow??.6),l=t.dimBase??1,i=[],p=t.latRings??17,m=t.lonDensity??44;for(let b=0;b<=p;b++){let h=-Math.PI/2+b/p*Math.PI,g=Math.cos(h),y=Math.sin(h),f=Math.max(1,Math.round(Math.abs(g)*m));for(let d=0;d<f;d++){let x=d/f*2*Math.PI,[S,w,P]=c(g*Math.cos(x),y,g*Math.sin(x)),v=(P+1)/2,R=Pt(x+e*.5,M),k=Math.exp(-(R*R)/.18)*Math.max(0,P);i.push({x:S,y:w,z:P,r:((t.rBase??.6)+(t.rDepth??1.7)*v+(t.rBoost??1)*k)*O,white:(t.inkFar??.62)-(t.inkSpan??.54)*v,a:l+(1-l)*Math.min(1,k)})}}return q(i,[],t.rMin)},Bt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.82,r=j(e*.55,.35+.1*Math.sin(e*.9),a,o,s),u=$(n,t.rsPow??.6),c=t.moveCount??14,M=Ft(c),O=Ct(e,c,.42,1.2),l=[],i=t.latRings??15,p=t.lonDensity??40;for(let m=0;m<=i;m++){let b=-Math.PI/2+m/i*Math.PI,h=Math.cos(b),g=Math.sin(b),y=Math.max(1,Math.round(Math.abs(h)*p));for(let f=0;f<y;f++){let d=f/y*2*Math.PI,[x,S,w,P]=Et([h*Math.cos(d),g,h*Math.sin(d)],M,O),[v,R,k]=r(x,S,w),D=(k+1)/2;l.push({x:v,y:R,z:k,r:((t.rBase??.6)+(t.rDepth??1.7)*D+(P?t.rActive??.3:0))*u,white:(t.inkFar??.62)-(t.inkSpan??.54)*D-(P?.14:0)})}}return q(l,[],t.rMin)},Lt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.874,r=j(e*.18,.38,a,o,1),u=$(n,t.rsPow??.6),c=[],M=t.rings??15,O=t.lonDensity??40;for(let l=0;l<=M;l++){let i=-Math.PI/2+l/M*Math.PI,p=Math.cos(i),m=Math.sin(i),b=.62*Math.sin(e*2.1-l*.52)+.38*Math.sin(e*1.27+l*.83),h=s*(.88+.105*b),g=Math.max(1,Math.round(Math.abs(p)*O));for(let y=0;y<g;y++){let f=y/g*2*Math.PI,[d,x,S]=r(p*Math.cos(f)*h,m*h,p*Math.sin(f)*h),w=(S/s+1)/2,P=Math.max(0,b);c.push({x:d,y:x,z:S,r:((t.rBase??.6)+(t.rDepth??1.7)*w)*(1+.4*P)*u,white:.66-.56*w-.1*P})}}return q(c,[],t.rMin)};function Tt(n){return n*n*(3-2*n)}function lt(n){let e=n.length,t=[],a=0;for(let o=0;o<e;o++){let s=n[o],r=n[(o+1)%e],u=Math.hypot(r[0]-s[0],r[1]-s[1]);t.push(u),a+=u}return o=>{let s=o*a,r=0;for(;s>t[r]&&r<e-1;)s-=t[r],r++;let u=n[r],c=n[(r+1)%e],M=t[r]?Math.min(1,s/t[r]):0;return[u[0]+(c[0]-u[0])*M,u[1]+(c[1]-u[1])*M]}}var _t=n=>{let e=-Math.PI/2+n*2*Math.PI;return[Math.cos(e)*.24,Math.sin(e)*.24]},qt=lt([[0,-.26],[.24,.16],[-.24,.16]]),jt=lt([[0,-.2],[.2,-.2],[.2,.2],[-.2,.2],[-.2,-.2]]),Q=[_t,qt,jt];function $t(n){return Math.max(6,Math.round(34*n))}var X=1.4,ut=.9,Y=X+ut,Wt=(n,e,t)=>{let a=Q.length,o=e%(Y*a),s=t.shape!=null&&t.shape>=0&&t.shape<a?Math.floor(t.shape):-1,r=s>=0?s:Math.floor(o/Y),u=s>=0?e%Y:o-r*Y,c=s>=0?0:u>X?Tt((u-X)/ut):0,M=t.spread??1,O=Q[r],l=s>=0?O:Q[(r+1)%a],i=160,p=[];for(let w=0;w<i;w++){let P=w/i,v=O(P),R=l(P);p.push([(v[0]+(R[0]-v[0])*c)*M,(v[1]+(R[1]-v[1])*c)*M])}let m=[],b=0;for(let w=0;w<i;w++){let P=p[w],v=p[(w+1)%i],R=Math.hypot(v[0]-P[0],v[1]-P[1]);m.push(R),b+=R}let h=$t(t.iconD??1),g=(t.rDot??.021)*1.35*M,y=1+.02*Math.sin(u*3.1),f=[],d=n/2,x=0,S=0;for(let w=0;w<h;w++){let P=w/h*b;for(;S+m[x]<P&&x<i-1;)S+=m[x],x++;let v=p[x],R=p[(x+1)%i],k=m[x]?Math.min(1,(P-S)/m[x]):0,D=(v[0]+(R[0]-v[0])*k)*y,C=(v[1]+(R[1]-v[1])*k)*y;f.push({x:d+D*n,y:d+C*n,z:0,r:Math.max(.35,g*n),white:.1})}return q(f,[],t.rMin)},Kt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.82,r=j(e*.12,.3,a,o,1),u=$(n,t.rsPow??.6),c=[],M=t.orbitN??12,O=t.ghostN??40,l=t.particles??3;for(let i=0;i<M;i++){let p=_(i,1.7),m=_(i,5.2),b=_(i,8.9),h=s*(.45+.52*p),g=p*2*Math.PI,y=Math.acos(2*m-1),f=Math.sin(y)*Math.cos(g),d=Math.cos(y),x=Math.sin(y)*Math.sin(g),S=-d,w=f,P=0,v=Math.max(1e-6,Math.sqrt(S*S+w*w));S/=v,w/=v;let R=d*P-x*w,k=x*S-f*P,D=f*w-d*S,C=(.25+.55*b)*(b>.5?1:-1);for(let E=0;E<O;E++){let z=E/O*2*Math.PI,[F,N,L]=r((S*Math.cos(z)+R*Math.sin(z))*h,(w*Math.cos(z)+k*Math.sin(z))*h,(P*Math.cos(z)+D*Math.sin(z))*h),B=(L/h+1)/2;c.push({x:F,y:N,z:L,r:(t.ghostR??.9)*u,white:.72,a:(t.ghostA??.5)*(.4+.6*B)})}for(let E=0;E<l;E++){let z=e*C+E/l*2*Math.PI+m*6,[F,N,L]=r((S*Math.cos(z)+R*Math.sin(z))*h,(w*Math.cos(z)+k*Math.sin(z))*h,(P*Math.cos(z)+D*Math.sin(z))*h),B=(L/h+1)/2;c.push({x:F,y:N,z:L,r:((t.partR??1.2)+(t.partRDepth??1.6)*B)*u,white:.3-.22*B})}}return q(c,[],t.rMin)},st=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.78,r=t.spin??1,u=.3,c=j(e*.1*r,u,a,o,1),M=$(n,t.rsPow??.6),O=[],l=t.ghostN??150;for(let D=0;D<l;D++){let C=J(D,l),[E,z,F]=c(C[0]*s,C[1]*s,C[2]*s),N=(F/s+1)/2;O.push({x:E,y:z,z:F,r:.8*M,white:.78,a:.1+.22*N})}let i=e*.24*r,p=t.faceOn?-u:.55+.3*Math.sin(e*.18)*r,m=Math.cos(i),b=0,h=Math.sin(i),g=-h*Math.sin(p),y=Math.cos(p),f=m*Math.sin(p),d=b*f-h*y,x=h*g-m*f,S=m*y-b*g,w=.23*(t.wobMul??1),P=t.faceOn?s/(1+.85*w):s,v=t.lanes??5,R=t.segs??88,k=Math.max(1,Math.round(v*(t.bandMul??1)));for(let D=0;D<k;D++){let C=(D-(k-1)/2)*.075,E=Math.abs(D-(k-1)/2)/Math.max(1,(k-1)/2);for(let z=0;z<R;z++){let F=z/R*2*Math.PI,N=(.16*Math.sin(F*3-e*1.7+D*.22)+.07*Math.sin(F*5+e*1.1))*(t.wobMul??1),L=t.faceOn?1+N:1,B=t.faceOn?C:C+N,A=m*Math.cos(F)+g*Math.sin(F)+d*B,I=b*Math.cos(F)+y*Math.sin(F)+x*B,T=h*Math.cos(F)+f*Math.sin(F)+S*B,W=Math.sqrt(A*A+I*I+T*T),K=P*L,[wt,Ot,et]=c(A/W*K,I/W*K,T/W*K),G=(et/s+1)/2;O.push({x:wt,y:Ot,z:et,r:((t.rBase??1.1)+(t.rDepth??1.7)*G)*(1-.25*E)*M,white:.52-.44*G+.18*E,a:.4+.6*G})}}return q(O,[],t.rMin)},Yt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.8*(t.spread??1),r=j(e*.12,.32,a,o,s),u=$(n,t.rsPow??.6),c=t.nodeN??30,M=t.thr??.72,O=t.nodeR??1.4,l=t.nodeRDepth??1.8,i=[];for(let h=0;h<c;h++){let g=J(h,c),y=g[0]+.3*(V(h*.31+9,e*.24)-.5)*2,f=g[1]+.3*(V(h*.53+27,e*.21)-.5)*2,d=g[2]+.3*(V(h*.77+55,e*.27)-.5)*2,x=Math.sqrt(y*y+f*f+d*d);i.push([y/x,f/x,d/x])}let p=[],m=[];for(let h=0;h<c;h++)for(let g=h+1;g<c;g++){let y=i[h][0]-i[g][0],f=i[h][1]-i[g][1],d=i[h][2]-i[g][2],x=Math.sqrt(y*y+f*f+d*d);if(x>=M)continue;let[S,w,P]=r(i[h][0],i[h][1],i[h][2]),[v,R,k]=r(i[g][0],i[g][1],i[g][2]),D=((P+k)/2+1)/2;p.push({x1:S,y1:w,x2:v,y2:R,white:.42,a:(1-x/M)*(.3+.55*D),w:Math.max(.6,(t.lineW??.8)*u)})}for(let h=0;h<c;h++){let[g,y,f]=r(i[h][0],i[h][1],i[h][2]),d=(f+1)/2,x=1+.25*Math.sin(e*1.4+h*2.7);m.push({x:g,y,z:f,r:(O+l*d)*x*u,white:.55-.45*d})}let b=t.signals??5;for(let h=0;h<b;h++){let g=Math.floor(e*.55+h*7.31),y=Math.floor(_(g,h*3.1+1.7)*c),f=Math.floor(_(g,h*5.7+4.2)*c);if(y===f)continue;let d=at(e*.55+h*7.31),x=U(i[y][0],i[f][0],d),S=U(i[y][1],i[f][1],d),w=U(i[y][2],i[f][2],d),P=Math.max(1e-6,Math.sqrt(x*x+S*S+w*w)),[v,R,k]=r(x/P,S/P,w/P),D=(k+1)/2;m.push({x:v,y:R,z:k,r:(O*1.5+l*D)*u,white:.05,a:.5+.5*D})}return q(m,p,t.rMin)},H={orbits:Kt,globe:Nt,rubik:Bt,wave:Lt,web:Yt,braid:It,ribbon:st,ring:st,morph:Wt},Ht=Object.fromEntries(Object.entries(H).map(([n,e])=>[n,(t,a,o,s,r)=>ht(t,e(a,o,r),s)])),pt={working:\"orbits\",searching:\"globe\",solving:\"rubik\",listening:\"wave\",connecting:\"web\",weaving:\"braid\",composing:\"ribbon\",breathing:\"ring\",shaping:\"morph\"},Gt={orbits:{64:{speed:1.885,count:1,size:1},32:{speed:2.9072,count:.4251,size:1.6849},20:{speed:3.9,count:.238,size:2.4}},globe:{64:{speed:2.015,count:.42,size:1.15,extra:{scanMul:4.08,dimBase:.45}},32:{speed:2.3803,count:.1839,size:1.4769,extra:{scanMul:4.2301,dimBase:.45}},20:{speed:2.665,count:.105,size:1.75,extra:{scanMul:4.335,dimBase:.45}}},rubik:{64:{speed:1.82,count:.35,size:1.05},32:{speed:1.8964,count:.1537,size:1.4951},20:{speed:1.95,count:.088,size:1.9}},wave:{64:{speed:4.388,count:.341,size:1},32:{speed:4.1512,count:.169,size:1.3232},20:{speed:3.998,count:.105,size:1.6}},web:{64:{speed:3.315,count:1.35,size:.95},32:{speed:5.0104,count:.4942,size:1.2571},20:{speed:6.63,count:.25,size:1.52}},braid:{64:{speed:1.625,count:.5,size:1},32:{speed:2.2234,count:.2056,size:1.2011},20:{speed:2.75,count:.1125,size:1.36}},ribbon:{64:{speed:2.34,count:.25,size:.85,extra:{spin:0,bandMul:3.9,wobMul:1}},32:{speed:2.7776,count:.0969,size:.9766,extra:{spin:0,bandMul:4.49,wobMul:1}},20:{speed:3.12,count:.051,size:1.073,extra:{spin:0,bandMul:4.94,wobMul:1}}},ring:{64:{speed:3.24,count:.25,size:.956,extra:{spin:0,bandMul:3.627,wobMul:.368}},32:{speed:3.5517,count:.0678,size:1.31,extra:{spin:0,bandMul:3.8265,wobMul:.4751}},20:{speed:3.78,count:.028,size:1.622,extra:{spin:0,bandMul:3.968,wobMul:.565}}},morph:{64:{speed:2.405,count:.702,size:.395,extra:{spread:1.45}},32:{speed:2.2057,count:.5937,size:.6916,extra:{spread:1.45}},20:{speed:2.08,count:.53,size:1.011,extra:{spread:1.45}}}},ot=new Map;function Z(n,e){let t=`${n}-${e}`,a=ot.get(t);if(a)return a;let o=pt[n],s=Gt[o][e],r={...zt[o]};s.count!==1&&(r=Rt(r,s.count)),s.size!==1&&(r=Dt(r,s.size)),s.extra&&(r={...r,...s.extra});let u={mode:o,speed:s.speed,opts:r};return ot.set(t,u),u}var dt={ribbon:{speed:.55,tilt:.15},nadia:{speed:.55,tilt:.15},sofia:{speed:.55,tilt:-.15},lattice:{speed:.28,tilt:-.12},orbit:{speed:.7,tilt:.2},globe:{speed:.35,tilt:-.16},network:{speed:.55,tilt:.1},braid:{speed:.65,tilt:-.2},morph:{speed:.9,tilt:.12}};function tt(n){return dt[n].speed}function Mt(n,e){return{idle:1,working:1,thinking:1,waiting:0,blocked:0,done:.65}[n]*tt(e)}var Ut=1.6;function ft(n,e){return n!==\"thinking\"&&n!==\"working\"?1:1-.55*((1-Math.cos(e*Math.PI*2/Ut))/2)}function bt(n,e,t){let a=dt[n],o=.82,s=.82,r=0,u=0,c=0,M=0,O=1;if(e===\"idle\"){let l=Math.sin(t*Math.PI/2);o+=l*.01,s+=l*.01,r=-l*.004}else if(e===\"waiting\")o=.8,s=.84,r=-.015,O=.75;else if(e===\"blocked\"){let l=Math.min(1,t/.25),i=Math.sin(l*Math.PI);o=.8+i*.015,s=.82-l*.08,r=l*.025-i*.018,c=a.tilt*l*.4,O=1-l*.4}else if(e===\"done\"){if(t<.18){let l=Math.sin(Math.PI*t/.18);o+=.03*l,s-=.04*l,r=.012*l}else if(t<1.3){let l=(t-.18)/1.12;r=-.07*Math.sin(Math.PI*l),o+=.025*Math.sin(Math.PI*l),s+=.035*Math.sin(Math.PI*l),c=Math.sin(l*Math.PI*2)*.07}}return{sx:o,sy:s,x:u,y:r,rotation:c,split:M,opacity:O}}function nt(n,e,t,a,o,s,r,u=1){if(!(e!==\"working\"&&e!==\"thinking\"&&e!==\"done\")){if(n.save(),e===\"thinking\"){if(r===\"front\")for(let c=0;c<3;c++){let M=o?.5:(1+Math.cos(a*Math.PI*2/3.6-c*Math.PI*2/3))/2,O=s[c%s.length];O!==void 0&&(n.fillStyle=O),n.globalAlpha=(.65+M*.35)*u,n.beginPath(),n.arc(t*(.5+(c-1)*.09),t*.08,Math.max(1,t*(.022+M*.005)),0,Math.PI*2),n.fill()}}else if(e===\"working\"||!o&&a<3.1){let c=e===\"done\"?3:1;for(let M=0;M<c;M++){let O=e===\"done\"?(a-M*.38)/2.2:0;if(O<0||O>1)continue;let l=e===\"done\"?Math.sin(O*Math.PI):1,i=(o?.8:a*Math.PI*2/7.2)+M*2.1,p=Math.PI*1.4,m=-.38+M*.4,b=t*(.44+O*.03),h=t*(.19+O*.11),g=f=>{let d=Math.cos(f)*b,x=Math.sin(f)*h;return[t/2+d*Math.cos(m)-x*Math.sin(m),t/2+d*Math.sin(m)+x*Math.cos(m)]},y=n.createLinearGradient(t*.1,t*.7,t*.9,t*.3);s.forEach((f,d)=>y.addColorStop(d/Math.max(1,s.length-1),f)),n.strokeStyle=y,n.lineCap=\"butt\";for(let f=0;f<100;f++){let d=f/100,x=i-p+p*d,S=Math.sin(x)>=0;if(S!==(r===\"front\"))continue;let w=Math.sin(Math.PI*(.04+d*.92));n.globalAlpha=l*(S?.92:.55)*(.25+w*.75)*u,n.lineWidth=Math.max(.65,t*.027*w),n.beginPath(),n.moveTo(...g(x)),n.lineTo(...g(x+p/100)),n.stroke()}}}n.restore()}}var Vt={orbit:\"working\",globe:\"searching\",lattice:\"solving\",network:\"connecting\",braid:\"weaving\",ribbon:\"composing\",morph:\"shaping\"},Qt={plain:{alpha:1,radius:1},\"over-picture\":{alpha:2.3,radius:1.9}},mt=[\"--nc-identity-azzurro\",\"--nc-identity-verde\",null,\"--nc-identity-rosso\"],yt=[\"--nc-acqua-700\",\"--nc-viola-700\",\"--nc-warning\",\"--nc-rosso-700\"],Xt=[...yt,...mt.filter(n=>n!==null)],Jt=[\"--nc-identity-cobalto\",\"--nc-identity-giallo\",null,\"--nc-identity-arancio\"],Zt={nadia:mt,sofia:Jt};function tn(n,e){let t=1-2*(n+.5)/e,a=Math.sqrt(1-t*t),o=n*Math.PI*(3-Math.sqrt(5));return[a*Math.cos(o),t,a*Math.sin(o)]}function gt(n,e,t){let a=n/2,o=n/2*.78,s=t.spin??1,r=j(e*.1*s,.3,a,a,1),u=$(n,t.rsPow??.6),c=[],M=t.ghostN??150;for(let v=0;v<M;v++){let[R,k,D]=tn(v,M),[C,E,z]=r(R*o,k*o,D*o);c.push({x:C,y:E,z,r:.8*u,white:.78,a:.1+.22*((z/o+1)/2)})}let O=e*.24*s,l=t.faceOn?-.3:.55+.3*Math.sin(e*.18)*s,[i,p,m]=[Math.cos(O),0,Math.sin(O)],[b,h,g]=[-m*Math.sin(l),Math.cos(l),i*Math.sin(l)],[y,f,d]=[p*g-m*h,m*b-i*g,i*h-p*b],x=t.wobMul??1,S=t.faceOn?o/(1+.85*.23*x):o,w=t.segs??88,P=Math.max(1,Math.round((t.lanes??5)*(t.bandMul??1)));for(let v=0;v<P;v++){let R=(v-(P-1)/2)*.075,k=Math.abs(v-(P-1)/2)/Math.max(1,(P-1)/2);for(let D=0;D<w;D++){let C=D/w*2*Math.PI,E=(.16*Math.sin(C*3-e*1.7+v*.22)+.07*Math.sin(C*5+e*1.1))*x,z=t.faceOn?1+E:1,F=t.faceOn?R:R+E,N=i*Math.cos(C)+b*Math.sin(C)+y*F,L=p*Math.cos(C)+h*Math.sin(C)+f*F,B=m*Math.cos(C)+g*Math.sin(C)+d*F,A=Math.sqrt(N*N+L*L+B*B),[I,T,W]=r(N/A*S*z,L/A*S*z,B/A*S*z),K=(W/o+1)/2;c.push({x:I,y:T,z:W,r:((t.rBase??1.1)+(t.rDepth??1.7)*K)*(1-.25*k)*u,white:.08+.1*k,a:.55+.45*K,stripe:Math.min(3,Math.floor(v/P*4))})}}return q(c,[],t.rMin)}function nn(n,e){for(let t of n.dots)t.x=e-t.x;return n}function en(n,e){let{form:t,size:a,seconds:o,color:s,state:r,age:u,reduced:c,breath:M,celebrationColors:O,stripeColors:l}=e,i=Qt[e.presence],p=Z(Vt[t===\"nadia\"||t===\"sofia\"?\"ribbon\":t],a<=32?20:64),m=t===\"nadia\"?gt(a,o,p.opts):t===\"sofia\"?nn(gt(a,o,p.opts),a):H[p.mode](a,o,p.opts);n.clearRect(0,0,a,a);let b=bt(t,e.motion===\"ambient\"?\"idle\":r,c?r===\"done\"?2:.6:u),h=c?.8:u/(r===\"done\"?.575:.2875),g=(d,x)=>{let S=(d-a/2)*b.sx,w=(x-a/2)*b.sy;return[a/2+S*Math.cos(b.rotation)-w*Math.sin(b.rotation)+(b.x+Math.sign(S)*b.split)*a,a/2+S*Math.sin(b.rotation)+w*Math.cos(b.rotation)+b.y*a]},y=b.opacity*M;e.motion===\"status\"&&nt(n,r,a,h,c,O,\"back\",M),n.fillStyle=s,n.strokeStyle=s;for(let d of m.lines)n.globalAlpha=Math.min(1,Math.max(0,(1-d.white)*(d.a??1)*y*i.alpha)),n.lineWidth=d.w*i.radius,n.beginPath(),n.moveTo(...g(d.x1,d.y1)),n.lineTo(...g(d.x2,d.y2)),n.stroke();let f=m.dots;for(let d of f)n.fillStyle=d.stripe===void 0?s:l[d.stripe]??s,n.globalAlpha=Math.min(1,Math.max(0,(1-d.white)*(d.a??1)*y*i.alpha)),n.beginPath(),n.arc(...g(d.x,d.y),d.r*i.radius,0,Math.PI*2),n.fill();n.globalAlpha=1,e.motion===\"status\"&&nt(n,r,a,h,c,O,\"front\",M)}function xt(n,e){let{form:t,presence:a=\"plain\"}=e,o=n.getContext(\"2d\");if(!o)return{destroy(){},setPaused(A){},setState(A){}};let s=window.matchMedia(\"(prefers-reduced-motion: reduce)\"),r=e.paused??!1,u=!0,c=!1,M=0,O=.6,l=0,i=0,p=e.state??\"idle\",m=e.motion??\"status\",b=null,h=0,g=1,y=e.size,f=getComputedStyle(n).color,d=[f],x=[f],S=\"\";function w(){let A=n.getBoundingClientRect(),I=Math.min(A.width,A.height);return I>0?I:e.size}function P(){!o||c||!n.isConnected||(o.setTransform(g,0,0,g,0,0),en(o,{form:t,size:y,seconds:O,color:f,state:p,age:l,reduced:s.matches,breath:s.matches?ft(p,i):1,presence:a,motion:m,celebrationColors:d,stripeColors:x}))}function v(){return c||!n.isConnected||!u||document.hidden||r?!1:s.matches?m===\"status\"&&(p===\"thinking\"||p===\"working\"):m===\"ambient\"?!0:p!==\"waiting\"&&!(p===\"blocked\"&&l>=.3)}function R(A){if(M=0,!!v()){if(b!==null){let I=Math.min((A-b)/1e3,.1);s.matches?i+=I:(O+=I*(m===\"ambient\"?tt(t):Mt(p,t)),m===\"status\"&&(l+=I*(p===\"done\"?.575:.2875)),p===\"done\"&&l>=1.8&&(p=\"idle\",l=0))}b=A,A-h>=1e3/30&&(P(),h=A),M=requestAnimationFrame(R)}}function k(){cancelAnimationFrame(M),M=0,b=null,P(),v()&&(M=requestAnimationFrame(R))}function D(A){let I=document.createElement(\"span\");I.hidden=!0,I.style.color=A,(n.parentElement??document.body).append(I);let T=getComputedStyle(I).color;return I.remove(),T||f}function C(A,I){return[I,window.devicePixelRatio||1,A.color,...Xt.map(T=>A.getPropertyValue(T))].join(\"|\")}function E(){C(getComputedStyle(n),w())!==S&&z()}function z(){if(c||!n.isConnected)return;y=w();let A=Math.max(1,Math.round(y*Math.min(window.devicePixelRatio||1,2)));n.width=A,n.height=A,g=A/y;let I=getComputedStyle(n);S=C(I,y),f=I.color,d=yt.map(T=>D(`color-mix(in oklch, ${I.getPropertyValue(T).trim()||f} 75%, white)`)),x=(Zt[t]??[]).map(T=>T&&I.getPropertyValue(T).trim()||f),k()}let F=new IntersectionObserver(([A])=>{u=A?.isIntersecting??!1,k()});F.observe(n);let N=new MutationObserver(E);for(let A=n;A;A=A.parentElement)N.observe(A,{attributes:!0,attributeFilter:[\"class\",\"style\",\"data-theme\"]});let L=new ResizeObserver(()=>{Math.abs(w()-y)>=.5&&z()});L.observe(n);function B(A){A.propertyName===\"color\"&&A.target instanceof Node&&A.target.contains(n)&&E()}return document.addEventListener(\"transitionend\",B,!0),s.addEventListener(\"change\",k),document.addEventListener(\"visibilitychange\",k),window.addEventListener(\"resize\",E),z(),{setState(A){p=A,l=0,i=0,k()},setPaused(A){r=A,k()},destroy(){c=!0,cancelAnimationFrame(M),F.disconnect(),N.disconnect(),L.disconnect(),document.removeEventListener(\"transitionend\",B,!0),s.removeEventListener(\"change\",k),document.removeEventListener(\"visibilitychange\",k),window.removeEventListener(\"resize\",E)}}}for(let n of document.querySelectorAll(\"canvas[data-agent-orb]\"))xt(n,{form:n.dataset.agentOrb,size:Number(n.dataset.size),state:n.dataset.state??\"idle\"});})();\n";
1
+ export const agentOrbScript = "\"use strict\";(()=>{function et(t,o,e){return t+(o-t)*e}function St(t){return t-Math.floor(t)}function ot(t,o){let e=Math.floor(t),s=Math.floor(o),n=t-e,r=o-s;n=n*n*(3-2*n),r=r*r*(3-2*r);let a=G(e,s),p=G(e+1,s),f=G(e,s+1),m=G(e+1,s+1);return a+(p-a)*n+(f-a)*r+(a-p-f+m)*n*r}function G(t,o){let e=Math.sin(t*12.9898+o*78.233)*43758.5453;return e-Math.floor(e)}function st(t,o){let e=Math.PI*(3-Math.sqrt(5)),s=1-2*(t+.5)/o,n=Math.sqrt(1-s*s),r=t*e;return[n*Math.cos(r),s,n*Math.sin(r)]}function _t(t,o){return Math.atan2(Math.sin(t-o),Math.cos(t-o))}function W(t,o,e,s,n){let r=Math.sin(o),a=Math.cos(o),p=Math.sin(t),f=Math.cos(t);return(m,g,d)=>{let c=m*f+d*p,h=-m*p+d*f,M=g*a-h*r,x=g*r+h*a;return[e+c*n,s-M*n,x]}}function Dt(t,o,e,s){if(!s){let r=Math.round((e?1-t:t)*255);return`rgba(${r},${r},${r},${o})`}let n=r=>Math.round(e?r*(1-t):r+(255-r)*t);return`rgba(${n(s.r)},${n(s.g)},${n(s.b)},${o})`}function At(t,o,e,s=.3,n){for(let r of o){let a=r.a??1,p=Math.min(1,Math.max(0,r.white));t.fillStyle=Dt(p,a,e,n),t.beginPath(),t.arc(r.x,r.y,r.r,0,Math.PI*2),t.fill()}}function wt(t,o,e,s){for(let n of o){let r=n.a??1,a=Math.min(1,Math.max(0,n.white));t.strokeStyle=Dt(a,r,e,s),t.lineWidth=n.w,t.beginPath(),t.moveTo(n.x1,n.y1),t.lineTo(n.x2,n.y2),t.stroke()}}function j(t,o,e=.3){let s=[];for(let n of t)(n.a??1)<.02||(n.r=Math.max(e,n.r),s.push(n));return s.sort((n,r)=>n.z-r.z),{dots:s,lines:o.filter(n=>(n.a??1)>=.02)}}function Pt(t,o,e,s){o.lines.length&&wt(t,o.lines,e,s),At(t,o.dots,e,.3,s)}function _(t,o){return(t/300)**o}var Kt=[[\"latRings\",\"lonDensity\"],[\"rings\",\"lonDensity\"],[\"lanes\",\"segs\"]],$t=[\"orbitN\",\"ghostN\",\"nodeN\",\"strandN\",\"signals\"],Ht=[\"iconD\"],Ut=[\"rBase\",\"rDepth\",\"rActive\",\"rDot\",\"ghostR\",\"partR\",\"partRDepth\",\"nodeR\",\"nodeRDepth\"];function Yt(t,o){let e={...t},s=new Set,n=Math.sqrt(o);for(let[r,a]of Kt){let p=e[r],f=e[a];p!=null&&f!=null&&!s.has(r)&&!s.has(a)&&(e[r]=Math.max(2,Math.round(p*n)),e[a]=Math.max(2,Math.round(f*n)),s.add(r),s.add(a))}for(let r of $t){let a=e[r];a!=null&&a!==0&&!s.has(r)&&(e[r]=Math.max(1,Math.round(a*o)))}for(let r of Ht){let a=e[r];a!=null&&(e[r]=Math.max(.02,a*o))}return e}function Zt(t,o){let e={...t};for(let s of Ut){let n=e[s];n!=null&&(e[s]=n*o)}return e.rSizeMul=(e.rSizeMul??1)*o,e}var Jt={globe:{latRings:17,lonDensity:44,rBase:.6,rDepth:1.7,rBoost:1,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},orbits:{orbitN:12,ghostN:40,ghostR:.9,ghostA:.5,particles:3,partR:1.2,partRDepth:1.6,rsPow:.6,rMin:.3},rubik:{latRings:15,lonDensity:40,moveCount:14,rBase:.6,rDepth:1.7,rActive:.3,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},wave:{rings:15,lonDensity:40,rBase:.6,rDepth:1.7,rsPow:.6,rMin:.3},web:{nodeN:30,thr:.72,signals:5,nodeR:1.4,nodeRDepth:1.8,lineW:.8,rsPow:.6,rMin:.3},braid:{strandN:52,turns:3,ghostN:150,rBase:1.2,rDepth:1.8,rsPow:.6,rMin:.3},ribbon:{lanes:5,segs:88,ghostN:150,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},ring:{lanes:5,segs:88,ghostN:0,faceOn:1,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},morph:{rDot:.021,iconD:1,rMin:.25}},Qt=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.76,a=W(o*.4,.3,s,n,1),p=_(t,e.rsPow??.6),f=[],m=e.ghostN??150;for(let c=0;c<m;c++){let h=st(c,m),[M,x,i]=a(h[0]*r,h[1]*r,h[2]*r),S=(i/r+1)/2;f.push({x:M,y:x,z:i,r:.8*p,white:.78,a:.1+.22*S})}let g=e.strandN??52,d=e.turns??3;for(let c=0;c<3;c++){let h=c/3*2*Math.PI;for(let M=0;M<g;M++){let x=(St(M/g+o*.045)*2-1)*.96,i=Math.sqrt(Math.max(0,1-x*x)),S=Math.min(1,(1-Math.abs(x))/.1),y=x*Math.PI*d+h,b=1+.075*Math.sin(x*Math.PI*d*2+h*2+o*.8),A=i*r*b,[v,w,u]=a(Math.cos(y)*A,x*r*b,Math.sin(y)*A),l=(u/r+1)/2;f.push({x:v,y:w,z:u,r:((e.rBase??1.2)+(e.rDepth??1.8)*l)*p,white:.55-.45*l,a:S*(.45+.55*l)})}}return j(f,[],e.rMin)};function Xt(t,o,e,s){let n=2*o*e+s,r=t%n,a=new Array(o).fill(0),p=-1;if(r<2*o*e){let f=Math.floor(r/e),m=(r-f*e)/e,d=1-(1-Math.min(1,m/.7))**3;if(f<o){for(let c=0;c<f;c++)a[c]=1;a[f]=d,p=f}else{let c=2*o-1-f;for(let h=0;h<c;h++)a[h]=1;a[c]=1-d,p=c}}return{amount:a,active:p}}function te(t,o,e){let[s,n,r]=t,a=!1;for(let p=0;p<o.length;p++){if(e.amount[p]<=0)continue;let f=o[p],m=f.axis===0?s:f.axis===1?n:r;if(m<f.lo||m>=f.hi)continue;p===e.active&&(a=!0);let g=f.ang*e.amount[p],d=Math.cos(g),c=Math.sin(g);if(f.axis===0){let h=n*d-r*c;r=n*c+r*d,n=h}else if(f.axis===1){let h=s*d+r*c;r=-s*c+r*d,s=h}else{let h=s*d-n*c;n=s*c+n*d,s=h}}return[s,n,r,a]}function ee(t){let o=[];for(let e=0;e<t;e++){let s=Math.min(2,Math.floor(G(e,2.3)*3)),n=-1+.5*Math.min(3,Math.floor(G(e,5.9)*4)),r=G(e,7.7)<.5?1:-1;o.push({axis:s,lo:n,hi:n+.5,ang:r*Math.PI/2})}return o}var oe=(t,o,e)=>{let n=t/2,r=t/2,a=t/2*.82,p=.4+.06*Math.sin(o*.35),f=W(o*.5,p,n,r,a),m=o*(.5+(1.7-.5)*(e.scanMul??1)),g=_(t,e.rsPow??.6),d=e.dimBase??1,c=[],h=e.latRings??17,M=e.lonDensity??44;for(let x=0;x<=h;x++){let i=-Math.PI/2+x/h*Math.PI,S=Math.cos(i),y=Math.sin(i),b=Math.max(1,Math.round(Math.abs(S)*M));for(let A=0;A<b;A++){let v=A/b*2*Math.PI,[w,u,l]=f(S*Math.cos(v),y,S*Math.sin(v)),D=(l+1)/2,P=_t(v+o*.5,m),E=Math.exp(-(P*P)/.18)*Math.max(0,l);c.push({x:w,y:u,z:l,r:((e.rBase??.6)+(e.rDepth??1.7)*D+(e.rBoost??1)*E)*g,white:(e.inkFar??.62)-(e.inkSpan??.54)*D,a:d+(1-d)*Math.min(1,E)})}}return j(c,[],e.rMin)},ne=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=W(o*.55,.35+.1*Math.sin(o*.9),s,n,r),p=_(t,e.rsPow??.6),f=e.moveCount??14,m=ee(f),g=Xt(o,f,.42,1.2),d=[],c=e.latRings??15,h=e.lonDensity??40;for(let M=0;M<=c;M++){let x=-Math.PI/2+M/c*Math.PI,i=Math.cos(x),S=Math.sin(x),y=Math.max(1,Math.round(Math.abs(i)*h));for(let b=0;b<y;b++){let A=b/y*2*Math.PI,[v,w,u,l]=te([i*Math.cos(A),S,i*Math.sin(A)],m,g),[D,P,E]=a(v,w,u),T=(E+1)/2;d.push({x:D,y:P,z:E,r:((e.rBase??.6)+(e.rDepth??1.7)*T+(l?e.rActive??.3:0))*p,white:(e.inkFar??.62)-(e.inkSpan??.54)*T-(l?.14:0)})}}return j(d,[],e.rMin)},re=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.874,a=W(o*.18,.38,s,n,1),p=_(t,e.rsPow??.6),f=[],m=e.rings??15,g=e.lonDensity??40;for(let d=0;d<=m;d++){let c=-Math.PI/2+d/m*Math.PI,h=Math.cos(c),M=Math.sin(c),x=.62*Math.sin(o*2.1-d*.52)+.38*Math.sin(o*1.27+d*.83),i=r*(.88+.105*x),S=Math.max(1,Math.round(Math.abs(h)*g));for(let y=0;y<S;y++){let b=y/S*2*Math.PI,[A,v,w]=a(h*Math.cos(b)*i,M*i,h*Math.sin(b)*i),u=(w/r+1)/2,l=Math.max(0,x);f.push({x:A,y:v,z:w,r:((e.rBase??.6)+(e.rDepth??1.7)*u)*(1+.4*l)*p,white:.66-.56*u-.1*l})}}return j(f,[],e.rMin)};function se(t){return t*t*(3-2*t)}function Ot(t){let o=t.length,e=[],s=0;for(let n=0;n<o;n++){let r=t[n],a=t[(n+1)%o],p=Math.hypot(a[0]-r[0],a[1]-r[1]);e.push(p),s+=p}return n=>{let r=n*s,a=0;for(;r>e[a]&&a<o-1;)r-=e[a],a++;let p=t[a],f=t[(a+1)%o],m=e[a]?Math.min(1,r/e[a]):0;return[p[0]+(f[0]-p[0])*m,p[1]+(f[1]-p[1])*m]}}var ae=t=>{let o=-Math.PI/2+t*2*Math.PI;return[Math.cos(o)*.24,Math.sin(o)*.24]},ie=Ot([[0,-.26],[.24,.16],[-.24,.16]]),ce=Ot([[0,-.2],[.2,-.2],[.2,.2],[-.2,.2],[-.2,-.2]]),nt=[ae,ie,ce];function le(t){return Math.max(6,Math.round(34*t))}var rt=1.4,Et=.9,Y=rt+Et,pe=(t,o,e)=>{let s=nt.length,n=o%(Y*s),r=e.shape!=null&&e.shape>=0&&e.shape<s?Math.floor(e.shape):-1,a=r>=0?r:Math.floor(n/Y),p=r>=0?o%Y:n-a*Y,f=r>=0?0:p>rt?se((p-rt)/Et):0,m=e.spread??1,g=nt[a],d=r>=0?g:nt[(a+1)%s],c=160,h=[];for(let u=0;u<c;u++){let l=u/c,D=g(l),P=d(l);h.push([(D[0]+(P[0]-D[0])*f)*m,(D[1]+(P[1]-D[1])*f)*m])}let M=[],x=0;for(let u=0;u<c;u++){let l=h[u],D=h[(u+1)%c],P=Math.hypot(D[0]-l[0],D[1]-l[1]);M.push(P),x+=P}let i=le(e.iconD??1),S=(e.rDot??.021)*1.35*m,y=1+.02*Math.sin(p*3.1),b=[],A=t/2,v=0,w=0;for(let u=0;u<i;u++){let l=u/i*x;for(;w+M[v]<l&&v<c-1;)w+=M[v],v++;let D=h[v],P=h[(v+1)%c],E=M[v]?Math.min(1,(l-w)/M[v]):0,T=(D[0]+(P[0]-D[0])*E)*y,O=(D[1]+(P[1]-D[1])*E)*y;b.push({x:A+T*t,y:A+O*t,z:0,r:Math.max(.35,S*t),white:.1})}return j(b,[],e.rMin)},fe=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=W(o*.12,.3,s,n,1),p=_(t,e.rsPow??.6),f=[],m=e.orbitN??12,g=e.ghostN??40,d=e.particles??3;for(let c=0;c<m;c++){let h=G(c,1.7),M=G(c,5.2),x=G(c,8.9),i=r*(.45+.52*h),S=h*2*Math.PI,y=Math.acos(2*M-1),b=Math.sin(y)*Math.cos(S),A=Math.cos(y),v=Math.sin(y)*Math.sin(S),w=-A,u=b,l=0,D=Math.max(1e-6,Math.sqrt(w*w+u*u));w/=D,u/=D;let P=A*l-v*u,E=v*w-b*l,T=b*u-A*w,O=(.25+.55*x)*(x>.5?1:-1);for(let I=0;I<g;I++){let V=I/g*2*Math.PI,[R,N,L]=a((w*Math.cos(V)+P*Math.sin(V))*i,(u*Math.cos(V)+E*Math.sin(V))*i,(l*Math.cos(V)+T*Math.sin(V))*i),B=(L/i+1)/2;f.push({x:R,y:N,z:L,r:(e.ghostR??.9)*p,white:.72,a:(e.ghostA??.5)*(.4+.6*B)})}for(let I=0;I<d;I++){let V=o*O+I/d*2*Math.PI+M*6,[R,N,L]=a((w*Math.cos(V)+P*Math.sin(V))*i,(u*Math.cos(V)+E*Math.sin(V))*i,(l*Math.cos(V)+T*Math.sin(V))*i),B=(L/i+1)/2;f.push({x:R,y:N,z:L,r:((e.partR??1.2)+(e.partRDepth??1.6)*B)*p,white:.3-.22*B})}}return j(f,[],e.rMin)},yt=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.78,a=e.spin??1,p=.3,f=W(o*.1*a,p,s,n,1),m=_(t,e.rsPow??.6),g=[],d=e.ghostN??150;for(let T=0;T<d;T++){let O=st(T,d),[I,V,R]=f(O[0]*r,O[1]*r,O[2]*r),N=(R/r+1)/2;g.push({x:I,y:V,z:R,r:.8*m,white:.78,a:.1+.22*N})}let c=o*.24*a,h=e.faceOn?-p:.55+.3*Math.sin(o*.18)*a,M=Math.cos(c),x=0,i=Math.sin(c),S=-i*Math.sin(h),y=Math.cos(h),b=M*Math.sin(h),A=x*b-i*y,v=i*S-M*b,w=M*y-x*S,u=.23*(e.wobMul??1),l=e.faceOn?r/(1+.85*u):r,D=e.lanes??5,P=e.segs??88,E=Math.max(1,Math.round(D*(e.bandMul??1)));for(let T=0;T<E;T++){let O=(T-(E-1)/2)*.075,I=Math.abs(T-(E-1)/2)/Math.max(1,(E-1)/2);for(let V=0;V<P;V++){let R=V/P*2*Math.PI,N=(.16*Math.sin(R*3-o*1.7+T*.22)+.07*Math.sin(R*5+o*1.1))*(e.wobMul??1),L=e.faceOn?1+N:1,B=e.faceOn?O:O+N,q=M*Math.cos(R)+S*Math.sin(R)+A*B,K=x*Math.cos(R)+y*Math.sin(R)+v*B,k=i*Math.cos(R)+b*Math.sin(R)+w*B,C=Math.sqrt(q*q+K*K+k*k),z=l*L,[qt,Wt,bt]=f(q/C*z,K/C*z,k/C*z),tt=(bt/r+1)/2;g.push({x:qt,y:Wt,z:bt,r:((e.rBase??1.1)+(e.rDepth??1.7)*tt)*(1-.25*I)*m,white:.52-.44*tt+.18*I,a:.4+.6*tt})}}return j(g,[],e.rMin)},me=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.8*(e.spread??1),a=W(o*.12,.32,s,n,r),p=_(t,e.rsPow??.6),f=e.nodeN??30,m=e.thr??.72,g=e.nodeR??1.4,d=e.nodeRDepth??1.8,c=[];for(let i=0;i<f;i++){let S=st(i,f),y=S[0]+.3*(ot(i*.31+9,o*.24)-.5)*2,b=S[1]+.3*(ot(i*.53+27,o*.21)-.5)*2,A=S[2]+.3*(ot(i*.77+55,o*.27)-.5)*2,v=Math.sqrt(y*y+b*b+A*A);c.push([y/v,b/v,A/v])}let h=[],M=[];for(let i=0;i<f;i++)for(let S=i+1;S<f;S++){let y=c[i][0]-c[S][0],b=c[i][1]-c[S][1],A=c[i][2]-c[S][2],v=Math.sqrt(y*y+b*b+A*A);if(v>=m)continue;let[w,u,l]=a(c[i][0],c[i][1],c[i][2]),[D,P,E]=a(c[S][0],c[S][1],c[S][2]),T=((l+E)/2+1)/2;h.push({x1:w,y1:u,x2:D,y2:P,white:.42,a:(1-v/m)*(.3+.55*T),w:Math.max(.6,(e.lineW??.8)*p)})}for(let i=0;i<f;i++){let[S,y,b]=a(c[i][0],c[i][1],c[i][2]),A=(b+1)/2,v=1+.25*Math.sin(o*1.4+i*2.7);M.push({x:S,y,z:b,r:(g+d*A)*v*p,white:.55-.45*A})}let x=e.signals??5;for(let i=0;i<x;i++){let S=Math.floor(o*.55+i*7.31),y=Math.floor(G(S,i*3.1+1.7)*f),b=Math.floor(G(S,i*5.7+4.2)*f);if(y===b)continue;let A=St(o*.55+i*7.31),v=et(c[y][0],c[b][0],A),w=et(c[y][1],c[b][1],A),u=et(c[y][2],c[b][2],A),l=Math.max(1e-6,Math.sqrt(v*v+w*w+u*u)),[D,P,E]=a(v/l,w/l,u/l),T=(E+1)/2;M.push({x:D,y:P,z:E,r:(g*1.5+d*T)*p,white:.05,a:.5+.5*T})}return j(M,h,e.rMin)},Z={orbits:fe,globe:oe,rubik:ne,wave:re,web:me,braid:Qt,ribbon:yt,ring:yt,morph:pe},ue=Object.fromEntries(Object.entries(Z).map(([t,o])=>[t,(e,s,n,r,a)=>Pt(e,o(s,n,a),r)])),kt={working:\"orbits\",searching:\"globe\",solving:\"rubik\",listening:\"wave\",connecting:\"web\",weaving:\"braid\",composing:\"ribbon\",breathing:\"ring\",shaping:\"morph\"},he={orbits:{64:{speed:1.885,count:1,size:1},32:{speed:2.9072,count:.4251,size:1.6849},20:{speed:3.9,count:.238,size:2.4}},globe:{64:{speed:2.015,count:.42,size:1.15,extra:{scanMul:4.08,dimBase:.45}},32:{speed:2.3803,count:.1839,size:1.4769,extra:{scanMul:4.2301,dimBase:.45}},20:{speed:2.665,count:.105,size:1.75,extra:{scanMul:4.335,dimBase:.45}}},rubik:{64:{speed:1.82,count:.35,size:1.05},32:{speed:1.8964,count:.1537,size:1.4951},20:{speed:1.95,count:.088,size:1.9}},wave:{64:{speed:4.388,count:.341,size:1},32:{speed:4.1512,count:.169,size:1.3232},20:{speed:3.998,count:.105,size:1.6}},web:{64:{speed:3.315,count:1.35,size:.95},32:{speed:5.0104,count:.4942,size:1.2571},20:{speed:6.63,count:.25,size:1.52}},braid:{64:{speed:1.625,count:.5,size:1},32:{speed:2.2234,count:.2056,size:1.2011},20:{speed:2.75,count:.1125,size:1.36}},ribbon:{64:{speed:2.34,count:.25,size:.85,extra:{spin:0,bandMul:3.9,wobMul:1}},32:{speed:2.7776,count:.0969,size:.9766,extra:{spin:0,bandMul:4.49,wobMul:1}},20:{speed:3.12,count:.051,size:1.073,extra:{spin:0,bandMul:4.94,wobMul:1}}},ring:{64:{speed:3.24,count:.25,size:.956,extra:{spin:0,bandMul:3.627,wobMul:.368}},32:{speed:3.5517,count:.0678,size:1.31,extra:{spin:0,bandMul:3.8265,wobMul:.4751}},20:{speed:3.78,count:.028,size:1.622,extra:{spin:0,bandMul:3.968,wobMul:.565}}},morph:{64:{speed:2.405,count:.702,size:.395,extra:{spread:1.45}},32:{speed:2.2057,count:.5937,size:.6916,extra:{spread:1.45}},20:{speed:2.08,count:.53,size:1.011,extra:{spread:1.45}}}},vt=new Map;function at(t,o){let e=`${t}-${o}`,s=vt.get(e);if(s)return s;let n=kt[t],r=he[n][o],a={...Jt[n]};r.count!==1&&(a=Yt(a,r.count)),r.size!==1&&(a=Zt(a,r.size)),r.extra&&(a={...a,...r.extra});let p={mode:n,speed:r.speed,opts:a};return vt.set(e,p),p}var it=(t,o,e)=>e>o?o:e<t?t:e;var ct=()=>{};var $=t=>t*1e3,H=t=>t/1e3;var Tt=(t,o,e=10)=>{let s=\"\",n=Math.max(Math.round(o/e),2);for(let r=0;r<n;r++)s+=Math.round(t(r/(n-1))*1e4)/1e4+\", \";return`linear(${s.substring(0,s.length-2)})`};function J(t,o=50,e=2e4,s){let n=0,r=t.next(n);for(s?.push(r.value);!r.done&&n<e;)n+=o,r=t.next(n),s?.push(r.value);return n>=e?1/0:n}function Vt(t,o=100,e){let{keyframes:s,velocity:n}=t,r=s&&s[s.length-1]-s[0],a=e({...t,velocity:n&&r?n*o/r:n,keyframes:[0,o]}),p=Math.min(J(a),2e4);return{type:\"keyframes\",ease:f=>a.next(p*f).value/o,duration:H(p)}}var F={stiffness:100,damping:10,mass:1,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05},Ct=t=>t<0?1/Math.max(1+t,F.minDamping):Math.max(1-t,F.minDamping);function It(t,o){if(!(t>1))return 1;let e=Math.sqrt(t*t-1),s=t-e,n=t+e,r=2*e*Math.exp(-o)*(1+o);return Rt(a=>n*Math.exp(-s*a)-s*Math.exp(-n*a)-r,a=>Math.exp(-n*a)-Math.exp(-s*a),o)/o}function mt(t,o){return t*Math.sqrt(1-o*o)}var de=12;function Rt(t,o,e){let s=e;for(let n=1;n<de;n++)s=s-t(s)/o(s);return s}var pt=.001;function ge({duration:t=F.duration,bounce:o=F.bounce}){let e,s;ct(t<=$(F.maxDuration),\"Spring duration must be 10 seconds or less\",\"spring-duration-limit\");let n=Ct(o);t=it(F.minDuration,F.maxDuration,H(t)),n<1?(e=m=>{let g=m*n,d=g*t,c=mt(m,n),h=Math.exp(-d);return pt-g/c*h},s=m=>{let d=m*n*t,c=n*n*m*m*t,h=Math.exp(-d),M=mt(m*m,n);return(-e(m)+pt>0?-1:1)*-c*h/M}):(e=m=>{let g=Math.exp(-m*t),d=m*t+1;return-pt+g*d},s=m=>{let g=Math.exp(-m*t),d=-m*(t*t);return g*d});let r=5/t,a=Rt(e,s,r),p=a*It(n,a*t),f=p*p;return{stiffness:f,damping:n*2*Math.sqrt(f),duration:$(t)}}var ut=(t,o)=>(o?t>=0:t>0)&&t<1/0;function ft(t,o){if(ut(t,o))return t}function Me(t){let o=ft(t.stiffness),e=ft(t.damping,!0),s=ft(t.mass),n={...t,stiffness:o??F.stiffness,damping:e??F.damping,mass:s??F.mass,isResolvedFromDuration:!1,isTimeDefined:(o??e??s)===void 0&&(t.duration!==void 0||t.bounce!==void 0)};if(n.isTimeDefined){if(t.visualDuration){let r=Ct(t.bounce||0),a=2*Math.PI/(t.visualDuration*1.2)*It(r,2*Math.PI/1.2);n.stiffness=a*a,n.damping=2*r*Math.sqrt(n.stiffness)}else Object.assign(n,ge(n)),n.isResolvedFromDuration=!0;(!ut(n.stiffness)||!ut(n.damping,!0))&&(n.stiffness=F.stiffness,n.damping=F.damping)}return n}function U(t=F.visualDuration,o=F.bounce){let e=typeof t!=\"object\"?{visualDuration:t,keyframes:[0,1],bounce:o}:t,s=e.keyframes[0],n=e.keyframes[e.keyframes.length-1],r={done:!1,value:s},{stiffness:a,damping:p,mass:f,duration:m,isResolvedFromDuration:g,isTimeDefined:d}=Me({...e}),c=u=>d?0:-H(u),h=p/(2*Math.sqrt(a*f)),M=H(Math.sqrt(a/f)),x=h*M,i={target:n,delta:n-s,velocity:c(e.velocity||0)||0,restSpeed:0,restDelta:0},S=()=>{let u=Math.abs(i.delta)<5;i.restSpeed=e.restSpeed||(u?F.restSpeed.granular:F.restSpeed.default),i.restDelta=e.restDelta||(u?F.restDelta.granular:F.restDelta.default)};S();let y,b,A;if(h<1){let u=mt(M,h),l={A:0,sinC:0,cosC:0,t:-1,env:0,sin:0,cos:0};A=()=>{l.A=(i.velocity+x*i.delta)/u,l.sinC=x*l.A+i.delta*u,l.cosC=x*i.delta-l.A*u};let D=P=>{P!==l.t&&(l.t=P,l.env=Math.exp(-x*P),l.sin=Math.sin(u*P),l.cos=Math.cos(u*P))};y=P=>(D(P),i.target-l.env*(l.A*l.sin+i.delta*l.cos)),b=P=>(D(P),l.env*(l.sinC*l.sin+l.cosC*l.cos))}else if(h===1){y=l=>i.target-Math.exp(-M*l)*(i.delta+(i.velocity+M*i.delta)*l);let u={C:0};A=()=>{u.C=i.velocity+M*i.delta},b=l=>Math.exp(-M*l)*(M*u.C*l-i.velocity)}else{let u=M*Math.sqrt(h*h-1),l=x-u,D=x+u,P=d?1/0:300/u,E=(O,I)=>Math.exp(I>P?-O*P-x*(I-P):-O*I),T={S:0,F:0};A=()=>{let O=(i.velocity+x*i.delta)/u;T.S=(i.delta+O)/2,T.F=(i.delta-O)/2},y=O=>i.target-T.S*E(l,O)-T.F*E(D,O),b=O=>l*T.S*E(l,O)+D*T.F*E(D,O)}A();let v=g&&m||null,w={calculatedDuration:v,retarget:(u,l)=>{i.target=u[u.length-1],i.delta=i.target-u[0],i.velocity=c(l),e.restSpeed&&e.restDelta||S(),w.calculatedDuration=v,r.done=!1,A()},velocity:u=>$(b(u)),next:u=>{let l=y(u);if(g)r.done=u>=m;else{let D=$(b(u));r.done=Math.abs(D)<=i.restSpeed&&Math.abs(i.target-l)<=i.restDelta}return r.value=r.done?i.target:l,r},toString:()=>{let u=Math.min(J(w),2e4),l=Tt(D=>w.next(u*D).value,u,30);return u+\"ms \"+l},toTransition:()=>{}};return w}U.applyToOptions=t=>{let o=Vt(t,100,U);return t.ease=o.ease,t.duration=$(o.duration),t.type=\"keyframes\",t};var xe={ribbon:{speed:.55},nadia:{speed:.55},sofia:{speed:.55},lattice:{speed:.28},orbit:{speed:.7},globe:{speed:.35},network:{speed:.55},braid:{speed:.65},morph:{speed:.9}};function dt(t){return xe[t].speed}function Ft(t,o,e=0,s=gt){return{idle:.864,working:1,thinking:.55,waiting:0,blocked:0,done:e>=s.doneDuration?.72:.65}[t]*dt(o)}var be=1.6;function Nt(t,o){return t!==\"thinking\"&&t!==\"working\"?1:1-.55*((1-Math.cos(o*Math.PI*2/be))/2)}function X(t){let o=(p,f)=>{let m=t?.getPropertyValue(`--nc-duration-${p}`).trim()??\"\";return m?Number.parseFloat(m)*(m.endsWith(\"ms\")?.001:1):f},e=o(\"wait\",1.6),s=o(\"confirm\",.18),n=o(\"transition\",.24),r=p=>Math.round(e*p*1e3)/1e3,a=U({keyframes:[0,1],duration:n*2e3,bounce:.1});return{wait:e,confirm:s,transition:n,doneDuration:r(3),blockedDuration:r(1.25),gestureAge:p=>p*n*2/e,settle:(p,f=0)=>p<f?0:a.next((p-f)*1e3).value}}var gt=X(),Q=t=>Math.min(1,Math.max(0,t)),ht=t=>{let o=Q(t);return o*o*(3-2*o)};function Bt(t,o,e=gt,s=!1){let n=.82,r=.82,a=0,p=0,f=0;if(t===\"idle\"){let m=Math.sin((s?.6:o)*Math.PI*2/(e.wait*4));n+=m*.01,r+=m*.01,a=-m*.004}else if(!s&&t===\"waiting\"){let m=e.gestureAge(o),g=Math.sin(o*Math.PI*2/(e.wait*3)),d=Math.sin(Q(m/e.confirm)*Math.PI),c=e.settle(m,e.confirm*.55),h=1-d*.018+g*.006;n*=h,r*=h,a=-c*.018,f=-c*4.5*Math.PI/180}else if(!s&&t===\"blocked\"){let m=e.gestureAge(o),g=e.confirm*.85,d=ht(m/g)*(1-e.settle(m,g));n*=1-d*.018,r*=1+d*.012,p=-d*.034,a=d*.014,f=-d*4*Math.PI/180}else if(!s&&t===\"done\"){let m=o*1.3/(e.wait*2.25);if(m<.18){let g=Math.sin(Math.PI*m/.18);n+=.03*g,r-=.04*g,a=.012*g}else if(m<1.3){let g=(m-.18)/1.12;a=-.07*Math.sin(Math.PI*g),n+=.025*Math.sin(Math.PI*g),r+=.035*Math.sin(Math.PI*g),f=Math.sin(g*Math.PI*2)*.07}}return{sx:n,sy:r,x:p,y:a,rotation:f}}function ye(t,o,e,s,n,r,a){let p=a.gestureAge(s),f=n?1:ht((p-a.confirm*.35)/a.confirm),m=n?1:a.settle(p,a.confirm*.35),g=Math.max(7,Math.min(36,e*.26));if(t.save(),t.fillStyle=r,t.strokeStyle=r,t.globalAlpha=f*.95,t.translate(e/2,e/2),o===\"waiting\"){let d=n?0:a.settle(p,a.confirm*.55),c=n?0:Math.sin(s*Math.PI*2/(a.wait*3));t.translate(0,(1-m)*-.12*g),t.rotate(-d*2*Math.PI/180);let h=.94+m*.06;t.scale(h,h),t.scale(g/24,g/24);for(let[M,x]of[14,5].entries()){let i=n?1:a.settle(p,a.confirm*(M===0?.65:.2)),S=M===0?1:-1;t.save(),t.globalAlpha=f*.95*Q(i)*(n?1:.96+c*.04),t.translate(x-9.5+S*(1-i)*1.45*5,(1-i)*-.24*18),t.rotate(S*(1-i)*14*Math.PI/180),t.scale(1,1+(1-i)*.12),t.beginPath(),t.roundRect(-2.5,-9,5,18,1),t.fill(),t.restore()}}else{t.translate(0,(1-m)*-.1*g),t.rotate((1-m)*-12*Math.PI/180);let d=1+(1-m)*.18;t.scale(d,d),t.scale(g/24,g/24),t.lineWidth=Math.max(1.6,24/g),t.lineCap=\"round\",t.beginPath(),t.arc(0,0,10,0,Math.PI*2),t.stroke();let c=n?1:ht((p-a.confirm*.8)/a.confirm);if(t.beginPath(),t.moveTo(-7.071,-7.071),t.lineTo(-7.071+14.141*c,-7.071+14.142*c),t.stroke(),!n&&e>=40){let h=Q((p-a.confirm*.85)/a.transition);t.globalAlpha*=Math.sin(h*Math.PI)*.65,t.lineWidth=1.4*24/g;for(let M of[-1,1]){t.beginPath();let x=M*(14.52+h*5.472),i=M*(10.34+h*1.68);t.moveTo(x-1.612,i-1.612),t.lineTo(x+1.612,i+1.612),t.stroke()}}}t.restore()}function Mt(t,o,e,s,n,r,a,p=1,f=gt,m=r[0]??\"currentColor\"){if(o===\"waiting\"||o===\"blocked\"){a===\"front\"&&ye(t,o,e,s,n,m,f);return}if(!(o!==\"working\"&&o!==\"thinking\"&&o!==\"done\")){if(s*=o===\"done\"?3.1/f.doneDuration:o===\"working\"?7.2/(f.wait*2):3.6/(f.wait*1.5),t.save(),o===\"thinking\"){if(a===\"front\")for(let g=0;g<3;g++){let d=n?.5:(1+Math.cos(s*Math.PI*2/3.6-g*Math.PI*2/3))/2,c=r[g%r.length];c!==void 0&&(t.fillStyle=c),t.globalAlpha=(.65+d*.35)*p,t.beginPath(),t.arc(e*(.5+(g-1)*.09),e*.08,Math.max(1,e*(.022+d*.005)),0,Math.PI*2),t.fill()}}else if(o===\"working\"||!n&&s<3.1){let g=o===\"done\"?3:1;for(let d=0;d<g;d++){let c=o===\"done\"?(s-d*.38)/2.2:0;if(c<0||c>1)continue;let h=o===\"done\"?Math.sin(c*Math.PI):1,M=(n?.8:s*Math.PI*2/7.2)+d*2.1,x=Math.PI*1.4,i=-.38+d*.4,S=e*(.44+c*.03),y=e*(.19+c*.11),b=v=>{let w=Math.cos(v)*S,u=Math.sin(v)*y;return[e/2+w*Math.cos(i)-u*Math.sin(i),e/2+w*Math.sin(i)+u*Math.cos(i)]},A=t.createLinearGradient(e*.1,e*.7,e*.9,e*.3);r.forEach((v,w)=>A.addColorStop(w/Math.max(1,r.length-1),v)),t.strokeStyle=A,t.lineCap=\"butt\";for(let v=0;v<100;v++){let w=v/100,u=M-x+x*w,l=Math.sin(u)>=0;if(l!==(a===\"front\"))continue;let D=Math.sin(Math.PI*(.04+w*.92));t.globalAlpha=h*(l?.92:.55)*(.25+D*.75)*p,t.lineWidth=Math.max(.65,e*.027*D),t.beginPath(),t.moveTo(...b(u)),t.lineTo(...b(u+x/100)),t.stroke()}}}t.restore()}}var ve={orbit:\"working\",globe:\"searching\",lattice:\"solving\",network:\"connecting\",braid:\"weaving\",ribbon:\"composing\",morph:\"shaping\"},Se={plain:{alpha:1,radius:1},\"over-picture\":{alpha:2.3,radius:1.9}},Lt=[\"--nc-identity-azzurro\",\"--nc-identity-verde\",null,\"--nc-identity-rosso\"],Gt=[\"--nc-acqua-700\",\"--nc-viola-700\",\"--nc-warning\",\"--nc-rosso-700\"],xt={waiting:\"--nc-warning-deep\",blocked:\"--nc-error\"},De=[...Gt,...Lt.filter(t=>t!==null),...Object.values(xt),\"--nc-duration-wait\",\"--nc-duration-confirm\",\"--nc-duration-transition\"],Ae=[\"--nc-identity-cobalto\",\"--nc-identity-giallo\",null,\"--nc-identity-arancio\"],we={nadia:Lt,sofia:Ae};function Pe(t,o){let e=1-2*(t+.5)/o,s=Math.sqrt(1-e*e),n=t*Math.PI*(3-Math.sqrt(5));return[s*Math.cos(n),e,s*Math.sin(n)]}function zt(t,o,e){let s=t/2,n=t/2*.78,r=e.spin??1,a=W(o*.1*r,.3,s,s,1),p=_(t,e.rsPow??.6),f=[],m=e.ghostN??150;for(let D=0;D<m;D++){let[P,E,T]=Pe(D,m),[O,I,V]=a(P*n,E*n,T*n);f.push({x:O,y:I,z:V,r:.8*p,white:.78,a:.1+.22*((V/n+1)/2)})}let g=o*.24*r,d=e.faceOn?-.3:.55+.3*Math.sin(o*.18)*r,[c,h,M]=[Math.cos(g),0,Math.sin(g)],[x,i,S]=[-M*Math.sin(d),Math.cos(d),c*Math.sin(d)],[y,b,A]=[h*S-M*i,M*x-c*S,c*i-h*x],v=e.wobMul??1,w=e.faceOn?n/(1+.85*.23*v):n,u=e.segs??88,l=Math.max(1,Math.round((e.lanes??5)*(e.bandMul??1)));for(let D=0;D<l;D++){let P=(D-(l-1)/2)*.075,E=Math.abs(D-(l-1)/2)/Math.max(1,(l-1)/2);for(let T=0;T<u;T++){let O=T/u*2*Math.PI,I=(.16*Math.sin(O*3-o*1.7+D*.22)+.07*Math.sin(O*5+o*1.1))*v,V=e.faceOn?1+I:1,R=e.faceOn?P:P+I,N=c*Math.cos(O)+x*Math.sin(O)+y*R,L=h*Math.cos(O)+i*Math.sin(O)+b*R,B=M*Math.cos(O)+S*Math.sin(O)+A*R,q=Math.sqrt(N*N+L*L+B*B),[K,k,C]=a(N/q*w*V,L/q*w*V,B/q*w*V),z=(C/n+1)/2;f.push({x:K,y:k,z:C,r:((e.rBase??1.1)+(e.rDepth??1.7)*z)*(1-.25*E)*p,white:.08+.1*E,a:.55+.45*z,stripe:Math.min(3,Math.floor(D/l*4))})}}return j(f,[],e.rMin)}function Oe(t,o){for(let e of t.dots)e.x=o-e.x;return t}function Ee(t,o){let{form:e,size:s,seconds:n,color:r,state:a,age:p,reduced:f,breath:m,celebrationColors:g,stripeColors:d}=o,c=Se[o.presence],h=at(ve[e===\"nadia\"||e===\"sofia\"?\"ribbon\":e],s<=32?20:64),M=e===\"nadia\"?zt(s,n,h.opts):e===\"sofia\"?Oe(zt(s,n,h.opts),s):Z[h.mode](s,n,h.opts);t.clearRect(0,0,s,s);let x=a===\"done\"&&p>=o.timing.doneDuration,i=o.motion===\"ambient\"||x?\"idle\":a,S=o.motion===\"ambient\"?0:x?p-o.timing.doneDuration:p,y=Bt(i,S,o.timing,f),b=x?p-o.timing.doneDuration:p,A=i===\"waiting\"||i===\"blocked\"?o.statusColors[i]:r,v=(l,D)=>{let P=(l-s/2)*y.sx,E=(D-s/2)*y.sy;return[s/2+P*Math.cos(y.rotation)-E*Math.sin(y.rotation)+y.x*s,s/2+P*Math.sin(y.rotation)+E*Math.cos(y.rotation)+y.y*s]},w=m;o.motion===\"status\"&&Mt(t,i,s,b,f,g,\"back\",m,o.timing,A),t.fillStyle=r,t.strokeStyle=r;for(let l of M.lines)t.globalAlpha=Math.min(1,Math.max(0,(1-l.white)*(l.a??1)*w*c.alpha)),t.lineWidth=l.w*c.radius,t.beginPath(),t.moveTo(...v(l.x1,l.y1)),t.lineTo(...v(l.x2,l.y2)),t.stroke();let u=M.dots;for(let l of u)t.fillStyle=l.stripe===void 0?r:d[l.stripe]??r,t.globalAlpha=Math.min(1,Math.max(0,(1-l.white)*(l.a??1)*w*c.alpha)),t.beginPath(),t.arc(...v(l.x,l.y),l.r*c.radius,0,Math.PI*2),t.fill();t.globalAlpha=1,o.motion===\"status\"&&Mt(t,i,s,b,f,g,\"front\",m,o.timing,A)}function jt(t,o){let{form:e,presence:s=\"plain\"}=o,n=t.getContext(\"2d\");if(!n)return{destroy(){},setPaused(k){},setState(k){}};let r=window.matchMedia(\"(prefers-reduced-motion: reduce)\"),a=o.paused??!1,p=!0,f=!1,m=0,g=.6,d=0,c=0,h=o.state??\"idle\",M=o.motion??\"status\",x=null,i=0,S=1,y=o.size,b=getComputedStyle(t).color,A=[b],v=[b],w=\"\",u=X(),l={waiting:b,blocked:b};function D(){let k=t.getBoundingClientRect(),C=Math.min(k.width,k.height);return C>0?C:o.size}function P(){!n||f||!t.isConnected||(n.setTransform(S,0,0,S,0,0),Ee(n,{form:e,size:y,seconds:g,color:b,state:h,age:d,reduced:r.matches,breath:r.matches?Nt(h,c):1,presence:s,motion:M,celebrationColors:A,stripeColors:v,statusColors:l,timing:u}))}function E(){return f||!t.isConnected||!p||document.hidden||a?!1:r.matches?M===\"status\"&&(h===\"thinking\"||h===\"working\"):M===\"ambient\"?!0:!(h===\"blocked\"&&d>=u.blockedDuration)}function T(k){if(m=0,!!E()){if(x!==null){let C=Math.min((k-x)/1e3,.1);r.matches?c+=C:(g+=C*(M===\"ambient\"?dt(e):Ft(h,e,d,u)),M===\"status\"&&(d+=C))}x=k,(k-i>=1e3/30||!E())&&(P(),i=k),E()&&(m=requestAnimationFrame(T))}}function O(){cancelAnimationFrame(m),m=0,x=null,P(),E()&&(m=requestAnimationFrame(T))}function I(k){let C=document.createElement(\"span\");C.hidden=!0,C.style.color=k,(t.parentElement??document.body).append(C);let z=getComputedStyle(C).color;return C.remove(),z||b}function V(k,C){return[C,window.devicePixelRatio||1,k.color,...De.map(z=>k.getPropertyValue(z))].join(\"|\")}function R(){V(getComputedStyle(t),D())!==w&&N()}function N(){if(f||!t.isConnected)return;y=D();let k=Math.max(1,Math.round(y*Math.min(window.devicePixelRatio||1,2)));t.width=k,t.height=k,S=k/y;let C=getComputedStyle(t);w=V(C,y),b=C.color,u=X(C),l={waiting:I(C.getPropertyValue(xt.waiting).trim()||b),blocked:I(C.getPropertyValue(xt.blocked).trim()||b)},A=Gt.map(z=>I(`color-mix(in oklch, ${C.getPropertyValue(z).trim()||b} 75%, white)`)),v=(we[e]??[]).map(z=>z&&C.getPropertyValue(z).trim()||b),O()}let L=new IntersectionObserver(([k])=>{p=k?.isIntersecting??!1,O()});L.observe(t);let B=new MutationObserver(R);for(let k=t;k;k=k.parentElement)B.observe(k,{attributes:!0,attributeFilter:[\"class\",\"style\",\"data-theme\"]});let q=new ResizeObserver(()=>{Math.abs(D()-y)>=.5&&N()});q.observe(t);function K(k){k.propertyName===\"color\"&&k.target instanceof Node&&k.target.contains(t)&&R()}return document.addEventListener(\"transitionend\",K,!0),r.addEventListener(\"change\",O),document.addEventListener(\"visibilitychange\",O),window.addEventListener(\"resize\",R),N(),{setState(k){h=k,d=0,c=0,O()},setPaused(k){a=k,O()},destroy(){f=!0,cancelAnimationFrame(m),L.disconnect(),B.disconnect(),q.disconnect(),document.removeEventListener(\"transitionend\",K,!0),r.removeEventListener(\"change\",O),document.removeEventListener(\"visibilitychange\",O),window.removeEventListener(\"resize\",R)}}}for(let t of document.querySelectorAll(\"canvas[data-agent-orb]\"))jt(t,{form:t.dataset.agentOrb,size:Number(t.dataset.size),state:t.dataset.state??\"idle\"});})();\n";
2
2
  export const designTokensCss = "@layer tokens, theme;\n\n\n\n\n\n\n\n\n\n@layer tokens {\n :root {\n --nc-action: oklch(0.5005 0.2804 266.17);\n --nc-action-foreground: oklch(1.0000 0.0000 0.00);\n --nc-action-hover: oklch(0.4602 0.2797 266.14);\n --nc-action-active: oklch(0.4202 0.2522 266.14);\n --nc-ink: oklch(0.1776 0.0000 0.00);\n --nc-body: oklch(0.5103 0.0000 0.00);\n --nc-muted: oklch(0.5278 0.0000 0.00);\n --nc-canvas: oklch(1.0000 0.0000 0.00);\n --nc-canvas-soft: oklch(0.9851 0.0000 0.00);\n --nc-canvas-soft-2: oklch(0.9702 0.0000 0.00);\n --nc-material-workspace: oklch(0.9851 0.0000 0.00);\n --nc-material-solid: oklch(1.0000 0.0000 0.00);\n --nc-material-resting: oklch(1.0000 0.0000 0.00);\n --nc-material-raised: oklch(1.0000 0.0000 0.00);\n --nc-material-floating: oklch(1.0000 0.0000 0.00);\n --nc-material-modal: oklch(1.0000 0.0000 0.00);\n --nc-line: oklch(0.9219 0.0000 0.00);\n --nc-input: oklch(0.5624 0.0000 0.00);\n --nc-focus-ring: oklch(0.1776 0.0000 0.00);\n --nc-scrim: oklch(0.9612 0.0000 0.00);\n --nc-link: oklch(0.5005 0.2804 266.17);\n --nc-link-deep: oklch(0.4202 0.2522 266.14);\n --nc-link-bg-soft: oklch(0.9656 0.0171 248.01);\n --nc-info: oklch(0.5005 0.2804 266.17);\n --nc-info-soft: oklch(0.9457 0.0259 276.40);\n --nc-info-deep: oklch(0.3197 0.1758 266.79);\n --nc-success: oklch(0.6415 0.1644 153.23);\n --nc-success-soft: oklch(0.9170 0.0519 161.77);\n --nc-success-deep: oklch(0.3852 0.0953 154.99);\n --nc-error: oklch(0.5688 0.1995 26.59);\n --nc-error-soft: oklch(0.9522 0.0207 17.52);\n --nc-error-deep: oklch(0.4235 0.1525 27.08);\n --nc-warning: oklch(0.8466 0.1678 84.63);\n --nc-warning-soft: oklch(0.9649 0.0461 90.87);\n --nc-warning-deep: oklch(0.4834 0.0995 82.44);\n --nc-navigation-selection-bg: oklch(0.9461 0.0000 0.00);\n --nc-navigation-selection-fg: oklch(0.1776 0.0000 0.00);\n --nc-navigation-selection-hover: oklch(0.9219 0.0000 0.00);\n --nc-state-ready: oklch(0.5278 0.0000 0.00);\n --nc-state-running: oklch(0.5005 0.2804 266.17);\n --nc-state-review: oklch(0.8466 0.1678 84.63);\n --nc-state-blocked: oklch(0.5688 0.1995 26.59);\n --nc-state-complete: oklch(0.6415 0.1644 153.23);\n --nc-identity-verde: oklch(0.6415 0.1644 153.23);\n --nc-identity-rosso: oklch(0.5688 0.1995 26.59);\n --nc-identity-arancio: oklch(0.6824 0.2108 37.70);\n --nc-identity-giallo: oklch(0.8466 0.1678 84.63);\n --nc-identity-cobalto: oklch(0.5005 0.2804 266.17);\n --nc-identity-azzurro: oklch(0.5618 0.2019 258.24);\n --nc-identity-ink: oklch(0.0000 0.0000 0.00);\n --nc-identity-white: oklch(1.0000 0.0000 0.00);\n --nc-logo-dot: oklch(0.5005 0.2804 266.17);\n --nc-chart-1: oklch(0.5005 0.2804 266.17);\n --nc-chart-2: oklch(0.6398 0.2044 356.46);\n --nc-chart-3: oklch(0.5015 0.1883 294.99);\n --nc-chart-4: oklch(0.6824 0.2108 37.70);\n --nc-chart-5: oklch(0.6161 0.1062 208.85);\n --nc-chart-6: oklch(0.5688 0.1995 26.59);\n --nc-chart-7: oklch(0.7691 0.1577 84.69);\n --nc-chart-8: oklch(0.6415 0.1644 153.23);\n --nc-chart-9: oklch(0.7191 0.1452 266.33);\n --nc-chart-10: oklch(0.8309 0.1048 356.57);\n --nc-cobalto-100: oklch(0.9754 0.0115 264.51);\n --nc-cobalto-200: oklch(0.9543 0.0215 265.76);\n --nc-cobalto-300: oklch(0.9297 0.0334 265.23);\n --nc-cobalto-400: oklch(0.8944 0.0509 267.00);\n --nc-cobalto-500: oklch(0.8308 0.0837 265.90);\n --nc-cobalto-600: oklch(0.7191 0.1452 266.33);\n --nc-cobalto-700: oklch(0.5005 0.2804 266.17);\n --nc-cobalto-800: oklch(0.4602 0.2797 266.14);\n --nc-cobalto-900: oklch(0.4202 0.2522 266.14);\n --nc-cobalto-1000: oklch(0.2811 0.1684 266.17);\n --nc-rosso-100: oklch(0.9752 0.0122 29.87);\n --nc-rosso-200: oklch(0.9552 0.0222 27.81);\n --nc-rosso-300: oklch(0.9290 0.0360 26.28);\n --nc-rosso-400: oklch(0.8944 0.0552 26.52);\n --nc-rosso-500: oklch(0.8304 0.0942 26.48);\n --nc-rosso-600: oklch(0.7201 0.1742 26.79);\n --nc-rosso-700: oklch(0.5688 0.1995 26.59);\n --nc-rosso-800: oklch(0.5297 0.1996 26.67);\n --nc-rosso-900: oklch(0.4882 0.1797 26.59);\n --nc-rosso-1000: oklch(0.2805 0.1143 26.81);\n --nc-arancio-100: oklch(0.9749 0.0125 35.73);\n --nc-arancio-200: oklch(0.9544 0.0233 37.38);\n --nc-arancio-300: oklch(0.9298 0.0366 36.77);\n --nc-arancio-400: oklch(0.8945 0.0567 37.21);\n --nc-arancio-500: oklch(0.8292 0.0974 37.12);\n --nc-arancio-600: oklch(0.7428 0.1602 37.76);\n --nc-arancio-700: oklch(0.6824 0.2108 37.70);\n --nc-arancio-800: oklch(0.6419 0.2102 37.75);\n --nc-arancio-900: oklch(0.4993 0.1647 37.64);\n --nc-arancio-1000: oklch(0.2801 0.0916 38.02);\n --nc-giallo-100: oklch(0.9860 0.0154 86.42);\n --nc-giallo-200: oklch(0.9699 0.0272 83.54);\n --nc-giallo-300: oklch(0.9555 0.0420 85.96);\n --nc-giallo-400: oklch(0.9298 0.0673 84.45);\n --nc-giallo-500: oklch(0.9004 0.1074 84.93);\n --nc-giallo-600: oklch(0.8696 0.1403 84.42);\n --nc-giallo-700: oklch(0.8466 0.1678 84.63);\n --nc-giallo-800: oklch(0.7691 0.1577 84.69);\n --nc-giallo-900: oklch(0.5305 0.1090 83.33);\n --nc-giallo-1000: oklch(0.3186 0.0654 84.14);\n --nc-verde-100: oklch(0.9747 0.0157 154.48);\n --nc-verde-200: oklch(0.9560 0.0265 152.38);\n --nc-verde-300: oklch(0.9290 0.0407 153.11);\n --nc-verde-400: oklch(0.8955 0.0664 152.93);\n --nc-verde-500: oklch(0.8310 0.1403 153.27);\n --nc-verde-600: oklch(0.7191 0.1645 153.16);\n --nc-verde-700: oklch(0.6415 0.1644 153.23);\n --nc-verde-800: oklch(0.6017 0.1542 153.23);\n --nc-verde-900: oklch(0.4992 0.1279 153.23);\n --nc-verde-1000: oklch(0.2815 0.0723 153.13);\n --nc-acqua-100: oklch(0.9752 0.0109 211.04);\n --nc-acqua-200: oklch(0.9559 0.0171 205.84);\n --nc-acqua-300: oklch(0.9297 0.0259 208.75);\n --nc-acqua-400: oklch(0.8954 0.0424 207.56);\n --nc-acqua-500: oklch(0.8304 0.0902 209.06);\n --nc-acqua-600: oklch(0.7205 0.1064 208.54);\n --nc-acqua-700: oklch(0.6161 0.1062 208.85);\n --nc-acqua-800: oklch(0.5765 0.0992 208.28);\n --nc-acqua-900: oklch(0.4990 0.0860 208.78);\n --nc-acqua-1000: oklch(0.2797 0.0484 210.29);\n --nc-viola-100: oklch(0.9745 0.0134 295.33);\n --nc-viola-200: oklch(0.9545 0.0243 296.12);\n --nc-viola-300: oklch(0.9290 0.0381 295.47);\n --nc-viola-400: oklch(0.8954 0.0563 294.18);\n --nc-viola-500: oklch(0.8289 0.0954 295.03);\n --nc-viola-600: oklch(0.7204 0.1631 294.91);\n --nc-viola-700: oklch(0.5015 0.1883 294.99);\n --nc-viola-800: oklch(0.4620 0.1886 294.84);\n --nc-viola-900: oklch(0.4227 0.1694 295.05);\n --nc-viola-1000: oklch(0.2796 0.1131 295.14);\n --nc-rosa-100: oklch(0.9746 0.0139 355.00);\n --nc-rosa-200: oklch(0.9555 0.0241 358.28);\n --nc-rosa-300: oklch(0.9307 0.0386 357.63);\n --nc-rosa-400: oklch(0.8944 0.0614 356.49);\n --nc-rosa-500: oklch(0.8309 0.1048 356.57);\n --nc-rosa-600: oklch(0.7193 0.1969 356.59);\n --nc-rosa-700: oklch(0.6398 0.2044 356.46);\n --nc-rosa-800: oklch(0.6001 0.2050 356.50);\n --nc-rosa-900: oklch(0.5009 0.1842 356.43);\n --nc-rosa-1000: oklch(0.2808 0.1147 356.80);\n --nc-dark-canvas: oklch(0.0000 0.0000 0.00);\n --nc-dark-canvas-soft: oklch(0.1776 0.0000 0.00);\n --nc-dark-canvas-soft-2: oklch(0.2178 0.0000 0.00);\n --nc-dark-material-workspace: oklch(0.0000 0.0000 0.00);\n --nc-dark-material-solid: oklch(0.0000 0.0000 0.00);\n --nc-dark-material-resting: oklch(0.1448 0.0000 0.00);\n --nc-dark-material-raised: oklch(0.1684 0.0000 0.00);\n --nc-dark-material-floating: oklch(0.1684 0.0000 0.00);\n --nc-dark-material-modal: oklch(0.1684 0.0000 0.00);\n --nc-card-graphite: oklch(0.1957 0.0000 0.00);\n --nc-dark-ink: oklch(0.9461 0.0000 0.00);\n --nc-dark-body: oklch(0.7090 0.0000 0.00);\n --nc-dark-muted: oklch(0.6993 0.0000 0.00);\n --nc-dark-line: oklch(0.2686 0.0000 0.00);\n --nc-dark-input: oklch(0.5590 0.0000 0.00);\n --nc-dark-on-primary: oklch(0.1448 0.0000 0.00);\n --nc-dark-action: oklch(0.5005 0.2804 266.17);\n --nc-dark-action-foreground: oklch(1.0000 0.0000 0.00);\n --nc-dark-action-hover: oklch(0.4602 0.2797 266.14);\n --nc-dark-action-active: oklch(0.4202 0.2522 266.14);\n --nc-dark-link: oklch(0.7993 0.1005 266.67);\n --nc-dark-link-deep: oklch(0.8944 0.0509 267.00);\n --nc-dark-link-bg-soft: oklch(0.2518 0.0572 257.41);\n --nc-dark-focus-ring: oklch(0.9461 0.0000 0.00);\n --nc-dark-scrim: oklch(0.0000 0.0000 0.00);\n --nc-dark-error: oklch(0.7955 0.0980 21.02);\n --nc-dark-error-soft: oklch(0.2296 0.0728 26.06);\n --nc-dark-error-deep: oklch(0.8856 0.0534 19.64);\n --nc-dark-warning: oklch(0.8939 0.1387 90.47);\n --nc-dark-warning-soft: oklch(0.3135 0.0643 85.04);\n --nc-dark-warning-deep: oklch(0.9320 0.0896 90.86);\n --nc-dark-info: oklch(0.7067 0.1528 272.08);\n --nc-dark-info-soft: oklch(0.2118 0.1033 268.28);\n --nc-dark-info-deep: oklch(0.8222 0.0888 274.44);\n --nc-dark-success: oklch(0.7019 0.1753 153.20);\n --nc-dark-success-soft: oklch(0.2893 0.0697 156.32);\n --nc-dark-success-deep: oklch(0.8524 0.0996 159.83);\n --nc-dark-state-ready: oklch(0.5624 0.0000 0.00);\n --nc-dark-state-running: oklch(0.5005 0.2804 266.17);\n --nc-dark-state-review: oklch(0.8466 0.1678 84.63);\n --nc-dark-state-blocked: oklch(0.5688 0.1995 26.59);\n --nc-dark-state-complete: oklch(0.6415 0.1644 153.23);\n --nc-dark-logo-dot: oklch(0.5923 0.2215 269.61);\n --nc-dark-navigation-selection-bg: oklch(0.2393 0.0000 0.00);\n --nc-dark-navigation-selection-fg: oklch(0.9461 0.0000 0.00);\n --nc-dark-navigation-selection-hover: oklch(0.2686 0.0000 0.00);\n --nc-dark-chart-1: oklch(0.6007 0.2160 266.02);\n --nc-dark-chart-2: oklch(0.6611 0.1941 356.61);\n --nc-dark-chart-3: oklch(0.6004 0.1789 294.79);\n --nc-dark-chart-4: oklch(0.6612 0.2003 37.74);\n --nc-dark-chart-5: oklch(0.6568 0.1009 208.69);\n --nc-dark-chart-6: oklch(0.6084 0.1887 26.65);\n --nc-dark-chart-7: oklch(0.8466 0.1678 84.63);\n --nc-dark-chart-8: oklch(0.6608 0.1568 153.03);\n --nc-dark-chart-9: oklch(0.7993 0.1005 266.67);\n --nc-dark-chart-10: oklch(0.8005 0.1279 356.32);\n --nc-dark-cobalto-100: oklch(0.1915 0.0982 266.32);\n --nc-dark-cobalto-200: oklch(0.2197 0.1184 266.25);\n --nc-dark-cobalto-300: oklch(0.2604 0.1398 265.97);\n --nc-dark-cobalto-400: oklch(0.2997 0.1624 266.24);\n --nc-dark-cobalto-500: oklch(0.3702 0.1966 266.08);\n --nc-dark-cobalto-600: oklch(0.6007 0.2160 266.02);\n --nc-dark-cobalto-700: oklch(0.5005 0.2804 266.17);\n --nc-dark-cobalto-800: oklch(0.4602 0.2797 266.14);\n --nc-dark-cobalto-900: oklch(0.7993 0.1005 266.67);\n --nc-dark-cobalto-1000: oklch(0.9604 0.0186 265.98);\n --nc-dark-rosso-100: oklch(0.1907 0.0689 26.80);\n --nc-dark-rosso-200: oklch(0.2215 0.0837 26.41);\n --nc-dark-rosso-300: oklch(0.2596 0.0994 26.37);\n --nc-dark-rosso-400: oklch(0.3014 0.1159 26.97);\n --nc-dark-rosso-500: oklch(0.3705 0.1397 26.54);\n --nc-dark-rosso-600: oklch(0.6084 0.1887 26.65);\n --nc-dark-rosso-700: oklch(0.5688 0.1995 26.59);\n --nc-dark-rosso-800: oklch(0.5297 0.1996 26.67);\n --nc-dark-rosso-900: oklch(0.7992 0.1149 26.43);\n --nc-dark-rosso-1000: oklch(0.9598 0.0198 25.17);\n --nc-dark-arancio-100: oklch(0.1909 0.0632 37.47);\n --nc-dark-arancio-200: oklch(0.2201 0.0732 37.26);\n --nc-dark-arancio-300: oklch(0.2598 0.0852 37.90);\n --nc-dark-arancio-400: oklch(0.2988 0.0989 37.50);\n --nc-dark-arancio-500: oklch(0.3706 0.1219 37.77);\n --nc-dark-arancio-600: oklch(0.6612 0.2003 37.74);\n --nc-dark-arancio-700: oklch(0.6824 0.2108 37.70);\n --nc-dark-arancio-800: oklch(0.6419 0.2102 37.75);\n --nc-dark-arancio-900: oklch(0.7993 0.1180 37.52);\n --nc-dark-arancio-1000: oklch(0.9590 0.0208 36.03);\n --nc-dark-giallo-100: oklch(0.1903 0.0391 84.07);\n --nc-dark-giallo-200: oklch(0.2185 0.0449 83.81);\n --nc-dark-giallo-300: oklch(0.2592 0.0532 83.54);\n --nc-dark-giallo-400: oklch(0.3008 0.0616 85.18);\n --nc-dark-giallo-500: oklch(0.3705 0.0759 85.25);\n --nc-dark-giallo-600: oklch(0.6598 0.1353 84.83);\n --nc-dark-giallo-700: oklch(0.8466 0.1678 84.63);\n --nc-dark-giallo-800: oklch(0.8064 0.1654 84.43);\n --nc-dark-giallo-900: oklch(0.8007 0.1595 84.74);\n --nc-dark-giallo-1000: oklch(0.9604 0.0256 84.59);\n --nc-dark-verde-100: oklch(0.1910 0.0488 153.39);\n --nc-dark-verde-200: oklch(0.2208 0.0571 152.80);\n --nc-dark-verde-300: oklch(0.2606 0.0664 153.49);\n --nc-dark-verde-400: oklch(0.2987 0.0765 153.24);\n --nc-dark-verde-500: oklch(0.3685 0.0944 153.24);\n --nc-dark-verde-600: oklch(0.6608 0.1568 153.03);\n --nc-dark-verde-700: oklch(0.6415 0.1644 153.23);\n --nc-dark-verde-800: oklch(0.6017 0.1542 153.23);\n --nc-dark-verde-900: oklch(0.7994 0.1555 153.29);\n --nc-dark-verde-1000: oklch(0.9600 0.0248 152.88);\n --nc-dark-acqua-100: oklch(0.1914 0.0330 209.05);\n --nc-dark-acqua-200: oklch(0.2192 0.0379 209.81);\n --nc-dark-acqua-300: oklch(0.2610 0.0450 209.30);\n --nc-dark-acqua-400: oklch(0.3011 0.0519 208.95);\n --nc-dark-acqua-500: oklch(0.3711 0.0639 208.82);\n --nc-dark-acqua-600: oklch(0.6568 0.1009 208.69);\n --nc-dark-acqua-700: oklch(0.6161 0.1062 208.85);\n --nc-dark-acqua-800: oklch(0.5765 0.0992 208.28);\n --nc-dark-acqua-900: oklch(0.8004 0.1007 208.37);\n --nc-dark-acqua-1000: oklch(0.9596 0.0161 206.44);\n --nc-dark-viola-100: oklch(0.1897 0.0654 295.79);\n --nc-dark-viola-200: oklch(0.2192 0.0805 294.49);\n --nc-dark-viola-300: oklch(0.2605 0.0949 295.18);\n --nc-dark-viola-400: oklch(0.2990 0.1087 294.76);\n --nc-dark-viola-500: oklch(0.3702 0.1310 295.14);\n --nc-dark-viola-600: oklch(0.6004 0.1789 294.79);\n --nc-dark-viola-700: oklch(0.5015 0.1883 294.99);\n --nc-dark-viola-800: oklch(0.4620 0.1886 294.84);\n --nc-dark-viola-900: oklch(0.8000 0.1131 295.20);\n --nc-dark-viola-1000: oklch(0.9591 0.0215 294.60);\n --nc-dark-rosa-100: oklch(0.1902 0.0716 355.67);\n --nc-dark-rosa-200: oklch(0.2198 0.0850 357.06);\n --nc-dark-rosa-300: oklch(0.2591 0.1026 356.37);\n --nc-dark-rosa-400: oklch(0.3000 0.1188 356.62);\n --nc-dark-rosa-500: oklch(0.3695 0.1426 356.71);\n --nc-dark-rosa-600: oklch(0.6611 0.1941 356.61);\n --nc-dark-rosa-700: oklch(0.6398 0.2044 356.46);\n --nc-dark-rosa-800: oklch(0.6001 0.2050 356.50);\n --nc-dark-rosa-900: oklch(0.8005 0.1279 356.32);\n --nc-dark-rosa-1000: oklch(0.9599 0.0220 356.32);\n --nc-category-teal-soft: oklch(0.9585 0.0244 187.32);\n --nc-category-teal-deep: oklch(0.4600 0.0788 185.34);\n --nc-dark-category-teal-soft: oklch(0.2627 0.0410 187.13);\n --nc-dark-category-teal-deep: oklch(0.8398 0.1008 186.70);\n --nc-category-purple-soft: oklch(0.9464 0.0327 307.17);\n --nc-category-purple-deep: oklch(0.4541 0.1958 308.26);\n --nc-dark-category-purple-soft: oklch(0.2479 0.0790 306.78);\n --nc-dark-category-purple-deep: oklch(0.7911 0.1271 310.92);\n --nc-category-pink-soft: oklch(0.9476 0.0263 347.12);\n --nc-category-pink-deep: oklch(0.4863 0.1711 355.09);\n --nc-dark-category-pink-soft: oklch(0.2550 0.0598 353.51);\n --nc-dark-category-pink-deep: oklch(0.8108 0.1129 347.21);\n --nc-xxs: 4px;\n --nc-xs: 8px;\n --nc-sm: 12px;\n --nc-md: 16px;\n --nc-lg: 24px;\n --nc-xl: 32px;\n --nc-2xl: 40px;\n --nc-3xl: 48px;\n --nc-4xl: 64px;\n --nc-5xl: 96px;\n --nc-6xl: 128px;\n --nc-guide: 1px;\n --nc-icon-stroke: 1.5px;\n --nc-icon-stroke-sm: 1.25px;\n --nc-focus-outline-width: 2px;\n --nc-focus-outline-offset: 2px;\n --nc-control-height: 36px;\n --nc-control-height-sm: 32px;\n --nc-control-height-lg: 40px;\n --nc-control-height-xs: 24px;\n --nc-control-padding-inline: 12px;\n --nc-button-padding-inline-sm: 6px;\n --nc-button-padding-inline: 10px;\n --nc-button-padding-inline-lg: 14px;\n --nc-card-padding: 20px;\n --nc-touch-target: 44px;\n --nc-rounded-none: 0px;\n --nc-rounded-xs: 2px;\n --nc-rounded-xs-plus: 4px;\n --nc-rounded-sm: 6px;\n --nc-rounded-md: 8px;\n --nc-rounded-lg: 12px;\n --nc-rounded-xl: 16px;\n --nc-rounded-2xl: 20px;\n --nc-rounded-3xl: 24px;\n --nc-rounded-full: 9999px;\n --nc-type-display-xl-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-xl-font-size: 72px;\n --nc-type-display-xl-font-weight: 600;\n --nc-type-display-xl-line-height: 72px;\n --nc-type-display-xl-letter-spacing: -4.32px;\n --nc-type-display-wide-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-wide-font-size: 64px;\n --nc-type-display-wide-font-weight: 600;\n --nc-type-display-wide-line-height: 64px;\n --nc-type-display-wide-letter-spacing: -3.84px;\n --nc-type-display-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-lg-font-size: 56px;\n --nc-type-display-lg-font-weight: 600;\n --nc-type-display-lg-line-height: 56px;\n --nc-type-display-lg-letter-spacing: -3.36px;\n --nc-type-display-section-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-section-font-size: 48px;\n --nc-type-display-section-font-weight: 600;\n --nc-type-display-section-line-height: 56px;\n --nc-type-display-section-letter-spacing: -2.88px;\n --nc-type-display-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-md-font-size: 40px;\n --nc-type-display-md-font-weight: 600;\n --nc-type-display-md-line-height: 48px;\n --nc-type-display-md-letter-spacing: -2.4px;\n --nc-type-heading-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-lg-font-size: 32px;\n --nc-type-heading-lg-font-weight: 600;\n --nc-type-heading-lg-line-height: 40px;\n --nc-type-heading-lg-letter-spacing: -1.28px;\n --nc-type-heading-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-md-font-size: 24px;\n --nc-type-heading-md-font-weight: 600;\n --nc-type-heading-md-line-height: 32px;\n --nc-type-heading-md-letter-spacing: -0.96px;\n --nc-type-heading-sm-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-sm-font-size: 20px;\n --nc-type-heading-sm-font-weight: 600;\n --nc-type-heading-sm-line-height: 26px;\n --nc-type-heading-sm-letter-spacing: -0.4px;\n --nc-type-heading-xs-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-xs-font-size: 16px;\n --nc-type-heading-xs-font-weight: 600;\n --nc-type-heading-xs-line-height: 24px;\n --nc-type-heading-xs-letter-spacing: -0.32px;\n --nc-type-heading-compact-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-compact-font-size: 14px;\n --nc-type-heading-compact-font-weight: 600;\n --nc-type-heading-compact-line-height: 20px;\n --nc-type-heading-compact-letter-spacing: -0.28px;\n --nc-type-button-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-button-lg-font-size: 16px;\n --nc-type-button-lg-font-weight: 500;\n --nc-type-button-lg-line-height: 24px;\n --nc-type-button-lg-letter-spacing: 0px;\n --nc-type-button-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-button-font-size: 14px;\n --nc-type-button-font-weight: 500;\n --nc-type-button-line-height: 21px;\n --nc-type-button-letter-spacing: 0px;\n --nc-type-button-xs-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-button-xs-font-size: 12px;\n --nc-type-button-xs-font-weight: 500;\n --nc-type-button-xs-line-height: 16px;\n --nc-type-button-xs-letter-spacing: 0px;\n --nc-type-label-display-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-display-font-size: 20px;\n --nc-type-label-display-font-weight: 400;\n --nc-type-label-display-line-height: 32px;\n --nc-type-label-display-letter-spacing: 0px;\n --nc-type-label-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-lg-font-size: 18px;\n --nc-type-label-lg-font-weight: 400;\n --nc-type-label-lg-line-height: 20px;\n --nc-type-label-lg-letter-spacing: 0px;\n --nc-type-label-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-md-font-size: 16px;\n --nc-type-label-md-font-weight: 400;\n --nc-type-label-md-line-height: 20px;\n --nc-type-label-md-letter-spacing: 0px;\n --nc-type-label-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-font-size: 14px;\n --nc-type-label-font-weight: 400;\n --nc-type-label-line-height: 20px;\n --nc-type-label-letter-spacing: 0px;\n --nc-type-label-sm-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-sm-font-size: 13px;\n --nc-type-label-sm-font-weight: 400;\n --nc-type-label-sm-line-height: 16px;\n --nc-type-label-sm-letter-spacing: 0px;\n --nc-type-caption-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-caption-font-size: 12px;\n --nc-type-caption-font-weight: 400;\n --nc-type-caption-line-height: 16px;\n --nc-type-caption-letter-spacing: 0px;\n --nc-type-label-mono-lg-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-label-mono-lg-font-size: 14px;\n --nc-type-label-mono-lg-font-weight: 400;\n --nc-type-label-mono-lg-line-height: 20px;\n --nc-type-label-mono-lg-letter-spacing: 0px;\n --nc-type-label-mono-md-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-label-mono-md-font-size: 13px;\n --nc-type-label-mono-md-font-weight: 400;\n --nc-type-label-mono-md-line-height: 20px;\n --nc-type-label-mono-md-letter-spacing: 0px;\n --nc-type-label-mono-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-label-mono-font-size: 12px;\n --nc-type-label-mono-font-weight: 400;\n --nc-type-label-mono-line-height: 16px;\n --nc-type-label-mono-letter-spacing: 0px;\n --nc-type-body-display-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-display-font-size: 24px;\n --nc-type-body-display-font-weight: 400;\n --nc-type-body-display-line-height: 36px;\n --nc-type-body-display-letter-spacing: 0px;\n --nc-type-body-lead-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-lead-font-size: 20px;\n --nc-type-body-lead-font-weight: 400;\n --nc-type-body-lead-line-height: 36px;\n --nc-type-body-lead-letter-spacing: 0px;\n --nc-type-body-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-lg-font-size: 18px;\n --nc-type-body-lg-font-weight: 400;\n --nc-type-body-lg-line-height: 28px;\n --nc-type-body-lg-letter-spacing: 0px;\n --nc-type-body-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-md-font-size: 16px;\n --nc-type-body-md-font-weight: 400;\n --nc-type-body-md-line-height: 24px;\n --nc-type-body-md-letter-spacing: 0px;\n --nc-type-body-sm-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-sm-font-size: 14px;\n --nc-type-body-sm-font-weight: 400;\n --nc-type-body-sm-line-height: 20px;\n --nc-type-body-sm-letter-spacing: 0px;\n --nc-type-body-compact-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-compact-font-size: 13px;\n --nc-type-body-compact-font-weight: 400;\n --nc-type-body-compact-line-height: 18px;\n --nc-type-body-compact-letter-spacing: 0px;\n --nc-type-code-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-code-font-size: 13px;\n --nc-type-code-font-weight: 400;\n --nc-type-code-line-height: 18px;\n --nc-type-code-letter-spacing: 0px;\n --nc-material-scrim-opacity: 80%;\n --nc-material-dark-scrim-opacity: 60%;\n --nc-material-glass-opacity: 55%;\n --nc-material-glass-saturation: 180%;\n --nc-material-glass-blur: 20px;\n --nc-elevation-resting: 0px 0px 0px 1px rgb(0% 0% 0% / 0.08), 0px 2px 2px 0px rgb(0% 0% 0% / 0.04);\n --nc-elevation-raised:\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 2px 2px 0px rgb(0% 0% 0% / 0.04),\n 0px 8px 16px -4px rgb(0% 0% 0% / 0.08);\n --nc-elevation-floating:\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 1px 1px 0px rgb(0% 0% 0% / 0.02),\n 0px 4px 8px -4px rgb(0% 0% 0% / 0.06),\n 0px 16px 32px -8px rgb(0% 0% 0% / 0.1);\n --nc-elevation-modal:\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 8px 24px -12px rgb(0% 0% 0% / 0.12),\n 0px 32px 72px -12px rgb(0% 0% 0% / 0.12);\n --nc-elevation-glass:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.75),\n inset 0px 0px 0px 1px rgb(100% 100% 100% / 0.35),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 4px 8px -4px rgb(0% 0% 0% / 0.06),\n 0px 16px 32px -8px rgb(0% 0% 0% / 0.08);\n --nc-duration-control: 100ms;\n --nc-duration-close: 140ms;\n --nc-duration-confirm: 180ms;\n --nc-duration-open: 220ms;\n --nc-duration-msg-in: 240ms;\n --nc-duration-transition: 240ms;\n --nc-duration-arrive: 300ms;\n --nc-duration-drawer-swipe: 400ms;\n --nc-duration-drawer: 450ms;\n --nc-duration-wait: 1.6s;\n --nc-ease-emphasized: cubic-bezier(0.3, 0.7, 0.2, 1);\n --nc-ease-out-strong: cubic-bezier(0.23, 1, 0.32, 1);\n --nc-ease-in-out-strong: cubic-bezier(0.77, 0, 0.175, 1);\n --nc-ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);\n --nc-content-max: 1200px;\n --nc-gutter-mobile: 20px;\n --nc-gutter-tablet: 40px;\n --nc-gutter-desktop: 64px;\n --nc-section-step-mobile: 64px;\n --nc-section-step-desktop: 96px;\n }\n}\n\n\n@layer theme {\n .dark {\n --nc-canvas: var(--nc-dark-canvas);\n --nc-canvas-soft: var(--nc-dark-canvas-soft);\n --nc-canvas-soft-2: var(--nc-dark-canvas-soft-2);\n --nc-material-workspace: var(--nc-dark-material-workspace);\n --nc-material-solid: var(--nc-dark-material-solid);\n --nc-material-resting: var(--nc-dark-material-resting);\n --nc-material-raised: var(--nc-dark-material-raised);\n --nc-material-floating: var(--nc-dark-material-floating);\n --nc-material-modal: var(--nc-dark-material-modal);\n --nc-ink: var(--nc-dark-ink);\n --nc-body: var(--nc-dark-body);\n --nc-muted: var(--nc-dark-muted);\n --nc-line: var(--nc-dark-line);\n --nc-input: var(--nc-dark-input);\n --nc-action: var(--nc-dark-action);\n --nc-action-foreground: var(--nc-dark-action-foreground);\n --nc-action-hover: var(--nc-dark-action-hover);\n --nc-action-active: var(--nc-dark-action-active);\n --nc-link: var(--nc-dark-link);\n --nc-link-deep: var(--nc-dark-link-deep);\n --nc-link-bg-soft: var(--nc-dark-link-bg-soft);\n --nc-focus-ring: var(--nc-dark-focus-ring);\n --nc-scrim: var(--nc-dark-scrim);\n --nc-error: var(--nc-dark-error);\n --nc-error-soft: var(--nc-dark-error-soft);\n --nc-error-deep: var(--nc-dark-error-deep);\n --nc-warning: var(--nc-dark-warning);\n --nc-warning-soft: var(--nc-dark-warning-soft);\n --nc-warning-deep: var(--nc-dark-warning-deep);\n --nc-info: var(--nc-dark-info);\n --nc-info-soft: var(--nc-dark-info-soft);\n --nc-info-deep: var(--nc-dark-info-deep);\n --nc-success: var(--nc-dark-success);\n --nc-success-soft: var(--nc-dark-success-soft);\n --nc-success-deep: var(--nc-dark-success-deep);\n --nc-state-ready: var(--nc-dark-state-ready);\n --nc-state-running: var(--nc-dark-state-running);\n --nc-state-review: var(--nc-dark-state-review);\n --nc-state-blocked: var(--nc-dark-state-blocked);\n --nc-state-complete: var(--nc-dark-state-complete);\n --nc-logo-dot: var(--nc-dark-logo-dot);\n --nc-navigation-selection-bg: var(--nc-dark-navigation-selection-bg);\n --nc-navigation-selection-fg: var(--nc-dark-navigation-selection-fg);\n --nc-navigation-selection-hover: var(--nc-dark-navigation-selection-hover);\n --nc-chart-1: var(--nc-dark-chart-1);\n --nc-chart-2: var(--nc-dark-chart-2);\n --nc-chart-3: var(--nc-dark-chart-3);\n --nc-chart-4: var(--nc-dark-chart-4);\n --nc-chart-5: var(--nc-dark-chart-5);\n --nc-chart-6: var(--nc-dark-chart-6);\n --nc-chart-7: var(--nc-dark-chart-7);\n --nc-chart-8: var(--nc-dark-chart-8);\n --nc-chart-9: var(--nc-dark-chart-9);\n --nc-chart-10: var(--nc-dark-chart-10);\n --nc-cobalto-100: var(--nc-dark-cobalto-100);\n --nc-cobalto-200: var(--nc-dark-cobalto-200);\n --nc-cobalto-300: var(--nc-dark-cobalto-300);\n --nc-cobalto-400: var(--nc-dark-cobalto-400);\n --nc-cobalto-500: var(--nc-dark-cobalto-500);\n --nc-cobalto-600: var(--nc-dark-cobalto-600);\n --nc-cobalto-700: var(--nc-dark-cobalto-700);\n --nc-cobalto-800: var(--nc-dark-cobalto-800);\n --nc-cobalto-900: var(--nc-dark-cobalto-900);\n --nc-cobalto-1000: var(--nc-dark-cobalto-1000);\n --nc-rosso-100: var(--nc-dark-rosso-100);\n --nc-rosso-200: var(--nc-dark-rosso-200);\n --nc-rosso-300: var(--nc-dark-rosso-300);\n --nc-rosso-400: var(--nc-dark-rosso-400);\n --nc-rosso-500: var(--nc-dark-rosso-500);\n --nc-rosso-600: var(--nc-dark-rosso-600);\n --nc-rosso-700: var(--nc-dark-rosso-700);\n --nc-rosso-800: var(--nc-dark-rosso-800);\n --nc-rosso-900: var(--nc-dark-rosso-900);\n --nc-rosso-1000: var(--nc-dark-rosso-1000);\n --nc-arancio-100: var(--nc-dark-arancio-100);\n --nc-arancio-200: var(--nc-dark-arancio-200);\n --nc-arancio-300: var(--nc-dark-arancio-300);\n --nc-arancio-400: var(--nc-dark-arancio-400);\n --nc-arancio-500: var(--nc-dark-arancio-500);\n --nc-arancio-600: var(--nc-dark-arancio-600);\n --nc-arancio-700: var(--nc-dark-arancio-700);\n --nc-arancio-800: var(--nc-dark-arancio-800);\n --nc-arancio-900: var(--nc-dark-arancio-900);\n --nc-arancio-1000: var(--nc-dark-arancio-1000);\n --nc-giallo-100: var(--nc-dark-giallo-100);\n --nc-giallo-200: var(--nc-dark-giallo-200);\n --nc-giallo-300: var(--nc-dark-giallo-300);\n --nc-giallo-400: var(--nc-dark-giallo-400);\n --nc-giallo-500: var(--nc-dark-giallo-500);\n --nc-giallo-600: var(--nc-dark-giallo-600);\n --nc-giallo-700: var(--nc-dark-giallo-700);\n --nc-giallo-800: var(--nc-dark-giallo-800);\n --nc-giallo-900: var(--nc-dark-giallo-900);\n --nc-giallo-1000: var(--nc-dark-giallo-1000);\n --nc-verde-100: var(--nc-dark-verde-100);\n --nc-verde-200: var(--nc-dark-verde-200);\n --nc-verde-300: var(--nc-dark-verde-300);\n --nc-verde-400: var(--nc-dark-verde-400);\n --nc-verde-500: var(--nc-dark-verde-500);\n --nc-verde-600: var(--nc-dark-verde-600);\n --nc-verde-700: var(--nc-dark-verde-700);\n --nc-verde-800: var(--nc-dark-verde-800);\n --nc-verde-900: var(--nc-dark-verde-900);\n --nc-verde-1000: var(--nc-dark-verde-1000);\n --nc-acqua-100: var(--nc-dark-acqua-100);\n --nc-acqua-200: var(--nc-dark-acqua-200);\n --nc-acqua-300: var(--nc-dark-acqua-300);\n --nc-acqua-400: var(--nc-dark-acqua-400);\n --nc-acqua-500: var(--nc-dark-acqua-500);\n --nc-acqua-600: var(--nc-dark-acqua-600);\n --nc-acqua-700: var(--nc-dark-acqua-700);\n --nc-acqua-800: var(--nc-dark-acqua-800);\n --nc-acqua-900: var(--nc-dark-acqua-900);\n --nc-acqua-1000: var(--nc-dark-acqua-1000);\n --nc-viola-100: var(--nc-dark-viola-100);\n --nc-viola-200: var(--nc-dark-viola-200);\n --nc-viola-300: var(--nc-dark-viola-300);\n --nc-viola-400: var(--nc-dark-viola-400);\n --nc-viola-500: var(--nc-dark-viola-500);\n --nc-viola-600: var(--nc-dark-viola-600);\n --nc-viola-700: var(--nc-dark-viola-700);\n --nc-viola-800: var(--nc-dark-viola-800);\n --nc-viola-900: var(--nc-dark-viola-900);\n --nc-viola-1000: var(--nc-dark-viola-1000);\n --nc-rosa-100: var(--nc-dark-rosa-100);\n --nc-rosa-200: var(--nc-dark-rosa-200);\n --nc-rosa-300: var(--nc-dark-rosa-300);\n --nc-rosa-400: var(--nc-dark-rosa-400);\n --nc-rosa-500: var(--nc-dark-rosa-500);\n --nc-rosa-600: var(--nc-dark-rosa-600);\n --nc-rosa-700: var(--nc-dark-rosa-700);\n --nc-rosa-800: var(--nc-dark-rosa-800);\n --nc-rosa-900: var(--nc-dark-rosa-900);\n --nc-rosa-1000: var(--nc-dark-rosa-1000);\n --nc-category-teal-soft: var(--nc-dark-category-teal-soft);\n --nc-category-teal-deep: var(--nc-dark-category-teal-deep);\n --nc-category-purple-soft: var(--nc-dark-category-purple-soft);\n --nc-category-purple-deep: var(--nc-dark-category-purple-deep);\n --nc-category-pink-soft: var(--nc-dark-category-pink-soft);\n --nc-category-pink-deep: var(--nc-dark-category-pink-deep);\n --nc-material-scrim-opacity: var(--nc-material-dark-scrim-opacity);\n --nc-elevation-resting:\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.145),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 1px 2px 0px rgb(0% 0% 0% / 0.5);\n --nc-elevation-raised:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.06),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.16),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 12px 24px -8px rgb(0% 0% 0% / 0.8);\n --nc-elevation-floating:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.08),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.16),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 24px 48px -12px rgb(0% 0% 0% / 0.9);\n --nc-elevation-modal:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.1),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.18),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 48px 96px -24px rgb(0% 0% 0%);\n --nc-elevation-glass:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.1),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.14),\n 0px 16px 32px -12px rgb(0% 0% 0% / 0.8);\n }\n}";
3
3
  export const brandWordmarkSvg = "<svg data-slot=\"brand-wordmark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 858 150\" width=\"137\" height=\"24\" class=\"block h-6 w-auto\" role=\"img\" aria-label=\"nadicode\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"18\"><path d=\"M9 150V100A41 41 0 0 1 91 100V150\"></path><circle cx=\"172\" cy=\"100\" r=\"41\"></circle><path d=\"M213 50V150\"></path><circle cx=\"294\" cy=\"100\" r=\"41\"></circle><path d=\"M335 0V150\"></path><path d=\"M375 50V150\"></path><path d=\"M484.99 71.01A41 41 0 1 0 484.99 128.99\"></path><circle cx=\"564\" cy=\"100\" r=\"41\"></circle><circle cx=\"686\" cy=\"100\" r=\"41\"></circle><path d=\"M727 0V150\"></path><path d=\"M767 100H849A41 41 0 1 0 839.41 126.35\"></path></g><circle cx=\"375\" cy=\"21\" r=\"14\" fill=\"var(--nc-logo-dot)\"></circle></svg>";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nadicodeai/ui",
3
- "version": "12.1.133",
3
+ "version": "12.1.135",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -83,7 +83,7 @@
83
83
  "@base-ui/react": "^1.9.0",
84
84
  "@iconify-icons/logos": "^2.0.3",
85
85
  "@iconify/react": "^6.0.2",
86
- "@nadicodeai/design-system": "12.1.133",
86
+ "@nadicodeai/design-system": "12.1.135",
87
87
  "@tanstack/react-table": "^9.3.1",
88
88
  "@vgpu/wgsl": "0.6.0",
89
89
  "class-variance-authority": "^0.7.1",