{"system":{"name":"ds-solo-shape","subtitle":"solo-shape Design System","version":"5.0.0-rc.2","host":"https://ds.soloshape.com","consumers":[{"host":"https://ds.mycongregation.app","status":"planned"}]},"consumers":["https://ds.mycongregation.app"],"changes":[{"id":"manager-mobile-navigation-viewport-fix","class":"governance","path":"live","breaking":false,"bump":"patch","targets":["src/lib/styles/shell.css","tests/responsive.spec.ts"],"reflowRisk":true,"summary":"Keep the collapsed manager navigation content-sized on narrow viewports."}],"changelog":[{"version":"5.0.0-rc.2","date":"2026-08-14","notes":["Correct the manager shell cascade so the collapsed mobile navigation no longer occupies and covers the full viewport.","Add phone-profile regression coverage proving the route body remains visible below the closed navigation."],"changes":[{"id":"manager-mobile-navigation-viewport-fix","class":"governance","path":"live","breaking":false,"bump":"patch","targets":["src/lib/styles/shell.css","tests/responsive.spec.ts"],"reflowRisk":true,"summary":"Keep the collapsed manager navigation content-sized on narrow viewports."}]},{"version":"5.0.0-rc.1","date":"2026-08-13","notes":["Contract candidate: rebaseline the manager on the ss-* / --ss-* namespace, a grayscale semantic foundation, ID-first element manifests, intrinsic responsive layout elements, source-vendored distribution, and offline-by-default conformance.","This is an observable release candidate, not the stable 5.0.0 release. Promotion requires the complete release:verify gate and disposition ledger."],"changes":[{"id":"solo-shape-contract-v5-rc1","class":"governance","path":"pr","breaking":true,"bump":"major","targets":["docs/contract-v1.md","src/lib/registry/elements.ts","src/lib/registry/tokens.ts"],"reflowRisk":true,"summary":"Introduce the target v5 public contract and begin its verified implementation rebaseline."}]},{"version":"4.8.0","date":"2026-07-12","notes":["Round conductor-console-retrofit I1a: extended existing form/action primitives for console provenance cleanup. Button adds variant='unstyled' for composition-owned visuals while preserving press behavior and caller class pass-through; TextField accepts native date/time input types (`time`, `date`, `datetime-local`, `month`, `week`). Additive API extension; no existing element status changes."],"changes":[{"id":"conductor-console-retrofit-primitives","class":"component","path":"live","breaking":false,"bump":"minor","targets":["src/lib/components/Button.svelte","src/lib/components/TextField.svelte","src/lib/registry/components.ts","src/lib/registry/meta.ts"],"reflowRisk":false,"summary":"Add Button variant='unstyled' and native date/time TextField types for consuming-app provenance retrofits."}]},{"version":"4.7.1","date":"2026-07-12","notes":["Round ssds-enforcement A6.1: fixed check-provenance consumer-relative source resolution so CHECK_PROVENANCE_SRC=./src scans the invoking consumer repo, not the DS package root. Semver patch; provenance gate bug fix."],"changes":[{"id":"ssds-enforcement-provenance-consumer-path","class":"governance","path":"live","breaking":false,"bump":"patch","targets":["scripts/check-provenance.mjs","docs/provenance-gate.md","src/lib/registry/meta.ts"],"reflowRisk":false,"summary":"Resolve consumer-supplied provenance source roots from the invoking working directory and cover the cross-repo invocation path."}]},{"version":"4.7.0","date":"2026-07-12","notes":["Round ssds-enforcement I4a: renamed the approved .ss-textarea registry title to Multi-line input so it is distinct from the proposed Textarea Svelte primitive. Additive metadata polish; no rendering or API behavior change."],"changes":[{"id":"ssds-enforcement-textarea-title-disambiguation","class":"component","path":"live","breaking":false,"bump":"minor","targets":["src/lib/registry/components.ts","src/lib/registry/meta.ts"],"reflowRisk":false,"summary":"Disambiguate the .ss-textarea fallback row title from the Textarea Svelte primitive title."}]},{"version":"4.6.0","date":"2026-07-12","notes":["Round ssds-enforcement I3: recorded compound and paired primitive shapes as classification-metadata variants of the element layer (docs/decisions/compound-paired-classification.md). Charter §3 unchanged; three element rows now carry a shape tag. Additive; no consumer contract change."],"changes":[{"id":"ssds-enforcement-compound-paired-classification","class":"component","path":"live","breaking":false,"bump":"minor","targets":["docs/decisions/compound-paired-classification.md","src/lib/registry/types.ts","src/lib/registry/components.ts","src/lib/registry/manifests.ts"],"reflowRisk":false,"summary":"Add shape/partnerSelectors metadata to ElementRegistryEntry; tag .ss-form-field as compound, .ss-radio-group and .ss-radio as paired."}]},{"version":"4.5.0","date":"2026-07-11","notes":["Round ssds-element-gapfill: added Textarea as a demand-scan-justified proposed form element. It wraps native multi-line text entry with the approved .ss-textarea visual contract, matching the TextField absorption pattern for console retrofit work."],"changes":[{"id":"ssds-element-gapfill-textarea","class":"component","path":"live","breaking":false,"bump":"minor","targets":["src/lib/components/Textarea.svelte","src/lib/registry/components.ts","src/lib/index.ts"],"reflowRisk":false,"summary":"Add Textarea as a proposed native multi-line form primitive backed by .ss-textarea."}]},{"version":"4.4.0","date":"2026-07-11","notes":["Round ssds-element-gapfill: added DatePicker as a proposed form element through the Bits UI DatePicker recipe path. It composes the editable date field, trigger, popover and single-date calendar behavior while rendering the day grid, month navigation and selected/today states with solo-shape tokens."],"changes":[{"id":"ssds-element-gapfill-datepicker","class":"component","path":"live","breaking":false,"bump":"minor","targets":["src/lib/components/DatePicker.svelte","src/lib/styles/components/date-picker.css","src/lib/registry/components.ts","src/lib/index.ts"],"reflowRisk":false,"summary":"Add DatePicker as a proposed Bits UI-backed date field and calendar popover primitive."}]},{"version":"4.3.0","date":"2026-07-11","notes":["Round ssds-element-gapfill: added Radio and RadioGroup as proposed form elements through the Bits UI recipe path. RadioGroup carries the roving-focus and arrow-key navigation contract; Radio renders each single-choice option with solo-shape token chrome."],"changes":[{"id":"ssds-element-gapfill-radio","class":"component","path":"live","breaking":false,"bump":"minor","targets":["src/lib/components/Radio.svelte","src/lib/components/RadioGroup.svelte","src/lib/styles/components/radio.css","src/lib/registry/components.ts","src/lib/index.ts"],"reflowRisk":false,"summary":"Add Radio and RadioGroup as proposed Bits UI-backed single-choice form primitives."}]},{"version":"4.2.0","date":"2026-07-11","notes":["Round ssds-element-gapfill: added Checkbox as a proposed form element through the Bits UI recipe path. It keeps the headless checkbox state machine, keyboard toggling, hidden-input form bridge and checked/indeterminate data attributes, while rendering solo-shape token chrome."],"changes":[{"id":"ssds-element-gapfill-checkbox","class":"component","path":"live","breaking":false,"bump":"minor","targets":["src/lib/components/Checkbox.svelte","src/lib/styles/components/checkbox.css","src/lib/registry/components.ts","src/lib/index.ts"],"reflowRisk":false,"summary":"Add Checkbox as a proposed Bits UI-backed form primitive with checked and indeterminate states."}]},{"version":"4.1.0","date":"2026-07-11","notes":["Round ssds-element-gapfill: added Combobox as a proposed searchable form element through the Bits UI recipe path. It layers local filtering and solo-shape token chrome over the headless combobox/listbox behavior while preserving native form submission through the Bits UI hidden input."],"changes":[{"id":"ssds-element-gapfill-combobox","class":"component","path":"live","breaking":false,"bump":"minor","targets":["src/lib/components/Combobox.svelte","src/lib/styles/components/combobox.css","src/lib/registry/components.ts","src/lib/index.ts"],"reflowRisk":false,"summary":"Add Combobox as a proposed Bits UI-backed searchable single-select form primitive."}]},{"version":"4.0.0","date":"2026-07-11","notes":["Round ssds-element-gapfill: revised Select as a proposed form element through the Bits UI recipe path. The new Select primitive adds listbox keyboard behavior, placeholder display and empty-state chrome; the native .ss-select class remains as a fallback but re-enters the lifecycle as proposed because the form-select contract changed."],"changes":[{"id":"ssds-element-gapfill-select","class":"component","path":"live","breaking":true,"bump":"major","targets":["src/lib/components/Select.svelte","src/lib/styles/components/select.css","src/lib/registry/components.ts","src/lib/index.ts"],"reflowRisk":true,"summary":"Rework Select as a proposed Bits UI-backed form primitive with placeholder and empty-state support."}]},{"version":"3.2.0","date":"2026-07-11","notes":["Round ssds-element-gapfill: added FormField as a proposed form element with an explicit charter §3 boundary exception. It standardizes the label + field + hint stack for the console gap-fill work while the follow-on enforcement round formalizes compound-element boundaries."],"changes":[{"id":"ssds-element-gapfill-formfield","class":"component","path":"live","breaking":false,"bump":"minor","targets":["src/lib/components/FormField.svelte","src/lib/styles/components/form.css","src/lib/registry/components.ts","src/lib/index.ts"],"reflowRisk":false,"summary":"Add FormField as a proposed form element and logged compound-boundary exception."}]},{"version":"3.1.0","date":"2026-07-11","notes":["Round ssds-element-gapfill: added TextField as a proposed form element. It is a Svelte wrapper around native single-line input behavior that reuses the approved .ss-input token styling, giving consuming apps an importable primitive instead of raw input markup."],"changes":[{"id":"ssds-element-gapfill-textfield","class":"component","path":"live","breaking":false,"bump":"minor","targets":["src/lib/components/TextField.svelte","src/lib/registry/components.ts","src/lib/index.ts"],"reflowRisk":false,"summary":"Add TextField as a proposed form element backed by the existing .ss-input styling contract."}]},{"version":"3.0.0","date":"2026-07-11","notes":["Round ssds-fork: forked from krown-design-manager into a new private repo ds-solo-shape as the solo-shape Design System (charter §2, §12).","Historical fork record: the first theme layer placed inherited product palettes behind a legacy theme attribute. Release 5 replaces that public direction with the grayscale reference and the namespaced recipe contract.","Elements-only catalog per charter §3 vocabulary. Every registry entry now carries a `classification: element | composition | behavior` field. The catalog page (/elements) filters on classification === \"element\" (22 CSS-class rows + 2 new Svelte-only rows for Icon and CountUp = 24 elements). Composition and behavior rows stay in the registry (audit + doc-generator visibility) but drop from the catalog surface. Routes /components, /objects, /dialogs, /pages removed; overlay elements fold into /elements#overlay.","Off-token color literal audit: new CLI-safe scripts/check-colors.mjs wired into npm run check. 6 rgba literals promoted to tokens (--ss-color-shimmer-high/mid, --ss-shadow-input-inset, --ss-color-status-danger-pulse-start/end).","Solo-shape brand mark added to icons.ts; sveltekit-starter favicon replaced with the solo-shape placeholder."]},{"version":"2.10.0","date":"2026-06-26","notes":["Dropdown component: non-breaking API enrichment. String options remain unchanged; object options now support separate value + label, per-option status dots on the ok/manual/block/info/skip token family, inert disabled rows, parent-controllable autoSelect (default true preserves the legacy first-option display fallback), placeholder display and emptyText for empty menus. Consumers such as the Conductor console AppPicker/TaskPicker wrappers can collapse their hand-replicated dropdown behavior onto this upstream component after their next design-system snapshot sync."]},{"version":"2.9.0","date":"2026-06-25","notes":["Added the brain icon under Wayfinding for the Conductor console run-board Strategist marker. Strategist uses the `brain` key; Operator reuses the existing `settings` gear-fill key, so there is no duplicate gear contract. Additive, non-breaking; no existing icon changed.","Raised --ss-size-control-small from 28px to 30px so .ss-btn--sm labels with descenders (g/j/p/q/y) no longer clip at line-height: 1. Single token change; supersedes the rail-scoped Button override the Conductor console shipped as a builder-shell I7 stopgap. That console cleanup is follow-on console work, not part of this design-system round."]},{"version":"2.8.0","date":"2026-06-24","notes":["Added --ss-color-status-info (blue) and --ss-color-status-info-subtle to the STATUS group — sibling of --ss-color-status-success / --ss-color-status-success-subtle, for in-progress / informational status. Additive, non-breaking; no existing tokens changed and no component CSS restyled. Consumers can adopt by syncing the registry feed."]},{"version":"2.7.0","date":"2026-06-12","notes":["Motion Lab evaluation COMPLETE. Final promotions: shared surface morph and snap-into-place reorder. 26 core behaviours, 0 pending; magnetic buttons and blanket press coverage stand retired (now a documented ledger — RETIRED_BEHAVIORS in the registry and feed).","Every behaviour integrated into a real home: Overview gained the system-pulse hero (tilt + glow + rolling registry counters); Elements demos icon micro-motions on buttons; Objects/Pages workload metrics roll in and fill with sheen; Pages review cards lift; Components gained five sections — shared surface morph, reorderable widgets, loading states, AI generation, completion celebration — plus the ambient empty state; Dialogs gained the parallax drawer and spatial depth.","New reusable primitives: growFrom/shrinkTo/fadeIn ($lib/motion/morph) and createSnapDrag ($lib/motion/snap) — the morph and drag choreographies as library code for consumer apps.","Motion Lab reset to all-clear: forwarding addresses for every behaviour, the retired ledger, and the process for staging the next batch."]},{"version":"2.6.0","date":"2026-06-12","notes":["Card lift: phantom-hover guard. When a collapsing surface leaves the cursor resting over an unrelated card, that card no longer lifts — hover is muted (.ss-hover-muted) until the pointer actually moves, and the just-viewed card carries the lift (.ss-lift--active) so attention returns to where the viewer’s mind already is. (Browsers cannot move the cursor; this delivers the intent the honest way.)"]},{"version":"2.5.0","date":"2026-06-12","notes":["Motion Lab review round 4 (Mark): PROMOTED to core — icon micro-motions (hover previews, event plays in full; every glyph owns one move).","Shared-layout morph collapse re-choreographed: the PANEL itself shrinks back into the card’s slot (content fading out over the first third); the small card’s display only appears once the surface has arrived at small size. The returning type never balloons.","Snap-into-place drag made foolproof: drag listeners moved to the window — reordering moves the row’s DOM node, which silently released pointer capture and could strand the row mid-air. Release now always lands; window blur is a safety net."]},{"version":"2.4.0","date":"2026-06-12","notes":["Motion Lab review round 3 (Mark): the settled rule — PRESS DIPS, SELECTION SLIDES. Buttons and interactive cards keep the original V1 buttery press, unchanged. Choosing between options is never a press: the sliding marker carries the change.","RETIRED the press-coverage extension (facet/tab/nav active scaling, whole-frame toggle dip, tonal option presses) and the harder-edged .ss-toggle itself.","NEW: .ss-seg--ink — the view-toggle voice. The black portion is now the thumb, gliding from Table to Cards and back on the same recipe as the tab underline; the selected label turns white as the thumb arrives. All view toggles ride it."]},{"version":"2.3.0","date":"2026-06-12","notes":["Motion Lab review round 2 (Mark): PROMOTED to core — 3D tilt (pairs with cursor glow on hero surfaces), spatial modal (2% recede), ambient empty state.","Press physics: contained controls (view toggle, segmented control) now press as ONE OBJECT — the whole frame dips like a card while the chosen option shades. As noticeable as any press, and a fill can never break its boundary.","Icon micro-motions: one grammar everywhere — HOVER previews every glyph’s move (bell swings, refresh half-turns, trash leans, upload rises, accordion caret nudges toward where it will go); the glyph’s own event plays it in full.","Shared-layout morph rebuilt as a TRUE FLIP: one continuous element grows from the card’s exact footprint to the detail panel on the new --ss-motion-duration-grow token (1100ms smooth / 420 fast / 1700 calm) — the boundary is visible the whole way; content fades in after the surface lands.","Snap-into-place drag: direct index targeting (fast multi-slot drags land in one splice, no chained swaps), quicker neighbour give-way. No more mid-drag sticking."]},{"version":"2.2.0","date":"2026-06-12","notes":["Motion Lab review round 1 (Mark): PROMOTED to core — card lift, cursor-follow glow (now glass-harmonised: glass-hi core blending to brand tone), drawer parallax, status celebration, AI generation motion, command palette (now global — ⌘K anywhere, navigation + pace commands).","RETIRED — magnetic buttons (effect, action, classes and registry entry removed).","TUNED, still in lab — 3D tilt strengthened to ±4.5° + hover shadow; spatial modal recede deepened to 2%; shared-layout morph slowed to --ss-motion-duration-curve so the edges visibly travel; snap-into-place drag smoothed (dragged item exempt from FLIP); ambient empty state amplified (visible drift + ok-green ping dot); icon micro-motions unified — one grammar, custom accent per glyph (bell swing, refresh spin, trash lean, upload hop).","Press physics rule amended: options contained in a shared frame (view toggle, segmented control) press tonally instead of scaling, so a fill never breaks its boundary. Value roll now lands the moment the remainder falls under half a digit — no stopped-then-flips-once tail."]},{"version":"2.1.0","date":"2026-06-12","notes":["Motion Lab: sixteen staged behaviours from the game-like-but-quiet brainstorm — card lift, magnetic buttons, route transitions, shared-layout morph, 3D tilt, meter inertia + sheen, depth skeletons, command-palette spawn, drawer parallax, status celebrations, cursor-follow glow, icon micro-motions, spatial modals, ambient empty states, AI generation motion, snap-into-place reordering. Each carries a stage (core/lab) and a usage contract; evaluate at /motion-lab.","New primitives: magnetic/tilt/glow actions, Drawer, CommandPalette, Meter, CountUp, Skeleton, CheckDraw components; press physics extended to facets, toggles, tabs and nav items.","Route transitions ride the View Transitions API with system tokens; the no-blurred-scrim and brand-tones-only laws hold across all new effects."]},{"version":"2.0.0","date":"2026-06-12","notes":["Re-architected as a SvelteKit application — the system is now data first: tokens, icons, components and motion are a typed registry from which the CSS, the docs, the audit and the distribution endpoints are generated.","Doc shell (nav, labels, hover and selection states) rebuilt from the system’s own tokens — removed all hardcoded chrome colours.","New tokens: border widths (--ss-border-width, --ss-border-width-hairline, --ss-border-width-focus), z-index scale (--ss-z-shell, --ss-z-pop, --ss-z-overlay, --ss-z-toast), micro spacing (--ss-space-05, --ss-space-15), on-dark additions (--ss-color-on-dark-ink-mute, --ss-color-on-dark-active), glass input/inset tokens promoted from dialog one-offs.","Retired the V1 highlight-options token fork — V2 is the single design language.","Archived shipped explorations (black action, orange & mic, live tile fill, status outline, typography options)."]},{"version":"1.0.0","date":"2026-06-11","notes":["V1 draft built in Claude Design AI (Claude Opus 4.8). Reviews module promoted to core with all ten edge cases resolved."]}],"elements":[{"id":"button","exportName":"Button","rootSelector":".ss-btn","implementation":"components/Button.svelte","category":"action","status":"proposed","api":{"props":["variant?: primary | secondary | quiet | danger | ondark","sm?: boolean","icon?: boolean","disabled?: boolean","href?: string"],"variants":["primary","secondary","quiet","danger","ondark","small","icon-only"],"slots":["children: Snippet"],"events":["onclick: MouseEvent"],"defaults":["variant='secondary'","sm=false","icon=false","disabled=false"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"native button or link","keyboard":["Enter activates links and buttons.","Space activates buttons."],"focus":"Uses the shared visible focus ring.","labeling":"Consumer supplies meaningful visible content or an accessible label.","disabled":"Native disabled applies to button rendering; links are never fake-disabled.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Long labels wrap inside the control while icon-only controls remain square.","truncation":"No truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-size-control","--ss-space-3","--ss-radius-sm","--ss-color-border","--ss-focus-ring"],"elements":[],"packages":[]},"fixtures":[{"id":"button-contract","route":"/contract/elements/button","states":["all-variants","disabled","focus-visible","long-label"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"link","exportName":"Link","rootSelector":".ss-link","implementation":"components/Link.svelte","category":"action","status":"proposed","api":{"props":["href: string","variant?: default | quiet | external"],"variants":["default","quiet","external"],"slots":["children: Snippet"],"events":[],"defaults":["variant='default'"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"native link","keyboard":["Enter follows the link."],"focus":"Uses a visible focus outline independent of hover.","labeling":"Consumer supplies meaningful visible content or an accessible label.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-color-brand","--ss-focus-ring"],"elements":[],"packages":[]},"fixtures":[{"id":"link-contract","route":"/contract/elements/link","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"text-field","exportName":"TextField","rootSelector":".ss-input","implementation":"components/TextField.svelte","category":"form","status":"proposed","api":{"props":["value?: string | number","type?: text | email | password | search | tel | url | number | time | date | datetime-local | month | week"],"variants":["native input types"],"slots":["children: Snippet"],"events":["native input and change events"],"defaults":["type='text'"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"native textbox or type-specific input","keyboard":["Preserves native input keyboard behavior."],"focus":"Uses the shared visible focus ring.","labeling":"Requires an associated label or aria-label.","disabled":"Preserves native disabled.","invalid":"Preserves aria-invalid and native validity.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-size-control","--ss-space-3","--ss-radius-sm","--ss-color-surface","--ss-color-border","--ss-focus-ring"],"elements":[],"packages":[]},"fixtures":[{"id":"text-field-contract","route":"/contract/elements/text-field","states":["default","disabled","invalid","long-value"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"textarea","exportName":"Textarea","rootSelector":".ss-textarea","implementation":"components/Textarea.svelte","category":"form","status":"proposed","api":{"props":["value?: string"],"variants":["native textarea states"],"slots":["children: Snippet"],"events":["native input and change events"],"defaults":[]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"native textbox","keyboard":["Preserves native multiline editing."],"focus":"Uses the shared visible focus ring.","labeling":"Requires an associated label or aria-label.","disabled":"Preserves native disabled.","invalid":"Preserves aria-invalid and native validity.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"Grows vertically or scrolls internally according to native textarea behavior.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-size-control","--ss-space-3","--ss-radius-sm","--ss-color-surface","--ss-color-border","--ss-focus-ring"],"elements":[],"packages":[]},"fixtures":[{"id":"textarea-contract","route":"/contract/elements/textarea","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"form-field","exportName":"FormField","rootSelector":".ss-form-field","implementation":"components/FormField.svelte","category":"form","status":"proposed","api":{"props":["label: string","hint?: string","for?: string"],"variants":[],"slots":["root","label","children","hint"],"events":[],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"label","private":true},{"slot":"hint","private":true}],"accessibility":{"role":"native semantics","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"The for prop connects the visible label to the slotted control.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-space-2","--ss-type-size-meta","--ss-color-ink-500"],"elements":["text-field","textarea","select","combobox"],"packages":[]},"fixtures":[{"id":"form-field-contract","route":"/contract/elements/form-field","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"select","exportName":"Select","rootSelector":".ss-select-control","implementation":"components/Select.svelte","category":"form","status":"proposed","api":{"props":["options: SelectOption[] | string[]","value?: string","placeholder?: string","disabled?: boolean","required?: boolean","portal?: boolean"],"variants":["placeholder","empty","disabled"],"slots":["root","trigger","value","content","item"],"events":["onchange: value"],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"trigger","private":true},{"slot":"value","private":true},{"slot":"content","private":true},{"slot":"item","private":true}],"accessibility":{"role":"listbox-backed select","keyboard":["Arrow keys move options.","Enter or Space opens and selects.","Escape closes.","Typeahead searches."],"focus":"Trigger owns visible focus; focus returns after dismissal.","labeling":"Requires label or aria-label.","disabled":"Trigger and options become inoperable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"Popover scrolls internally when its option list exceeds the visual viewport.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-size-control","--ss-space-3","--ss-radius-sm","--ss-color-surface","--ss-color-border","--ss-focus-ring"],"elements":["icon"],"packages":["bits-ui"]},"fixtures":[{"id":"select-contract","route":"/contract/elements/select","states":["default","open","empty","disabled","long-options"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"combobox","exportName":"Combobox","rootSelector":".ss-combobox","implementation":"components/Combobox.svelte","category":"form","status":"proposed","api":{"props":["options: ComboboxOption[] | string[]","value?: string","placeholder?: string","disabled?: boolean","required?: boolean","portal?: boolean"],"variants":["placeholder","empty","disabled"],"slots":["root","input","trigger","content","item"],"events":["onchange: value"],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"input","private":true},{"slot":"trigger","private":true},{"slot":"content","private":true},{"slot":"item","private":true}],"accessibility":{"role":"combobox with listbox","keyboard":["Typing filters options.","Arrow keys move options.","Enter selects.","Escape closes."],"focus":"Input owns visible focus; focus remains stable while filtering.","labeling":"Requires label or aria-label.","disabled":"Input and trigger become inoperable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"Popover scrolls internally when its option list exceeds the visual viewport.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-size-control","--ss-space-3","--ss-radius-sm","--ss-color-surface","--ss-color-border","--ss-focus-ring"],"elements":["icon"],"packages":["bits-ui"]},"fixtures":[{"id":"combobox-contract","route":"/contract/elements/combobox","states":["default","open","empty","disabled","long-options"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"checkbox","exportName":"Checkbox","rootSelector":".ss-checkbox","implementation":"components/Checkbox.svelte","category":"form","status":"proposed","api":{"props":["checked?: boolean","indeterminate?: boolean","disabled?: boolean","required?: boolean","readonly?: boolean"],"variants":["checked","indeterminate","disabled"],"slots":["root","indicator","label"],"events":["onchange: boolean"],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"indicator","private":true},{"slot":"label","private":true}],"accessibility":{"role":"checkbox","keyboard":["Space toggles."],"focus":"Root has a visible focus ring.","labeling":"Visible label snippet labels the control.","disabled":"Disabled prevents toggling.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-size-control","--ss-space-3","--ss-radius-sm","--ss-color-border","--ss-focus-ring"],"elements":["icon"],"packages":["bits-ui"]},"fixtures":[{"id":"checkbox-contract","route":"/contract/elements/checkbox","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"radio-group","exportName":"RadioGroup","rootSelector":".ss-radio-group","implementation":"components/RadioGroup.svelte","category":"form","status":"proposed","api":{"props":["value?: string","orientation?: horizontal | vertical","disabled?: boolean","required?: boolean","readonly?: boolean"],"variants":["horizontal","vertical"],"slots":["children: Snippet"],"events":["onchange: value"],"defaults":[]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"radiogroup","keyboard":["Arrow keys move and select according to orientation.","Tab enters and exits the group."],"focus":"Roving focus keeps one radio in the tab sequence.","labeling":"Requires aria-label or aria-labelledby.","disabled":"Disables all child radios.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-space-2"],"elements":["radio"],"packages":["bits-ui"]},"fixtures":[{"id":"radio-group-contract","route":"/contract/elements/radio-group","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"radio","exportName":"Radio","rootSelector":".ss-radio","implementation":"components/Radio.svelte","category":"form","status":"proposed","api":{"props":["value: string","disabled?: boolean"],"variants":["checked","disabled"],"slots":["root","indicator","label"],"events":[],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"indicator","private":true},{"slot":"label","private":true}],"accessibility":{"role":"radio","keyboard":["Behavior is coordinated by RadioGroup."],"focus":"Uses roving focus from RadioGroup.","labeling":"Visible label snippet labels the option.","disabled":"Prevents selection.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-size-control","--ss-space-3","--ss-radius-sm","--ss-color-border","--ss-focus-ring"],"elements":["radio-group"],"packages":["bits-ui"]},"fixtures":[{"id":"radio-contract","route":"/contract/elements/radio","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"date-picker","exportName":"DatePicker","rootSelector":".ss-date-picker","implementation":"components/DatePicker.svelte","category":"form","status":"proposed","api":{"props":["value?: DateValue","minValue?: DateValue","maxValue?: DateValue","disabled?: boolean","required?: boolean","locale?: string"],"variants":["closed","open","disabled"],"slots":["root","field","trigger","calendar","day"],"events":["onchange: DateValue","onopenchange: boolean"],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"field","private":true},{"slot":"trigger","private":true},{"slot":"calendar","private":true},{"slot":"day","private":true}],"accessibility":{"role":"segmented date field and calendar grid","keyboard":["Arrow keys navigate segments and days.","Page keys navigate months.","Enter selects.","Escape closes."],"focus":"Focus moves into the calendar and returns to the trigger.","labeling":"Field and calendar require accessible labels.","disabled":"Disables field, trigger, and dates.","invalid":"Minimum, maximum, and required validity are exposed.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"Calendar fits the visual viewport and scrolls only when the viewport height requires it.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[360]},"dependencies":{"tokens":["--ss-size-control","--ss-space-3","--ss-radius-sm","--ss-color-surface","--ss-color-border","--ss-focus-ring"],"elements":["icon"],"packages":["bits-ui"]},"fixtures":[{"id":"date-picker-contract","route":"/contract/elements/date-picker","states":["closed","open","min-max","long-locale"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"chip","exportName":"Chip","rootSelector":".ss-chip","implementation":"components/Chip.svelte","category":"status","status":"proposed","api":{"props":["status?: success | warning | danger | neutral | plain | approved | proposed","dot?: boolean"],"variants":["success","warning","danger","neutral","plain","approved","proposed"],"slots":["root","indicator","children"],"events":[],"defaults":["status='plain'","dot=true"]},"anatomy":[{"slot":"root","private":true},{"slot":"indicator","private":true}],"accessibility":{"role":"status text","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Status is always communicated by text, never only by color.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Long localized status words wrap inside the chip.","truncation":"No truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-color-status-success","--ss-color-status-warning","--ss-color-status-danger","--ss-color-status-neutral","--ss-radius-xs"],"elements":[],"packages":[]},"fixtures":[{"id":"chip-contract","route":"/contract/elements/chip","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"dropdown","exportName":"Dropdown","rootSelector":".ss-dropdown","implementation":"components/Dropdown.svelte","category":"form","status":"proposed","api":{"props":["options: DropdownOption[] | string[]","value?: string","placeholder?: string","autoSelect?: boolean"],"variants":["closed","open","empty"],"slots":["root","trigger","menu","item"],"events":[],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"trigger","private":true},{"slot":"menu","private":true},{"slot":"item","private":true}],"accessibility":{"role":"button and listbox","keyboard":["Enter or Space opens.","Escape closes.","Arrow keys, Home, and End move between enabled options."],"focus":"Options receive programmatic roving focus; the trigger regains focus after selection or dismissal.","labeling":"Requires a label for the option set.","disabled":"Individual disabled options cannot be selected.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"Menu scrolls internally if constrained by the visual viewport.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-size-control","--ss-space-3","--ss-radius-sm","--ss-color-surface","--ss-color-border","--ss-focus-ring"],"elements":["icon"],"packages":[]},"fixtures":[{"id":"dropdown-contract","route":"/contract/elements/dropdown","states":["closed","open","empty","disabled-option"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"segmented-control","exportName":"SegmentedControl","rootSelector":".ss-seg","implementation":"components/SegmentedControl.svelte","category":"form","status":"proposed","api":{"props":["options: SegmentOption[]","value?: string","ink?: boolean"],"variants":["default","ink"],"slots":["root","indicator","option"],"events":["onchange: value"],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"indicator","private":true},{"slot":"option","private":true}],"accessibility":{"role":"group of pressed buttons","keyboard":["Tab reaches each enabled option.","Enter or Space selects."],"focus":"Each option exposes visible focus.","labeling":"Option text names each choice.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Options remain in one row while long labels wrap within their equal-width segment.","truncation":"No implicit truncation.","overflow":"No body overflow; long labels are proven in the fixture.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-size-control","--ss-space-3","--ss-radius-sm","--ss-color-border","--ss-focus-ring"],"elements":[],"packages":[]},"fixtures":[{"id":"segmented-control-contract","route":"/contract/elements/segmented-control","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"dialog","exportName":"Dialog","rootSelector":".ss-dialog","implementation":"components/Dialog.svelte","category":"overlay","status":"proposed","api":{"props":["open?: boolean","title: string","sub?: string","size?: sm | md | lg","entrance?: rise | zoom | settle","dismissible?: boolean"],"variants":["small","medium","large"],"slots":["root","title","body","footer"],"events":["open binding"],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"title","private":true},{"slot":"body","private":true},{"slot":"footer","private":true}],"accessibility":{"role":"modal dialog","keyboard":["Escape closes when dismissible.","Tab is trapped inside while open."],"focus":"Focus enters the dialog, is trapped, and returns to the opener.","labeling":"Title labels the dialog.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"Entrance cuts to the final state when reduced motion is requested."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"Body scrolls internally at low visual viewport heights; controls remain reachable.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[600]},"dependencies":{"tokens":["--ss-z-overlay","--ss-size-dialog-sm","--ss-size-dialog-md","--ss-size-dialog-lg","--ss-motion-duration-base"],"elements":["button","icon"],"packages":[]},"fixtures":[{"id":"dialog-contract","route":"/contract/elements/dialog","states":["open","low-height","long-content","reduced-motion"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"meter","exportName":"Meter","rootSelector":".ss-meter","implementation":"components/Meter.svelte","category":"feedback","status":"proposed","api":{"props":["value?: number","brand?: boolean","sheen?: boolean","label?: string"],"variants":["neutral","brand","sheen"],"slots":["root","fill"],"events":[],"defaults":["value=0","brand=false","sheen=false"]},"anatomy":[{"slot":"root","private":true},{"slot":"fill","private":true}],"accessibility":{"role":"progressbar","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Requires label or surrounding label context.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"Sheen is disabled under reduced motion."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-color-surface-strong","--ss-color-ink-900","--ss-motion-duration-tag"],"elements":[],"packages":[]},"fixtures":[{"id":"meter-contract","route":"/contract/elements/meter","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"count-up","exportName":"CountUp","rootSelector":".ss-count-up","implementation":"components/CountUp.svelte","category":"feedback","status":"proposed","api":{"props":["value: number","decimals?: number"],"variants":[],"slots":["children: Snippet"],"events":[],"defaults":["decimals=0"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"text","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Consumer supplies meaningful visible content or an accessible label.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"Value changes immediately under reduced motion."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-motion-duration-roll"],"elements":[],"packages":[]},"fixtures":[{"id":"count-up-contract","route":"/contract/elements/count-up","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"skeleton","exportName":"Skeleton","rootSelector":".ss-skeleton","implementation":"components/Skeleton.svelte","category":"feedback","status":"proposed","api":{"props":["lines?: number"],"variants":[],"slots":["root","line"],"events":[],"defaults":["lines=3"]},"anatomy":[{"slot":"root","private":true},{"slot":"line","private":true}],"accessibility":{"role":"presentation","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"The loading region outside the skeleton owns its status label.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Represents pending content and is hidden from the accessibility tree.","reducedMotion":"Shimmer is disabled under reduced motion."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-color-shimmer-high","--ss-color-shimmer-mid","--ss-motion-duration-slow"],"elements":[],"packages":[]},"fixtures":[{"id":"skeleton-contract","route":"/contract/elements/skeleton","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"check-draw","exportName":"CheckDraw","rootSelector":".ss-checkdraw","implementation":"components/CheckDraw.svelte","category":"feedback","status":"proposed","api":{"props":["go?: boolean"],"variants":[],"slots":["children: Snippet"],"events":[],"defaults":["go=false"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"image","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Carries a completion label.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"Draw and pop animations are disabled under reduced motion."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-color-status-success","--ss-motion-duration-morph"],"elements":[],"packages":[]},"fixtures":[{"id":"check-draw-contract","route":"/contract/elements/check-draw","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"drawer","exportName":"Drawer","rootSelector":".ss-drawer-stage","implementation":"components/Drawer.svelte","category":"overlay","status":"proposed","api":{"props":["open?: boolean","title: string"],"variants":[],"slots":["root","page","scrim","drawer","body"],"events":["open binding"],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"page","private":true},{"slot":"scrim","private":true},{"slot":"drawer","private":true},{"slot":"body","private":true}],"accessibility":{"role":"complementary drawer","keyboard":["Escape closes.","Tab and Shift+Tab remain contained while open."],"focus":"Focus enters the drawer on open, remains trapped, and returns to the opener on close.","labeling":"Title labels the drawer.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"Parallax and slide cut to final states under reduced motion."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"Drawer body scrolls internally at low visual viewport heights.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[600]},"dependencies":{"tokens":["--ss-z-overlay","--ss-motion-duration-page"],"elements":["button","icon"],"packages":[]},"fixtures":[{"id":"drawer-contract","route":"/contract/elements/drawer","states":["open","closed","low-height","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"icon","exportName":"Icon","rootSelector":".ss-icon","implementation":"components/Icon.svelte","category":"icon","status":"proposed","api":{"props":["id: IconId","size?: number","variant?: thin | filled"],"variants":[],"slots":["root"],"events":[],"defaults":["size=24"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"presentation by default","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Parent control owns the accessible name; decorative SVG markup is hidden.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":[],"elements":[],"packages":[]},"fixtures":[{"id":"icon-contract","route":"/contract/elements/icon","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"quote","exportName":"Quote","rootSelector":".ss-quote","implementation":"components/Quote.svelte","category":"content","status":"proposed","api":{"props":[],"variants":[],"slots":["root","mark","quote"],"events":[],"defaults":[]},"anatomy":[{"slot":"root","private":true},{"slot":"mark","private":true},{"slot":"quote","private":true}],"accessibility":{"role":"figure and quotation","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Visible quotation content provides the accessible content.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-color-surface","--ss-color-border","--ss-space-4"],"elements":["icon"],"packages":[]},"fixtures":[{"id":"quote-contract","route":"/contract/elements/quote","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"stack","exportName":"Stack","rootSelector":".ss-stack","implementation":"components/layout/Stack.svelte","category":"layout","status":"proposed","api":{"props":["gap?: spacing tier"],"variants":[],"slots":["children: Snippet"],"events":[],"defaults":["gap='4'"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"native semantics","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Consumer supplies meaningful visible content or an accessible label.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"Children own their internal overflow; the stack never creates inline overflow.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-space-1","--ss-space-2","--ss-space-3","--ss-space-4","--ss-space-6","--ss-space-8"],"elements":[],"packages":[]},"fixtures":[{"id":"stack-contract","route":"/contract/elements/stack","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"cluster","exportName":"Cluster","rootSelector":".ss-cluster","implementation":"components/layout/Cluster.svelte","category":"layout","status":"proposed","api":{"props":["gap?: spacing tier","align?: start | center | end | stretch","justify?: start | center | end | between"],"variants":[],"slots":["children: Snippet"],"events":[],"defaults":["gap='3'","align='center'","justify='start'"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"native semantics","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Consumer supplies meaningful visible content or an accessible label.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Items wrap intrinsically whenever the container cannot hold the next item.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-space-1","--ss-space-2","--ss-space-3","--ss-space-4","--ss-space-6","--ss-space-8"],"elements":[],"packages":[]},"fixtures":[{"id":"cluster-contract","route":"/contract/elements/cluster","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"grid","exportName":"Grid","rootSelector":".ss-grid","implementation":"components/layout/Grid.svelte","category":"layout","status":"proposed","api":{"props":["gap?: spacing tier","minimum?: sm | md | lg"],"variants":[],"slots":["children: Snippet"],"events":[],"defaults":["gap='4'","minimum='md'"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"native semantics","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Consumer supplies meaningful visible content or an accessible label.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"auto-fit creates as many columns as the container can support.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[192,256,352]},"dependencies":{"tokens":["--ss-space-1","--ss-space-2","--ss-space-3","--ss-space-4","--ss-space-6","--ss-space-8","--ss-size-layout-grid-sm","--ss-size-layout-grid-md","--ss-size-layout-grid-lg"],"elements":[],"packages":[]},"fixtures":[{"id":"grid-contract","route":"/contract/elements/grid","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"center","exportName":"Center","rootSelector":".ss-center","implementation":"components/layout/Center.svelte","category":"layout","status":"proposed","api":{"props":["width?: content | wide | full","gutter?: spacing tier"],"variants":[],"slots":["children: Snippet"],"events":[],"defaults":["width='content'","gutter='4'"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"native semantics","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Consumer supplies meaningful visible content or an accessible label.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Content wraps without changing semantics.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Caps content width, centers it, and preserves tokenized inline gutters including wide desktop.","transitionBoundaries":[]},"dependencies":{"tokens":["--ss-space-1","--ss-space-2","--ss-space-3","--ss-space-4","--ss-space-6","--ss-space-8","--ss-size-layout-content","--ss-size-layout-wide"],"elements":[],"packages":[]},"fixtures":[{"id":"center-contract","route":"/contract/elements/center","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"sidebar","exportName":"Sidebar","rootSelector":".ss-sidebar-layout","implementation":"components/layout/Sidebar.svelte","category":"layout","status":"proposed","api":{"props":["gap?: spacing tier"],"variants":[],"slots":["root","sidebar","content"],"events":[],"defaults":["gap='4'"]},"anatomy":[{"slot":"root","private":true},{"slot":"sidebar","private":true},{"slot":"content","private":true}],"accessibility":{"role":"native semantics","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Consumer supplies meaningful visible content or an accessible label.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Sidebar and content wrap to a single column when their intrinsic minimums no longer fit.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[576]},"dependencies":{"tokens":["--ss-space-1","--ss-space-2","--ss-space-3","--ss-space-4","--ss-space-6","--ss-space-8","--ss-size-layout-sidebar","--ss-size-layout-sidebar-threshold"],"elements":[],"packages":[]},"fixtures":[{"id":"sidebar-contract","route":"/contract/elements/sidebar","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]},{"id":"switcher","exportName":"Switcher","rootSelector":".ss-switcher","implementation":"components/layout/Switcher.svelte","category":"layout","status":"proposed","api":{"props":["gap?: spacing tier","threshold?: sm | md | lg","limit?: 1..6"],"variants":[],"slots":["children: Snippet"],"events":[],"defaults":["gap='4'","threshold='md'","limit=4"]},"anatomy":[{"slot":"root","private":true}],"accessibility":{"role":"native semantics","keyboard":[],"focus":"Does not create a focus stop; descendants retain native focus.","labeling":"Consumer supplies meaningful visible content or an accessible label.","disabled":"Not applicable.","invalid":"Not applicable.","loading":"Not applicable.","reducedMotion":"No motion is required for comprehension."},"responsive":{"minimumInlineSize":240,"wrapping":"Children switch as a group from horizontal to stacked when the container crosses the selected intrinsic threshold.","truncation":"No implicit truncation.","overflow":"No inline overflow at supported container sizes.","containerBehavior":"Sizes from its containing inline axis, not a named device width.","transitionBoundaries":[384,576,768]},"dependencies":{"tokens":["--ss-space-1","--ss-space-2","--ss-space-3","--ss-space-4","--ss-space-6","--ss-space-8","--ss-size-layout-switcher-sm","--ss-size-layout-switcher-md","--ss-size-layout-switcher-lg"],"elements":[],"packages":[]},"fixtures":[{"id":"switcher-contract","route":"/contract/elements/switcher","states":["default","long-content"]}],"history":[{"version":"5.0.0-rc.1","change":"Entered the ID-first contract rebaseline.","breaking":true}]}],"tokens":{"groups":[{"id":"brand","title":"Brand roles","blurb":"Neutral reference roles for brand and wayfinding. Client recipes map these semantic roles to approved colors."},{"id":"ink","title":"Ink","blurb":"Neutral text roles. Body and labels never drop below regular weight."},{"id":"surface","title":"Surfaces & borders","blurb":"Neutral canvas, card and inset surfaces with hairline and emphasized borders."},{"id":"ondark","title":"On-dark","blurb":"Controls and hairlines on the ink-900 header and nav — the one place the UI sits on near-black, so the usual neutrals invert."},{"id":"status","title":"Status","blurb":"Foreground, background, and border roles. The reference is grayscale and status is never color-only."},{"id":"font","title":"Font families","blurb":"Native system stack for everything readable; matching system monospace for IDs, labels and timestamps. No web fonts load — the UI feels instant and native."},{"id":"type-scale","title":"Type scale","blurb":"Size + line-height pairs. Headings run heavy with a real size jump to body."},{"id":"weight","title":"Weights","blurb":"Body floor is regular — never go thinner."},{"id":"tracking","title":"Letter spacing","blurb":"Tracking by role, eased for SF metrics."},{"id":"spacing","title":"Spacing","blurb":"4px base scale, with two micro steps for fine rhythm."},{"id":"radius","title":"Radius","blurb":"V2 softened scale — rounder, more tactile."},{"id":"border","title":"Border widths","blurb":"Stroke weights are a decision, not a magic number."},{"id":"size","title":"Control sizes","blurb":"The few fixed heights everything aligns to — header, controls, tiles."},{"id":"elevation","title":"Elevation","blurb":"Use sparingly — borders first. Shadows are reserved for things that float."},{"id":"glass","title":"Material / glass","blurb":"The premium translucent surface for things that FLOAT over the page: dialogs, menus, popovers. The page behind stays sharp; only a floating surface frosts what is directly beneath it."},{"id":"z-index","title":"Z-index","blurb":"Stacking order is a named scale, not an arms race."},{"id":"focus","title":"Focus","blurb":"One focus ring everywhere — surface gap + brand line."},{"id":"ease","title":"Easing","blurb":"Pick easing by what the element is DOING. All curves decelerate for the buttery glide; they never change with pace."},{"id":"duration","title":"Duration","blurb":"Pick duration by how BIG the move is. Anchored on the approved 280ms card-hover decelerate. Fast and Calm paces rescale every duration; easing stays constant."}],"tokens":[{"name":"--ss-color-brand","value":"#181818","description":"Primary neutral brand and action role","group":"brand"},{"name":"--ss-color-brand-active","value":"#272727","description":"Active neutral brand and action role","group":"brand"},{"name":"--ss-color-brand-subtle","value":"#F4F4F4","description":"Subtle neutral brand surface","group":"brand"},{"name":"--ss-color-on-brand","value":"#FFFFFF","description":"Foreground on the brand fill","group":"brand"},{"name":"--ss-color-accent","value":"#525252","description":"Secondary neutral wayfinding role","group":"brand"},{"name":"--ss-color-accent-subtle","value":"#F4F4F4","description":"Subtle secondary wayfinding surface","group":"brand"},{"name":"--ss-color-ink-900","value":"#181818","description":"Primary text","group":"ink"},{"name":"--ss-color-ink-800","value":"#272727","description":"Active neutral fill and strongest hover","group":"ink"},{"name":"--ss-color-ink-700","value":"#3F3F3F","description":"Strong body / headings on surface","group":"ink"},{"name":"--ss-color-ink-600","value":"#525252","description":"Supporting body text","group":"ink"},{"name":"--ss-color-ink-500","value":"#626262","description":"Secondary text","group":"ink"},{"name":"--ss-color-ink-400","value":"#767676","description":"Muted / placeholder","group":"ink"},{"name":"--ss-color-ink-inverse","value":"#FFFFFF","description":"Text on ink-900 fills","group":"ink"},{"name":"--ss-color-canvas","value":"#F7F7F7","description":"App canvas","group":"surface"},{"name":"--ss-color-surface","value":"#FFFFFF","description":"Cards, panels","group":"surface"},{"name":"--ss-color-surface-subtle","value":"#F4F4F4","description":"Alt rows, inset wells","group":"surface"},{"name":"--ss-color-surface-strong","value":"#E4E4E4","description":"Deeper inset / hover","group":"surface"},{"name":"--ss-color-border","value":"#E4E4E4","description":"Hairline","group":"surface"},{"name":"--ss-color-border-strong","value":"#949494","description":"Emphasized divider / input edge","group":"surface"},{"name":"--ss-color-on-dark-line","value":"#3F3F3F","description":"Outlined control border / hairline on dark","group":"ondark"},{"name":"--ss-color-on-dark-edge","value":"#090909","description":"Hard edge under the ink-900 header","group":"ondark"},{"name":"--ss-color-on-dark-ink","value":"#FFFFFF","description":"Primary text & icons on dark","group":"ondark"},{"name":"--ss-color-on-dark-ink-2","value":"#949494","description":"Secondary text on dark — nav links, header actions","group":"ondark"},{"name":"--ss-color-on-dark-ink-dim","value":"#B5B5B5","description":"Tertiary / inactive text on dark (resting tabs)","group":"ondark"},{"name":"--ss-color-on-dark-ink-mute","value":"#A0A0A0","description":"Muted meta / group labels on dark","group":"ondark"},{"name":"--ss-color-on-dark-hover","value":"rgba(255,255,255,0.07)","description":"Subtle fill on hover","group":"ondark"},{"name":"--ss-color-on-dark-active","value":"rgba(255,255,255,0.11)","description":"Selected / active fill on dark","group":"ondark"},{"name":"--ss-color-status-success","value":"#272727","description":"Published / live / done foreground","group":"status"},{"name":"--ss-color-status-success-subtle","value":"#F4F4F4","description":"Published / live / done surface","group":"status"},{"name":"--ss-color-status-success-subtle-hover","value":"#E4E4E4","description":"Published surface hover","group":"status"},{"name":"--ss-color-status-info","value":"#3F3F3F","description":"In progress / informational foreground","group":"status"},{"name":"--ss-color-status-info-subtle","value":"#F4F4F4","description":"Informational surface","group":"status"},{"name":"--ss-color-status-warning","value":"#525252","description":"Attention / pending foreground","group":"status"},{"name":"--ss-color-status-warning-subtle","value":"#F4F4F4","description":"Attention / pending surface","group":"status"},{"name":"--ss-color-status-warning-text","value":"#3F3F3F","description":"Attention text on subtle surface","group":"status"},{"name":"--ss-color-status-warning-border","value":"#767676","description":"Attention border","group":"status"},{"name":"--ss-color-status-danger","value":"#181818","description":"Blocked / error foreground","group":"status"},{"name":"--ss-color-status-danger-subtle","value":"#E4E4E4","description":"Blocked / error surface","group":"status"},{"name":"--ss-color-status-danger-text","value":"#181818","description":"Blocked / error text","group":"status"},{"name":"--ss-color-status-danger-border","value":"#626262","description":"Blocked / error border","group":"status"},{"name":"--ss-color-status-danger-pulse-start","value":"rgba(24,24,24,0.5)","description":"Danger pulse start","group":"status"},{"name":"--ss-color-status-danger-pulse-end","value":"rgba(24,24,24,0)","description":"Danger pulse end","group":"status"},{"name":"--ss-color-status-neutral","value":"#626262","description":"Neutral / skipped / draft foreground","group":"status"},{"name":"--ss-color-status-neutral-subtle","value":"#F4F4F4","description":"Neutral / skipped / draft surface","group":"status"},{"name":"--ss-font-ui","value":"ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif","description":"Native system stack — cleaner at dense sizes, zero web-font load","group":"font"},{"name":"--ss-font-mono","value":"ui-monospace, \"SF Mono\", \"SFMono-Regular\", Menlo, Consolas, \"Liberation Mono\", monospace","description":"Matching system monospace — IDs, labels, timestamps","group":"font"},{"name":"--ss-type-size-display","value":"48px","description":"Cover / hero title","group":"type-scale"},{"name":"--ss-type-line-height-display","value":"50px","description":"Display line-height","group":"type-scale"},{"name":"--ss-type-size-page","value":"30px","description":"Route / page title","group":"type-scale"},{"name":"--ss-type-line-height-page","value":"36px","description":"Page line-height","group":"type-scale"},{"name":"--ss-type-size-section","value":"19px","description":"Section title","group":"type-scale"},{"name":"--ss-type-line-height-section","value":"25px","description":"Section line-height","group":"type-scale"},{"name":"--ss-type-size-card","value":"14px","description":"Card title (heavy, small)","group":"type-scale"},{"name":"--ss-type-line-height-card","value":"20px","description":"Card title line-height","group":"type-scale"},{"name":"--ss-type-size-body","value":"14px","description":"Body text","group":"type-scale"},{"name":"--ss-type-line-height-body","value":"21px","description":"Body line-height","group":"type-scale"},{"name":"--ss-type-size-sm","value":"13px","description":"Small body / control text","group":"type-scale"},{"name":"--ss-type-line-height-sm","value":"19px","description":"Small line-height","group":"type-scale"},{"name":"--ss-type-size-meta","value":"12px","description":"Meta / timestamps","group":"type-scale"},{"name":"--ss-type-line-height-meta","value":"16px","description":"Meta line-height","group":"type-scale"},{"name":"--ss-type-size-micro","value":"11px","description":"Micro labels, uppercase rows","group":"type-scale"},{"name":"--ss-type-line-height-micro","value":"15px","description":"Micro line-height","group":"type-scale"},{"name":"--ss-type-size-ui-lg","value":"15px","description":"Header brand name / large control glyphs","group":"type-scale"},{"name":"--ss-type-weight-regular","value":"400","description":"Body floor — never go thinner","group":"weight"},{"name":"--ss-type-weight-medium","value":"500","description":"Medium","group":"weight"},{"name":"--ss-type-weight-semi","value":"600","description":"Semibold — control labels","group":"weight"},{"name":"--ss-type-weight-bold","value":"700","description":"Bold — card titles","group":"weight"},{"name":"--ss-type-weight-heavy","value":"800","description":"Fat headings","group":"weight"},{"name":"--ss-type-tracking-label","value":"0.06em","description":"Uppercase row labels","group":"tracking"},{"name":"--ss-type-tracking-tight","value":"-0.015em","description":"Page / section titles","group":"tracking"},{"name":"--ss-type-tracking-heavy","value":"-0.02em","description":"Big fat display headings (eased for SF’s wider metrics)","group":"tracking"},{"name":"--ss-space-05","value":"2px","description":"Micro nudge — tightest vertical rhythm","group":"spacing"},{"name":"--ss-space-1","value":"4px","description":"Base unit","group":"spacing"},{"name":"--ss-space-15","value":"6px","description":"Micro step — chip gaps, label margins","group":"spacing"},{"name":"--ss-space-2","value":"8px","description":"2× base","group":"spacing"},{"name":"--ss-space-3","value":"12px","description":"3× base","group":"spacing"},{"name":"--ss-space-4","value":"16px","description":"4× base","group":"spacing"},{"name":"--ss-space-5","value":"20px","description":"5× base","group":"spacing"},{"name":"--ss-space-6","value":"24px","description":"6× base","group":"spacing"},{"name":"--ss-space-8","value":"32px","description":"8× base","group":"spacing"},{"name":"--ss-space-10","value":"40px","description":"10× base","group":"spacing"},{"name":"--ss-space-12","value":"48px","description":"12× base","group":"spacing"},{"name":"--ss-space-16","value":"64px","description":"16× base","group":"spacing"},{"name":"--ss-radius-xs","value":"4px","description":"Chips, dots, status tiles","group":"radius"},{"name":"--ss-radius-sm","value":"9px","description":"Inputs, buttons","group":"radius"},{"name":"--ss-radius-md","value":"13px","description":"Cards, panels","group":"radius"},{"name":"--ss-radius-lg","value":"18px","description":"Large containers, dialogs","group":"radius"},{"name":"--ss-radius-pill","value":"999px","description":"Pills, fully round","group":"radius"},{"name":"--ss-border-width","value":"1px","description":"Standard stroke — borders, dividers, outlines","group":"border"},{"name":"--ss-border-width-hairline","value":"0.5px","description":"Hairline on glass surfaces","group":"border"},{"name":"--ss-border-width-focus","value":"2px","description":"Focus ring line weight","group":"border"},{"name":"--ss-size-control","value":"34px","description":"Standard control height — buttons, inputs, facets","group":"size"},{"name":"--ss-size-control-small","value":"30px","description":"Small control height","group":"size"},{"name":"--ss-size-tile","value":"26px","description":"Compact choice indicator and mark size","group":"size"},{"name":"--ss-size-touch-target","value":"44px","description":"Minimum square touch target","group":"size","structural":true},{"name":"--ss-size-dialog-sm","value":"400px","description":"Small dialog inline maximum","group":"size","structural":true},{"name":"--ss-size-dialog-md","value":"520px","description":"Medium dialog inline maximum","group":"size","structural":true},{"name":"--ss-size-dialog-lg","value":"680px","description":"Large dialog inline maximum","group":"size","structural":true},{"name":"--ss-element-button-icon-padding","value":"11px","description":"Icon-button inline inset","group":"size","structural":true},{"name":"--ss-element-button-icon-gap","value":"7px","description":"Icon-button internal gap","group":"size","structural":true},{"name":"--ss-element-chip-height","value":"22px","description":"Status chip minimum block size","group":"size","structural":true},{"name":"--ss-element-status-indicator-size","value":"6px","description":"Status and meter indicator thickness","group":"size","structural":true},{"name":"--ss-element-dialog-icon-size","value":"36px","description":"Dialog icon tile","group":"size","structural":true},{"name":"--ss-element-dialog-close-offset-block","value":"-3px","description":"Dialog close optical block offset","group":"size","structural":true},{"name":"--ss-element-dialog-close-offset-inline","value":"-6px","description":"Dialog close optical inline offset","group":"size","structural":true},{"name":"--ss-element-control-padding-inline","value":"10px","description":"Native control inline inset","group":"size","structural":true},{"name":"--ss-element-control-icon-offset","value":"11px","description":"Native control trailing icon offset","group":"size","structural":true},{"name":"--ss-element-segment-inset","value":"3px","description":"Segmented-control thumb inset","group":"size","structural":true},{"name":"--ss-element-segment-option-padding","value":"14px","description":"Segmented-control option inline inset","group":"size","structural":true},{"name":"--ss-element-dropdown-menu-offset","value":"-6px","description":"Dropdown menu closed-state block offset","group":"size","structural":true},{"name":"--ss-element-textarea-min-height","value":"88px","description":"Textarea default minimum block size","group":"size","structural":true},{"name":"--ss-element-drawer-width","value":"360px","description":"Drawer preferred inline size","group":"size","structural":true},{"name":"--ss-element-check-glyph-size","value":"22px","description":"Completion check glyph","group":"size","structural":true},{"name":"--ss-element-text-gap","value":"5px","description":"Tight helper-text separation","group":"size","structural":true},{"name":"--ss-element-halo-spread","value":"14px","description":"Completion halo maximum spread","group":"size","structural":true},{"name":"--ss-size-layout-grid-sm","value":"12rem","description":"Small intrinsic grid item minimum","group":"size","structural":true},{"name":"--ss-size-layout-grid-md","value":"16rem","description":"Medium intrinsic grid item minimum","group":"size","structural":true},{"name":"--ss-size-layout-grid-lg","value":"22rem","description":"Large intrinsic grid item minimum","group":"size","structural":true},{"name":"--ss-size-layout-content","value":"70rem","description":"Readable centered content maximum","group":"size","structural":true},{"name":"--ss-size-layout-wide","value":"90rem","description":"Wide centered content maximum","group":"size","structural":true},{"name":"--ss-size-layout-full","value":"100%","description":"Uncapped centered content width","group":"size","structural":true},{"name":"--ss-size-layout-sidebar","value":"18rem","description":"Intrinsic sidebar preferred width","group":"size","structural":true},{"name":"--ss-size-layout-sidebar-threshold","value":"50%","description":"Content threshold before sidebar wraps","group":"size","structural":true},{"name":"--ss-size-layout-switcher-sm","value":"24rem","description":"Small switcher stack threshold","group":"size","structural":true},{"name":"--ss-size-layout-switcher-md","value":"36rem","description":"Medium switcher stack threshold","group":"size","structural":true},{"name":"--ss-size-layout-switcher-lg","value":"48rem","description":"Large switcher stack threshold","group":"size","structural":true},{"name":"--ss-shadow-sm","value":"0 1px 2px rgba(24,24,24,0.05)","description":"Resting card","group":"elevation"},{"name":"--ss-shadow-md","value":"0 4px 12px rgba(24,24,24,0.10), 0 1px 3px rgba(24,24,24,0.06)","description":"Hover lift","group":"elevation"},{"name":"--ss-shadow-pop","value":"0 8px 28px rgba(24,24,24,0.16)","description":"Floating overlays","group":"elevation"},{"name":"--ss-shadow-input-inset","value":"rgba(24,24,24,0.04)","description":"Hairline inset shadow on input edges","group":"elevation"},{"name":"--ss-glass-bg","value":"rgba(252,252,252,0.78)","description":"Balanced — glassy yet soft over busy content","group":"glass"},{"name":"--ss-glass-bg-solid","value":"rgba(252,252,252,0.92)","description":"Denser, for tall / legible bodies","group":"glass"},{"name":"--ss-glass-blur","value":"50px","description":"Backdrop blur radius","group":"glass"},{"name":"--ss-glass-saturate","value":"135%","description":"Backdrop saturation boost","group":"glass"},{"name":"--ss-glass-border","value":"rgba(255,255,255,0.6)","description":"Bright glass edge","group":"glass"},{"name":"--ss-glass-hi","value":"rgba(255,255,255,0.6)","description":"Inset top highlight","group":"glass"},{"name":"--ss-glass-shadow","value":"0 1px 0 var(--ss-glass-hi) inset, 0 16px 44px rgba(24,24,24,0.16), 0 2px 8px rgba(24,24,24,0.06)","description":"Composite glass shadow — highlight + deep soft drop","group":"glass"},{"name":"--ss-glass-input-bg","value":"rgba(255,255,255,0.62)","description":"Frosted input resting on glass","group":"glass"},{"name":"--ss-glass-input-bg-focus","value":"rgba(255,255,255,0.92)","description":"Frosted input focused — denser","group":"glass"},{"name":"--ss-glass-input-line","value":"rgba(24,24,24,0.12)","description":"Hairline input edge on glass","group":"glass"},{"name":"--ss-glass-inset-line","value":"rgba(24,24,24,0.07)","description":"Hairline divider inside glass","group":"glass"},{"name":"--ss-color-shimmer-high","value":"rgba(255,255,255,0.18)","description":"Skeleton/meter sheen highlight (lower opacity)","group":"glass"},{"name":"--ss-color-shimmer-mid","value":"rgba(255,255,255,0.45)","description":"Skeleton/meter sheen mid-band highlight (higher opacity)","group":"glass"},{"name":"--ss-z-pop","value":"600","description":"Popovers, dropdown menus","group":"z-index"},{"name":"--ss-z-overlay","value":"1000","description":"Dialog scrim + dialog","group":"z-index"},{"name":"--ss-z-toast","value":"1400","description":"Toasts / audit badges above everything","group":"z-index"},{"name":"--ss-focus-ring","value":"0 0 0 2px var(--ss-color-surface), 0 0 0 4px var(--ss-color-brand)","description":"One focus ring everywhere — surface gap + brand line","group":"focus"},{"name":"--ss-focus-ring-width","value":"3px","description":"Inner focus wash spread","group":"focus"},{"name":"--ss-motion-ease-standard","value":"cubic-bezier(0.32, 0.72, 0, 1)","description":"Workhorse — smooth, soft landing","group":"ease"},{"name":"--ss-motion-ease-out","value":"cubic-bezier(0.22, 1, 0.36, 1)","description":"ENTERING — buttery quint decelerate","group":"ease"},{"name":"--ss-motion-ease-in","value":"cubic-bezier(0.64, 0, 0.78, 0)","description":"LEAVING — eases up, accelerates away","group":"ease"},{"name":"--ss-motion-ease-in-out","value":"cubic-bezier(0.76, 0, 0.24, 1)","description":"MOVING between two on-screen states","group":"ease"},{"name":"--ss-motion-ease-settle","value":"cubic-bezier(0.34, 1.40, 0.64, 1)","description":"RARE tiny overshoot — confirm / commit only","group":"ease"},{"name":"--ss-motion-ease-glide","value":"cubic-bezier(0.16, 1, 0.30, 1)","description":"SIGNATURE long expo decelerate — press & state-morph commits","group":"ease"},{"name":"--ss-motion-ease-smooth","value":"cubic-bezier(0.45, 0, 0.55, 1)","description":"EVEN symmetric — colour crossfades that reveal gradually","group":"ease"},{"name":"--ss-motion-duration-instant","value":"150ms","fast":"70ms","calm":"240ms","description":"Toggle, single dot flip","group":"duration"},{"name":"--ss-motion-duration-fast","value":"210ms","fast":"90ms","calm":"340ms","description":"Hover colour, focus, small state change","group":"duration"},{"name":"--ss-motion-duration-base","value":"280ms","fast":"120ms","calm":"460ms","description":"Chip morph, content swap, card hover","group":"duration"},{"name":"--ss-motion-duration-slow","value":"400ms","fast":"170ms","calm":"660ms","description":"List settle (FLIP), larger surfaces","group":"duration"},{"name":"--ss-motion-duration-morph","value":"520ms","fast":"210ms","calm":"840ms","description":"State-morph commit (publish) — deliberate","group":"duration"},{"name":"--ss-motion-duration-tag","value":"700ms","fast":"260ms","calm":"1120ms","description":"Status-tag colour crossfade — slow, even reveal","group":"duration"},{"name":"--ss-motion-duration-page","value":"560ms","fast":"200ms","calm":"900ms","description":"Route / tab transitions, smooth scroll","group":"duration"},{"name":"--ss-motion-duration-curve","value":"760ms","fast":"300ms","calm":"1180ms","description":"Easing-player dot — long enough to FEEL the curve","group":"duration"},{"name":"--ss-motion-duration-grow","value":"1100ms","fast":"420ms","calm":"1700ms","description":"Shared-surface growth — slow enough to track the edges from card to detail","group":"duration"},{"name":"--ss-motion-duration-roll","value":"1800ms","fast":"720ms","calm":"2900ms","description":"Value count roll — long dramatic settle","group":"duration"},{"name":"--ss-motion-duration-scroll-min","value":"520ms","fast":"220ms","calm":"800ms","description":"In-page scroll, short hops","group":"duration"},{"name":"--ss-motion-duration-scroll-max","value":"1100ms","fast":"420ms","calm":"1700ms","description":"In-page scroll, long hauls","group":"duration"},{"name":"--ss-motion-duration-press-return","value":"800ms","fast":"300ms","calm":"1180ms","description":"Asymmetric button release glide","group":"duration"},{"name":"--ss-motion-duration-meter-sheen","value":"2600ms","fast":"1000ms","calm":"3800ms","description":"Progress meter sheen cycle","group":"duration"},{"name":"--ss-motion-duration-skeleton-sheen","value":"2200ms","fast":"900ms","calm":"3400ms","description":"Skeleton shimmer cycle","group":"duration"},{"name":"--ss-motion-duration-reduced","value":"0.01ms","fast":"0.01ms","calm":"0.01ms","description":"Browser-safe effectively-zero reduced-motion duration","group":"duration"},{"name":"--ss-motion-stagger","value":"55ms","fast":"20ms","calm":"95ms","description":"Stagger step for lists/grids (cap the count)","group":"duration"}]},"schemaVersion":"solo-shape.registry/v1","managerInventory":{"legacyProductRows":[{"selector":".ss","title":"Product base","description":"Reset-ish base for product surfaces — UI font, ink, body size, antialiasing.","layer":"element","file":"components/base.css","classification":"element","category":"base","status":"approved"},{"selector":".ss-subtext","title":"Subtext","description":"The system’s one treatment for secondary descriptive text — small, regular, ink-500.","layer":"element","file":"components/base.css","classification":"element","category":"base","status":"approved"},{"selector":".ss-header","title":"App header","description":"The ink-900 bar — brand, tabs and actions on the on-dark token family.","layer":"component","file":"components/header.css","variants":[".ss-brand",".ss-brand-mark",".ss-brand-name",".ss-brand-sub",".ss-header-spacer",".ss-header-action"],"classification":"composition"},{"selector":".ss-tab","title":"Top tab","description":"Header navigation tab — brand underline marks the current page.","layer":"component","file":"components/header.css","variants":[".ss-tabs",".ss-tab[aria-current=\"page\"]"],"classification":"composition"},{"selector":".ss-sidenav","title":"Side nav","description":"The product left rail — ink-900 with the on-dark family, brand spine on the active item. Persistent on desktop; slides in as a drawer (--ss-motion-duration-page/--ss-motion-ease-in-out) with a scrim below 900px.","layer":"component","file":"components/sidenav.css","variants":[".ss-sidenav__brand",".ss-sidenav__mark",".ss-sidenav__name",".ss-sidenav__nav",".ss-sidenav__group",".ss-sidenav__link",".ss-sidenav__link[aria-current=\"page\"]",".ss-sidenav__footer",".ss-sidenav-scrim",".ss-topbar",".ss-topbar__menu"],"classification":"composition"},{"selector":".ss-btn","title":"Button","description":"The action primitive. The element always owns its chrome; caller classes may position it but cannot opt out of the visual contract.","layer":"element","file":"components/button.css","variants":[".ss-btn--primary",".ss-btn--secondary",".ss-btn--quiet",".ss-btn--danger",".ss-btn--ondark",".ss-btn--sm",".ss-btn--icon"],"classification":"element","category":"actions","status":"approved"},{"selector":".ss-link","title":"Link","description":"Inline link — burnt orange, underline on hover.","layer":"element","file":"components/button.css","variants":[".ss-link--quiet",".ss-link--external"],"classification":"element","category":"actions","status":"approved"},{"selector":".ss-card","title":"Card / panel","description":"The container base — surface, hairline, radius-md.","layer":"component","file":"components/card.css","variants":[".ss-card__head",".ss-card__title",".ss-card__body",".ss-card--accent"],"classification":"composition"},{"selector":".ss-loc","title":"Location card","description":"Shop card — name, address, ID, platform tiles, footer. Lifts on hover.","layer":"component","file":"components/card.css","variants":[".ss-loc__top",".ss-loc__name",".ss-loc__addr",".ss-loc__id",".ss-loc__platforms",".ss-loc__foot"],"classification":"composition"},{"selector":".ss-field","title":"Detail field row","description":"Label/value grid row — mono uppercase key, hairline divider.","layer":"object","file":"components/card.css","variants":[".ss-field__label",".ss-field__value"],"classification":"composition"},{"selector":".ss-chip","title":"Status chip","description":"Status word + tint pair. Status is never colour-only.","layer":"element","file":"components/chip.css","variants":[".ss-chip__dot",".ss-chip--success",".ss-chip--approved",".ss-chip--proposed",".ss-chip--warning",".ss-chip--danger",".ss-chip--neutral",".ss-chip--plain"],"classification":"element","category":"status","status":"approved"},{"selector":".ss-plat","title":"Platform tile","description":"Square platform mark. Live = ok-tint fill (the fill IS the signal); not-live carries a corner dot naming the work left.","layer":"element","file":"components/chip.css","variants":[".ss-plat--live",".ss-plat--off",".ss-plat__g",".ss-plat__status",".ss-plat__status--success",".ss-plat__status--warning",".ss-plat__status--danger",".ss-plat__status--none",".ss-plat__status--none-match"],"classification":"element","category":"status","status":"approved"},{"selector":".ss-assignee","title":"Assignee pill","description":"Avatar + name for multi-user attribution.","layer":"object","file":"components/chip.css","variants":[".ss-avatar"],"classification":"composition"},{"selector":".ss-label","title":"Field label","description":"Form label — meta size, semibold.","layer":"element","file":"components/form.css","classification":"element","category":"forms","status":"approved"},{"selector":".ss-form-field","title":"FormField","description":"Label + field + hint stack. Compound primitive per docs/decisions/compound-paired-classification.md.","layer":"element","file":"components/form.css","classification":"element","category":"forms","status":"proposed","shape":"compound"},{"selector":".ss-input","title":"Text input","description":"Single-line input — brand focus wash.","layer":"element","file":"components/form.css","classification":"element","category":"forms","status":"approved"},{"selector":"TextField","title":"TextField","description":"Svelte primitive for native single-line text and native date/time entry, reusing the approved .ss-input visual contract.","layer":"element","file":"components/TextField.svelte","classification":"element","category":"forms","status":"proposed"},{"selector":".ss-textarea","title":"Multi-line input","description":"Multi-line input — brand focus wash.","layer":"element","file":"components/form.css","classification":"element","category":"forms","status":"approved"},{"selector":"Textarea","title":"Textarea","description":"Svelte primitive for native multi-line text entry, reusing the approved .ss-textarea visual contract.","layer":"element","file":"components/Textarea.svelte","classification":"element","category":"forms","status":"proposed"},{"selector":".ss-select","title":"Select","description":"Native select fallback. The proposed Select primitive adds Bits UI listbox behavior, placeholder display and empty-state chrome.","layer":"element","file":"components/form.css","classification":"element","category":"forms","status":"proposed"},{"selector":"Select","title":"Select primitive","description":"Svelte select primitive absorbed from Bits UI headless listbox behavior and re-skinned with solo-shape tokens.","layer":"element","file":"components/Select.svelte","variants":[".ss-select-control",".ss-select__trigger",".ss-select__value",".ss-select__caret",".ss-select__content",".ss-select__viewport",".ss-select__item",".ss-select__check",".ss-select__item-label",".ss-select__empty"],"classification":"element","category":"forms","status":"proposed"},{"selector":".ss-combobox","title":"Combobox","description":"Searchable single-select form element absorbed from Bits UI Combobox behavior and re-skinned with solo-shape tokens.","layer":"element","file":"components/combobox.css","variants":[".ss-combobox__field",".ss-combobox__input",".ss-combobox__trigger",".ss-combobox__caret",".ss-combobox__content",".ss-combobox__viewport",".ss-combobox__item",".ss-combobox__check",".ss-combobox__item-label",".ss-combobox__empty"],"classification":"element","category":"forms","status":"proposed"},{"selector":".ss-checkbox","title":"Checkbox","description":"Two-state selection element with indeterminate support, absorbed from Bits UI Checkbox behavior and re-skinned with solo-shape tokens.","layer":"element","file":"components/checkbox.css","variants":[".ss-checkbox__box",".ss-checkbox__label"],"classification":"element","category":"forms","status":"proposed"},{"selector":".ss-radio-group","title":"RadioGroup","description":"Grouped single-choice field absorbed from Bits UI RadioGroup behavior, including roving focus and arrow-key navigation. Owner of the paired primitive with .ss-radio.","layer":"element","file":"components/radio.css","classification":"element","category":"forms","status":"proposed","shape":"paired","partnerSelectors":[".ss-radio"]},{"selector":".ss-radio","title":"Radio","description":"Single-choice option item for RadioGroup, re-skinned from Bits UI radio item state with solo-shape tokens. Item of the paired primitive with .ss-radio-group.","layer":"element","file":"components/radio.css","variants":[".ss-radio__mark",".ss-radio__dot",".ss-radio__label"],"classification":"element","category":"forms","status":"proposed","shape":"paired","partnerSelectors":[".ss-radio-group"]},{"selector":".ss-date-picker","title":"DatePicker","description":"Date field + calendar popover absorbed from Bits UI DatePicker behavior and re-skinned with solo-shape tokens.","layer":"element","file":"components/date-picker.css","variants":[".ss-date-picker__field",".ss-date-picker__segments",".ss-date-picker__segment",".ss-date-picker__trigger",".ss-date-picker__content",".ss-date-picker__calendar",".ss-date-picker__nav",".ss-date-picker__grid",".ss-date-picker__day"],"classification":"element","category":"forms","status":"proposed"},{"selector":".ss-hint","title":"Field hint","description":"Quiet helper line under a field.","layer":"element","file":"components/form.css","classification":"element","category":"forms","status":"approved"},{"selector":".ss-seg","title":"Segmented control","description":"The sliding pill — one thumb glides between options on the same recipe as the tab marker. The ink variant (black thumb) is the view-toggle voice: Table | Cards. Selection SLIDES, press DIPS — choosing is never a press. Retired the harder-edged .ss-toggle.","layer":"element","file":"components/form.css","variants":[".ss-seg__thumb",".ss-seg__opt",".ss-seg--ink"],"classification":"element","category":"forms","status":"approved"},{"selector":".ss-composer","title":"Voice composer","description":"Textarea + mic. The mic owns the bottom-right corner.","layer":"component","file":"components/form.css","variants":[".ss-mic",".ss-mic--live",".ss-voice-note"],"classification":"composition"},{"selector":".ss-bubble","title":"Intake bubble","description":"Chat bubble — user = ink, system = brand tint.","layer":"component","file":"components/conversation.css","variants":[".ss-bubbles",".ss-bubble--user",".ss-bubble--system",".ss-bubble__who"],"classification":"composition"},{"selector":".ss-confirm","title":"Confirmation card","description":"Receipt card with a brand spine — what the system just did.","layer":"component","file":"components/conversation.css","variants":[".ss-confirm__head",".ss-confirm__row",".ss-confirm__k"],"classification":"composition"},{"selector":".ss-check","title":"Processing checklist","description":"Stepped progress — the live step breathes quietly.","layer":"component","file":"components/conversation.css","variants":[".ss-check__row",".ss-check__mark",".ss-check__mark--done",".ss-check__mark--active",".ss-check__mark--warning",".ss-check__mark--wait",".ss-check__label",".ss-check__meta"],"classification":"composition"},{"selector":".ss-feed","title":"Activity feed","description":"Icon + event + mono time rows.","layer":"component","file":"components/conversation.css","variants":[".ss-feed__row",".ss-feed__icon",".ss-feed__main",".ss-feed__sub",".ss-feed__time"],"classification":"composition"},{"selector":".ss-empty","title":"Empty state","description":"Dashed well with a quiet explanation and one action.","layer":"component","file":"components/feedback.css","variants":[".ss-empty__title",".ss-empty__body"],"classification":"composition"},{"selector":".ss-banner","title":"Banner","description":"Inline warning / blocked / info strip.","layer":"component","file":"components/feedback.css","variants":[".ss-banner__icon",".ss-banner--warning",".ss-banner--danger",".ss-banner--info"],"classification":"composition"},{"selector":".ss-table","title":"Dense table","description":"Locations at scale — sticky mono headers, compacted platform tiles.","layer":"component","file":"components/table.css","variants":[".td-name",".td-id",".td-time",".td-plat"],"classification":"composition"},{"selector":".ss-metric-hero","title":"Hero workload metric","description":"ONE hero figure per view — prominence from scale, not colour. Meter fills green with work done.","layer":"object","file":"components/reviews.css","variants":[".ss-metric-hero__line",".ss-metric-hero__lbl",".ss-metric-hero__fig",".ss-metric-hero__meter",".ss-metric-hero__cap"],"classification":"composition"},{"selector":".ss-facet","title":"Filter facet","description":"Selectable count + label chip; active = ink fill (the toggle’s selection language).","layer":"object","file":"components/reviews.css","variants":[".ss-facets",".ss-facet__n",".ss-facet__l"],"classification":"composition"},{"selector":".ss-stars","title":"Star rating","description":"Monochrome stars — the score reads from the COUNT of filled stars, never gold.","layer":"element","file":"components/reviews.css","classification":"element","category":"status","status":"approved"},{"selector":".ss-quote","title":"Quote block","description":"Someone else’s words — opens with the filled quote glyph as a quiet ornament.","layer":"element","file":"components/reviews.css","variants":[".ss-quote__mark"],"classification":"element","category":"base","status":"approved"},{"selector":".ss-dotline","title":"Dot-separated meta line","description":"ONE rule for every “token · token · token” list — divider spacing can never drift.","layer":"object","file":"components/reviews.css","variants":[".ss-dot"],"classification":"composition"},{"selector":".ss-review","title":"Review card","description":"Assembled from card + quote + stars + dotline; the spine is the reserved --ss-color-accent accent.","layer":"component","file":"components/reviews.css","variants":[".ss-review__top",".ss-review__by",".ss-review__author",".ss-review__when",".ss-review__foot",".ss-review__plat",".ss-review__ext"],"classification":"composition"},{"selector":".ss-dropdown","title":"Dropdown menu","description":"Custom listbox that opens BELOW the trigger; status dots, disabled rows and empty hints stay inside the same overlay grammar.","layer":"overlay","file":"components/dropdown.css","variants":[".ss-dropdown__trigger",".ss-dropdown__trigger[data-placeholder='true']",".ss-dropdown__caret",".ss-dropdown__menu",".ss-dropdown__item",".ss-dropdown__check",".ss-dropdown__dot",".ss-dropdown__dot--success",".ss-dropdown__dot--warning",".ss-dropdown__dot--danger",".ss-dropdown__dot--info",".ss-dropdown__dot--neutral",".ss-dropdown__empty"],"classification":"element","category":"overlay","status":"approved"},{"selector":".ss-glass","title":"Glass material","description":"The translucent floating-chrome surface — only for things that genuinely float.","layer":"overlay","file":"components/glass.css","classification":"element","category":"overlay","status":"approved"},{"selector":".ss-lift","title":"Card lift","description":"Hover lift for any interactive card — rise, hair of scale, deeper shadow. Includes the phantom-hover guard: .ss-hover-muted suppresses lift under a resting cursor (e.g. after a surface collapses) until the pointer actually moves; .ss-lift--active carries the lift programmatically on the just-viewed card.","layer":"effect","file":"components/motion-effects.css","variants":[".ss-lift--active",".ss-hover-muted"],"classification":"behavior"},{"selector":".ss-tilt","title":"3D tilt","description":"±2° toward the cursor with a hair of scale. Hero surfaces only.","layer":"effect","file":"components/motion-effects.css","classification":"behavior"},{"selector":".ss-glow","title":"Cursor-follow glow","description":"Barely-there radial brand wash tracking the pointer. AI/hero surfaces only.","layer":"effect","file":"components/motion-effects.css","classification":"behavior"},{"selector":".ss-meter","title":"Meter","description":"Generic progress bar — fill animates with inertia; optional whisper of sheen.","layer":"effect","file":"components/motion-effects.css","variants":[".ss-meter__fill",".ss-meter__fill--brand",".ss-meter--sheen"],"classification":"element","category":"motion primitives","status":"approved"},{"selector":".ss-skeleton","title":"Skeleton","description":"Layered loading surface with a soft sweep that stops when content lands.","layer":"effect","file":"components/motion-effects.css","variants":[".ss-skeleton__bar",".ss-skeleton__bar--lg",".ss-cascade"],"classification":"element","category":"motion primitives","status":"approved"},{"selector":".ss-palette","title":"Command palette","description":"Glass layer spawning in — scale 0.96→1, rise 8px. The scrim stays sharp.","layer":"effect","file":"components/motion-effects.css","variants":[".ss-palette__input",".ss-palette__list",".ss-palette__item",".ss-palette__hint"],"classification":"composition"},{"selector":".ss-drawer","title":"Parallax drawer","description":"The drawer slides in while the page concedes the space — scale, shift, dim.","layer":"effect","file":"components/motion-effects.css","variants":[".ss-drawer-stage",".ss-drawer-stage__page",".ss-drawer-stage__scrim",".ss-drawer__head",".ss-drawer__title",".ss-drawer__body"],"classification":"element","category":"overlay","status":"approved"},{"selector":".ss-checkdraw","title":"Status celebration","description":"Check draws itself, badge settles in, soft halo breathes out once. Never confetti.","layer":"effect","file":"components/motion-effects.css","variants":[".ss-checkdraw--go"],"classification":"element","category":"motion primitives","status":"approved"},{"selector":".ss-ic-spin","title":"Icon micro-motions","description":"Refresh spins, bell wiggles once, trash leans, upload rises, accordion caret turns.","layer":"effect","file":"components/motion-effects.css","variants":[".ss-ic-wiggle",".ss-ic-swing",".ss-ic-turn",".ss-ic-tilt",".ss-ic-rise",".ss-ic-lean-once",".ss-ic-hop-once",".ss-acc"],"classification":"behavior"},{"selector":".ss-empty--ambient","title":"Ambient empty state","description":"The empty-state glyph drifts on a slow loop; a soft dot pulses.","layer":"effect","file":"components/motion-effects.css","variants":[".ss-empty__glyph",".ss-pulse-dot"],"classification":"behavior"},{"selector":".ss-ai","title":"AI generation motion","description":"Brand-tone border sweep while thinking, streaming text shimmer, pulsing caret.","layer":"effect","file":"components/motion-effects.css","variants":[".ss-ai--thinking",".ss-ai-shimmer",".ss-ai-caret"],"classification":"behavior"},{"selector":".ss-overlay","title":"Overlay","description":"Full-viewport positioning layer with a light ink wash — the page reads through it.","layer":"overlay","file":"components/dialog.css","variants":[".ss-overlay__scrim"],"classification":"element","category":"overlay","status":"approved"},{"selector":".ss-dialog","title":"Dialog","description":"The modal — a single sheet of glass; hairlines, never opaque seams.","layer":"overlay","file":"components/dialog.css","variants":[".ss-dialog--sm",".ss-dialog--md",".ss-dialog--lg",".ss-dialog--accent",".ss-dialog__head",".ss-dialog__icon",".ss-dialog__titles",".ss-dialog__title",".ss-dialog__sub",".ss-dialog__close",".ss-dialog__body",".ss-dialog__foot"],"classification":"element","category":"overlay","status":"approved"},{"selector":"Icon","title":"Icon","description":"Svelte primitive that renders any glyph from the icon registry at a given size and variant (thin / filled).","layer":"element","file":"components/Icon.svelte","classification":"element","category":"icon primitives","status":"approved"},{"selector":"CountUp","title":"Value counter","description":"Svelte primitive that animates a numeric change to its new value — gentle launch, long settle, remainder-aware landing.","layer":"element","file":"components/CountUp.svelte","classification":"element","category":"motion primitives","status":"approved"}],"shell":[{"selector":".ds-doc","title":"Doc frame","description":"Two-column document grid — nav rail + content.","layer":"shell","file":"shell.css","variants":[".ds-main"]},{"selector":".ds-nav","title":"Doc nav","description":"The left rail — ink-900 with the on-dark token family. Hover = ondark-hover, selection = ondark-active + brand spine.","layer":"shell","file":"shell.css","variants":[".ds-nav__brand",".ds-nav__mark",".ds-nav__name",".ds-nav__toggle",".ds-nav__links",".ds-nav__ver",".ds-nav__group"]},{"selector":".ds-sec","title":"Doc section","description":"Numbered section — mono eyebrow, heavy title, quiet lede.","layer":"shell","file":"shell.css","variants":[".ds-sec__num",".ds-sec__title",".ds-sec__lede",".ds-sub"]},{"selector":".ds-prose","title":"Doc prose","description":"Measure-capped body copy with inline code chips.","layer":"shell","file":"shell.css","variants":[".ds-mono"]},{"selector":".ds-cover","title":"Doc cover","description":"Page hero — eyebrow, display title, sub.","layer":"shell","file":"shell.css","variants":[".ds-cover__eyebrow",".ds-cover__sub"]},{"selector":".ds-exec","title":"Executive callout","description":"Ink-900 panel speaking the on-dark family, brand tick.","layer":"shell","file":"shell.css"},{"selector":".ds-demo","title":"Demo stage","description":"Inset well where live components render.","layer":"shell","file":"shell.css","variants":[".ds-demo--surface",".ds-demo__row",".ds-spec"]},{"selector":".ds-principle","title":"Principle card","description":"Numbered design-principle card.","layer":"shell","file":"shell.css","variants":[".ds-principles",".ds-principle__n"]},{"selector":".ds-sw","title":"Token swatch","description":"Colour swatch — chip + name + value + usage.","layer":"shell","file":"shell.css","variants":[".ds-swatches",".ds-sw__chip",".ds-sw__body",".ds-sw__name",".ds-sw__hex",".ds-sw__use",".ds-sw--border"]},{"selector":".ds-ramp","title":"Type ramp row","description":"Specimen + mono spec, hairline separated.","layer":"shell","file":"shell.css","variants":[".ds-ramp__row",".ds-ramp__spec"]},{"selector":".ds-scale","title":"Spacing scale","description":"Brand bars at each spacing step.","layer":"shell","file":"shell.css","variants":[".ds-scale__row",".ds-scale__bar",".ds-scale__lbl"]},{"selector":".ds-radius-box","title":"Radius box","description":"Brand-tint box at each radius step.","layer":"shell","file":"shell.css","variants":[".ds-radii"]},{"selector":".ds-split","title":"Split layout","description":"Responsive two-up grid for side-by-side demos.","layer":"shell","file":"shell.css"},{"selector":".ds-tbl","title":"Doc table","description":"Spec table — uppercase mono headers, hairline rows.","layer":"shell","file":"shell.css"},{"selector":".ds-tag","title":"Doc tag","description":"Now / soon / ok status tags for roadmaps and ledgers.","layer":"shell","file":"shell.css","variants":[".ds-tag--now",".ds-tag--soon",".ds-tag--ready",".ds-tag--later"]},{"selector":".ds-lab-sandbox","title":"Labs sandbox wrapper","description":"Hosts a forked preview of a registry component with the experiment’s token, component CSS, and motion overrides applied; isolates stacking + filters from the surrounding doc shell.","layer":"shell","file":"shell.css"},{"selector":".ds-combo-grid","title":"Combinations grid","description":"Responsive card grid on /combinations — one auto-filled cell per registered element, so the axis switchers can reflow the whole catalog live.","layer":"shell","file":"shell.css"},{"selector":".ds-combo-cell","title":"Combinations cell","description":"A single element cell inside the combinations grid — carries the data-registry-selector attribute the check:combinations gate walks against.","layer":"shell","file":"shell.css","variants":[".ds-combo-cell__head",".ds-combo-cell__selector",".ds-combo-cell__body",".ds-combo-cell__foot"]}]},"motion":{"behaviors":[{"id":"tactile-press","title":"Tactile press","description":"Buttons & interactive cards dip on press — committing an ACTION. Asymmetric: a quick dip DOWN so it lands within the brief click, then a slow buttery glide BACK on release — never the mid-click reversal that reads as jitter. The press is for actions only: choosing between options is never a press — selection slides (see the sliding tab indicator).","duration":["--ss-motion-duration-fast"],"easing":["--ss-motion-ease-glide","--ss-motion-ease-standard"]},{"id":"state-morph","title":"State morph","description":"A status flip (Draft → Published) animates the change, never hard-swaps: width morph, tint crossfade, label crossfade and dot pulse choreographed across three beats.","duration":["--ss-motion-duration-morph"],"easing":["--ss-motion-ease-glide"]},{"id":"tag-crossfade","title":"Status-tag crossfade","description":"The chip is a COLOUR crossfade, so it rides the even symmetric curve over a long duration — a gradual reveal that never front-loads (which would read as an instant snap).","duration":["--ss-motion-duration-tag"],"easing":["--ss-motion-ease-smooth"]},{"id":"flip-list","title":"FLIP list settle","description":"Filter transitions move surviving rows to their new homes (FLIP), with entering rows rising in and leaving rows accelerating away. Container height settles smoothly.","duration":["--ss-motion-duration-slow"],"easing":["--ss-motion-ease-in-out","--ss-motion-ease-out","--ss-motion-ease-in"]},{"id":"stagger","title":"Stagger + skeleton","description":"Loading skeleton crossfades into content arriving as a quick cascade. Cap the stagger at 6 items — beyond that the tail feels broken, not choreographed.","duration":["--ss-motion-duration-base","--ss-motion-stagger"],"easing":["--ss-motion-ease-out"]},{"id":"tab-slide","title":"Sliding tab indicator","description":"The active-tab underline travels to the clicked tab — one marker moving between two resting states. The segmented control thumb rides the identical recipe, including the ink view-toggle (Table | Cards) where the BLACK portion glides between options. Selection SLIDES, press DIPS.","duration":["--ss-motion-duration-page"],"easing":["--ss-motion-ease-in-out"]},{"id":"value-roll","title":"Value roll","description":"A figure that changes counts to its new value — gentle launch, long settle. The roll lands the moment the remainder falls under half a digit, so the figure never looks stopped and then flips once more.","duration":["--ss-motion-duration-roll"],"easing":["--ss-motion-ease-out"]},{"id":"smooth-scroll","title":"Smooth scroll","description":"In-page travel is distance-scaled between the min and max scroll durations, easing in-out so the viewport glides rather than jumps.","duration":["--ss-motion-duration-scroll-min","--ss-motion-duration-scroll-max"],"easing":["--ss-motion-ease-in-out"]},{"id":"dialog-entrance","title":"Dialog entrance","description":"The scrim fades to its wash while the dialog rises (or zooms, or settles with the rare overshoot) — entering, so it decelerates in.","duration":["--ss-motion-duration-base"],"easing":["--ss-motion-ease-out","--ss-motion-ease-settle"]},{"id":"bubble-rise","title":"Bubble entrance","description":"Chat replies rise a few px and fade in (ss-rise).","duration":["--ss-motion-duration-base"],"easing":["--ss-motion-ease-out"]},{"id":"now-breathe","title":"Live step breathing","description":"The live \"now\" step in a checklist breathes quietly so the eye finds it without it shouting.","duration":[],"easing":["--ss-motion-ease-standard"]},{"id":"card-lift","title":"Card lift","description":"On hover an interactive card lifts off the surface — scale 1→1.015, rise −3px, shadow deepens, border brightens. A physical object becoming active, never a bounce. PHANTOM-HOVER GUARD: a card resting under a stationary cursor (after a surface collapses) never lifts — hover is muted until the pointer actually moves, and the just-viewed card carries the lift instead.","duration":["--ss-motion-duration-base"],"easing":["--ss-motion-ease-out"],"stage":"core","usage":"Any interactive card whose action opens or changes a meaningful surface."},{"id":"route-transition","title":"Route transition","description":"Views hand over like panels: the old page eases out (fade + 8px drop), the new one rises in. Rides the View Transitions API where available; cuts cleanly where not.","duration":["--ss-motion-duration-base"],"easing":["--ss-motion-ease-out","--ss-motion-ease-in"],"stage":"core","usage":"Route changes where a directional handoff helps preserve context."},{"id":"shared-layout","title":"Shared layout morph","description":"A card LITERALLY grows into its detail surface: one continuous element, FLIP-morphed from the small card’s exact footprint to the panel’s — the boundary is visible the whole way. Rides --ss-motion-duration-grow, the slowest UI move in the system; content fades in only after the surface is most of the way there.","duration":["--ss-motion-duration-grow"],"easing":["--ss-motion-ease-in-out"],"stage":"core","usage":"Card → drawer, list row → detail, thumbnail → preview. Use only when spatial continuity matters."},{"id":"tilt","title":"3D tilt card","description":"The card tilts ±4.5° toward the cursor with a touch of scale and a hover lift in the shadow — depth on demand, now clearly perceptible. Strictly rationed: one hero per view, never in dense lists.","duration":["--ss-motion-duration-fast"],"easing":["--ss-motion-ease-standard"],"stage":"core","usage":"One featured surface per view at most. Pair deliberately with cursor-follow glow."},{"id":"meter-fill","title":"Meter fill with inertia","description":"Progress fills from zero with a long ease-out instead of snapping, plus an optional whisper of sheen across the filled portion. The hero metric meter rides this on load.","duration":["--ss-motion-duration-tag"],"easing":["--ss-motion-ease-out"],"stage":"core","usage":"Completion, setup progress, approval progress, and other determinate measures."},{"id":"skeleton","title":"Skeleton with depth","description":"Loading reads calm and confident: layered skeleton surfaces with a very soft shimmer, cards arriving on the stagger cascade, real content crossfading in, numbers rolling after.","duration":["--ss-motion-duration-base","--ss-motion-stagger"],"easing":["--ss-motion-ease-out","--ss-motion-ease-smooth"],"stage":"core","usage":"Any async surface. Never an endless pulse; shimmer stops with content."},{"id":"palette-spawn","title":"Command palette spawn","description":"The palette spawns as a layer: glass panel scales 0.96→1 and rises 8px while the ink wash fades in. The scrim stays SHARP — the system’s no-blurred-spotlight law holds; only the floating glass itself frosts.","duration":["--ss-motion-duration-base"],"easing":["--ss-motion-ease-out"],"stage":"core","usage":"Global search, quick actions, and contextual help."},{"id":"drawer-parallax","title":"Drawer with parallax","description":"The drawer slides in over the page while the page itself concedes the space — scaling to 0.985, shifting −12px, dimming a touch. Two real layers, honest depth, no blur.","duration":["--ss-motion-duration-page"],"easing":["--ss-motion-ease-in-out"],"stage":"core","usage":"Secondary detail, supporting workflows, and notification panels."},{"id":"celebration","title":"Status celebration","description":"A tiny, contained reward on completion: the check draws itself, the badge settles in from 0.8 scale on the rare-overshoot curve, a soft tint halo fades. Never confetti.","duration":["--ss-motion-duration-morph"],"easing":["--ss-motion-ease-settle"],"stage":"core","usage":"Approved, saved, or completed states worth a half-second of delight."},{"id":"cursor-glow","title":"Cursor-follow glow","description":"A barely-there radial wash tracks the pointer inside a premium surface — a glass-highlight core (derived from --ss-glass-hi) blended into a faint brand tone, so the glow and the glass material read as one family. If you notice the glow before the content, it is too strong.","duration":["--ss-motion-duration-fast"],"easing":["--ss-motion-ease-standard"],"stage":"core","usage":"A prominent overview or setup surface. Never dense tables or repeated lists."},{"id":"icon-micro","title":"Icon micro-motions","description":"Every glyph owns one signature move with one grammar: HOVER previews it (bell swings, refresh half-turns, trash leans, upload rises, the accordion caret nudges where it will go), the glyph’s own EVENT plays it in full (wiggle on arrival, spin while syncing, hop on send, caret turn on open). Custom accent per glyph, identical behaviour everywhere.","duration":["--ss-motion-duration-fast","--ss-motion-duration-base"],"easing":["--ss-motion-ease-standard","--ss-motion-ease-settle"],"stage":"core","usage":"One glyph at a time, triggered by its own event — never ambient."},{"id":"spatial-modal","title":"Spatial modal","description":"Opt-in depth for the dialog: as the glass arrives, the page behind concedes a breath of scale (0.98). The dialog reads as a layer above a physical surface, not a sticker on it.","duration":["--ss-motion-duration-base"],"easing":["--ss-motion-ease-out"],"stage":"core","usage":"High-stakes confirms where the layering metaphor earns its keep."},{"id":"ambient-empty","title":"Ambient empty state","description":"An empty state breathes instead of staring: the glyph drifts on a slow visible loop and the watch-dot pulses with an expanding ring — alive at a glance, quiet enough to live on screen all day.","duration":["--ss-motion-duration-roll"],"easing":["--ss-motion-ease-in-out"],"stage":"core","usage":"No results, no issues, or nothing pending. The one allowed loop besides a live step."},{"id":"ai-thinking","title":"AI generation motion","description":"Generating never shows a plain spinner: a soft brand-tone border sweep, a streaming text shimmer, a pulsing caret, and the button label morphing Generate → Thinking → Ready. Brand tones only — no rainbow gradients.","duration":["--ss-motion-duration-tag","--ss-motion-duration-roll"],"easing":["--ss-motion-ease-smooth"],"stage":"core","usage":"Any generative surface: drafting, summarization, or assisted suggestions."},{"id":"snap-reorder","title":"Snap into place","description":"Dragged or displaced items settle into their slot on the rare-overshoot spring — released cards snap home, displaced neighbours glide aside via FLIP. Physical, decisive, brief.","duration":["--ss-motion-duration-slow"],"easing":["--ss-motion-ease-settle","--ss-motion-ease-in-out"],"stage":"core","usage":"Reorderable grids, grouped columns, and prioritized lists."}],"retired":[{"id":"magnetic","title":"Magnetic button","rationale":"The shell drifting toward the pointer read as pursuit, not polish. The press already answers the hand; the pull added motion without information.","retired":"2026-06-12"},{"id":"press-coverage-extension","title":"Blanket press coverage","rationale":"Scaling facets, tabs, nav items and option fills on press muddied the grammar and broke fills out of their frames. Settled rule: PRESS DIPS (actions — buttons, cards), SELECTION SLIDES (choosing — the marker moves). Choosing is never a press.","retired":"2026-06-12"}],"paces":[{"id":"fast","label":"Fast","blurb":"Almost no motion — lightning-fast, motion just confirms & leaves."},{"id":"smooth","label":"Smooth","blurb":"The anchor. Buttery, generous but never sluggish. The locked default."},{"id":"calm","label":"Calm","blurb":"Unhurried — generous glides, a quieter and more deliberate pace."}],"press":{"fast":{"down":60,"up":150,"scale":0.94},"smooth":{"down":200,"up":800,"scale":0.94},"calm":{"down":260,"up":1200,"scale":0.94}}},"axes":{"motion":{"id":"motion","label":"Motion","status":"approved","dataAttribute":"data-ss-motion","storageKey":"ss-motion","defaultTierId":"smooth","tiers":[{"id":"fast","label":"Fast","blurb":"Almost no motion — lightning-fast, motion just confirms & leaves."},{"id":"smooth","label":"Smooth","blurb":"The anchor. Buttery, generous but never sluggish. The locked default."},{"id":"calm","label":"Calm","blurb":"Unhurried — generous glides, a quieter and more deliberate pace."}]},"proposed":[{"id":"density","label":"Density","blurb":"Spacing scale multiplier — how tightly the UI packs. Compact suits information-dense rows and dashboards; Airy suits reading-first surfaces and phone widths.","dataAttribute":"data-ss-density","status":"proposed","storageKey":"ss-axis-density","changeEvent":"densitymodechange","defaultTierId":"standard","tiers":[{"id":"compact","label":"Compact","blurb":"Tighter rhythm — roughly 0.75× the standard spacing scale.","values":{"--ss-space-05":"1px","--ss-space-1":"3px","--ss-space-15":"4px","--ss-space-2":"6px","--ss-space-3":"9px","--ss-space-4":"12px","--ss-space-5":"15px","--ss-space-6":"18px","--ss-space-8":"24px","--ss-space-10":"30px","--ss-space-12":"36px","--ss-space-16":"48px"}},{"id":"standard","label":"Standard","blurb":"The anchor — the default spacing scale. No overrides.","values":{}},{"id":"airy","label":"Airy","blurb":"Roomier rhythm — roughly 1.25× the standard spacing scale.","values":{"--ss-space-05":"3px","--ss-space-1":"5px","--ss-space-15":"8px","--ss-space-2":"10px","--ss-space-3":"15px","--ss-space-4":"20px","--ss-space-5":"25px","--ss-space-6":"30px","--ss-space-8":"40px","--ss-space-10":"50px","--ss-space-12":"60px","--ss-space-16":"80px"}}]},{"id":"weight","label":"Weight","blurb":"Border and divider stroke weight — how \"structural\" the UI feels. Hairline reads as glass; Bold reads as bureaucratic-precision.","dataAttribute":"data-ss-weight","status":"proposed","storageKey":"ss-axis-weight","changeEvent":"weightmodechange","defaultTierId":"standard","tiers":[{"id":"hairline","label":"Hairline","blurb":"Half-pixel borders where the device supports it; thinner focus ring.","values":{"--ss-border-width":"0.5px","--ss-border-width-focus":"1.5px"}},{"id":"standard","label":"Standard","blurb":"The anchor — 1px hairline, 2px focus. No overrides.","values":{}},{"id":"bold","label":"Bold","blurb":"Heavier structural strokes; a thicker focus ring for high-contrast a11y.","values":{"--ss-border-width":"1.5px","--ss-border-width-focus":"3px"}}]},{"id":"radius","label":"Radius","blurb":"Corner rounding across every surface. Sharp reads more architectural / print-y; Round reads more toylike / iOS-y.","dataAttribute":"data-ss-radius","status":"proposed","storageKey":"ss-axis-radius","changeEvent":"radiusmodechange","defaultTierId":"soft","tiers":[{"id":"sharp","label":"Sharp","blurb":"Tighter corners; the UI reads flatter and more editorial.","values":{"--ss-radius-xs":"2px","--ss-radius-sm":"4px","--ss-radius-md":"6px","--ss-radius-lg":"10px"}},{"id":"soft","label":"Soft","blurb":"The anchor — the V2 softened radius scale. No overrides.","values":{}},{"id":"round","label":"Round","blurb":"Rounder corners across chips, cards, panels; pill radius unchanged.","values":{"--ss-radius-xs":"8px","--ss-radius-sm":"16px","--ss-radius-md":"22px","--ss-radius-lg":"32px"}}]},{"id":"elevation","label":"Elevation","blurb":"Shadow depth and layering emphasis. Flat leans on borders alone; Deep leans harder on shadow for floating surfaces.","dataAttribute":"data-ss-elevation","status":"proposed","storageKey":"ss-axis-elevation","changeEvent":"elevationmodechange","defaultTierId":"subtle","tiers":[{"id":"flat","label":"Flat","blurb":"Shadows removed; overlay depth conveyed by borders and glass alone.","values":{"--ss-shadow-sm":"none","--ss-shadow-md":"none","--ss-shadow-pop":"0 2px 8px rgba(24,24,24,0.08)","--ss-glass-shadow":"none"}},{"id":"subtle","label":"Subtle","blurb":"The anchor — the default shadow scale. No overrides.","values":{}},{"id":"deep","label":"Deep","blurb":"Stronger shadow scale — every floating surface reads noticeably raised.","values":{"--ss-shadow-sm":"0 2px 4px rgba(24,24,24,0.10)","--ss-shadow-md":"0 6px 18px rgba(24,24,24,0.18)","--ss-shadow-pop":"0 16px 44px rgba(24,24,24,0.24)"}}]},{"id":"contrast","label":"Contrast","blurb":"Ink / surface / border contrast steps. Quiet reads calmer; Vivid pushes harder for outdoor / accessibility / print-heavy contexts. Accent hues stay theme-controlled and are NOT touched by this axis.","dataAttribute":"data-ss-contrast","status":"proposed","storageKey":"ss-axis-contrast","changeEvent":"contrastmodechange","defaultTierId":"standard","tiers":[{"id":"quiet","label":"Quiet","blurb":"Ink ramp softened; borders eased. Reads calmer, better for long reading surfaces.","values":{"--ss-color-ink-900":"#303030","--ss-color-ink-700":"#5A5A5A","--ss-color-ink-500":"#747474","--ss-color-border":"#EEEEEE","--ss-color-border-strong":"#949494"}},{"id":"standard","label":"Standard","blurb":"The anchor — the default ink ramp and border palette. No overrides.","values":{}},{"id":"vivid","label":"Vivid","blurb":"Ink ramp deepened; borders emphasized. Reads punchier for accessibility / outdoor.","values":{"--ss-color-ink-900":"#050505","--ss-color-ink-700":"#303030","--ss-color-ink-500":"#5A5A5A","--ss-color-border":"#C8C8C8","--ss-color-border-strong":"#929292"}}]}]},"icons":{"groups":["Direction","Arrows in circles","Arrows","Find","Status","Marks","Actions","Wayfinding","Content","Rating"],"platform":["solo-shape"],"filled":{"solo-shape":{"label":"solo-shape","vb":"0 0 24 24","svg":"<path d=\"M4 4 L20 4 L20 14 L14 14 L14 20 L4 20 Z\"/>"},"chevron-right":{"label":"Caret right","group":"Direction","svg":"<path d=\"m12.14 8.753-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z\"/>"},"chevron-left":{"label":"Caret left","group":"Direction","svg":"<path d=\"m3.86 8.753 5.482 4.796c.646.566 1.658.106 1.658-.753V3.204a1 1 0 0 0-1.659-.753l-5.48 4.796a1 1 0 0 0 0 1.506z\"/>"},"chevron-up":{"label":"Caret up","group":"Direction","svg":"<path d=\"m7.247 4.86-4.796 5.481c-.566.647-.106 1.659.753 1.659h9.592a1 1 0 0 0 .753-1.659l-4.796-5.48a1 1 0 0 0-1.506 0z\"/>"},"chevron-down":{"label":"Caret down","group":"Direction","svg":"<path d=\"M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\"/>"},"arrow-right-circle":{"label":"Arrow right circle","group":"Arrows in circles","svg":"<path d=\"M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0zM4.5 7.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H4.5z\"/>"},"arrow-left-circle":{"label":"Arrow left circle","group":"Arrows in circles","svg":"<path d=\"M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0zm3.5 7.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5z\"/>"},"arrow-up-circle":{"label":"Arrow up circle","group":"Arrows in circles","svg":"<path d=\"M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0zm-7.5 3.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V11.5z\"/>"},"arrow-down-circle":{"label":"Arrow down circle","group":"Arrows in circles","svg":"<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V4.5z\"/>"},"arrow-right":{"label":"Arrow right (bold mark, drawn)","group":"Arrows","svg":"<path d=\"M2.8 9.2L13.2 9.2A1.2 1.2 0 0 0 13.2 6.8L2.8 6.8A1.2 1.2 0 0 0 2.8 9.2ZM8.751 5.249L12.351 8.849A1.2 1.2 0 0 0 14.049 7.151L10.449 3.551A1.2 1.2 0 0 0 8.751 5.249ZM12.351 7.151L8.751 10.751A1.2 1.2 0 0 0 10.449 12.449L14.049 8.849A1.2 1.2 0 0 0 12.351 7.151Z\"/>"},"arrow-left":{"label":"Arrow left (bold mark, drawn)","group":"Arrows","svg":"<path d=\"M13.2 6.8L2.8 6.8A1.2 1.2 0 0 0 2.8 9.2L13.2 9.2A1.2 1.2 0 0 0 13.2 6.8ZM5.551 3.551L1.951 7.151A1.2 1.2 0 0 0 3.649 8.849L7.249 5.249A1.2 1.2 0 0 0 5.551 3.551ZM1.951 8.849L5.551 12.449A1.2 1.2 0 0 0 7.249 10.751L3.649 7.151A1.2 1.2 0 0 0 1.951 8.849Z\"/>"},"arrow-up":{"label":"Arrow up (bold mark, drawn)","group":"Arrows","svg":"<path d=\"M9.2 13.2L9.2 2.8A1.2 1.2 0 0 0 6.8 2.8L6.8 13.2A1.2 1.2 0 0 0 9.2 13.2ZM5.249 7.249L8.849 3.649A1.2 1.2 0 0 0 7.151 1.951L3.551 5.551A1.2 1.2 0 0 0 5.249 7.249ZM7.151 3.649L10.751 7.249A1.2 1.2 0 0 0 12.449 5.551L8.849 1.951A1.2 1.2 0 0 0 7.151 3.649Z\"/>"},"arrow-down":{"label":"Arrow down (bold mark, drawn)","group":"Arrows","svg":"<path d=\"M6.8 2.8L6.8 13.2A1.2 1.2 0 0 0 9.2 13.2L9.2 2.8A1.2 1.2 0 0 0 6.8 2.8ZM3.551 10.449L7.151 14.049A1.2 1.2 0 0 0 8.849 12.351L5.249 8.751A1.2 1.2 0 0 0 3.551 10.449ZM8.849 14.049L12.449 10.449A1.2 1.2 0 0 0 10.751 8.751L7.151 12.351A1.2 1.2 0 0 0 8.849 14.049Z\"/>"},"external":{"label":"External / open (arrow-up-right, bold mark)","group":"Arrows","svg":"<path d=\"M4.449 13.249L13.249 4.449A1.2 1.2 0 0 0 11.551 2.751L2.751 11.551A1.2 1.2 0 0 0 4.449 13.249ZM7.4 4.8L12.4 4.8A1.2 1.2 0 0 0 12.4 2.4L7.4 2.4A1.2 1.2 0 0 0 7.4 4.8ZM11.2 3.6L11.2 8.6A1.2 1.2 0 0 0 13.6 8.6L13.6 3.6A1.2 1.2 0 0 0 11.2 3.6Z\"/>"},"search":{"label":"Search (bold mark, drawn)","group":"Find","svg":"<path fill-rule=\"evenodd\" d=\"M1.8 7A5.199999999999999 5.199999999999999 0 1 0 12.2 7A5.199999999999999 5.199999999999999 0 1 0 1.8 7ZM4 7A2.9999999999999996 2.9999999999999996 0 1 0 10 7A2.9999999999999996 2.9999999999999996 0 1 0 4 7Z\"/><path d=\"M9.422 10.978L12.822 14.378A1.1 1.1 0 0 0 14.378 12.822L10.978 9.422A1.1 1.1 0 0 0 9.422 10.978Z\"/>"},"filter":{"label":"Filter (funnel-fill)","group":"Find","svg":"<path d=\"M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5z\"/>"},"sort":{"label":"Sort (bold mark, drawn)","group":"Find","svg":"<path d=\"M2.9 3.4L2.9 12.3A1.1 1.1 0 0 0 5.1 12.3L5.1 3.4A1.1 1.1 0 0 0 2.9 3.4ZM1.104 10.96L3.204 13.16A1.1 1.1 0 0 0 4.796 11.64L2.696 9.44A1.1 1.1 0 0 0 1.104 10.96ZM4.796 13.16L6.896 10.96A1.1 1.1 0 0 0 5.304 9.44L3.204 11.64A1.1 1.1 0 0 0 4.796 13.16ZM8.8 5.5L13.6 5.5A1.1 1.1 0 0 0 13.6 3.3L8.8 3.3A1.1 1.1 0 0 0 8.8 5.5ZM8.8 9.1L12.1 9.1A1.1 1.1 0 0 0 12.1 6.9L8.8 6.9A1.1 1.1 0 0 0 8.8 9.1ZM8.8 12.7L10.6 12.7A1.1 1.1 0 0 0 10.6 10.5L8.8 10.5A1.1 1.1 0 0 0 8.8 12.7Z\"/>"},"check-circle":{"label":"Check circle fill","group":"Status","svg":"<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z\"/>"},"x-circle":{"label":"X circle fill","group":"Status","svg":"<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293z\"/>"},"alert-triangle":{"label":"Exclamation triangle fill","group":"Status","svg":"<path d=\"M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2\"/>"},"info-circle":{"label":"Info circle fill","group":"Status","svg":"<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2\"/>"},"clock":{"label":"Clock fill","group":"Status","svg":"<path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71z\"/>"},"check":{"label":"Check (bold mark)","group":"Marks","svg":"<path d=\"M2.551 9.349L5.551 12.349A1.2 1.2 0 0 0 7.249 10.651L4.249 7.651A1.2 1.2 0 0 0 2.551 9.349ZM7.287 12.309L13.487 5.509A1.2 1.2 0 0 0 11.713 3.891L5.513 10.691A1.2 1.2 0 0 0 7.287 12.309Z\"/>"},"x":{"label":"Close (bold mark)","group":"Marks","svg":"<path d=\"M3.751 5.449L10.551 12.249A1.2 1.2 0 0 0 12.249 10.551L5.449 3.751A1.2 1.2 0 0 0 3.751 5.449ZM10.551 3.751L3.751 10.551A1.2 1.2 0 0 0 5.449 12.249L12.249 5.449A1.2 1.2 0 0 0 10.551 3.751Z\"/>"},"plus":{"label":"Add (bold mark)","group":"Marks","svg":"<path d=\"M6.8 3.6L6.8 12.4A1.2 1.2 0 0 0 9.2 12.4L9.2 3.6A1.2 1.2 0 0 0 6.8 3.6ZM3.6 9.2L12.4 9.2A1.2 1.2 0 0 0 12.4 6.8L3.6 6.8A1.2 1.2 0 0 0 3.6 9.2Z\"/>"},"minus":{"label":"Remove (bold mark)","group":"Marks","svg":"<path d=\"M3.6 9.2L12.4 9.2A1.2 1.2 0 0 0 12.4 6.8L3.6 6.8A1.2 1.2 0 0 0 3.6 9.2Z\"/>"},"menu":{"label":"Menu (bold mark)","group":"Marks","svg":"<path d=\"M3 3.4L13 3.4A1.1 1.1 0 0 1 13 5.6L3 5.6A1.1 1.1 0 0 1 3 3.4ZM3 6.9L13 6.9A1.1 1.1 0 0 1 13 9.1L3 9.1A1.1 1.1 0 0 1 3 6.9ZM3 10.4L13 10.4A1.1 1.1 0 0 1 13 12.6L3 12.6A1.1 1.1 0 0 1 3 10.4Z\"/>"},"edit":{"label":"Edit (pencil-fill)","group":"Actions","svg":"<path d=\"M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708zm.646 6.061L9.793 2.5 3.293 9h-.001l-.002.002-.002.002-.002.002a.5.5 0 0 0-.131.223l-1.06 3.667a.5.5 0 0 0 .618.62l3.667-1.06a.5.5 0 0 0 .223-.132l.002-.002.002-.002.001-.001 6.5-6.5z\"/>"},"trash":{"label":"Delete (trash-fill)","group":"Actions","svg":"<path d=\"M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5M8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5m3 .5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0\"/>"},"copy":{"label":"Copy (two sheets, filled outline)","group":"Actions","svg":"<path fill-rule=\"evenodd\" d=\"M7.5 4.4L12.5 4.4A3.1 3.1 0 0 1 15.6 7.5L15.6 12.5A3.1 3.1 0 0 1 12.5 15.6L7.5 15.6A3.1 3.1 0 0 1 4.4 12.5L4.4 7.5A3.1 3.1 0 0 1 7.5 4.4ZM7.5 6.6L12.5 6.6A0.9 0.9 0 0 1 13.4 7.5L13.4 12.5A0.9 0.9 0 0 1 12.5 13.4L7.5 13.4A0.9 0.9 0 0 1 6.6 12.5L6.6 7.5A0.9 0.9 0 0 1 7.5 6.6Z\"/><path d=\"M5 9.4L3.1 9.4A0.5 0.5 0 0 1 2.6 8.9L2.6 3.1A0.5 0.5 0 0 1 3.1 2.6L8.9 2.6A0.5 0.5 0 0 1 9.4 3.1L9.4 5A1.1 1.1 0 0 0 11.6 5L11.6 3.1A2.7 2.7 0 0 0 8.9 0.4L3.1 0.4A2.7 2.7 0 0 0 0.4 3.1L0.4 8.9A2.7 2.7 0 0 0 3.1 11.6L5 11.6A1.1 1.1 0 0 0 5 9.4Z\"/>"},"settings":{"label":"Settings (gear-fill)","group":"Actions","svg":"<path d=\"M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872zM8 10.93a2.929 2.929 0 1 1 0-5.86 2.929 2.929 0 0 1 0 5.86\"/>"},"refresh":{"label":"Refresh (filled outline)","group":"Actions","svg":"<path d=\"M8 1.9A6.1 6.1 0 1 0 13.544 5.456A1.1 1.1 0 0 0 11.545 6.373A3.9 3.9 0 1 1 8 4.1A1.1 1.1 0 0 0 8 1.9ZM7.397 2.02L10.297 3.92A1.1 1.1 0 0 0 11.503 2.08L8.603 0.18A1.1 1.1 0 0 0 7.397 2.02ZM10.297 2.08L7.397 3.98A1.1 1.1 0 0 0 8.603 5.82L11.503 3.92A1.1 1.1 0 0 0 10.297 2.08Z\"/>"},"mic":{"label":"Microphone (mic-fill)","group":"Actions","svg":"<path d=\"M5 3a3 3 0 0 1 6 0v5a3 3 0 0 1-6 0z\"/><path d=\"M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5\"/>"},"pin":{"label":"Location (geo-alt-fill)","group":"Wayfinding","svg":"<path d=\"M8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10m0-7a3 3 0 1 1 0-6 3 3 0 0 1 0 6\"/>"},"calendar":{"label":"Calendar (calendar-fill)","group":"Wayfinding","svg":"<path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2H0a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M0 4v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4z\"/>"},"bell":{"label":"Notifications (bell-fill)","group":"Wayfinding","svg":"<path d=\"M8 16a2 2 0 0 0 2-2H6a2 2 0 0 0 2 2m.995-14.901a1 1 0 1 0-1.99 0A5 5 0 0 0 3 6c0 1.098-.5 6-2 7h14c-1.5-1-2-5.902-2-7 0-2.42-1.72-4.44-4.005-4.901\"/>"},"user":{"label":"User (person-fill)","group":"Wayfinding","svg":"<path d=\"M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6\"/>"},"brain":{"label":"Brain (cerebrum, drawn)","group":"Wayfinding","svg":"<path d=\"M7.65 2.1C7.1 1.55 6.25 1.25 5.35 1.38 4.05 1.55 3.12 2.5 3.03 3.75 1.86 4.05 1.05 5.02 1.05 6.25c0 .61.22 1.19.6 1.63C1.2 8.38.95 8.98.95 9.65c0 1.33.93 2.47 2.17 2.8.23 1.29 1.36 2.25 2.7 2.25.88 0 1.6-.42 1.83-1.08z\"/><path d=\"M8.35 2.1c.55-.55 1.4-.85 2.3-.72 1.3.17 2.23 1.12 2.32 2.37 1.17.3 1.98 1.27 1.98 2.5 0 .61-.22 1.19-.6 1.63.45.5.7 1.1.7 1.77 0 1.33-.93 2.47-2.17 2.8-.23 1.29-1.36 2.25-2.7 2.25-.88 0-1.6-.42-1.83-1.08z\"/>"},"building":{"label":"Business (building-fill)","group":"Wayfinding","svg":"<path d=\"M3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h3v-3.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V16h3a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm1 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM10 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z\"/>"},"link":{"label":"Link (solid interlocked rings, drawn)","group":"Wayfinding","svg":"<path fill-rule=\"evenodd\" d=\"M6 6a4 4 0 1 0 0 8 4 4 0 0 0 0-8m0 1.85a2.15 2.15 0 1 1 0 4.3 2.15 2.15 0 0 1 0-4.3\"/><path fill-rule=\"evenodd\" d=\"M10 2a4 4 0 1 0 0 8 4 4 0 0 0 0-8m0 1.85a2.15 2.15 0 1 1 0 4.3 2.15 2.15 0 0 1 0-4.3\"/>"},"more":{"label":"More (three-dots)","group":"Wayfinding","svg":"<path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/>"},"quote":{"label":"Quotation mark (double, quote)","group":"Content","svg":"<path d=\"M12 12a1 1 0 0 0 1-1V8.558a1 1 0 0 0-1-1h-1.388q0-.527.062-1.054.093-.558.31-.992.217-.434.559-.683.34-.279.868-.279V3q-.868 0-1.52.372a3.3 3.3 0 0 0-1.085.992 4.9 4.9 0 0 0-.62 1.458A7.7 7.7 0 0 0 9 7.558V11a1 1 0 0 0 1 1zm-6 0a1 1 0 0 0 1-1V8.558a1 1 0 0 0-1-1H4.612q0-.527.062-1.054.094-.558.31-.992.217-.434.559-.683.34-.279.868-.279V3q-.868 0-1.52.372a3.3 3.3 0 0 0-1.085.992 4.9 4.9 0 0 0-.62 1.458A7.7 7.7 0 0 0 3 7.558V11a1 1 0 0 0 1 1z\"/>"},"star-fill":{"label":"Star (filled — score)","group":"Rating","svg":"<path d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.283.95l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"/>"},"star":{"label":"Star (hollow — remainder)","group":"Rating","svg":"<path d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"/>"}},"thin":{"chevron-right":"<path d=\"M9 6 15 12 9 18\"/>","chevron-left":"<path d=\"M15 6 9 12 15 18\"/>","chevron-up":"<path d=\"M6 15 12 9 18 15\"/>","chevron-down":"<path d=\"M6 9 12 15 18 9\"/>","arrow-right-circle":"<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M8 12h7.4\"/><path d=\"M12.4 9 15.4 12 12.4 15\"/>","arrow-left-circle":"<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M16 12H8.6\"/><path d=\"M11.6 9 8.6 12 11.6 15\"/>","arrow-up-circle":"<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 16V8.6\"/><path d=\"M9 11.6 12 8.6 15 11.6\"/>","arrow-down-circle":"<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 8v7.4\"/><path d=\"M9 12.4 12 15.4 15 12.4\"/>","arrow-right":"<path d=\"M4 12h16\"/><path d=\"M14 6 20 12 14 18\"/>","arrow-left":"<path d=\"M20 12H4\"/><path d=\"M10 6 4 12 10 18\"/>","arrow-up":"<path d=\"M12 20V4\"/><path d=\"M6 10 12 4 18 10\"/>","arrow-down":"<path d=\"M12 4v16\"/><path d=\"M6 14 12 20 18 14\"/>","external":"<path d=\"M14 4h6v6\"/><path d=\"M20 4 11 13\"/><path d=\"M18.5 14v4.5A1.5 1.5 0 0 1 17 20H5.5A1.5 1.5 0 0 1 4 18.5V7A1.5 1.5 0 0 1 5.5 5.5H10\"/>","search":"<circle cx=\"11\" cy=\"11\" r=\"6\"/><path d=\"M15.5 15.5 20.5 20.5\"/>","filter":"<path d=\"M21 4H3l7.2 8.6V19l3.6 2v-8.4Z\"/>","sort":"<path d=\"M6 4.5v15\"/><path d=\"M3 16.5 6 19.5 9 16.5\"/><path d=\"M13 6h7\"/><path d=\"M13 12h5\"/><path d=\"M13 18h3\"/>","check-circle":"<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M8 12.3 10.8 15.2 16 9.4\"/>","x-circle":"<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M9 9 15 15\"/><path d=\"M15 9 9 15\"/>","alert-triangle":"<path d=\"M13.6 4.6 21.5 18.4A1.6 1.6 0 0 1 20.1 20.9H3.9A1.6 1.6 0 0 1 2.5 18.4L10.4 4.6A1.6 1.6 0 0 1 13.6 4.6Z\"/><path d=\"M12 9.6v4.2\"/><path d=\"M12 17.4h.01\"/>","info-circle":"<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 11v5.2\"/><path d=\"M12 7.8h.01\"/>","clock":"<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 7v5.2l3.4 2\"/>","check":"<path d=\"M4.5 12.5 9.5 17.5 19.5 6.5\"/>","x":"<path d=\"M6 6 18 18\"/><path d=\"M18 6 6 18\"/>","plus":"<path d=\"M12 5v14\"/><path d=\"M5 12h14\"/>","minus":"<path d=\"M5 12h14\"/>","edit":"<path d=\"M17 3a2.83 2.83 0 0 1 4 4L7.5 20.5 2 22l1.5-5.5Z\"/><path d=\"M14.5 5.5 18.5 9.5\"/>","trash":"<path d=\"M3.5 6h17\"/><path d=\"M19 6v13.5A1.5 1.5 0 0 1 17.5 21h-11A1.5 1.5 0 0 1 5 19.5V6m3 0V4.2A1.7 1.7 0 0 1 9.7 2.5h4.6A1.7 1.7 0 0 1 16 4.2V6\"/><path d=\"M10 10.5v6\"/><path d=\"M14 10.5v6\"/>","copy":"<path d=\"M11 9h7a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2Z\"/><path d=\"M5 15H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5\"/>","settings":"<circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M19.4 15a1.6 1.6 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.6 1.6 0 0 0-1.8-.3 1.6 1.6 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1A1.6 1.6 0 0 0 9 19.4a1.6 1.6 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.6 1.6 0 0 0 .3-1.8 1.6 1.6 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1A1.6 1.6 0 0 0 4.6 9a1.6 1.6 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.6 1.6 0 0 0 1.8.3H9a1.6 1.6 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.6 1.6 0 0 0 1 1.5 1.6 1.6 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.6 1.6 0 0 0-.3 1.8V9a1.6 1.6 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.6 1.6 0 0 0-1.5 1Z\"/>","refresh":"<path d=\"M20.5 15A9 9 0 1 1 18.4 5.6L23 10\"/><path d=\"M23 4v6h-6\"/>","mic":"<rect x=\"9\" y=\"3.5\" width=\"6\" height=\"11\" rx=\"3\"/><path d=\"M6 11.5a6 6 0 0 0 12 0\"/><path d=\"M12 17.5v3\"/><path d=\"M8.5 20.5h7\"/>","pin":"<path d=\"M19 10c0 6-7 11.5-7 11.5S5 16 5 10a7 7 0 0 1 14 0Z\"/><circle cx=\"12\" cy=\"10\" r=\"2.7\"/>","calendar":"<rect x=\"3\" y=\"4.5\" width=\"18\" height=\"16.5\" rx=\"2\"/><path d=\"M16 2.5v4\"/><path d=\"M8 2.5v4\"/><path d=\"M3 9.5h18\"/>","bell":"<path d=\"M18 8.5a6 6 0 0 0-12 0c0 6.5-2.7 8.5-2.7 8.5h17.4S18 15 18 8.5Z\"/><path d=\"M13.7 20.5a2 2 0 0 1-3.4 0\"/>","user":"<circle cx=\"12\" cy=\"8\" r=\"4\"/><path d=\"M5 20.5V19a4.5 4.5 0 0 1 4.5-4.5h5A4.5 4.5 0 0 1 19 19v1.5\"/>","brain":"<path d=\"M12 4.5c-1.1-1.1-2.9-1.5-4.4-.8A4.1 4.1 0 0 0 5 6.7a4 4 0 0 0-2 3.5c0 .9.3 1.7.8 2.4-.3.6-.5 1.2-.5 1.9 0 2.2 1.8 4 4 4 .5 1.4 1.9 2.4 3.5 2.4.5 0 .9-.1 1.2-.2.4.1.8.2 1.2.2 1.6 0 3-1 3.5-2.4 2.2 0 4-1.8 4-4 0-.7-.2-1.3-.5-1.9.5-.7.8-1.5.8-2.4a4 4 0 0 0-2-3.5 4.1 4.1 0 0 0-2.6-3c-1.5-.7-3.3-.3-4.4.8Z\"/><path d=\"M12 4.5v16.2\"/><path d=\"M7.5 8.2c1.2.2 2 .9 2.4 2\"/><path d=\"M16.5 8.2c-1.2.2-2 .9-2.4 2\"/>","building":"<rect x=\"5\" y=\"3\" width=\"14\" height=\"18\" rx=\"1.5\"/><path d=\"M9 7h2M13 7h2M9 11h2M13 11h2M9 15h2M13 15h2\"/><path d=\"M10 21v-3.5h4V21\"/>","link":"<path d=\"M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.7 1.7\"/><path d=\"M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.7-1.7\"/>","more":"<circle cx=\"5.5\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"12\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"18.5\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/>"}}}