@nurix/etna 0.18.19 → 0.18.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/data/harness-index.json +1 -1
- package/data/harnesses/code/CLAUDE.md +1 -1
- package/data/harnesses/code/agents/brainstorm.md +1 -1
- package/data/harnesses/code/agents/maintenance.md +2 -2
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/rules/database.md +38 -0
- package/data/harnesses/code/rules/express.md +28 -0
- package/data/harnesses/code/rules/frontend.md +14 -0
- package/data/harnesses/code/rules/general.md +2 -40
- package/data/harnesses/code/rules/nomenclature.md +1 -8
- package/data/harnesses/code/rules/nustack.md +150 -0
- package/data/harnesses/code/skills/brainstorm/README.md +1 -1
- package/data/harnesses/code/skills/brainstorm/SKILL.md +1 -1
- package/data/harnesses/code/skills/brainstorm/exit-artifacts.md +4 -4
- package/data/harnesses/code/skills/brainstorm/templates/source-of-truth.md +3 -3
- package/data/harnesses/code/skills/design/SKILL.md +68 -0
- package/data/harnesses/code/skills/design/data/catalog/rules.csv +132 -0
- package/data/harnesses/code/skills/design/data/combinations/Readme.md +29 -0
- package/data/harnesses/code/skills/design/data/combinations/charts.csv +33 -0
- package/data/harnesses/code/skills/design/data/combinations/fonts-known.json +437 -0
- package/data/harnesses/code/skills/design/data/combinations/icons.csv +157 -0
- package/data/harnesses/code/skills/design/data/combinations/landing.csv +38 -0
- package/data/harnesses/code/skills/design/data/combinations/lucide-names.json +2001 -0
- package/data/harnesses/code/skills/design/data/combinations/manifest.json +283 -0
- package/data/harnesses/code/skills/design/data/combinations/palettes.csv +49 -0
- package/data/harnesses/code/skills/design/data/combinations/product-router.csv +80 -0
- package/data/harnesses/code/skills/design/data/combinations/styles.csv +54 -0
- package/data/harnesses/code/skills/design/data/combinations/typography.csv +61 -0
- package/data/harnesses/code/skills/design/data/design-md/SCHEMA.md +106 -0
- package/data/harnesses/code/skills/design/data/design-md/library/airbnb.md +154 -0
- package/data/harnesses/code/skills/design/data/design-md/library/airtable.md +151 -0
- package/data/harnesses/code/skills/design/data/design-md/library/anthropic-claude.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/apple.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/binance.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/bmw.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/cal.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/clay.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/clickhouse.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/cohere.md +147 -0
- package/data/harnesses/code/skills/design/data/design-md/library/coinbase.md +156 -0
- package/data/harnesses/code/skills/design/data/design-md/library/composio.md +138 -0
- package/data/harnesses/code/skills/design/data/design-md/library/cursor.md +138 -0
- package/data/harnesses/code/skills/design/data/design-md/library/elevenlabs.md +137 -0
- package/data/harnesses/code/skills/design/data/design-md/library/expo.md +148 -0
- package/data/harnesses/code/skills/design/data/design-md/library/figma.md +141 -0
- package/data/harnesses/code/skills/design/data/design-md/library/framer.md +156 -0
- package/data/harnesses/code/skills/design/data/design-md/library/hashicorp.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/ibm.md +153 -0
- package/data/harnesses/code/skills/design/data/design-md/library/intercom.md +158 -0
- package/data/harnesses/code/skills/design/data/design-md/library/kraken.md +156 -0
- package/data/harnesses/code/skills/design/data/design-md/library/linear-app.md +122 -0
- package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/meta.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/mintlify.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/miro.md +153 -0
- package/data/harnesses/code/skills/design/data/design-md/library/mistral-ai.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/mongodb.md +155 -0
- package/data/harnesses/code/skills/design/data/design-md/library/notion.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/nvidia.md +141 -0
- package/data/harnesses/code/skills/design/data/design-md/library/ollama.md +145 -0
- package/data/harnesses/code/skills/design/data/design-md/library/opencode-ai.md +142 -0
- package/data/harnesses/code/skills/design/data/design-md/library/posthog.md +152 -0
- package/data/harnesses/code/skills/design/data/design-md/library/raycast.md +137 -0
- package/data/harnesses/code/skills/design/data/design-md/library/replicate.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/resend.md +170 -0
- package/data/harnesses/code/skills/design/data/design-md/library/revolut.md +145 -0
- package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +137 -0
- package/data/harnesses/code/skills/design/data/design-md/library/sanity.md +168 -0
- package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +163 -0
- package/data/harnesses/code/skills/design/data/design-md/library/shopify.md +147 -0
- package/data/harnesses/code/skills/design/data/design-md/library/slack.md +158 -0
- package/data/harnesses/code/skills/design/data/design-md/library/spacex.md +171 -0
- package/data/harnesses/code/skills/design/data/design-md/library/spotify.md +166 -0
- package/data/harnesses/code/skills/design/data/design-md/library/stripe.md +160 -0
- package/data/harnesses/code/skills/design/data/design-md/library/supabase.md +173 -0
- package/data/harnesses/code/skills/design/data/design-md/library/superhuman.md +145 -0
- package/data/harnesses/code/skills/design/data/design-md/library/tesla.md +153 -0
- package/data/harnesses/code/skills/design/data/design-md/library/theverge.md +167 -0
- package/data/harnesses/code/skills/design/data/design-md/library/together-ai.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/uber.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/vercel.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/voltagent.md +130 -0
- package/data/harnesses/code/skills/design/data/design-md/library/warp.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/wired.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/wise.md +137 -0
- package/data/harnesses/code/skills/design/data/design-md/library/x-ai.md +138 -0
- package/data/harnesses/code/skills/design/data/design-md/library/zapier.md +158 -0
- package/data/harnesses/code/skills/design/data/design-md/nurix.md +134 -0
- package/data/harnesses/code/skills/design/data/design-tokens/SCHEMA.md +580 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.tokens.json +965 -0
- package/data/harnesses/code/skills/design/data/design-tokens/apple/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/apple/design.tokens.json +954 -0
- package/data/harnesses/code/skills/design/data/design-tokens/binance/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/binance/design.tokens.json +949 -0
- package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.tokens.json +962 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cal/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cal/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clay/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clay/design.tokens.json +953 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.tokens.json +973 -0
- package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.tokens.json +954 -0
- package/data/harnesses/code/skills/design/data/design-tokens/composio/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/composio/design.tokens.json +963 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.tokens.json +968 -0
- package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.tokens.json +981 -0
- package/data/harnesses/code/skills/design/data/design-tokens/expo/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/expo/design.tokens.json +962 -0
- package/data/harnesses/code/skills/design/data/design-tokens/figma/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/figma/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/framer/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/framer/design.tokens.json +959 -0
- package/data/harnesses/code/skills/design/data/design-tokens/goldens.json +251 -0
- package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.tokens.json +965 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.tokens.json +978 -0
- package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.tokens.json +982 -0
- package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.resolver.json +23 -0
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.dark.json +589 -0
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.tokens.json +955 -0
- package/data/harnesses/code/skills/design/data/design-tokens/meta/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/meta/design.tokens.json +977 -0
- package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.tokens.json +950 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.tokens.json +976 -0
- package/data/harnesses/code/skills/design/data/design-tokens/miro/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/miro/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.tokens.json +955 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/notion/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/notion/design.tokens.json +953 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.tokens.json +904 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.tokens.json +957 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.tokens.json +945 -0
- package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.tokens.json +953 -0
- package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.tokens.json +955 -0
- package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.resolver.json +23 -0
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.dark.json +613 -0
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.json +968 -0
- package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.tokens.json +956 -0
- package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.tokens.json +980 -0
- package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/slack/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/slack/design.tokens.json +957 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.tokens.json +974 -0
- package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.tokens.json +973 -0
- package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.tokens.json +966 -0
- package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.tokens.json +961 -0
- package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.tokens.json +977 -0
- package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.tokens.json +991 -0
- package/data/harnesses/code/skills/design/data/design-tokens/uber/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/uber/design.tokens.json +966 -0
- package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.tokens.json +988 -0
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.resolver.json +23 -0
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.dark.json +602 -0
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.json +974 -0
- package/data/harnesses/code/skills/design/data/design-tokens/warp/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/warp/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wired/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wired/design.tokens.json +968 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wise/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wise/design.tokens.json +965 -0
- package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.tokens.json +988 -0
- package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.tokens.json +978 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/command-center.tsx +249 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/create-edit.tsx +249 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/dashboard.tsx +248 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/entity-detail.tsx +245 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/list-detail.tsx +223 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/log-stream.tsx +249 -0
- package/data/harnesses/code/skills/design/data/operator-pack/fixtures.md +88 -0
- package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +132 -0
- package/data/harnesses/code/skills/design/data/operator-pack/trust-rubric.md +76 -0
- package/data/harnesses/code/skills/design/references/create.md +131 -0
- package/data/harnesses/code/skills/design/references/diagnosis.md +108 -0
- package/data/harnesses/code/skills/design/references/hard-rules.md +155 -0
- package/data/harnesses/code/skills/design/references/improve.md +87 -0
- package/data/harnesses/code/skills/design/references/interaction.md +77 -0
- package/data/harnesses/code/skills/design/references/introspect.md +100 -0
- package/data/harnesses/code/skills/design/references/lifecycle.md +73 -0
- package/data/harnesses/code/skills/design/references/personality.md +428 -0
- package/data/harnesses/code/skills/design/references/structure.md +138 -0
- package/data/harnesses/code/skills/design/scripts/convert-design-md.mjs +1032 -0
- package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +1006 -0
- package/data/harnesses/code/skills/design/scripts/generate-fixtures.mjs +551 -0
- package/data/harnesses/code/skills/design/scripts/lib/checks.mjs +903 -0
- package/data/harnesses/code/skills/design/scripts/lib/golden.mjs +26 -0
- package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +454 -0
- package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +267 -0
- package/data/harnesses/code/skills/design/scripts/render-rung.mjs +690 -0
- package/data/harnesses/code/skills/design/scripts/scaffold.mjs +552 -0
- package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +600 -0
- package/data/harnesses/code/skills/design/scripts/snapshot-goldens.mjs +68 -0
- package/data/harnesses/code/skills/design/scripts/validate-combinations.mjs +314 -0
- package/data/harnesses/code/skills/documentation/SKILL.md +61 -17
- package/data/harnesses/code/skills/documentation/references/examples.md +41 -0
- package/data/harnesses/code/skills/documentation/references/style-guide.md +14 -9
- package/data/harnesses/code/skills/documentation/references/templates.md +305 -51
- package/data/harnesses/etna/CLAUDE.md +1 -1
- package/data/harnesses/etna/agents/brainstorm.md +1 -1
- package/data/harnesses/etna/agents/maintenance.md +2 -2
- package/data/harnesses/etna/harness.json +2 -2
- package/data/harnesses/etna/rules/general.md +2 -40
- package/data/harnesses/etna/rules/nomenclature.md +1 -8
- package/data/harnesses/etna/skills/brainstorm/README.md +1 -1
- package/data/harnesses/etna/skills/brainstorm/SKILL.md +1 -1
- package/data/harnesses/etna/skills/brainstorm/exit-artifacts.md +4 -4
- package/data/harnesses/etna/skills/brainstorm/templates/source-of-truth.md +3 -3
- package/data/harnesses/etna/skills/documentation/SKILL.md +61 -17
- package/data/harnesses/etna/skills/documentation/references/examples.md +41 -0
- package/data/harnesses/etna/skills/documentation/references/style-guide.md +14 -9
- package/data/harnesses/etna/skills/documentation/references/templates.md +305 -51
- package/data/harnesses/mobile/CLAUDE.md +1 -1
- package/data/harnesses/mobile/agents/brainstorm.md +1 -1
- package/data/harnesses/mobile/agents/maintenance.md +2 -2
- package/data/harnesses/mobile/harness.json +2 -2
- package/data/harnesses/mobile/rules/database.md +38 -0
- package/data/harnesses/mobile/rules/general.md +2 -40
- package/data/harnesses/mobile/rules/nomenclature.md +1 -8
- package/data/harnesses/mobile/rules/nustack.md +150 -0
- package/data/harnesses/mobile/skills/brainstorm/README.md +1 -1
- package/data/harnesses/mobile/skills/brainstorm/SKILL.md +1 -1
- package/data/harnesses/mobile/skills/brainstorm/exit-artifacts.md +4 -4
- package/data/harnesses/mobile/skills/brainstorm/templates/source-of-truth.md +3 -3
- package/data/harnesses/mobile/skills/documentation/SKILL.md +61 -17
- package/data/harnesses/mobile/skills/documentation/references/examples.md +41 -0
- package/data/harnesses/mobile/skills/documentation/references/style-guide.md +14 -9
- package/data/harnesses/mobile/skills/documentation/references/templates.md +305 -51
- package/package.json +1 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: Framer
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Framer — operator surfaces on a black artboard
|
|
9
|
+
|
|
10
|
+
Framer's brand is a near-pure-black marketing artboard: white display type set poster-tight, one
|
|
11
|
+
confident blue used only as a signal, and vibrant gradient atmosphere tiles that show what the tool
|
|
12
|
+
builds. This library entry translates that identity to operator work — a CRM, a queue, a dashboard
|
|
13
|
+
in Framer's language. What carries: the dark charcoal surface ladder, white ink, the single blue
|
|
14
|
+
signal, the tight-tracked Inter voice, the softly-rounded geometry. What stays behind: the
|
|
15
|
+
hero-scale GT Walsheim display, the gradient spotlight cards as chrome, the pill CTA, the 5px/96px
|
|
16
|
+
editorial rhythm.
|
|
17
|
+
|
|
18
|
+
Framer is categorically dark. Where the operator doctrine defaults light and treats dark as opt-in,
|
|
19
|
+
this brand legitimately inverts it: the base theme *is* dark, and `color-tokens.light` carries the
|
|
20
|
+
dark charcoal palette (the brand ships no light mode — forcing one would discard the palette). This is
|
|
21
|
+
the recorded override, not a mistake.
|
|
22
|
+
|
|
23
|
+
## 1 Visual Theme
|
|
24
|
+
|
|
25
|
+
Dark by default and dark only. The anchor surface is a near-black `background` canvas beside charcoal
|
|
26
|
+
`card` panels; hierarchy rises through a three-step surface ladder (canvas → surface-1 → surface-2),
|
|
27
|
+
not through heavy shadow. Flat: separation is carried by hairline `border`, surface lift, and white
|
|
28
|
+
ink against gray. A single chromatic accent — Framer blue — lives in `ring`, links, and selected/active
|
|
29
|
+
indicators, and is never a fill. The one primary action reads as a high-contrast white button on the
|
|
30
|
+
dark shell, not a colored one. Density is `standard`: the brand breathes like a poster, and the
|
|
31
|
+
operator read keeps that composure rather than crowding to terminal density.
|
|
32
|
+
|
|
33
|
+
## 2 Color Roles
|
|
34
|
+
|
|
35
|
+
Dark values (the brand's only mode). One accent — Framer blue is the sole chromatic hue that signals;
|
|
36
|
+
status hues speak only status; the gradient family lives in charts, never in chrome.
|
|
37
|
+
|
|
38
|
+
| Role | Value | Allowed where |
|
|
39
|
+
| --- | --- | --- |
|
|
40
|
+
| `background` | near-black `#090909` | the page canvas — the dominant surface, warm-tinted black |
|
|
41
|
+
| `card` / `popover` | charcoal `#141414` (surface-1) | raised panels, cards, overlays, mockup tiles |
|
|
42
|
+
| `muted` / `accent` | `#1c1c1c` (surface-2) | hover rows, subtle fills, selected-row lift (selection is lift, not color) |
|
|
43
|
+
| `foreground` | pure white `#ffffff` (ink) | all primary ink and headlines |
|
|
44
|
+
| `muted-foreground` | gray `#999999` (ink-muted) | labels, meta, captions — the entire secondary tier |
|
|
45
|
+
| `border` / `input` | hairline `#262626` | every separator, grid line, and field edge |
|
|
46
|
+
| `primary` | white `#ffffff` on `#000000` | the one primary action per surface; a light button on dark |
|
|
47
|
+
| `ring` | Framer blue `#0099ff` | focus outlines, links, active/selected indicators — the single signal |
|
|
48
|
+
| `destructive` | red `#ef4444` | destructive actions and error state only |
|
|
49
|
+
| `success` / `warning` | green `#22c55e` / amber `#f59e0b` | status signalling only, never chrome |
|
|
50
|
+
|
|
51
|
+
Hierarchy is binary: ink or ink-muted, no mid-tone grays between. The gradient hues (violet, magenta,
|
|
52
|
+
orange, coral) are brand graces — they carry no chrome role, only chart series (see §7).
|
|
53
|
+
|
|
54
|
+
## 3 Typography
|
|
55
|
+
|
|
56
|
+
One sans, one mono. `font-sans` is Inter — the operator body, UI, and headings all ride it, with Inter's
|
|
57
|
+
character variants (`cv01`, `cv05`, `cv09`, `cv11`, `ss03`, `ss07`) enabled; those variants are the
|
|
58
|
+
brand's body voice and the emitting agent keeps them on. `font-mono` is Geist Mono for IDs, codes,
|
|
59
|
+
timestamps, and log lines. Numeric columns render `tabular-nums` (Inter carries `tnum`) so figures align
|
|
60
|
+
down a column. Framer's hero-scale GT Walsheim display stays behind — operator headings top out where
|
|
61
|
+
Inter already serves.
|
|
62
|
+
|
|
63
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
64
|
+
| --- | --- | --- | --- |
|
|
65
|
+
| h1 | page title | 24px / 1.2 | `font-weight-strong` · `heading-tracking` |
|
|
66
|
+
| h2 | section head | 20px / 1.25 | `font-weight-strong` · `heading-tracking` |
|
|
67
|
+
| h3 | card / group head | 16px / 1.3 | `font-weight-strong` · `heading-tracking` |
|
|
68
|
+
| body | UI + prose | 15px / 1.4 | `font-weight-normal` |
|
|
69
|
+
| small | labels, meta, dense table | 14px / 1.4 | `font-weight-normal` |
|
|
70
|
+
| caption | eyebrow / footnote | 13px / 1.2 | `font-weight-normal`, `+0.01em` |
|
|
71
|
+
|
|
72
|
+
Framer's signature is aggressive negative tracking; at operator sizes it carries as a tighter-than-neutral
|
|
73
|
+
`heading-tracking`, not the hero display's -5% extreme. Bump weight one narrow step for emphasis; never
|
|
74
|
+
change size to emphasize.
|
|
75
|
+
|
|
76
|
+
## 4 Component Stylings
|
|
77
|
+
|
|
78
|
+
Every recurring operator component composes from the primitives — no literal values.
|
|
79
|
+
|
|
80
|
+
- **Button** — `primary`: filled white `primary` on `primary-foreground`, `radius`, no pill. Secondary:
|
|
81
|
+
`secondary` (surface-1) fill, `border`, `foreground`. Ghost: transparent, `muted` on hover.
|
|
82
|
+
- **Input** — `card` (surface-1) fill, 1px `border` (`border-weight`), `radius`; focus draws the blue
|
|
83
|
+
`ring` at 2px, no glow — the one chromatic moment in the field.
|
|
84
|
+
- **Card** — `card` surface, 1px `border`, `radius`; a soft light-edge + `shadow-intensity` drop only
|
|
85
|
+
when it floats off the canvas; inset by `density-inset`.
|
|
86
|
+
- **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
|
|
87
|
+
numeric columns; row selection lifts to `accent` (surface-2), never a colored fill.
|
|
88
|
+
- **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`
|
|
89
|
+
for content-heavy), beside the work, not over it.
|
|
90
|
+
- **Badge** — hairline `border`, `muted`/status fill; status badges take `success` / `warning` /
|
|
91
|
+
`destructive`, never `primary` and never the blue.
|
|
92
|
+
|
|
93
|
+
## 5 Layout
|
|
94
|
+
|
|
95
|
+
Base spacing unit 4px (Tailwind `--spacing` 0.25rem); the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 ·
|
|
96
|
+
32 · 48 · 64`. Framer's marketing 5px rhythm (15 / 20 / 30) and 96px section breaks stay behind — the
|
|
97
|
+
operator surface normalizes to the 4px ramp the density remap expects. Shell dimensions map one-to-one
|
|
98
|
+
to the layout primitives: sidebar `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar
|
|
99
|
+
`topbar-height` (56px, the brand's nav height), side panel `side-panel-width` / `side-panel-width-rich`,
|
|
100
|
+
modal cap `modal-width-max`, forms `form-max-width`, tables full-width. Density is governed globally by
|
|
101
|
+
`density-tier` and stepped per archetype by the surface catalog — never by absolute overrides.
|
|
102
|
+
|
|
103
|
+
## 6 Depth
|
|
104
|
+
|
|
105
|
+
Flat. Rank comes from the surface ladder and hairlines, not stacked shadow:
|
|
106
|
+
|
|
107
|
+
- **0 — canvas** `background`, no border — the black artboard.
|
|
108
|
+
- **1 — panel / card** `card` (surface-1) on a 1px `border`; the working raised surface.
|
|
109
|
+
- **2 — overlay** `popover` / side panel / modal — a `rgba(255,255,255,0.08)` light top-edge plus a
|
|
110
|
+
soft `shadow-intensity` drop against the near-black. No level stacks a heavier shadow to signal rank;
|
|
111
|
+
rank is surface lift and position.
|
|
112
|
+
|
|
113
|
+
Focus is a 2px blue `ring` outline (never a glow), visible on every interactive element — the only
|
|
114
|
+
chromatic depth signal in the system. Three z-levels: content, sticky chrome, overlay.
|
|
115
|
+
|
|
116
|
+
## 7 Do's & Don'ts
|
|
117
|
+
|
|
118
|
+
- **Do** keep the base dark. Framer ships no light mode; the near-black canvas is the identity.
|
|
119
|
+
- **Do** reserve Framer blue for `ring`, links, and selected/active indicators — a signal color, never a
|
|
120
|
+
surface or button fill.
|
|
121
|
+
- **Do** make the primary action a high-contrast white button; there is one per surface.
|
|
122
|
+
- **Do** mark selection and "active" by surface lift (surface-1 → surface-2), not by a colored tint.
|
|
123
|
+
- **Do** carry hierarchy as a binary ink / ink-muted split — no mid-tone grays crept in between.
|
|
124
|
+
- **Do** apply `tabular-nums` to every numeric column and `font-mono` to IDs, codes, and timestamps.
|
|
125
|
+
- **Don't** promote a second chromatic accent. The gradient hues are chart series only, never chrome.
|
|
126
|
+
- **Don't** pill operator buttons or reach for a radius outside `radius-scale` — the marketing pill CTA
|
|
127
|
+
stays behind; operator buttons take the `radius` default.
|
|
128
|
+
- **Don't** wash a section in a gradient. Gradients were marketing atmosphere; they do not enter the shell.
|
|
129
|
+
- **Don't** open detail or edit in a modal when the side panel fits — modals are for confirmations only.
|
|
130
|
+
|
|
131
|
+
## 8 Responsive
|
|
132
|
+
|
|
133
|
+
The operator sweep is 375 / 768 / 1024 / 1440; the single dark theme holds at every width.
|
|
134
|
+
|
|
135
|
+
| Breakpoint | What changes |
|
|
136
|
+
| --- | --- |
|
|
137
|
+
| 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
|
|
138
|
+
| 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
|
|
139
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side |
|
|
140
|
+
| 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
|
|
141
|
+
|
|
142
|
+
## 9 Agent Prompt Guide
|
|
143
|
+
|
|
144
|
+
Directives the emitting agent follows verbatim:
|
|
145
|
+
|
|
146
|
+
- Build dark. The base theme is the charcoal ladder — canvas `background`, surface-1 `card`, surface-2
|
|
147
|
+
`accent`/`muted` — with white ink and gray `muted-foreground`. There is no light interlude.
|
|
148
|
+
- Accent only with the blue, and only as a signal: focus `ring`, links, active nav, selected indicators.
|
|
149
|
+
If the blue becomes a fill, the brand is drifting.
|
|
150
|
+
- Make the one primary action a white button; everything else is neutral surface or status.
|
|
151
|
+
- Mark selection and active state by lifting a surface step, not by tinting — "selected is lift, not color".
|
|
152
|
+
- Keep hierarchy binary: ink `foreground` or gray `muted-foreground`, nothing between.
|
|
153
|
+
- Set Inter as `font-sans` with its `cv`/`ss` character variants on; `font-mono` Geist Mono for IDs,
|
|
154
|
+
codes, timestamps; `tabular-nums` on every numeric column.
|
|
155
|
+
- Track headings tight; keep buttons and cards on the `radius` default. Leave behind the GT Walsheim
|
|
156
|
+
hero display, the gradient spotlight cards, the pill CTA, and the 96px editorial section rhythm.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: HashiCorp
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# HashiCorp — an operator reading of the pure-black, multi-product infrastructure system
|
|
9
|
+
|
|
10
|
+
HashiCorp's web system is a confident, technical enterprise canvas: a pure-black ground, white engineered sans,
|
|
11
|
+
charcoal cards on felt-thin hairlines, and per-product accent colors marking which tool a section is about. This
|
|
12
|
+
entry is the *operator* reading — an internal tool (dashboard, run queue, policy console, log stream) in HashiCorp's
|
|
13
|
+
language. Carried over: the pure-black canvas, charcoal surface ladder, white-on-dark ink, flat shadowless depth, the
|
|
14
|
+
8px-not-pill radius, hashicorpSans's engineered voice (Inter the substitute). Left behind: the 80/56/40px hero
|
|
15
|
+
display, the per-product chromatic identity cards, full-bleed CTA banners, and the 96px section rhythm.
|
|
16
|
+
|
|
17
|
+
**Categorically dark, literally pure black, one accent not seven.** Two floors yield: the light-default floor (the
|
|
18
|
+
categorically-dark exception — the default theme is dark and fills the required `light` slot) and the doctrine's ban
|
|
19
|
+
on pure `#000000` surfaces (the brand's canvas *is* `#000000`, so the brand token wins); both are recorded plainly.
|
|
20
|
+
The signature per-product palette is a *multi-product* marketing device — an internal tool is one product, so the
|
|
21
|
+
operator reading spends the one product-neutral hue the brand uses on every page: accent-blue `#2b89ff`, repurposed
|
|
22
|
+
as the chart categorical ramp, the one place multiple hues are legitimate (see §2, §7).
|
|
23
|
+
|
|
24
|
+
## 1 Visual Theme
|
|
25
|
+
|
|
26
|
+
Dark by default — pure black `background` (`#000000`) is the floor of every surface, no light counterpart.
|
|
27
|
+
Emphatically flat: hierarchy comes from the charcoal surface ladder (canvas → surface-1 → surface-2), 1px hairline
|
|
28
|
+
`border`, type weight, and white-on-black contrast — never shadow. A single accent, blue `primary` (`#2b89ff`), is
|
|
29
|
+
held scarce: the one primary action, the focus `ring`, and the active-nav indicator, nothing else. The neutral ramp
|
|
30
|
+
is a cool near-achromatic charcoal (white ink through `#b2b6bd` to `#656a76`), so the UI reads engineered and
|
|
31
|
+
monochrome. Density is `standard` — the brand breathes more than a terminal, but the operator reading earns density.
|
|
32
|
+
|
|
33
|
+
## 2 Color Roles
|
|
34
|
+
|
|
35
|
+
Dark values. One accent — blue `primary` is the only chromatic hue that carries UI meaning; status
|
|
36
|
+
hues speak only status; the product palette lives only in charts.
|
|
37
|
+
|
|
38
|
+
| Role | Value | Allowed where |
|
|
39
|
+
| --- | --- | --- |
|
|
40
|
+
| `background` | pure-black canvas `#000000` | page floor and content area — the dominant surface |
|
|
41
|
+
| `foreground` | white ink `#ffffff` | headlines and primary text |
|
|
42
|
+
| `card` / `popover` | charcoal `#15181e` (surface-1) | cards, tiles, overlays — the first lift off black |
|
|
43
|
+
| `secondary` / `accent` | charcoal-2 `#1f232b` (surface-2) | secondary-button fills; hover and selected rows and nav |
|
|
44
|
+
| `muted` | faint well `#0c0e12` | inset tracks, disabled fills, quiet band tints |
|
|
45
|
+
| `muted-foreground` | cool gray `#b2b6bd` | labels, captions, secondary text |
|
|
46
|
+
| `border` / `input` | hairline `#3b3d45` (surface-3) | every separator, grid line, and field edge |
|
|
47
|
+
| `primary` | accent-blue `#2b89ff` | the one primary action; active-nav indicator; the text-link |
|
|
48
|
+
| `primary-foreground` | white `#ffffff` | text on the blue action |
|
|
49
|
+
| `ring` | blue `#2b89ff` | the focus outline — unmistakable, because keyboard-first |
|
|
50
|
+
| `destructive` | Consul red `#e62b1e` | destructive actions and error state only |
|
|
51
|
+
| `success` / `warning` | Nomad green `#00ca8e` / Vault yellow `#ffcf25` | status signalling only, never chrome |
|
|
52
|
+
|
|
53
|
+
The per-product palette — Terraform `#7b42bc`, Vault `#ffcf25`, Waypoint `#14c6cb`, Nomad `#00ca8e`,
|
|
54
|
+
Boundary `#f24c53` — carries no UI role; it draws the chart categorical ramp (see §7).
|
|
55
|
+
|
|
56
|
+
## 3 Typography
|
|
57
|
+
|
|
58
|
+
One sans, one mono. `font-sans` is hashicorpSans, the brand's geometric-humanist face — body, UI, and headings all
|
|
59
|
+
ride it; weight and tight tracking, not a second family, carry the display voice (Inter is the corpus's own open
|
|
60
|
+
substitute). `font-mono` is the operator's reclaim — the marketing brand reserves mono for in-product, but the
|
|
61
|
+
operator surface needs it for IDs, codes, timestamps, and log lines (JetBrains Mono). Numeric columns render
|
|
62
|
+
`tabular-nums`. The display scale (80/56/40px) stays behind — an operator surface tops out at a 24px page title.
|
|
63
|
+
|
|
64
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
65
|
+
| --- | --- | --- | --- |
|
|
66
|
+
| h1 | page title | 24px / 1.25 | `font-weight-strong` · `heading-tracking` |
|
|
67
|
+
| h2 | section head | 18px / 1.3 | `font-weight-strong` · `heading-tracking` |
|
|
68
|
+
| h3 | card / group head | 15px / 1.35 | `font-weight-strong` |
|
|
69
|
+
| body | UI + prose | 14px / 1.5 | `font-weight-normal` |
|
|
70
|
+
| small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
|
|
71
|
+
| caption | uppercase eyebrow | 12px / 1.4 | `font-weight-strong`, `+0.05em`, uppercase |
|
|
72
|
+
|
|
73
|
+
The brand's weight hierarchy is deliberately small — 500 body / 600 emphasis / 700 display, no extremes, so the
|
|
74
|
+
system reads engineered. Operator headings run the strong weight (600, the brand's headline weight) with tight
|
|
75
|
+
negative tracking; the 700 display weights stay behind. Build hierarchy on size and weight, never a second family;
|
|
76
|
+
keep the uppercase eyebrow above sections.
|
|
77
|
+
|
|
78
|
+
## 4 Component Stylings
|
|
79
|
+
|
|
80
|
+
Every recurring operator component composes from the primitives — no literal values.
|
|
81
|
+
|
|
82
|
+
- **Button** — primary: filled blue `primary` on white `primary-foreground`, `radius` (8px), never a pill. Secondary: `secondary` charcoal-2 fill, `border`, `foreground`. Ghost: transparent, `accent` on hover. The brand's white-on-black CTA is a legitimate monochrome variant for a lone hero action, but the operator default spends the accent-blue so primary, focus, and active-nav read as one system.
|
|
83
|
+
- **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the blue `ring` at 2px, no glow (the brand's focus is a 1px accent-blue outline, firmed to 2px for keyboard-first work).
|
|
84
|
+
- **Card** — `card` charcoal surface, 1px `border`, `radius` (cards step to 12px via the scale); depth is the surface lift off black, not shadow; inset by `density-inset`.
|
|
85
|
+
- **Table row** — height `table-row-height`; `border` grid lines carry the grid; `accent` on hover; `tabular-nums` on numeric columns; selection tints `accent` with a blue `primary` left-indicator.
|
|
86
|
+
- **Side panel** — detail and edit open in the panel (`side-panel-width`, `side-panel-width-rich` for content-heavy), beside the work, not over it.
|
|
87
|
+
- **Badge** — hairline `border`, `muted`/status fill, uppercase caption; status badges take `success` / `warning` / `destructive`, never `primary`. Pill radius is badges-only (the brand's product pills).
|
|
88
|
+
|
|
89
|
+
## 5 Layout
|
|
90
|
+
|
|
91
|
+
Base spacing unit 8px; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` — the marketing 96px section
|
|
92
|
+
rhythm stays behind. Shell dimensions map one-to-one to the layout primitives: sidebar `sidebar-width-expanded` /
|
|
93
|
+
`sidebar-width-collapsed`, topbar `topbar-height` (64px, the brand's nav height), side panel `side-panel-width` /
|
|
94
|
+
`side-panel-width-rich`, modal cap `modal-width-max`, forms `form-max-width`, tables full-width. Density is governed
|
|
95
|
+
globally by `density-tier` (standard) and stepped denser per archetype by the surface catalog.
|
|
96
|
+
|
|
97
|
+
## 6 Depth
|
|
98
|
+
|
|
99
|
+
Flat and shadowless. Depth comes from the charcoal surface ladder and hairlines, not drop shadows:
|
|
100
|
+
|
|
101
|
+
- **0 — canvas** `background` (`#000000`), no border.
|
|
102
|
+
- **1 — panel / card** `card` (`#15181e`, surface-1) on a 1px `border`; the charcoal lift off pure black carries rank. Hover and selected rows step one further to `accent` (`#1f232b`, surface-2); chips and sub-nav ride the `border` charcoal-3 (`#3b3d45`).
|
|
103
|
+
- **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns the faintest lift, enough to separate an overlay from the black canvas above a scrim. Rank is surface, border, and position — never a heavier shadow.
|
|
104
|
+
|
|
105
|
+
The per-product chromatic card is a marketing *identity* device at a feature card's z-plane, not a depth level — it
|
|
106
|
+
stays behind. Focus is a 2px blue `ring` outline (never a glow), visible on every interactive element. Three
|
|
107
|
+
z-levels: content, chrome, overlay.
|
|
108
|
+
|
|
109
|
+
## 7 Do's & Don'ts
|
|
110
|
+
|
|
111
|
+
- **Do** anchor every surface on the pure-black canvas and carry hierarchy with the black-plus-charcoal ladder, hairlines, weight, and size; the black `#000000` is deliberate — not a near-black to be softened.
|
|
112
|
+
- **Do** reserve blue `primary` for the primary action, the focus `ring`, and the active-nav indicator — nothing else. It is the one product-neutral chromatic hue the brand spends on every page.
|
|
113
|
+
- **Do** run headings the brand sans (hashicorpSans; Inter the substitute) at 600 with tight negative tracking, one family across the whole hierarchy.
|
|
114
|
+
- **Do** apply `tabular-nums` to numeric columns and `font-mono` to IDs, codes, timestamps, and log lines — the operator surface reclaims the mono the marketing brand withholds.
|
|
115
|
+
- **Do** draw chart series from the product palette (Terraform purple, Vault yellow, Nomad green, Boundary coral) — the one place multiple hues are legitimate.
|
|
116
|
+
- **Don't** rebuild the per-product accent system as UI chrome, fill large surfaces with a product hue, or set body text in one — that palette is a multi-product marketing device; an internal tool is one product with one accent.
|
|
117
|
+
- **Don't** pill controls or reach for a radius outside `radius-scale` — the button/input radius is 8px.
|
|
118
|
+
- **Don't** signal elevation with drop shadows, or adapt the shell to a light canvas — this brand has no light surface.
|
|
119
|
+
- **Don't** pair a display-only sans with a different body family — HashiCorp is one family across the full hierarchy.
|
|
120
|
+
|
|
121
|
+
## 8 Responsive
|
|
122
|
+
|
|
123
|
+
The operator sweep is 375 / 768 / 1024 / 1440.
|
|
124
|
+
|
|
125
|
+
| Breakpoint | What changes |
|
|
126
|
+
| --- | --- |
|
|
127
|
+
| 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
|
|
128
|
+
| 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
|
|
129
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side |
|
|
130
|
+
| 1440 | content caps at `form-max-width` for forms; tables and dashboards use the full width |
|
|
131
|
+
|
|
132
|
+
## 9 Agent Prompt Guide
|
|
133
|
+
|
|
134
|
+
Directives the emitting agent follows verbatim:
|
|
135
|
+
|
|
136
|
+
- Wear the pure-black `#000000` canvas by default; this brand is categorically dark — no light surface to fall back to. Cards and panels are the charcoal surface-1 lift, not white; depth is that ladder plus hairlines, never shadow.
|
|
137
|
+
- Spend blue once per surface: the primary action, the focus `ring`, the active-nav indicator. If two things want the blue, one is not primary. The per-product palette (Terraform purple, Vault yellow, Waypoint cyan, …) stays behind as a marketing identity device — reuse it only as the chart categorical ramp, never as UI accents.
|
|
138
|
+
- Headings ride the brand sans (hashicorpSans; Inter the open substitute) at 600 with tight negative tracking; the 80/56/40px display scale stays behind — operator headings top out at 24px. Keep the uppercase eyebrow above meaningful sections.
|
|
139
|
+
- Every numeric column is `tabular-nums`; every ID / code / timestamp / log line is `font-mono` (JetBrains Mono) — the operator surface reclaims the mono the marketing brand reserves for in-product. Detail and edit go in the side panel beside the work; the blue `ring` focus outline is always visible for keyboard work.
|
|
140
|
+
- Leave behind: the 80px hero display, the per-product chromatic identity cards, full-bleed CTA banners, and the 96px section rhythm — marketing scale, not operator chrome.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: IBM
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# IBM — Carbon operator design
|
|
9
|
+
|
|
10
|
+
The operator reading of IBM's Carbon Design System. Carbon was built for enterprise product
|
|
11
|
+
surfaces, so it dresses an internal tool almost natively — but the source corpus is IBM's
|
|
12
|
+
*marketing* canvas, and marketing graces are stripped here. What carries: the flat 0px square
|
|
13
|
+
geometry, IBM Blue as the single accent, IBM Plex Sans, the 4px grid, and depth carried by hairlines
|
|
14
|
+
and surface change. What stays behind: the 76/60/42px weight-300 hero display type, the full-bleed
|
|
15
|
+
blue CTA banner, the dark inverted footer, and the soft-blue hero gradient.
|
|
16
|
+
|
|
17
|
+
## 1 Visual Theme
|
|
18
|
+
|
|
19
|
+
Light by default; dark is opt-in — in the brand only the footer and global header invert, and that
|
|
20
|
+
inversion is a marketing move that stays behind. Flat and square: every button, card, input, and
|
|
21
|
+
container sits at 0px corners, and hierarchy is carried by a 1px hairline `border` and surface change,
|
|
22
|
+
never by shadow. A single accent — IBM Blue `primary` #0f62fe — is reserved for the one action that
|
|
23
|
+
matters, for links, and for the focus rule. The neutral ramp is a true charcoal-on-white: ink #161616
|
|
24
|
+
on a white canvas, with #f4f4f4 and #e0e0e0 grays doing the structural work. Dense by design — Carbon
|
|
25
|
+
expects a lot on the page, not a lot of air. The anchor surface is a white content canvas beside a
|
|
26
|
+
faint gray side nav.
|
|
27
|
+
|
|
28
|
+
## 2 Color Roles
|
|
29
|
+
|
|
30
|
+
Light values first; hex is the brand's native format. One accent — `primary` is the only chromatic hue
|
|
31
|
+
that carries meaning; status hues speak only status.
|
|
32
|
+
|
|
33
|
+
| Role | Value | Allowed where |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `background` / `card` / `popover` | white `#ffffff` | page, tiles, and overlays — the dominant surface |
|
|
36
|
+
| `foreground` | charcoal `#161616` | all headings and primary ink |
|
|
37
|
+
| `muted` / `secondary` | light gray `#f4f4f4` (Carbon surface-1) | field fills, alternate-row bands, hovered tiles |
|
|
38
|
+
| `muted-foreground` | mid gray `#525252` | meta, sub-headlines, secondary text |
|
|
39
|
+
| `border` / `input` | hairline `#e0e0e0` (Carbon gray-20) | every card edge, grid line, field rule, divider |
|
|
40
|
+
| `primary` | IBM Blue `#0f62fe` | the one primary action; links; active nav; focus rule |
|
|
41
|
+
| `accent` | blue-10 tint `#edf5ff` | selected/hovered rows and nav, on-accent surfaces only |
|
|
42
|
+
| `ring` | `primary` `#0f62fe` | the 2px focus outline — keyboard-first, unmistakable |
|
|
43
|
+
| `destructive` | red-60 `#da1e28` | destructive actions and error state only |
|
|
44
|
+
| `success` / `warning` | green-50 `#24a148` / yellow-30 `#f1c21b` | status signalling only, never chrome |
|
|
45
|
+
|
|
46
|
+
## 3 Typography
|
|
47
|
+
|
|
48
|
+
One family carries everything: **IBM Plex Sans** for UI, body, and headings — hierarchy comes from size
|
|
49
|
+
and weight, never a second face. Operator headings run `font-weight-strong` (600); the marketing
|
|
50
|
+
weight-300 hero display treatment stays behind. **IBM Plex Mono** returns for IDs, codes, timestamps,
|
|
51
|
+
and log lines — Carbon keeps mono to product surfaces, and an operator UI is a product surface. Body
|
|
52
|
+
carries Carbon's signature `+0.16px` positive letter-spacing (part of the voice — keep it). Numeric
|
|
53
|
+
columns render `tabular-nums` so figures align down a column.
|
|
54
|
+
|
|
55
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
56
|
+
| --- | --- | --- | --- |
|
|
57
|
+
| h1 | page title | 32px / 1.25 | `font-weight-strong` · `heading-tracking` |
|
|
58
|
+
| h2 | section head | 24px / 1.33 | `font-weight-strong` · `heading-tracking` |
|
|
59
|
+
| h3 | card / group head | 20px / 1.40 | `font-weight-strong` · `heading-tracking` |
|
|
60
|
+
| body | UI + prose | 16px / 1.50 | `font-weight-normal` · +0.16px |
|
|
61
|
+
| small | labels, meta, dense table | 14px / 1.29 | `font-weight-normal` · +0.16px |
|
|
62
|
+
| caption | eyebrow, utility meta | 12px / 1.33 | `font-weight-normal` · +0.32px, sentence case |
|
|
63
|
+
|
|
64
|
+
Eyebrows stay sentence case — Carbon resists the all-caps tracked eyebrow. Bump weight for emphasis;
|
|
65
|
+
never change size.
|
|
66
|
+
|
|
67
|
+
## 4 Component Stylings
|
|
68
|
+
|
|
69
|
+
Every recurring operator component composes from the primitives — no literal values.
|
|
70
|
+
|
|
71
|
+
- **Button** — `primary`: filled `primary` on `primary-foreground`, `radius` (0px, square), 12px·16px
|
|
72
|
+
padding, never pill. Secondary follows Carbon's charcoal treatment: `foreground` fill,
|
|
73
|
+
`primary-foreground` text. Tertiary/ghost: transparent with a 1px `primary` border and `primary`
|
|
74
|
+
text, fill only on hover.
|
|
75
|
+
- **Input** — `muted` fill, a 1px bottom `border`; focus swaps the bottom rule for Carbon's signature
|
|
76
|
+
2px `ring` underline and draws the full focus outline, square, no radius.
|
|
77
|
+
- **Card** — `card` surface on a 1px `border`, 0px corners, no shadow; a "recommended" tile lifts by
|
|
78
|
+
moving to the `muted` ground, not by elevation.
|
|
79
|
+
- **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; row selection
|
|
80
|
+
tints `accent`; `tabular-nums` on numeric columns; `font-mono` on IDs and codes.
|
|
81
|
+
- **Side panel** — detail and edit open in the side panel (`side-panel-width`,
|
|
82
|
+
`side-panel-width-rich` for content-heavy), beside the work, not over it.
|
|
83
|
+
- **Badge** — square (0px) tag, hairline `border`, status fill; status badges take `success` /
|
|
84
|
+
`warning` / `destructive`, never `primary`.
|
|
85
|
+
|
|
86
|
+
## 5 Layout
|
|
87
|
+
|
|
88
|
+
Base spacing unit 4px (Carbon's 4-pixel grid); the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 ·
|
|
89
|
+
48 · 64 · 96`. Shell dimensions map one-to-one to the layout primitives: side nav
|
|
90
|
+
`sidebar-width-expanded` (256px) / `sidebar-width-collapsed` (48px icon rail), topbar `topbar-height`
|
|
91
|
+
(48px), side panel `side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms
|
|
92
|
+
`form-max-width`, tables full-width. Density is governed globally by `density-tier` (`dense`) and
|
|
93
|
+
stepped per archetype by the surface catalog. Sections separate by thin gray rows, not by large
|
|
94
|
+
vertical gaps — Carbon spends alignment, not air.
|
|
95
|
+
|
|
96
|
+
## 6 Depth
|
|
97
|
+
|
|
98
|
+
Flat. Hierarchy comes from the surface ladder and hairlines, not shadow:
|
|
99
|
+
|
|
100
|
+
- **0 — canvas** `background` white, no border.
|
|
101
|
+
- **1 — tile / card** `card` on a 1px `border`; no shadow — the default enterprise tile.
|
|
102
|
+
- **2 — surface band** the `muted` ground for alternate rows and hovered tiles; rank is surface
|
|
103
|
+
change, not elevation.
|
|
104
|
+
- **3 — overlay** `popover` / menu / side panel / modal — the one place `shadow-intensity` earns a
|
|
105
|
+
soft `sm`/`md` shadow.
|
|
106
|
+
|
|
107
|
+
Focus is Carbon's 2px `primary` outline (with a hairline-strong underline on fields), visible on every
|
|
108
|
+
interactive element. Three z-levels: content, sticky chrome, overlay.
|
|
109
|
+
|
|
110
|
+
## 7 Do's & Don'ts
|
|
111
|
+
|
|
112
|
+
- **Do** keep every button, card, input, and container at 0px square — the flat geometry *is* the
|
|
113
|
+
brand.
|
|
114
|
+
- **Do** reserve `primary` IBM Blue for the single primary action, links, and the focus rule; treat it
|
|
115
|
+
as scarce.
|
|
116
|
+
- **Do** carry hierarchy with surface change (`background` → `muted`) and 1px hairlines — skip drop
|
|
117
|
+
shadows.
|
|
118
|
+
- **Do** apply the +0.16px tracking to body sizes and `tabular-nums` / `font-mono` to figures and IDs.
|
|
119
|
+
- **Don't** round corners — even 4px breaks the Carbon look.
|
|
120
|
+
- **Don't** bold operator headings past `font-weight-strong`, or reach for the marketing weight-300
|
|
121
|
+
hero display.
|
|
122
|
+
- **Don't** promote a second chromatic accent — status uses `success` / `warning` / `destructive`
|
|
123
|
+
only.
|
|
124
|
+
- **Don't** open detail or edit in a modal when the side panel fits, and don't signal rank with shadow.
|
|
125
|
+
|
|
126
|
+
## 8 Responsive
|
|
127
|
+
|
|
128
|
+
The operator sweep is 375 / 768 / 1024 / 1440.
|
|
129
|
+
|
|
130
|
+
| Breakpoint | What changes |
|
|
131
|
+
| --- | --- |
|
|
132
|
+
| 375 | side nav → hamburger overlay; utility meta hides; two-pane list+detail stacks; side panel → full sheet; density holds |
|
|
133
|
+
| 768 | side nav collapses to the 48px icon rail; tables scroll their overflow; card grid → 2-up |
|
|
134
|
+
| 1024 | side nav expands to 256px; two-pane queue+detail holds side by side; grid up to 4-up |
|
|
135
|
+
| 1440 | content caps at `form-max-width` for forms; tables and dashboards use the full width |
|
|
136
|
+
|
|
137
|
+
## 9 Agent Prompt Guide
|
|
138
|
+
|
|
139
|
+
This entry dresses an internal operator surface — a queue, a data console, an admin panel — in Carbon.
|
|
140
|
+
Carry over: flat 0px square geometry, IBM Blue as the single accent, IBM Plex Sans plus Plex Mono, the
|
|
141
|
+
4px grid, hairline-and-surface-change depth, the 2px blue focus rule, and the +0.16px body tracking.
|
|
142
|
+
Leave behind: the 76/60/42px weight-300 hero display type, the full-bleed blue CTA banner, the dark
|
|
143
|
+
inverted footer, and the soft-blue hero gradient — all marketing.
|
|
144
|
+
|
|
145
|
+
- Lead every list surface with its data table; keep it square and dense.
|
|
146
|
+
- Accent only the primary action. IBM Blue is scarce — links, primary CTA, focus. Anything more is
|
|
147
|
+
drift.
|
|
148
|
+
- Keep 0px corners everywhere; a rounded corner reads as a different brand.
|
|
149
|
+
- IDs, codes, and timestamps in Plex Mono; every numeric column `tabular-nums`; body keeps +0.16px
|
|
150
|
+
tracking and sentence-case eyebrows.
|
|
151
|
+
- Depth is hairline and surface change; reach past a hairline only for a real overlay.
|
|
152
|
+
- Detail and edit go in the side panel; a modal is a confirmation, not a workspace.
|
|
153
|
+
- Keep the whole app light; do not invert to charcoal outside a deliberate dark opt-in.
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: Intercom
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Intercom — the operator reading
|
|
9
|
+
|
|
10
|
+
The calm, editorial customer-service brand rendered for internal tools. Intercom's public surfaces
|
|
11
|
+
are publication-quiet and product-screenshot-led; an operator surface wearing this brand keeps the
|
|
12
|
+
warm cream canvas, the white-on-cream lift, the charcoal ink, the single reserved Fin Orange, the
|
|
13
|
+
modest radii, and the geometric-sans voice that never bolds past 500. The 72px hero display, the
|
|
14
|
+
product-mockup rhythm, the pure-black quote strip, the pill tab toggles, and the 96px section
|
|
15
|
+
breathing stay behind. What carries is the feel: a warm cream ground the category never uses, panels
|
|
16
|
+
that lift by turning white rather than by casting shadow, and one orange spark held in reserve.
|
|
17
|
+
|
|
18
|
+
## 1 Visual Theme
|
|
19
|
+
|
|
20
|
+
Light by default; dark is opt-in (Intercom ships no dark theme on the public web). The anchor surface
|
|
21
|
+
is not white — it is a soft warm cream `background` (`#f5f1ec`), the brand's defining signal. Panels
|
|
22
|
+
and cards lift **onto white** (`card`, `#ffffff`): the depth strategy is a surface change, not a shadow.
|
|
23
|
+
Flat throughout — hierarchy comes from the cream-to-white ladder, warm hairline `border` (`#d3cec6`),
|
|
24
|
+
and type weight, never heavy elevation. A single chromatic voltage, Fin Orange (`primary`, `#ff5600`),
|
|
25
|
+
is held in reserve for the one action that matters; everything neutral is charcoal ink (`foreground`,
|
|
26
|
+
`#111111`) on cream. Corners are modest — `radius` (8px) on buttons and inputs, a larger step on cards
|
|
27
|
+
— never pill, never square. Density is `standard`: calm and editorial, not cramped.
|
|
28
|
+
|
|
29
|
+
## 2 Color Roles
|
|
30
|
+
|
|
31
|
+
Light values. One accent: Fin Orange is the only chromatic hue that carries meaning; the report
|
|
32
|
+
palette lives in charts, status speaks only status.
|
|
33
|
+
|
|
34
|
+
| Role | Value | Allowed where |
|
|
35
|
+
| --- | --- | --- |
|
|
36
|
+
| `background` | cream `#f5f1ec` | the page canvas — warm, never pure white; the brand's defining surface |
|
|
37
|
+
| `card` / `popover` | white `#ffffff` | cards, panels, overlays — they lift off the cream by turning white |
|
|
38
|
+
| `foreground` | charcoal `#111111` | all primary ink, headlines, and neutral/secondary button labels |
|
|
39
|
+
| `muted` | warm cream `#ebe7e1` | hover rows, subtle fills, quiet panel bands (surface-2) |
|
|
40
|
+
| `muted-foreground` | ink-muted `#626260` | labels, captions, secondary text, inactive tabs |
|
|
41
|
+
| `secondary` | warm cream `#ebe7e1` | secondary button fill — ink label on cream, 1px `border` |
|
|
42
|
+
| `border` / `input` | warm hairline `#d3cec6` | every separator, grid line, and field edge — a soft warm gray, not an ink line |
|
|
43
|
+
| `primary` | Fin Orange `#ff5600` | the single primary action per surface; active nav; the one reserved voltage |
|
|
44
|
+
| `accent` | deep cream `#e6e0d6` | selected/hovered rows and nav — Intercom selects by a warm-neutral shift, not by colour |
|
|
45
|
+
| `ring` | Fin Orange `#ff5600` | the focus outline — unmistakable, because keyboard-first |
|
|
46
|
+
| `destructive` | error red `#c41c1c` | destructive actions and error state only |
|
|
47
|
+
| `success` / `warning` | green `#0bdf50` / amber `#d97706` | status signalling only, never chrome |
|
|
48
|
+
|
|
49
|
+
Charcoal is Intercom's marketing primary because a marketing page carries many CTAs; the operator
|
|
50
|
+
reading has one primary action per surface, so it earns the reserved orange, and charcoal stays the
|
|
51
|
+
neutral ink for secondary actions. Brand Blue (`#0007cb`) and the pure-black quote strip are marketing
|
|
52
|
+
graces — they carry no operator role (see §7).
|
|
53
|
+
|
|
54
|
+
## 3 Typography
|
|
55
|
+
|
|
56
|
+
One sans, one mono. `font-sans` is Saans — Intercom's proprietary geometric sans (Inter at weight 500
|
|
57
|
+
the closest open substitute); the whole ramp rides it, display voice carried by size and modest weight,
|
|
58
|
+
not a second family. The signature is restraint: `font-weight-strong` stops at **500** — Saans at 500
|
|
59
|
+
reads confident without bold, and the brand never reaches past it. Negative tracking is the other
|
|
60
|
+
signature, scaling with size (the corpus runs -0.5px at 28px). `font-mono` is SaansMono (JetBrains Mono
|
|
61
|
+
the approximation) for IDs, codes, timestamps, and log lines; numeric columns render `tabular-nums`.
|
|
62
|
+
|
|
63
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
64
|
+
| --- | --- | --- | --- |
|
|
65
|
+
| h1 | page title | 24px / 1.25 | `font-weight-strong` · `heading-tracking` |
|
|
66
|
+
| h2 | section head | 20px / 1.3 | `font-weight-strong` · -0.015em |
|
|
67
|
+
| h3 | card / group head | 16px / 1.35 | `font-weight-strong` · -0.01em |
|
|
68
|
+
| body | UI + prose | 14px / 1.5 | `font-weight-normal` |
|
|
69
|
+
| small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
|
|
70
|
+
| eyebrow | section eyebrow | 13px / 1.3 | `font-weight-strong`, sentence case, no tracking |
|
|
71
|
+
| code | IDs, logs, amounts | 13px / 1.5 | `font-weight-normal` |
|
|
72
|
+
|
|
73
|
+
Body line-height relaxes to 1.5 — an editorial breath the category tightens away. Eyebrows are
|
|
74
|
+
**sentence case**, never the all-caps tracked label the operator default reaches for. Bump weight to
|
|
75
|
+
`font-weight-strong` (500) for emphasis; never bold. The 72px hero display stays behind.
|
|
76
|
+
|
|
77
|
+
## 4 Component Stylings
|
|
78
|
+
|
|
79
|
+
Every recurring operator component composes from the primitives — no literal values.
|
|
80
|
+
|
|
81
|
+
- **Button** — `primary`: filled Fin Orange on `primary-foreground` (white), `radius` (8px), no pill.
|
|
82
|
+
Secondary: `secondary` warm-cream fill, 1px `border`, `foreground` ink label. Ghost: transparent,
|
|
83
|
+
`accent` on hover.
|
|
84
|
+
- **Input** — `card` (white) fill, 1px `border` (`border-weight`), `radius`; focus draws the Fin Orange `ring` at 2px, no glow.
|
|
85
|
+
- **Card** — `card` white surface lifting off the cream canvas, 1px `border`, a larger corner step from
|
|
86
|
+
the radius scale; shadow only when a true overlay floats (`shadow-intensity`); inset by `density-inset`.
|
|
87
|
+
- **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
|
|
88
|
+
numeric columns; row selection tints `accent` (warm-neutral, not orange).
|
|
89
|
+
- **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`
|
|
90
|
+
for content-heavy), beside the work, not over it.
|
|
91
|
+
- **Badge** — pill radius, hairline `border`, `muted`/status fill, sentence-case label; status badges
|
|
92
|
+
take `success` / `warning` / `destructive`, never `primary`.
|
|
93
|
+
|
|
94
|
+
## 5 Layout
|
|
95
|
+
|
|
96
|
+
Base spacing unit 8px; the on-scale ramp is `4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` (the marketing 96px
|
|
97
|
+
section step stays behind). Shell dimensions map one-to-one to the layout primitives: sidebar
|
|
98
|
+
`sidebar-width-expanded` (248px) / `sidebar-width-collapsed` (56px), topbar `topbar-height` (56px, the
|
|
99
|
+
corpus nav height), side panel `side-panel-width` (420px) / `side-panel-width-rich` (640px), modal cap
|
|
100
|
+
`modal-width-max`, forms `form-max-width`, tables full-width; card interior padding a calm 24px. Density
|
|
101
|
+
is governed globally by `density-tier` and stepped per archetype by the surface catalog.
|
|
102
|
+
|
|
103
|
+
## 6 Depth
|
|
104
|
+
|
|
105
|
+
Flat, surface-change-first. Hierarchy comes from the cream-to-white ladder and warm hairlines, not
|
|
106
|
+
shadow — Intercom resists drop shadows:
|
|
107
|
+
|
|
108
|
+
- **0 — canvas** `background` cream (`#f5f1ec`), no border.
|
|
109
|
+
- **1 — panel / card** `card` white lifting off the cream on a 1px `border`; the lift is the elevation.
|
|
110
|
+
- **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a single
|
|
111
|
+
faint `sm` shadow, over a scrim for modals. Rank is the white-on-cream shift, the border, and position.
|
|
112
|
+
|
|
113
|
+
Focus is a 2px Fin Orange `ring` outline (never a glow), visible on every interactive element. Three
|
|
114
|
+
z-levels: content, sticky chrome, overlay.
|
|
115
|
+
|
|
116
|
+
## 7 Do's & Don'ts
|
|
117
|
+
|
|
118
|
+
- **Do** anchor on the warm cream canvas — pure white reads as ordinary SaaS; the cream is the brand.
|
|
119
|
+
- **Do** lift panels and cards onto white (`card`) off the cream — the surface change is the depth.
|
|
120
|
+
- **Do** reserve Fin Orange (`primary`) for the single most important action; everything else is
|
|
121
|
+
charcoal ink or status.
|
|
122
|
+
- **Do** keep corners modest (`radius` 8px on buttons/inputs, the larger step on cards), write eyebrows
|
|
123
|
+
in sentence case, apply `tabular-nums` to numeric columns and `font-mono` to IDs/codes/timestamps.
|
|
124
|
+
- **Don't** use pure white as the canvas, or add drop shadows to floating cards.
|
|
125
|
+
- **Don't** spread Fin Orange — no orange section fills, no orange on secondary actions, no second
|
|
126
|
+
chromatic accent. The report palette stays in charts; status uses `success` / `warning` / `destructive`.
|
|
127
|
+
- **Don't** bold — Saans stops at weight 500; emphasise by weight, never a heavier cut or a size jump.
|
|
128
|
+
- **Don't** write all-caps tracked eyebrows, pill the primary CTA, or pull the 72px hero, the black
|
|
129
|
+
quote strip, or the product-mockup rhythm into operator chrome.
|
|
130
|
+
|
|
131
|
+
## 8 Responsive
|
|
132
|
+
|
|
133
|
+
The operator sweep is 375 / 768 / 1024 / 1440.
|
|
134
|
+
|
|
135
|
+
| Breakpoint | What changes |
|
|
136
|
+
| --- | --- |
|
|
137
|
+
| 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
|
|
138
|
+
| 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow; card grids drop to 2-up |
|
|
139
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side; card grids 3-up |
|
|
140
|
+
| 1440 | forms cap at `form-max-width`; tables and dashboards use the full width; the cream breathing widens |
|
|
141
|
+
|
|
142
|
+
## 9 Agent Prompt Guide
|
|
143
|
+
|
|
144
|
+
Directives the emitting agent follows verbatim. This brand is calm and editorial; keep it restrained
|
|
145
|
+
for operator work.
|
|
146
|
+
|
|
147
|
+
- Reach for the warm cream canvas first — never pure white; the cream tint is Intercom.
|
|
148
|
+
- Lift panels and cards by turning them white on the cream, not by casting a shadow.
|
|
149
|
+
- Accent only the primary action in Fin Orange (`primary`). If two things want the accent, one is not
|
|
150
|
+
primary. Neutral and secondary actions are charcoal ink on cream.
|
|
151
|
+
- Type stays Saans (Inter fallback) at weight 500 for emphasis and 400 for body — never bold. Eyebrows
|
|
152
|
+
are sentence case, never all-caps tracked; page titles carry negative tracking.
|
|
153
|
+
- Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`. Every workflow
|
|
154
|
+
completes from the keyboard; the Fin Orange `ring` focus outline is always visible.
|
|
155
|
+
- Stay flat — the cream-to-white ladder and warm hairlines before shadow; reach for the one faint tier
|
|
156
|
+
only for a real overlay.
|
|
157
|
+
- One accent. The report palette (`chart-*`) is for charts only; Brand Blue and the black quote strip
|
|
158
|
+
are not operator colors. Leave the hero, the product-mockup rhythm, and the 96px breathing behind.
|