background
Color values
#090B10rgb(9 11 16)hsl(222.9 28.0% 4.9%)oklch(0.1498 0.0113 267.7)lab(3.00% 0.08 -2.50) (D50)CMYK: output profile required
Approved name: Local Companion
Relationship: A ShruggieTech project
Mark: The calm orbit places a centered disc inside two open bands. The open shape suggests an owner-controlled space with room for different companions. A thicker Reduced master keeps the same center and opening clear at small icon sizes.
Color: Graphite provides a quiet desktop canvas and indigo carries the product identity. Use the accessible darker indigo on light surfaces. Functional interface cues are measured separately and include text, shape, or control-state cues.
Type: Display Space Grotesk; body Geist; mono Geist Mono. See colors and type details.
Use the delivered logo and mark files for their declared surfaces and sizes. The asset catalog lists each verified variant and download. The color and type sections give exact values.
The reduced mark takes over at and below 32 px.
Keep the delivered artwork geometry unchanged.
Local Companion is the workspace identity. A companion portrait or conversation belongs to its own context and should not become the default product mark or a public sample without separate approval.
This brand uses its own delivered interface binding; do not assume a ShruggieTech house palette. The current hosted documentation facts (JSON) declare schema version 1 and documentation contract version 1.2.0. In a downloaded kit, enforcement/documentation-facts.json governs those pinned bytes.
No brand-specific interface overrides are declared. Use the delivered binding and its default rules.
2.0.01.0.11.1.01.1.01.0.21.0.03.0.11.0.1enforcement/interface-canon.jsonenforcement/component-recipes.jsonweb/adapter.jsonweb/support-matrix.jsonnative/egui/adapter.jsonnative/egui/support-matrix.jsonwordpress/adapter.jsonwordpress/support-matrix.jsonwordpress/local-companion-stbb-theme.zipThe registry catalog lists installable theme and component resources; select a resource for the consuming host rather than treating the catalog as an installed component.
Identity accent hue 274.8 in OKLCH. Palette selection is independent of ownership and sibling hues.
These approved source values belong to marks and brand applications. A color used in artwork is not automatically a warning or action cue.
| Color | HEX | Source | Use |
|---|---|---|---|
| Companion indigo | #8B9CFF | brand.accent.bright | Primary mark and identity accent |
| Graphite mark ink | #F4F6FB | brand.logo.role_colors.color.ink | Full mark and wordmark on dark surfaces |
| Application | Formal colors | Artwork | Use |
|---|---|---|---|
| Local Companion orbit | primary, ink | logo.full | Split orbit and centered core on graphite |
Correct: use Companion indigo (#8B9CFF) in its approved identity application; pair the Warning cue (#F2BD68) with warning text and icon. Misuse: a lone identity swatch as the only warning signal.
Use words, icons, outlines, or state attributes with color. A shared HEX value does not merge identity and interface roles.
| Cue | HEX | Meaning | Measured pairing | Non-color cue |
|---|---|---|---|---|
| Action | #4B5CC0 | Primary interactive action | #4B5CC0 with #FFFFFF text (5.85:1); 3.37:1 against #090B10 | A descriptive button or link label |
| Warning | #F2BD68 | Attention or recoverable risk | #F2BD68 with #000000 text (12.25:1); 11.49:1 against #090B10 | Warning text and icon |
| Error | #FF7B91 | Failure or destructive action | #FF7B91 with #000000 text (8.49:1); 7.96:1 against #090B10 | Error text and icon |
| Success | #63D6AD | Completed operation | #63D6AD with #000000 text (11.75:1); 11.01:1 against #090B10 | Success text and icon |
| Information | #70B8FF | Neutral information or help | #70B8FF with #000000 text (9.99:1); 9.36:1 against #090B10 | Information label and icon |
| Focus | #8B9CFF | Keyboard focus ring | #8B9CFF with #000000 text (8.30:1); 7.78:1 against #090B10 | Visible outline and keyboard focus order |
| Selection | #8B9CFF | Selected control or item | #8B9CFF with #000000 text (8.30:1); 7.78:1 against #090B10 | Selected label or checked state |
| Disabled | #A8B5FF | Unavailable control | #A8B5FF with #000000 text (10.72:1); 10.05:1 against #090B10 | Disabled attribute and text |
Use words, icons, outlines, or state attributes with color. A shared HEX value does not merge identity and interface roles.
| Cue | HEX | Meaning | Measured pairing | Non-color cue |
|---|---|---|---|---|
| Action | #4B5CC0 | Primary interactive action | #4B5CC0 with #FFFFFF text (5.85:1); 5.51:1 against #F7F8FC | A descriptive button or link label |
| Warning | #8A5600 | Attention or recoverable risk | #8A5600 with #FFFFFF text (6.15:1); 5.80:1 against #F7F8FC | Warning text and icon |
| Error | #B32D4A | Failure or destructive action | #B32D4A with #FFFFFF text (6.19:1); 5.83:1 against #F7F8FC | Error text and icon |
| Success | #08704A | Completed operation | #08704A with #FFFFFF text (6.13:1); 5.77:1 against #F7F8FC | Success text and icon |
| Information | #1B5EAB | Neutral information or help | #1B5EAB with #FFFFFF text (6.49:1); 6.12:1 against #F7F8FC | Information label and icon |
| Focus | #4B5CC0 | Keyboard focus ring | #4B5CC0 with #FFFFFF text (5.85:1); 5.51:1 against #F7F8FC | Visible outline and keyboard focus order |
| Selection | #4B5CC0 | Selected control or item | #4B5CC0 with #FFFFFF text (5.85:1); 5.51:1 against #F7F8FC | Selected label or checked state |
| Disabled | #A8B5FF | Unavailable control | #A8B5FF with #000000 text (10.72:1); 1.85:1 against #F7F8FC | Disabled attribute and text |
HEX uses uppercase pairs; sRGB uses integer 0-255 channels; HSL uses degrees and percentages rounded to one decimal; OKLCH uses four decimals for lightness and chroma plus one for hue; CIELAB uses D50 with lightness as a percentage and two decimals per channel.
#090B10rgb(9 11 16)hsl(222.9 28.0% 4.9%)oklch(0.1498 0.0113 267.7)lab(3.00% 0.08 -2.50) (D50)CMYK: output profile required
#FFFFFFrgb(255 255 255)hsl(0.0 0.0% 100.0%)oklch(1.0000 0.0000 0.0)lab(100.00% 0.00 0.00) (D50)CMYK: output profile required
#11151Drgb(17 21 29)hsl(220.0 26.1% 9.0%)oklch(0.1954 0.0174 264.0)lab(6.66% -0.06 -6.23) (D50)CMYK: output profile required
#8B9CFFrgb(139 156 255)hsl(231.2 100.0% 77.3%)oklch(0.7217 0.1449 274.8)lab(66.24% 13.26 -51.94) (D50)CMYK: output profile required
#000000rgb(0 0 0)hsl(0.0 0.0% 0.0%)oklch(0.0000 0.0000 0.0)lab(0.00% 0.00 0.00) (D50)CMYK: output profile required
#1D2230rgb(29 34 48)hsl(224.2 24.7% 15.1%)oklch(0.2536 0.0276 269.2)lab(13.23% 0.88 -10.10) (D50)CMYK: output profile required
#9A9A9Argb(154 154 154)hsl(0.0 0.0% 60.4%)oklch(0.6862 0.0000 0.0)lab(63.60% 0.00 0.00) (D50)CMYK: output profile required
#272E40rgb(39 46 64)hsl(223.2 24.3% 20.2%)oklch(0.3028 0.0342 267.9)lab(18.89% 0.89 -12.50) (D50)CMYK: output profile required
#FF7B91rgb(255 123 145)hsl(350.0 100.0% 74.1%)oklch(0.7412 0.1613 11.4)lab(68.14% 52.69 13.42) (D50)CMYK: output profile required
#262626rgb(38 38 38)hsl(0.0 0.0% 14.9%)oklch(0.2686 0.0000 0.0)lab(15.16% -0.00 0.00) (D50)CMYK: output profile required
#7F8FF1rgb(127 143 241)hsl(231.6 80.3% 72.2%)oklch(0.6806 0.1452 274.9)lab(61.43% 13.90 -51.94) (D50)CMYK: output profile required
#00A8D1rgb(0 168 209)hsl(191.8 100.0% 41.0%)oklch(0.6792 0.1269 223.4)lab(63.29% -26.37 -31.78) (D50)CMYK: output profile required
#C379C3rgb(195 121 195)hsl(300.0 38.1% 62.0%)oklch(0.6798 0.1335 326.9)lab(60.92% 38.11 -26.54) (D50)CMYK: output profile required
#01B28Drgb(1 178 141)hsl(167.5 98.9% 35.1%)oklch(0.6797 0.1331 170.9)lab(64.59% -46.70 7.66) (D50)CMYK: output profile required
#DE7377rgb(222 115 119)hsl(357.8 61.8% 66.1%)oklch(0.6790 0.1335 18.9)lab(61.36% 42.82 17.97) (D50)CMYK: output profile required
#7184EBrgb(113 132 235)hsl(230.7 75.3% 68.2%)oklch(0.6463 0.1546 273.5)lab(57.32% 14.96 -55.21) (D50)CMYK: output profile required
#F2BD68rgb(242 189 104)hsl(37.0 84.1% 67.8%)oklch(0.8292 0.1196 77.7)lab(80.22% 12.82 49.99) (D50)CMYK: output profile required
#4B5CC0rgb(75 92 192)hsl(231.3 48.1% 52.4%)oklch(0.5153 0.1567 272.5)lab(41.90% 17.74 -55.68) (D50)CMYK: output profile required
#63D6ADrgb(99 214 173)hsl(158.6 58.4% 61.4%)oklch(0.7980 0.1213 167.3)lab(78.18% -41.57 9.93) (D50)CMYK: output profile required
#70B8FFrgb(112 184 255)hsl(209.8 100.0% 72.0%)oklch(0.7642 0.1257 249.5)lab(72.25% -8.00 -42.69) (D50)CMYK: output profile required
#F7F8FCrgb(247 248 252)hsl(228.0 45.5% 97.8%)oklch(0.9795 0.0054 275.0)lab(97.59% 0.19 -2.05) (D50)CMYK: output profile required
#11151Drgb(17 21 29)hsl(220.0 26.1% 9.0%)oklch(0.1954 0.0174 264.0)lab(6.66% -0.06 -6.23) (D50)CMYK: output profile required
#FFFFFFrgb(255 255 255)hsl(0.0 0.0% 100.0%)oklch(1.0000 0.0000 0.0)lab(100.00% 0.00 0.00) (D50)CMYK: output profile required
#4B5CC0rgb(75 92 192)hsl(231.3 48.1% 52.4%)oklch(0.5153 0.1567 272.5)lab(41.90% 17.74 -55.68) (D50)CMYK: output profile required
#EDF0F8rgb(237 240 248)hsl(223.6 44.0% 95.1%)oklch(0.9552 0.0112 269.5)lab(94.74% 0.05 -4.24) (D50)CMYK: output profile required
#E1E6F5rgb(225 230 245)hsl(225.0 50.0% 92.2%)oklch(0.9256 0.0210 271.2)lab(91.24% 0.37 -7.92) (D50)CMYK: output profile required
#4D5670rgb(77 86 112)hsl(224.6 18.5% 37.1%)oklch(0.4558 0.0441 269.8)lab(36.56% 1.39 -16.21) (D50)CMYK: output profile required
#B32D4Argb(179 45 74)hsl(347.0 59.8% 43.9%)oklch(0.5142 0.1697 13.4)lab(41.73% 55.05 17.12) (D50)CMYK: output profile required
#7F8288rgb(127 130 136)hsl(220.0 3.6% 51.6%)oklch(0.6060 0.0097 264.5)lab(54.26% -0.23 -3.66) (D50)CMYK: output profile required
#00738Drgb(0 115 141)hsl(191.1 100.0% 27.6%)oklch(0.5143 0.0942 220.8)lab(44.10% -20.93 -22.49) (D50)CMYK: output profile required
#8F4595rgb(143 69 149)hsl(295.5 36.7% 42.7%)oklch(0.5150 0.1449 324.5)lab(41.53% 40.76 -30.35) (D50)CMYK: output profile required
#007A5Drgb(0 122 93)hsl(165.7 100.0% 23.9%)oklch(0.5150 0.1032 168.9)lab(45.10% -36.05 7.35) (D50)CMYK: output profile required
#AA3C4Argb(170 60 74)hsl(352.4 47.8% 45.1%)oklch(0.5149 0.1440 16.3)lab(42.15% 46.54 17.30) (D50)CMYK: output profile required
#7184EBrgb(113 132 235)hsl(230.7 75.3% 68.2%)oklch(0.6463 0.1546 273.5)lab(57.32% 14.96 -55.21) (D50)CMYK: output profile required
#8A5600rgb(138 86 0)hsl(37.4 100.0% 27.1%)oklch(0.4999 0.1085 69.6)lab(41.73% 18.06 49.95) (D50)CMYK: output profile required
#08704Argb(8 112 74)hsl(158.1 86.7% 23.5%)oklch(0.4824 0.1054 160.8)lab(41.35% -35.43 13.29) (D50)CMYK: output profile required
#1B5EABrgb(27 94 171)hsl(212.1 72.7% 38.8%)oklch(0.4839 0.1395 255.0)lab(39.13% 1.99 -47.98) (D50)CMYK: output profile required
The bright accent #8B9CFF measures 2.38:1 on the light
reading surface and is never text there. The light block substitutes #4B5CC0 at
5.51:1. The legal foreground on an accent fill is #000000 at 8.3:1.
Chart colors serve data visualization. Each is derived from the accent and measured against its surface. Use labels or shapes so chart meaning does not depend on hue alone.
Body text on the generated dark surface.
Body text on the generated light surface.
Body in Geist at 400. Approved weights are display 500, 700, body 400, 500, and mono 400. Undeclared weights are prohibited.
| token | value |
|---|---|
| radius | 6 / 8 / 12 / 16 |
| spacing | 4 8 12 16 24 32 48 64 |
| focus | 2px ring, 2px offset |
A brand mark is the symbol alone; a logo lockup combines approved elements. Wide and stacked layouts are separate designs. Full and reduced identify source detail. Full color or monochrome identifies ink treatment. A clear background is transparent; for light or dark names the intended viewing surface. Social share images are separate opaque compositions. Preferred descriptive filenames and existing paths contain the same approved artwork. Full asset glossary.
Canvas 512 × 512 units, clear space 48 units (11.7 percent of artwork width). Below 32 px the reduced master takes over.
| lockup | mark height | gap | alignment |
|---|---|---|---|
| horizontal | 160 units | 34 units | optical center |
| stacked | 1.80C | 0.45C | centered on wordmark ink width |
The horizontal row records its approved master composition. C is the outlined wordmark cap height used by the stacked lockup. X is the 70-unit G channel. Keep one X clear around every master. Never resize the mark and wordmark independently.
Compatibility aliases are listed with their canonical delivery group; byte-identical aliases do not create duplicate previews.
Read the instructions for each platform before installing its assets.
Use the declared lockup form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared lockup form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared lockup form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared lockup form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared lockup form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared lockup form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared lockup form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared lockup form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared mark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared mark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared mark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared mark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared mark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared mark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared mark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared mark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared wordmark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared wordmark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared wordmark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared wordmark form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.
Use the declared target-size form on compatible backgrounds. Smallest delivered raster: 36 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared target-size form on compatible backgrounds. Smallest delivered raster: 16 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared target-size form on compatible backgrounds. Smallest delivered raster: 36 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared target-size form on compatible backgrounds. Smallest delivered raster: 16 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared adaptive-foreground form on compatible backgrounds. Smallest delivered raster: 432 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared adaptive-monochrome form on compatible backgrounds. Smallest delivered raster: 432 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared classic-ico form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared target-size form on compatible backgrounds. Smallest delivered raster: 36 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared target-size form on compatible backgrounds. Smallest delivered raster: 16 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared adaptive-background form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared adaptive-declaration form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared color-resource form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared platform-manifest form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared asset-catalog form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared platform-manifest form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared asset-catalog form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared platform-manifest form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared icon-index form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared platform-manifest form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared web-manifest form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared manifest-fragment form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared platform-manifest form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared app-icon form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared app-icon form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared legacy-launcher form on compatible backgrounds. Smallest delivered raster: 48 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared play-store form on compatible backgrounds. Smallest delivered raster: 512 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared app-icon form on compatible backgrounds. Smallest delivered raster: 1024 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared asset-catalog-icon form on compatible backgrounds. Smallest delivered raster: 16 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared favicon-ico form on compatible backgrounds. Use the declared container or vector at its listed destination. Preserve declared plate and transparency behavior.
Use the declared maskable form on compatible backgrounds. Smallest delivered raster: 192 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared favicon form on compatible backgrounds. Smallest delivered raster: 48 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared favicon form on compatible backgrounds. Smallest delivered raster: 16 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared msix-scale form on compatible backgrounds. Smallest delivered raster: 44 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared store-logo form on compatible backgrounds. Smallest delivered raster: 50 px. Do not synthesize missing sizes. Preserve declared plate and transparency behavior.
Use the declared social-image form on compatible backgrounds. Smallest delivered raster: 1280 px. Do not synthesize missing sizes. Follow the clear-space and reduction threshold above.