@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,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: Resend
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Resend — editorial-noir developer console
|
|
9
|
+
|
|
10
|
+
Resend's marketing surfaces are a developer tool wearing the typography of a print magazine: a
|
|
11
|
+
true-black canvas, off-white ink, oversized Domaine Display serif headlines, and depth built entirely
|
|
12
|
+
from translucent-white hairlines instead of shadow. This entry is the *operator* reading of that brand —
|
|
13
|
+
an internal tool (sending-logs stream, API-key console, audience table, deliverability dashboard) in
|
|
14
|
+
Resend's language. What carries: the pure-black `#000000` canvas, off-white ink, the single white-hot
|
|
15
|
+
`primary` (a white surface that is the brightest pixel — the inverted accent), translucent-white hairline
|
|
16
|
+
depth with no shadow, the 8px button / 12px card radius vocabulary, Geist Mono on every code surface, the
|
|
17
|
+
Inter UI voice, and the six atmospheric accents repurposed as chart/status hues. What stays behind: the
|
|
18
|
+
76–96px Domaine Display serif hero, ABC Favorit marketing body, the full-section glow washes, the
|
|
19
|
+
96–128px section bands, and the print-magazine email-mockup insets.
|
|
20
|
+
|
|
21
|
+
**Categorically dark, and truly black.** Two doctrine-floor overrides are legitimate here and
|
|
22
|
+
recorded plainly: the brand is dark by default (`data-theme="dark"` is the signature; a derived
|
|
23
|
+
light daytime floor ships alongside per schema), and its canvas is exactly `#000000`, never a
|
|
24
|
+
near-black.
|
|
25
|
+
|
|
26
|
+
## 1 Visual Theme
|
|
27
|
+
|
|
28
|
+
Dark by default; a light daytime mode is the opt-in floor. Emphatically flat: hierarchy is carried by
|
|
29
|
+
translucent-white hairline `border`, type weight, and a surface ladder that steps by luminance, never
|
|
30
|
+
shadow — the system has no drop-shadow language. A single accent — but the accent is *white*. `primary`
|
|
31
|
+
is an off-white surface with black text, the brightest pixel on the black canvas and the one solid anchor
|
|
32
|
+
(in the light floor it inverts to near-black-on-white, the same highest-contrast invariant). The anchor
|
|
33
|
+
surface is a pure `#000000` canvas with cards a hairline-and-luminance-step above it; ink is off-white
|
|
34
|
+
`foreground`, faintly blue-cool so it reads as printed paper. Density is `standard` — dense-capable and
|
|
35
|
+
technical, editorial breathing carried in the shell dimensions, not the data grid.
|
|
36
|
+
|
|
37
|
+
## 2 Color Roles
|
|
38
|
+
|
|
39
|
+
Both themes are valued; dark is the signature (listed second, but it is the default the tool wears).
|
|
40
|
+
One action accent — `primary` is the only solid that carries interactive meaning; the six atmospheric
|
|
41
|
+
accents live only in charts and status (see §7); status hues speak only status.
|
|
42
|
+
|
|
43
|
+
| Role | Light (floor) | Dark (signature) | Allowed where |
|
|
44
|
+
| --- | --- | --- | --- |
|
|
45
|
+
| `background` | `#ffffff` | canvas `#000000` | the page floor — the dominant surface |
|
|
46
|
+
| `card` / `popover` | `#ffffff` | card `#0a0a0c`, popover `#101012` | panels and overlays, one luminance step up |
|
|
47
|
+
| `foreground` | `#000000` | off-white ink `#fcfdff` | all primary ink |
|
|
48
|
+
| `muted` / `secondary` | `#f1f7fe` | `#101012` | hover fills, quiet bands, ghost/secondary buttons |
|
|
49
|
+
| `muted-foreground` | `#5b6066` | `#a1a4a5` | labels, captions, secondary text |
|
|
50
|
+
| `border` / `input` | `#e4e8ee` | hairline-strong `rgba(255,255,255,0.14)` | every card edge, field edge, and grid line |
|
|
51
|
+
| `primary` | near-black `#000000` | white-hot `#fcfdff` | the one primary action; active nav; the brightest solid |
|
|
52
|
+
| `primary-foreground` | `#ffffff` | `#000000` | label on the primary surface — black on the white pill |
|
|
53
|
+
| `accent` | `#eef4fc` | wash `rgba(255,255,255,0.09)` | selected / hovered rows and nav — a neutral lift, never colored |
|
|
54
|
+
| `ring` | `#000000` | ink `#fcfdff` | focus outline — the border thickens to ink, no separate glow |
|
|
55
|
+
| `destructive` | `#e11d3f` | brand red `#ff2047` | destructive actions and error state only |
|
|
56
|
+
| `success` / `warning` | `#0a9d63` / `#b8790a` | `#11ff99` / `#ffc53d` | status signalling only, never chrome |
|
|
57
|
+
|
|
58
|
+
The atmospheric glow colours (orange, blue, green, yellow, red) are marketing backdrops; here they carry
|
|
59
|
+
`chart-1..5` and semantic status, never full-section washes or solid buttons.
|
|
60
|
+
|
|
61
|
+
## 3 Typography
|
|
62
|
+
|
|
63
|
+
One UI sans, one mono. `font-sans` is Inter — the corpus's own UI face — carrying body, tables, labels,
|
|
64
|
+
and every heading; ABC Favorit (marketing body) and the 76–96px Domaine Display serif hero both stay
|
|
65
|
+
behind, since operator surfaces top out at a 24px title where the serif never appears. `font-mono` is
|
|
66
|
+
Geist Mono for IDs, codes, timestamps, log lines, and every code well; numeric columns render
|
|
67
|
+
`tabular-nums`. Hierarchy is size and family, not weight — body holds at 400 and the brand never bolds
|
|
68
|
+
past the strong 500.
|
|
69
|
+
|
|
70
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
71
|
+
| --- | --- | --- | --- |
|
|
72
|
+
| h1 | page title | 24px / 1.5 | `font-weight-strong` (500) · `heading-tracking` |
|
|
73
|
+
| h2 | section head | 20px / 1.3 | `font-weight-strong` (500) · `heading-tracking` |
|
|
74
|
+
| h3 | card / group head | 16px / 1.4 | `font-weight-strong` (500) · 0 |
|
|
75
|
+
| body | UI + prose | 14px / 1.5 | `font-weight-normal` (400) |
|
|
76
|
+
| small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
|
|
77
|
+
| caption | eyebrow, footer meta | 12px / 1.5 | `font-weight-normal` |
|
|
78
|
+
| code | IDs, logs, amounts | mono 13px / 1.6 | `font-weight-normal` |
|
|
79
|
+
|
|
80
|
+
Emphasise by size or family (sans → mono), never by bumping body weight to 600 — the corpus forbids it.
|
|
81
|
+
|
|
82
|
+
## 4 Component Stylings
|
|
83
|
+
|
|
84
|
+
Every recurring operator component composes from the primitives — no literal values.
|
|
85
|
+
|
|
86
|
+
- **Button** — primary: filled `primary` (white on dark / near-black on light), `primary-foreground`,
|
|
87
|
+
`radius` (8px), never a pill — the one brightest solid per surface. Secondary/ghost: `secondary` fill,
|
|
88
|
+
1px `border`; outline: transparent on `background`, 1px `border`.
|
|
89
|
+
- **Input** — `card` fill, 1px `border` (`border-weight`), `radius`; focus thickens the edge to the ink
|
|
90
|
+
`ring` — no glow, no separate ring colour.
|
|
91
|
+
- **Card** — `card` a luminance step above canvas on a 1px hairline `border`, `radius` stepping to 12px
|
|
92
|
+
for large panels and code wells; depth is the hairline plus the step, never a shadow.
|
|
93
|
+
- **Table row** — height `table-row-height`; `border` grid lines (soft dividers may drop to a 6%
|
|
94
|
+
hairline); `muted` on hover; `tabular-nums` on numeric columns; selection washes to `accent`.
|
|
95
|
+
- **Code / log well** — the darkest, coolest surface (`#06060a` on dark, a step below canvas), 1px
|
|
96
|
+
`border`, `radius`, `font-mono` — depth by temperature, not blur.
|
|
97
|
+
- **Side panel** — detail and edit open in the panel (`side-panel-width`, `side-panel-width-rich` for
|
|
98
|
+
content-heavy), beside the work, not over it.
|
|
99
|
+
- **Badge** — pill radius (badges only), `muted`/status fill; status badges take `success` / `warning` /
|
|
100
|
+
`destructive`, never `primary`.
|
|
101
|
+
|
|
102
|
+
## 5 Layout
|
|
103
|
+
|
|
104
|
+
Base spacing unit 4px; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` — the marketing
|
|
105
|
+
96px / 128px section bands stay behind. Shell dimensions map one-to-one to the layout primitives: sidebar
|
|
106
|
+
`sidebar-width-expanded` (248px) / `sidebar-width-collapsed` (56px), topbar `topbar-height` (64px, the
|
|
107
|
+
brand's nav height), side panel `side-panel-width` (420px) / `side-panel-width-rich` (640px, the corpus's
|
|
108
|
+
email-inset max width), modal `modal-width-max`, forms `form-max-width`, tables full-width. Density is
|
|
109
|
+
governed globally by `density-tier` and stepped per archetype by the surface catalog.
|
|
110
|
+
|
|
111
|
+
## 6 Depth
|
|
112
|
+
|
|
113
|
+
Flat, hairline-and-luminance only — no drop-shadow language on this canvas:
|
|
114
|
+
|
|
115
|
+
- **0 — canvas** `background` (`#000000` dark / `#ffffff` light), no border.
|
|
116
|
+
- **1 — panel / card** `card` a luminance step above canvas on a 1px hairline `border`; step plus
|
|
117
|
+
hairline carries the lift.
|
|
118
|
+
- **2 — overlay** `popover` / side panel / modal — a further luminance step (dark) or the faintest
|
|
119
|
+
`shadow-intensity` lift (light floor). Rank is surface, hairline, and position.
|
|
120
|
+
- **inlay — code / log well** the darkest, coolest surface (`#06060a` on dark) — depth by temperature.
|
|
121
|
+
|
|
122
|
+
Focus is an ink `ring` — the border thickens to `foreground`, never a glow — visible on every
|
|
123
|
+
interactive element. Three z-levels: content, sticky chrome, overlay.
|
|
124
|
+
|
|
125
|
+
## 7 Do's & Don'ts
|
|
126
|
+
|
|
127
|
+
- **Do** anchor every dark surface on true `#000000` — never a near-black; the corpus is emphatic the
|
|
128
|
+
brand sits on pure black, not `#0a0a0a`.
|
|
129
|
+
- **Do** reserve the white-hot `primary` as the single brightest solid per surface — one primary action,
|
|
130
|
+
the active nav, the focus `ring`. Its scarcity is what makes white read as the accent.
|
|
131
|
+
- **Do** carry depth with translucent-white hairlines and the luminance ladder; render every code, log,
|
|
132
|
+
and terminal surface in `font-mono` (Geist Mono) with `tabular-nums` on numeric columns.
|
|
133
|
+
- **Don't** introduce a second solid brand accent — white (or its light-floor near-black) is the brand;
|
|
134
|
+
the six atmospheric colours are chart/status only, never buttons or full-section washes.
|
|
135
|
+
- **Don't** signal elevation with drop shadows — hairlines and luminance carry depth on the black canvas.
|
|
136
|
+
- **Don't** pill the primary CTA or reach for a radius outside `radius-scale` — buttons/inputs are 8px,
|
|
137
|
+
cards and code wells 12px; pill is badges only.
|
|
138
|
+
- **Don't** bring the serif or ABC Favorit into operator surfaces — Inter carries the UI; the display
|
|
139
|
+
serif is a hero-scale marketing signature that stays behind.
|
|
140
|
+
|
|
141
|
+
## 8 Responsive
|
|
142
|
+
|
|
143
|
+
The operator sweep is 375 / 768 / 1024 / 1440.
|
|
144
|
+
|
|
145
|
+
| Breakpoint | What changes |
|
|
146
|
+
| --- | --- |
|
|
147
|
+
| 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; nav → hamburger; density holds |
|
|
148
|
+
| 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
|
|
149
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side |
|
|
150
|
+
| 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
|
|
151
|
+
|
|
152
|
+
Code and log wells keep mono legibility at every breakpoint by scrolling horizontally, not wrapping.
|
|
153
|
+
|
|
154
|
+
## 9 Agent Prompt Guide
|
|
155
|
+
|
|
156
|
+
Directives the emitting agent follows verbatim:
|
|
157
|
+
|
|
158
|
+
- Wear the dark theme by default (`data-theme="dark"`); the light map is the opt-in daytime floor. On
|
|
159
|
+
dark the canvas is exactly `#000000` — never a near-black.
|
|
160
|
+
- Spend the white-hot `primary` once per surface: the primary action, the active nav, the focus `ring`.
|
|
161
|
+
If two things want the white, one is not primary. Everything else is neutral or status.
|
|
162
|
+
- Lead every list surface with its table; render code, log, and terminal panels in `font-mono` (Geist
|
|
163
|
+
Mono) as the darkest/coolest surface. Every numeric column is `tabular-nums`; every ID / code /
|
|
164
|
+
timestamp is `font-mono`.
|
|
165
|
+
- The six atmospheric accents (orange / blue / green / yellow / red) are the sanctioned multi-hue set —
|
|
166
|
+
chart series and semantic status only, never solid buttons or full-section glow washes.
|
|
167
|
+
- Depth is the luminance ladder and translucent-white hairlines, never shadow; the focus ring is the
|
|
168
|
+
border thickened to ink. Detail and edit go in the side panel beside the work, never a modal.
|
|
169
|
+
- Keep the UI on Inter; leave behind the Domaine Display serif hero, ABC Favorit body, the full-section
|
|
170
|
+
glows, the 96–128px section bands, and the email-mockup insets.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: Revolut
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Revolut — operator reading
|
|
9
|
+
|
|
10
|
+
The operator translation of Revolut's fintech-meets-brochure system — a two-mode marketing canvas
|
|
11
|
+
(true-black storytelling bands alternating with white catalogue bands, oversized Aeonik Pro
|
|
12
|
+
headlines, pill buttons, eight saturated illustration colours). This entry keeps the
|
|
13
|
+
operator-durable core and leaves the hero scale behind; §9 lists exactly what carries and what
|
|
14
|
+
stays.
|
|
15
|
+
|
|
16
|
+
## 1 Visual Theme
|
|
17
|
+
|
|
18
|
+
Light by default: the working canvas is the white catalogue mode — the surface Revolut reserves for its
|
|
19
|
+
comparison tables and download tiles. Beside it stands a signature **true-black `sidebar`** (`#000000`):
|
|
20
|
+
Revolut's nav and footer are pure black, so the one piece of persistent operator chrome carries the
|
|
21
|
+
brand's dark identity while the work stays on white. Flat — no drop-shadow language; hierarchy comes
|
|
22
|
+
from surface-luminance shifts and 1px hairlines. A single accent, cobalt violet `primary` (`#494fdf`),
|
|
23
|
+
is reserved for the one action that matters; ink is warm near-black (`#191c1f`), never pure black.
|
|
24
|
+
Components are distinctly rounded (12px working, 20px cards) without the marketing pill; density is
|
|
25
|
+
`standard` and comfortable, the way Revolut's tall inputs feel.
|
|
26
|
+
|
|
27
|
+
## 2 Color Roles
|
|
28
|
+
|
|
29
|
+
Light values first; one chromatic accent. Cobalt violet is the only brand stamp that carries meaning —
|
|
30
|
+
status hues speak status, the illustration palette lives in charts.
|
|
31
|
+
|
|
32
|
+
| Role | Value | Allowed where |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `background` / `card` / `popover` | white `#ffffff` | page, cards, and overlays — the dominant surface |
|
|
35
|
+
| `foreground` | warm near-black `#191c1f` (brand ink) | all primary ink; softer than pure black on purpose |
|
|
36
|
+
| `muted` / `secondary` | off-white `#f4f4f4` (surface-soft) | hover rows, soft-button fills, inset groups |
|
|
37
|
+
| `muted-foreground` | mid-slate `#505a63` (brand mute) | labels, captions, secondary text |
|
|
38
|
+
| `border` / `input` | hairline `#e2e2e7` | every separator, grid line, and field edge |
|
|
39
|
+
| `primary` | cobalt violet `#494fdf` | the one primary action; active nav; key interactive detail |
|
|
40
|
+
| `accent` | pale cobalt tint `#edeefc` | selected / hovered rows and nav on the light canvas |
|
|
41
|
+
| `accent-foreground` | cobalt deep `#3a40c4` | ink on the accent tint |
|
|
42
|
+
| `ring` | `primary` `#494fdf` | the focus outline — always visible, keyboard-first |
|
|
43
|
+
| `destructive` | danger red `#e23b4a` | destructive actions and error state only |
|
|
44
|
+
| `success` / `warning` | green `#428619` / orange `#ec7e00` | status signalling only, never chrome |
|
|
45
|
+
|
|
46
|
+
The eight saturated illustration colours (teal, light-blue, pink, light-green, yellow, brown) carry no
|
|
47
|
+
UI role — they appear only as chart series (see §7).
|
|
48
|
+
|
|
49
|
+
## 3 Typography
|
|
50
|
+
|
|
51
|
+
Two families, one voice. `font-sans` leads with **Aeonik Pro** (the brand's editorial display face),
|
|
52
|
+
falling through its documented substitutes — Inter Display, General Sans, Söhne — to **Inter**, the
|
|
53
|
+
workhorse for body, labels, and tables. Headings carry Aeonik's tight negative tracking; body rides
|
|
54
|
+
Inter with a faint positive tracking that reads mechanical and fintech-precise. `font-mono` is JetBrains
|
|
55
|
+
Mono for amounts, IDs, and timestamps; numeric columns render `tabular-nums`.
|
|
56
|
+
|
|
57
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
58
|
+
| --- | --- | --- | --- |
|
|
59
|
+
| h1 | page title | 28px / 1.2 | `font-weight-strong` · `heading-tracking` |
|
|
60
|
+
| h2 | section head | 22px / 1.3 | `font-weight-strong` · `heading-tracking` |
|
|
61
|
+
| h3 | card / group head | 18px / 1.35 | `font-weight-strong` · `heading-tracking` |
|
|
62
|
+
| body | UI + prose | 15px / 1.5 | `font-weight-normal` |
|
|
63
|
+
| small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
|
|
64
|
+
| caption | uppercase eyebrow | 12px / 1.2 | `font-weight-strong`, `+0.02em`, uppercase |
|
|
65
|
+
|
|
66
|
+
Bump weight for emphasis, never size. Aeonik's hero sizes (80–136px) stay behind — voice carries, scale does not.
|
|
67
|
+
|
|
68
|
+
## 4 Component Stylings
|
|
69
|
+
|
|
70
|
+
Every recurring operator component composes from the primitives — no literal values.
|
|
71
|
+
|
|
72
|
+
- **Button** — `primary`: filled cobalt `primary` on `primary-foreground`, `radius` (rounded, not pilled
|
|
73
|
+
— the marketing pill stays behind). Secondary: `secondary` fill, `border`. Ghost: `accent` on hover.
|
|
74
|
+
- **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the `ring` at
|
|
75
|
+
full 2px, no glow; comfortable height, echoing Revolut's tall fields.
|
|
76
|
+
- **Card** — `card` surface, 1px `border`, the larger radius step (20px, Revolut's card corner), no
|
|
77
|
+
shadow — depth is the hairline and the surface.
|
|
78
|
+
- **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
|
|
79
|
+
numeric columns; selection tints `accent`.
|
|
80
|
+
- **Side panel** — detail and edit open beside the work (`side-panel-width`, `side-panel-width-rich` for
|
|
81
|
+
content-heavy), not over it.
|
|
82
|
+
- **Badge** — full pill (`radius-scale` max, the one controlled Revolut pill nod), hairline `border` or
|
|
83
|
+
status fill, uppercase caption; status badges take `success` / `warning` / `destructive`, never `primary`.
|
|
84
|
+
|
|
85
|
+
## 5 Layout
|
|
86
|
+
|
|
87
|
+
Base spacing unit 4px; the on-scale ramp is `4 · 6 · 8 · 14 · 16 · 24 · 32 · 48 · 64` (6px and 14px are
|
|
88
|
+
Revolut's own off-grid comfort steps, kept). Shell dimensions map one-to-one to the layout primitives:
|
|
89
|
+
sidebar `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height` (64px, Revolut's
|
|
90
|
+
nav-bar height), side panel `side-panel-width` / `side-panel-width-rich`, modal `modal-width-max`, forms
|
|
91
|
+
`form-max-width`, tables full-width. Density is governed globally by `density-tier` and stepped per
|
|
92
|
+
archetype by the surface catalog.
|
|
93
|
+
|
|
94
|
+
## 6 Depth
|
|
95
|
+
|
|
96
|
+
Flat, and more so than most — Revolut has **no traditional drop-shadow language**. Hierarchy comes from
|
|
97
|
+
surface-luminance shifts and hairlines:
|
|
98
|
+
|
|
99
|
+
- **0 — canvas** `background` white, no border.
|
|
100
|
+
- **1 — panel / card** `card` on a 1px `border`; to lift off a band, the band steps to `muted`
|
|
101
|
+
(`#f4f4f4`) rather than casting a shadow.
|
|
102
|
+
- **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a low `md`.
|
|
103
|
+
|
|
104
|
+
The black `sidebar` runs its own dark ladder: `#000000` chrome, `#16181a` hovered/selected nav row,
|
|
105
|
+
`#ffffff1f` dividers. Focus is a 2px cobalt `ring` outline (never a glow) on every interactive element;
|
|
106
|
+
three z-levels: content, sticky chrome, overlay.
|
|
107
|
+
|
|
108
|
+
## 7 Do's & Don'ts
|
|
109
|
+
|
|
110
|
+
- **Do** reserve cobalt `primary` for the single most important action — a stamp, not a theme. If two things want it, one is not primary.
|
|
111
|
+
- **Do** keep the `sidebar` true black `#000000` — Revolut's black is `#000000`, not near-black; a deliberate override of the light-surface default.
|
|
112
|
+
- **Do** carry depth with surface-luminance and hairlines; keep body ink warm `#191c1f`, not pure black.
|
|
113
|
+
- **Do** apply `tabular-nums` to every numeric column and `font-mono` to amounts, IDs, and timestamps.
|
|
114
|
+
- **Don't** promote a second chromatic accent — the eight illustration colours are chart series only, never chrome.
|
|
115
|
+
- **Don't** full-pill buttons or CTAs — the marketing pill stays behind; buttons take `radius`, only badges pill.
|
|
116
|
+
- **Don't** add drop shadows to cards; colour-block and surface-luminance carry elevation.
|
|
117
|
+
- **Don't** open detail or edit in a modal when the side panel fits — modals are confirmations only.
|
|
118
|
+
|
|
119
|
+
## 8 Responsive
|
|
120
|
+
|
|
121
|
+
The operator sweep is 375 / 768 / 1024 / 1440.
|
|
122
|
+
|
|
123
|
+
| Breakpoint | What changes |
|
|
124
|
+
| --- | --- |
|
|
125
|
+
| 375 | black `sidebar` → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
|
|
126
|
+
| 768 | sidebar collapses to the black icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
|
|
127
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side |
|
|
128
|
+
| 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
|
|
129
|
+
|
|
130
|
+
## 9 Agent Prompt Guide
|
|
131
|
+
|
|
132
|
+
**Carries over:** cobalt violet `primary` as the single accent · warm-black `#191c1f` ink · the black
|
|
133
|
+
`#000000` sidebar chrome · rounded character (12px working, 20px cards) · Aeonik heading voice with tight
|
|
134
|
+
tracking over an Inter body · flat, shadowless depth · `tabular-nums` money.
|
|
135
|
+
|
|
136
|
+
**Stays behind:** the black canvas as the *working* surface · hero-scale Aeonik (80–136px) · the
|
|
137
|
+
white-pill-on-black CTA (a dark-canvas device — the operator primary is the cobalt fill) · full-pill
|
|
138
|
+
buttons · the band-switching rhythm · the illustration palette as chrome.
|
|
139
|
+
|
|
140
|
+
- Lead every list surface with its table; the black sidebar is the persistent left chrome.
|
|
141
|
+
- Accent only the primary action with cobalt; everything else is neutral or status.
|
|
142
|
+
- Detail and edit go in the side panel; a modal is a confirmation, not a workspace.
|
|
143
|
+
- Every numeric column is `tabular-nums`; every amount / ID / timestamp is `font-mono`, and every
|
|
144
|
+
workflow completes from the keyboard with the cobalt `ring` outline always visible.
|
|
145
|
+
- Stay flat — hairline and surface before shadow; illustration colours are chart series, not chrome.
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: Runway
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Runway — cinematic monochrome, read for the operator
|
|
9
|
+
|
|
10
|
+
Runway's brand is a dark, editorial, film-grade surface where full-bleed photography IS the UI and
|
|
11
|
+
the interface retreats to near-invisibility. This entry is the operator reading of that identity: the
|
|
12
|
+
photography, the 48px hero display, and the asymmetric image grids stay behind; the **dark-native
|
|
13
|
+
canvas, the cool-slate monochrome temperature, the zero-shadow flatness, the single geometric type
|
|
14
|
+
voice, and the never-pill radius character** carry into a CRM, queue, or dashboard. This brand is
|
|
15
|
+
**categorically dark** — the operator default is `data-theme="dark"`, an override the doctrine's
|
|
16
|
+
light-default floor concedes to brand truth (§7). A light reading is shipped for surfaces that need it.
|
|
17
|
+
|
|
18
|
+
## 1 Visual Theme
|
|
19
|
+
|
|
20
|
+
Dark by default; light is the alternate. Flat to the point of austerity: hierarchy is carried by
|
|
21
|
+
dark/light section polarity, hairline `border`, and type weight — never by shadow (the brand uses
|
|
22
|
+
zero). The neutral ramp is a distinctly cool blue-gray slate (`#767d88`, `#7d848e`), so the whole UI
|
|
23
|
+
reads engineered and photographic-adjacent rather than warm. There is **no chromatic accent** — Runway
|
|
24
|
+
colors nothing but its photography; emphasis is pure contrast, so the operator `primary` is monochrome
|
|
25
|
+
(white on dark, near-black on light). The anchor surface is a `#000000` canvas carrying `#1a1a1a`
|
|
26
|
+
cards. Density is `spacious` — the brand breathes at cinema scale, and the operator reading keeps air.
|
|
27
|
+
|
|
28
|
+
## 2 Color Roles
|
|
29
|
+
|
|
30
|
+
Dark values are native (listed first); light is the alternate reading. One accent — and it is a
|
|
31
|
+
monochrome contrast, not a hue. Status hues are derived for the operator floor (the brand ships none).
|
|
32
|
+
|
|
33
|
+
| Role | Dark (native) | Light | Allowed where |
|
|
34
|
+
| --- | --- | --- | --- |
|
|
35
|
+
| `background` | `#000000` Runway Black | `#ffffff` | page canvas — the dominant surface |
|
|
36
|
+
| `foreground` | `#ffffff` | `#0c0c0c` | primary ink |
|
|
37
|
+
| `card` / `popover` | `#1a1a1a` Dark Surface | `#ffffff` | cards, panels, overlays |
|
|
38
|
+
| `muted` / `secondary` | `#27272a` | `#e9ecf2` Cool Cloud | hover rows, subtle fills, secondary buttons |
|
|
39
|
+
| `muted-foreground` | `#767d88` Cool Slate | `#767d88` | labels, captions, metadata |
|
|
40
|
+
| `border` / `input` | `#27272a` Border Dark | `#c9ccd1` Cool Silver | every separator, grid line, field edge (kept whisper-faint) |
|
|
41
|
+
| `primary` | `#ffffff` | `#0c0c0c` | the one primary action — monochrome contrast, no hue |
|
|
42
|
+
| `primary-foreground` | `#000000` | `#ffffff` | text on the primary fill |
|
|
43
|
+
| `accent` | `#27272a` | `#e9ecf2` | selected / hovered rows and nav only |
|
|
44
|
+
| `ring` | `#ffffff` | `#0c0c0c` | focus outline — high-contrast monochrome, keyboard-first |
|
|
45
|
+
| `destructive` | `#e5484d` | `#c53030` | destructive actions and error only (derived) |
|
|
46
|
+
| `success` / `warning` | `#46a758` / `#d5a13a` | `#2f855a` / `#b7791f` | status signalling only (derived) |
|
|
47
|
+
|
|
48
|
+
## 3 Typography
|
|
49
|
+
|
|
50
|
+
One family carries everything — abcNormal in the brand; the operator substitute is DM Sans (its
|
|
51
|
+
geometric sibling), with Inter as the robust fallback. Variety comes from size, weight, case, and
|
|
52
|
+
tracking, never a second family. Heading tracking runs tight and negative (film-title density); the
|
|
53
|
+
weight range is 400–600 and **never reaches 700+**. Uppercase micro-labels take *positive* tracking
|
|
54
|
+
(`+0.02em`) as navigational signposts. `font-mono` (Geist Mono, derived — the brand is single-family)
|
|
55
|
+
serves IDs, codes, timestamps, and log lines; numeric columns render `tabular-nums` (floor P4).
|
|
56
|
+
|
|
57
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
58
|
+
| --- | --- | --- | --- |
|
|
59
|
+
| h1 | page title | 40px / 1.0 | `font-weight-normal` · `heading-tracking` |
|
|
60
|
+
| h2 | section head | 24px / 1.1 | `font-weight-normal` · `heading-tracking` |
|
|
61
|
+
| h3 | card / group head | 20px / 1.1 | `font-weight-normal` · `heading-tracking` |
|
|
62
|
+
| body | UI + prose | 16px / 1.4 | `font-weight-normal`, `-0.16px` |
|
|
63
|
+
| small | labels, meta, dense table | 13px / 1.3 | `font-weight-normal`, `-0.2px` |
|
|
64
|
+
| caption | uppercase eyebrow | 14px / 1.3 | `font-weight-strong`, `+0.02em`, uppercase |
|
|
65
|
+
|
|
66
|
+
Bump weight toward `font-weight-strong` for emphasis; never change size, never exceed 600.
|
|
67
|
+
|
|
68
|
+
## 4 Component Stylings
|
|
69
|
+
|
|
70
|
+
Every recurring component composes from the primitives — no literal values.
|
|
71
|
+
|
|
72
|
+
- **Button** — `primary`: filled `primary` (white on dark / near-black on light), `radius`, no pill, label `font-weight-strong`. Secondary: `secondary` fill, 1px `border`. Ghost: transparent, `accent` on hover.
|
|
73
|
+
- **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the `ring` at 2px, no glow.
|
|
74
|
+
- **Card** — `card` surface, 1px `border`, `radius`; shadow only on true overlays (`shadow-intensity` near zero); inset by `density-inset`.
|
|
75
|
+
- **Table row** — `table-row-height`; faint `border` grid lines; `muted` on hover; `tabular-nums` on numeric columns; selection tints `accent`.
|
|
76
|
+
- **Side panel** — detail and edit open in the side panel (`side-panel-width` / `side-panel-width-rich`), beside the work, not over it (floor P3).
|
|
77
|
+
- **Badge** — hairline `border`, `muted` / status fill, uppercase caption; status badges take `success` / `warning` / `destructive`, never `primary`.
|
|
78
|
+
|
|
79
|
+
## 5 Layout
|
|
80
|
+
|
|
81
|
+
Base spacing unit 8px; the on-scale ramp is `4 · 6 · 8 · 12 · 16 · 20 · 24 · 28 · 32 · 48 · 64 · 78`
|
|
82
|
+
(the brand's own scale — section spacing runs generous). Shell dimensions map one-to-one to the layout
|
|
83
|
+
primitives: sidebar `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height`, side
|
|
84
|
+
panel `side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms `form-max-width`,
|
|
85
|
+
tables full-width. Density is `spacious` globally (via `density-gap`), stepped per archetype by the
|
|
86
|
+
surface catalog — never by absolute overrides. Content caps generous; the 1600px cinema container stays
|
|
87
|
+
behind.
|
|
88
|
+
|
|
89
|
+
## 6 Depth
|
|
90
|
+
|
|
91
|
+
Flat, emphatically. The brand uses **zero shadows** — depth comes from dark/light section polarity and
|
|
92
|
+
hairlines, not `box-shadow`:
|
|
93
|
+
|
|
94
|
+
- **0 — canvas** `background`, no border.
|
|
95
|
+
- **1 — panel / card** `card` on a 1px `border`; no shadow.
|
|
96
|
+
- **2 — overlay** `popover` / side panel / modal — the only place `shadow-intensity` earns a whisper of
|
|
97
|
+
lift, and even then a `border` does most of the separating.
|
|
98
|
+
|
|
99
|
+
Focus is a monochrome `ring` outline (white on dark, near-black on light), never a glow, visible on
|
|
100
|
+
every interactive element (floor P6). Three z-levels: content, sticky chrome, overlay.
|
|
101
|
+
|
|
102
|
+
## 7 Do's & Don'ts
|
|
103
|
+
|
|
104
|
+
- **Do** default to dark — this brand is categorically dark; light is the alternate, not the base.
|
|
105
|
+
- **Do** reserve `primary` (the monochrome contrast) for the single most important action; everything else is neutral or status.
|
|
106
|
+
- **Do** keep borders whisper-faint (`#27272a` / `#c9ccd1`) and carry hierarchy with polarity and weight.
|
|
107
|
+
- **Do** apply `tabular-nums` to numeric columns and `font-mono` to IDs, codes, and timestamps; give uppercase labels positive tracking, never tight uppercase.
|
|
108
|
+
- **Don't** introduce a chromatic accent — the interface is colorless by doctrine; color belongs to content, and status hues speak status only.
|
|
109
|
+
- **Don't** pill anything or reach past `radius-scale` — geometry is subtly rounded (4–16px), never round.
|
|
110
|
+
- **Don't** use a weight of 700 or above, or a second typeface; don't signal elevation with shadow (reach for the whisper only on a real overlay).
|
|
111
|
+
|
|
112
|
+
## 8 Responsive
|
|
113
|
+
|
|
114
|
+
The operator sweep is 375 / 768 / 1024 / 1440.
|
|
115
|
+
|
|
116
|
+
| Breakpoint | What changes |
|
|
117
|
+
| --- | --- |
|
|
118
|
+
| 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
|
|
119
|
+
| 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
|
|
120
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side |
|
|
121
|
+
| 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
|
|
122
|
+
|
|
123
|
+
## 9 Agent Prompt Guide
|
|
124
|
+
|
|
125
|
+
Directives the emitting agent follows verbatim:
|
|
126
|
+
|
|
127
|
+
- Default the shell to dark (`data-theme="dark"`); the near-black canvas with `#1a1a1a` cards is the
|
|
128
|
+
brand. Offer light only where a surface demands it.
|
|
129
|
+
- Carry hierarchy with dark/light polarity, hairline borders, and type weight — reach for shadow only
|
|
130
|
+
on a genuine overlay, and even then let the border lead.
|
|
131
|
+
- Accent is monochrome contrast, not a hue. If two things want the primary, one of them is not primary.
|
|
132
|
+
- Use one geometric sans (DM Sans / Inter) for everything; keep heading tracking tight-negative, weight
|
|
133
|
+
≤ 600. `font-mono` for IDs and timestamps; `tabular-nums` on every numeric column (P4).
|
|
134
|
+
- Uppercase micro-labels take positive tracking; small radius (4–16px), never pill.
|
|
135
|
+
- **Stays behind:** full-bleed cinematic photography, the 48px hero display type, asymmetric editorial
|
|
136
|
+
image grids, the 1600px cinema container, and photography-as-color. An operator surface earns its
|
|
137
|
+
clarity from structure, not spectacle.
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: Sanity
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Sanity — an operator reading of the near-black command-center system
|
|
9
|
+
|
|
10
|
+
Sanity's web system is a developer-content platform rendered as a nocturnal control room: a near-black
|
|
11
|
+
achromatic canvas, a geometric-condensed sans with aggressively tight tracking, real code in dark
|
|
12
|
+
cards, and two vivid signal-hues punctuating the gray. This is the *operator* reading — an internal
|
|
13
|
+
tool (content queue, structured-content dashboard, publishing console, log stream) in Sanity's
|
|
14
|
+
language. What carries: the near-black `#0b0b0b` canvas, the pure achromatic gray ramp, the two-signal
|
|
15
|
+
accent system (coral rests, electric-blue activates), IBM Plex Mono, the geometric sans with tight
|
|
16
|
+
tracking, and flat colorimetric depth. What stays behind (§7, §9): the hero display, full-pill CTAs,
|
|
17
|
+
the full-bleed marketing rhythm, and the neon-green/magenta highlights.
|
|
18
|
+
|
|
19
|
+
**This brand is categorically dark** — the near-black canvas is "not a dark mode but the primary
|
|
20
|
+
identity," and Sanity's light/inverted sections are marketing inversions, never an operator light
|
|
21
|
+
theme. A white operator canvas is off-brand.
|
|
22
|
+
|
|
23
|
+
## 1 Visual Theme
|
|
24
|
+
|
|
25
|
+
Dark by default — the near-black `background` (`#0b0b0b`, never pure black) is the floor of every
|
|
26
|
+
surface, with no light counterpart. Emphatically flat: hierarchy comes from a colorimetric surface
|
|
27
|
+
ladder (canvas → elevated `#212121` → prominent `#353535`), hairline `border`, and white-on-black
|
|
28
|
+
contrast, never a drop shadow. The neutral ramp is pure achromatic gray — no warm or cool undertone —
|
|
29
|
+
so the UI reads engineered and monochrome, its accents landing like signal lights in a dark room. Two
|
|
30
|
+
accents, held to strict roles: coral `primary` (`#f36458`) is the one resting call-to-action, and
|
|
31
|
+
electric blue (`#0052ef`) is the system-wide activation signal — hover, active-nav, links, and the
|
|
32
|
+
focus `ring`. Density is `dense` — this reads like a tool for people who live in terminals.
|
|
33
|
+
|
|
34
|
+
## 2 Color Roles
|
|
35
|
+
|
|
36
|
+
Dark values. Two accents by strict role — coral rests, blue activates; the vivid greens and magenta
|
|
37
|
+
are chart/status graces, and status hues speak only status.
|
|
38
|
+
|
|
39
|
+
| Role | Value | Allowed where |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| `background` | near-black canvas `#0b0b0b` | page floor and content area — the dominant surface |
|
|
42
|
+
| `foreground` | white ink `#ffffff` | headlines and primary text on dark |
|
|
43
|
+
| `card` / `popover` / `secondary` | elevated `#212121` | cards, overlays, inputs, secondary-button fills — lifted off the canvas |
|
|
44
|
+
| `muted` | subtle fill `#212121` | quiet band tints, disabled tracks, canvas-level hover fills |
|
|
45
|
+
| `muted-foreground` | silver `#b9b9b9` | labels, captions, secondary/body text, placeholders |
|
|
46
|
+
| `accent` | prominent lift `#353535` | in-card hover and selected rows/nav — a neutral colorimetric step, never a hue wash |
|
|
47
|
+
| `border` / `input` | visible hairline `#353535` | every separator, grid line, and field edge — calibrated visible but not dominant |
|
|
48
|
+
| `primary` | coral `#f36458` | the one resting primary action per surface — the brand's warm signal, nowhere else |
|
|
49
|
+
| `primary-foreground` | white `#ffffff` | text on the coral fill |
|
|
50
|
+
| `ring` | electric blue `#0052ef` | the focus outline — the activation signal, unmistakable because keyboard-first |
|
|
51
|
+
| `destructive` | pure red `#dd0000` | destructive actions and error state only — kept distinct from coral |
|
|
52
|
+
| `success` / `warning` | green `#37cd84` / amber `#f59e0b` | status signalling only, never chrome |
|
|
53
|
+
|
|
54
|
+
The neon green (`#19d600`) and magenta (`#f500ff`) are marketing punctuation, surviving here only as
|
|
55
|
+
chart hues (§7). Blue never becomes a surface wash — it is line, text, ring, and indicator, so its
|
|
56
|
+
signal stays sharp.
|
|
57
|
+
|
|
58
|
+
## 3 Typography
|
|
59
|
+
|
|
60
|
+
One sans, one mono. `font-sans` is waldenburgNormal (the custom face; Space Grotesk or Inter is the
|
|
61
|
+
geometric-condensed substitute) — body, UI, tables, and headings all ride it. `font-mono` is IBM Plex
|
|
62
|
+
Mono for IDs, codes, timestamps, and log lines; numeric columns render `tabular-nums`, and mono
|
|
63
|
+
uppercase carries the "system readout" voice for tags. The display *scale* (112/72/48px) stays behind
|
|
64
|
+
— an operator surface tops out at a 24px page title.
|
|
65
|
+
|
|
66
|
+
| Step | Role | Family | Size · line | Weight · tracking |
|
|
67
|
+
| --- | --- | --- | --- | --- |
|
|
68
|
+
| h1 | page title | sans | 24px / 1.24 | `font-weight-strong` · `heading-tracking` |
|
|
69
|
+
| h2 | section head | sans | 20px / 1.24 | `font-weight-strong` · `heading-tracking` |
|
|
70
|
+
| h3 | card / group head | sans | 16px / 1.3 | `font-weight-strong` · 0 |
|
|
71
|
+
| body | UI + prose | sans | 15px / 1.5 | `font-weight-normal` |
|
|
72
|
+
| small | labels, meta, dense table | sans | 13px / 1.4 | `font-weight-normal` |
|
|
73
|
+
| caption | uppercase eyebrow / tag | mono | 12px / 1.3 | `font-weight-strong`, uppercase |
|
|
74
|
+
| code | IDs, logs, technical | mono | 13px / 1.5 | `font-weight-normal` |
|
|
75
|
+
|
|
76
|
+
The brand never reaches for heavy weight — emphasis tops at 500 (600 only on 11px uppercase
|
|
77
|
+
micro-labels). Headings build hierarchy on size and the signature tight negative tracking, never
|
|
78
|
+
bolding; bump weight one restrained step for emphasis, never size.
|
|
79
|
+
|
|
80
|
+
## 4 Component Stylings
|
|
81
|
+
|
|
82
|
+
Every recurring operator component composes from the primitives — no literal values.
|
|
83
|
+
|
|
84
|
+
- **Button** — primary: filled coral `primary` on white `primary-foreground`, `radius`, never a pill
|
|
85
|
+
(the marketing pill CTA stays behind). Secondary: `secondary` fill, 1px `border`, `muted-foreground`
|
|
86
|
+
text. Ghost: transparent, `accent` on hover.
|
|
87
|
+
- **Input / Card** — `card` fill on a 1px `border` (`border-weight`), `radius`; input focus draws the
|
|
88
|
+
blue `ring` at full 2px, no glow; card depth is the surface lift off the canvas, inset by
|
|
89
|
+
`density-inset`.
|
|
90
|
+
- **Table row** — height `table-row-height`; `border` grid lines carry the grid; `accent` on hover;
|
|
91
|
+
`tabular-nums` and `font-mono` on numeric columns; selection tints `accent` with a coral `primary`
|
|
92
|
+
left-indicator.
|
|
93
|
+
- **Side panel** — detail and edit open in the panel (`side-panel-width`, `side-panel-width-rich` for
|
|
94
|
+
content-heavy), beside the work, not over it.
|
|
95
|
+
- **Badge** — hairline `border`, `muted`/status fill, uppercase mono caption; pill `radius` is
|
|
96
|
+
badges-only; status badges take `success` / `warning` / `destructive`, never `primary`.
|
|
97
|
+
|
|
98
|
+
## 5 Layout
|
|
99
|
+
|
|
100
|
+
Base spacing unit 8px; the on-scale ramp is `4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` — the marketing
|
|
101
|
+
64-120px section rhythm stays behind. Shell dimensions map one-to-one to the layout primitives: sidebar
|
|
102
|
+
`sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height` (compact, matching the
|
|
103
|
+
brand's tight nav), side panel `side-panel-width` / `side-panel-width-rich`, modal `modal-width-max`,
|
|
104
|
+
forms `form-max-width`, tables full-width. Density is governed globally by `density-tier` (dense,
|
|
105
|
+
rewriting the scale through `density-gap`) and stepped per archetype by the surface catalog.
|
|
106
|
+
|
|
107
|
+
## 6 Depth
|
|
108
|
+
|
|
109
|
+
Flat and colorimetric. Elevation is a surface-color shift, not a shadow:
|
|
110
|
+
|
|
111
|
+
- **0 — canvas** `background` (`#0b0b0b`), no border.
|
|
112
|
+
- **1 — panel / card** `card` (`#212121`) on a 1px `border`; the elevated-surface lift off the
|
|
113
|
+
near-black canvas carries rank. Hover/selected lift one step to `accent` (`#353535`).
|
|
114
|
+
- **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns the faintest
|
|
115
|
+
ring-based lift or a backdrop blur, enough to separate an overlay from the canvas above a scrim.
|
|
116
|
+
|
|
117
|
+
Focus is a 2px blue `ring` outline (never a glow), visible on every interactive element. The shadow
|
|
118
|
+
vocabulary is ring-based (`0 0 0 Npx`) and backdrop-blur only — no offset drop shadows. Three z-levels:
|
|
119
|
+
content, sticky chrome, overlay.
|
|
120
|
+
|
|
121
|
+
## 7 Do's & Don'ts
|
|
122
|
+
|
|
123
|
+
- **Do** anchor every surface on the near-black canvas and keep the gray ramp purely achromatic — no
|
|
124
|
+
warm or cool tint; the vivid-signal-on-dark pairing is the brand.
|
|
125
|
+
- **Do** reserve coral `primary` for the one resting call-to-action per surface, and spend electric
|
|
126
|
+
blue on the activation states (hover, active-nav, links, focus `ring`). Coral rests, blue activates;
|
|
127
|
+
never mix the two in one element.
|
|
128
|
+
- **Do** carry hierarchy with the surface ladder, hairlines, weight, and size — the brand is flat — and
|
|
129
|
+
run headings on the geometric sans with tight negative tracking, never past weight 500.
|
|
130
|
+
- **Do** apply `tabular-nums` to numeric columns and `font-mono` (IBM Plex Mono) to IDs, codes,
|
|
131
|
+
timestamps, and log lines; mono uppercase for technical tags.
|
|
132
|
+
- **Don't** promote the neon green or magenta to a UI accent — they are chart/status graces; success
|
|
133
|
+
status uses the calmer `success` green.
|
|
134
|
+
- **Don't** pill controls or reach for a radius between 13px and the badge pill — the marketing pill CTA
|
|
135
|
+
stays behind.
|
|
136
|
+
- **Don't** signal elevation with offset drop shadows, or adapt the shell to a light canvas — this brand
|
|
137
|
+
has no light surface.
|
|
138
|
+
|
|
139
|
+
## 8 Responsive
|
|
140
|
+
|
|
141
|
+
The operator sweep is 375 / 768 / 1024 / 1440.
|
|
142
|
+
|
|
143
|
+
| Breakpoint | What changes |
|
|
144
|
+
| --- | --- |
|
|
145
|
+
| 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
|
|
146
|
+
| 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
|
|
147
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side |
|
|
148
|
+
| 1440 | content caps at `form-max-width` for forms; tables and dashboards use the full width |
|
|
149
|
+
|
|
150
|
+
## 9 Agent Prompt Guide
|
|
151
|
+
|
|
152
|
+
Directives the emitting agent follows verbatim:
|
|
153
|
+
|
|
154
|
+
- Wear the near-black canvas by default; this brand is categorically dark, with no light surface to fall
|
|
155
|
+
back to. Cards and panels are the elevated `#212121` lift off the canvas, not white.
|
|
156
|
+
- Two accents, strict roles: coral `primary` marks the one resting call-to-action; electric blue is the
|
|
157
|
+
activation signal on hover, active-nav, links, and the focus ring. If they meet in one element, one is
|
|
158
|
+
wrong. All other color belongs to data and status; keep the neutral ramp purely achromatic.
|
|
159
|
+
- Depth is surface contrast and hairlines, never a drop shadow; reach for the faint overlay lift or a
|
|
160
|
+
backdrop blur only for a true modal or popover.
|
|
161
|
+
- Headings ride the geometric sans with tight negative tracking; build hierarchy on size, never bold
|
|
162
|
+
past weight 500. Every numeric column is `tabular-nums`; every ID / code / timestamp / log line is
|
|
163
|
+
`font-mono` (IBM Plex Mono); technical tags are mono uppercase. Show real content, not an illustration.
|
|
164
|
+
- Detail and edit go in the side panel beside the work; a modal is a confirmation, not a workspace.
|
|
165
|
+
Keyboard-first: the blue `ring` focus outline is always visible.
|
|
166
|
+
- Leave behind: the hero display at -4.48px tracking, full-pill CTA buttons, full-bleed marketing
|
|
167
|
+
sections and the 64-120px rhythm, and the neon-green/magenta highlights — marketing voltage, not
|
|
168
|
+
operator chrome.
|