{
  "schemaVersion": "1.0",
  "id": "crimson-aegis",
  "version": "1.1.0",
  "name": "Crimson Aegis",
  "tier": "free",
  "summary": "Insurance UI with deep carmine actions on cool slate neutrals, set in Archivo for long policy and claims reading.",
  "tags": {
    "industries": [
      "insurance",
      "financial-services",
      "legal"
    ],
    "moods": [
      "trustworthy",
      "stable",
      "serious",
      "formal"
    ],
    "density": "comfortable",
    "contrast": "high"
  },
  "rationale": {
    "overview": "Crimson Aegis is for insurers, brokers and claims portals where people read policy terms, compare coverage and file claims under stress. The palette is deep carmine with cool slate neutrals. Corners are tight and contrast is high: every text pair clears 5:1 in both modes. Screens should read steady and accountable. The visual weight sits in one carmine primary action per view and in clear type hierarchy, not in decoration.",
    "color": "Brand is a brick-leaning carmine with a constant hue of about 25° LCh. Chroma peaks at brand.500–700 and tapers evenly toward 50 and 950, so no mid-step goes muddy. Light primary is brand.700 (#8f2630): white text on it is 8.4:1. Dark primary is brand.300 (#eea198) with brand.950 text at 8.5:1, which reads luminous without going neon. Neutrals are slate tinted toward blue (about 250° hue) on purpose, to cool the warm brand. Destructive uses the danger scale, which sits at about 350° (magenta-crimson). It differs from primary by hue and lightness: CIEDE2000 ΔE ≥ 18 in light (brand.700 vs danger.600) and about 23 in dark (brand.300 vs danger.400). Success is a forest green nudged warm (about 145°). Warning is an ochre amber. Both share the brand's chroma curve, so status colors sit in the same family. Dark mode is designed separately from light. Background is neutral.950 (#121821). Card is neutral.900 (#1f2731), about 1.18:1 lift from the background. Muted and secondary surfaces use neutral.800. muted-foreground (neutral.300) holds 6.2:1 on muted and 9.8:1 on background.",
    "typography": "Archivo serves both display and body roles. It is a sturdy grotesque that ships 100–900; this preset uses 400, 500, 600 and 700. Sizes follow an approximate 1.2 (minor-third) ratio above the 16px base: 20, 28, 34 and 48. Supporting sizes are 18, 14 and 12. Tracking tightens as size grows: -0.022em at display-lg, -0.018em at display-md, -0.012em at heading-lg, 0 for body. Body line height is 1.55–1.6 for long policy text. Space Mono 400/700 is reserved for policy numbers, claim IDs and reference codes, which users read aloud or copy.",
    "layout": "Comfortable density on a 4px base grid using the space scale. Content columns max out at 1200px, and forms stay at or below 640px wide. Buttons and inputs are 44px tall. Form fields are separated by at least space.4 (16px), and form sections by space.8 (32px).",
    "elevation": "Mostly flat and structural. Cards separate from the background through a 1px border token and shadow.sm. shadow.md is for menus and popovers, shadow.lg for dialogs only. In dark mode, depth comes from surface steps (neutral.950 → 900 → 800), not from shadows.",
    "shapes": "Tight rounding reads formal and precise: radius.md (4px) on buttons and inputs, radius.lg (6px) on cards. radius.xl (10px) is for dialogs. radius.full is used only for status badges."
  },
  "primitives": {
    "color": {
      "brand": {
        "50": "#fdf2f1",
        "100": "#fbe3e0",
        "200": "#f6c7c1",
        "300": "#eea198",
        "400": "#e1756a",
        "500": "#c94f45",
        "600": "#ab3a37",
        "700": "#8f2630",
        "800": "#6f1e25",
        "900": "#50161a",
        "950": "#320c0f"
      },
      "neutral": {
        "50": "#f4f6f9",
        "100": "#e9edf2",
        "200": "#d6dce4",
        "300": "#bbc4cf",
        "400": "#9aa6b5",
        "500": "#7b889a",
        "600": "#616e80",
        "700": "#4b5767",
        "800": "#343e4b",
        "900": "#1f2731",
        "950": "#121821"
      },
      "success": {
        "50": "#eff8f1",
        "100": "#d8efdd",
        "200": "#b3dfbf",
        "300": "#84c79a",
        "400": "#55ab74",
        "500": "#348e57",
        "600": "#237344",
        "700": "#1b5b36",
        "800": "#14472b",
        "900": "#0d3420",
        "950": "#062012"
      },
      "warning": {
        "50": "#fdf6e7",
        "100": "#fbe9c4",
        "200": "#f5d496",
        "300": "#e6b866",
        "400": "#cf9a38",
        "500": "#b17e17",
        "600": "#92660f",
        "700": "#74500c",
        "800": "#573c09",
        "900": "#3d2a06",
        "950": "#251903"
      },
      "danger": {
        "50": "#fff0f6",
        "100": "#fee0ee",
        "200": "#fcc1de",
        "300": "#f592c3",
        "400": "#e85ea6",
        "500": "#d0398a",
        "600": "#b42273",
        "700": "#93185d",
        "800": "#721148",
        "900": "#530a36",
        "950": "#350420"
      }
    },
    "font": {
      "display": {
        "family": "Archivo",
        "fallback": "system-ui, sans-serif",
        "source": "google",
        "weights": [
          600,
          700
        ]
      },
      "sans": {
        "family": "Archivo",
        "fallback": "system-ui, sans-serif",
        "source": "google",
        "weights": [
          400,
          500,
          600,
          700
        ]
      },
      "mono": {
        "family": "Space Mono",
        "fallback": "ui-monospace, monospace",
        "source": "google",
        "weights": [
          400,
          700
        ]
      }
    },
    "radius": {
      "none": 0,
      "sm": 2,
      "md": 4,
      "lg": 6,
      "xl": 10,
      "full": 9999
    },
    "space": {
      "0": 0,
      "1": 4,
      "2": 8,
      "3": 12,
      "4": 16,
      "5": 20,
      "6": 24,
      "8": 32,
      "10": 40,
      "12": 48,
      "16": 64,
      "20": 80,
      "24": 96,
      "0.5": 2,
      "1.5": 6
    },
    "shadow": {
      "sm": "0 1px 2px rgba(18, 24, 33, 0.08)",
      "md": "0 4px 12px -2px rgba(18, 24, 33, 0.14)",
      "lg": "0 16px 40px -8px rgba(18, 24, 33, 0.24)"
    }
  },
  "typography": {
    "display-lg": {
      "font": "display",
      "size": 48,
      "lineHeight": 1.08,
      "weight": 700,
      "letterSpacing": -0.022
    },
    "display-md": {
      "font": "display",
      "size": 34,
      "lineHeight": 1.12,
      "weight": 700,
      "letterSpacing": -0.018
    },
    "heading-lg": {
      "font": "display",
      "size": 28,
      "lineHeight": 1.2,
      "weight": 600,
      "letterSpacing": -0.012
    },
    "heading-md": {
      "font": "sans",
      "size": 20,
      "lineHeight": 1.3,
      "weight": 600,
      "letterSpacing": -0.006
    },
    "heading-sm": {
      "font": "sans",
      "size": 16,
      "lineHeight": 1.4,
      "weight": 600,
      "letterSpacing": 0
    },
    "body-lg": {
      "font": "sans",
      "size": 18,
      "lineHeight": 1.6,
      "weight": 400,
      "letterSpacing": 0
    },
    "body-md": {
      "font": "sans",
      "size": 16,
      "lineHeight": 1.6,
      "weight": 400,
      "letterSpacing": 0
    },
    "body-sm": {
      "font": "sans",
      "size": 14,
      "lineHeight": 1.5,
      "weight": 400,
      "letterSpacing": 0
    },
    "label": {
      "font": "sans",
      "size": 14,
      "lineHeight": 1.3,
      "weight": 600,
      "letterSpacing": 0.005
    },
    "caption": {
      "font": "sans",
      "size": 12,
      "lineHeight": 1.4,
      "weight": 500,
      "letterSpacing": 0.01
    },
    "code": {
      "font": "mono",
      "size": 14,
      "lineHeight": 1.5,
      "weight": 400,
      "letterSpacing": 0
    }
  },
  "semantic": {
    "light": {
      "background": "{color.neutral.50}",
      "foreground": "{color.neutral.950}",
      "card": "#ffffff",
      "card-foreground": "{color.neutral.950}",
      "popover": "#ffffff",
      "popover-foreground": "{color.neutral.950}",
      "primary": "{color.brand.700}",
      "primary-foreground": "#ffffff",
      "secondary": "{color.neutral.100}",
      "secondary-foreground": "{color.neutral.900}",
      "muted": "{color.neutral.100}",
      "muted-foreground": "{color.neutral.700}",
      "accent": "{color.brand.100}",
      "accent-foreground": "{color.brand.900}",
      "destructive": "{color.danger.600}",
      "destructive-foreground": "#ffffff",
      "success": "{color.success.700}",
      "success-foreground": "#ffffff",
      "warning": "{color.warning.200}",
      "warning-foreground": "{color.warning.900}",
      "border": "{color.neutral.200}",
      "input": "{color.neutral.300}",
      "ring": "{color.brand.500}"
    },
    "dark": {
      "background": "{color.neutral.950}",
      "foreground": "{color.neutral.50}",
      "card": "{color.neutral.900}",
      "card-foreground": "{color.neutral.50}",
      "popover": "{color.neutral.900}",
      "popover-foreground": "{color.neutral.50}",
      "primary": "{color.brand.300}",
      "primary-foreground": "{color.brand.950}",
      "secondary": "{color.neutral.800}",
      "secondary-foreground": "{color.neutral.100}",
      "muted": "{color.neutral.800}",
      "muted-foreground": "{color.neutral.300}",
      "accent": "{color.brand.900}",
      "accent-foreground": "{color.brand.100}",
      "destructive": "{color.danger.400}",
      "destructive-foreground": "{color.danger.950}",
      "success": "{color.success.400}",
      "success-foreground": "{color.success.950}",
      "warning": "{color.warning.400}",
      "warning-foreground": "{color.warning.950}",
      "border": "{color.neutral.800}",
      "input": "{color.neutral.700}",
      "ring": "{color.brand.400}"
    }
  },
  "components": {
    "button": {
      "height": 44,
      "paddingX": "{space.5}",
      "radius": "{radius.md}",
      "typography": "{typography.label}",
      "fontWeight": 600
    },
    "input": {
      "height": 44,
      "paddingX": "{space.3}",
      "radius": "{radius.md}",
      "typography": "{typography.body-md}",
      "borderWidth": 1
    },
    "card": {
      "padding": "{space.6}",
      "radius": "{radius.lg}",
      "shadow": "{shadow.sm}",
      "borderWidth": 1
    },
    "badge": {
      "height": 24,
      "paddingX": "{space.2}",
      "radius": "{radius.full}",
      "typography": "{typography.caption}"
    }
  },
  "guidance": {
    "do": [
      "Use the primary button for exactly one main action per view, such as 'Submit claim' or 'Get quote'. Render other actions as secondary or ghost buttons.",
      "Set policy terms and legal text in body-md (16px, line height 1.6) or body-lg (18px). Limit body-sm (14px) to table cells and input helper text.",
      "Set policy numbers, claim IDs and reference codes in the code style (Space Mono 400, 14px) so they are unambiguous when read aloud or copied.",
      "Pair every success, warning and destructive badge or alert with an icon or text label so meaning never depends on color alone.",
      "Keep buttons and inputs at 44px height. Use at least space.4 (16px) between form fields and space.8 (32px) between form sections.",
      "Show focus on every interactive element as a 2px ring token outline with a 2px offset. ring is brand.500 in light and brand.400 in dark, both ≥ 4:1 on background.",
      "In dark mode, separate layers by surface step: background (neutral.950), then card and popover (neutral.900), then muted and secondary (neutral.800). Add shadow.md only for menus and popovers.",
      "Use muted-foreground for placeholder and helper text. For disabled controls, apply 50% opacity to the whole control rather than switching to a lighter neutral."
    ],
    "dont": [
      "Don't use primary for errors or failed validation. Use destructive (danger.600 in light, danger.400 in dark), which is magenta-crimson and clearly distinct from the brick carmine primary.",
      "Don't place primary and destructive buttons side by side at equal weight. Show 'Cancel policy' as a secondary button until the confirmation dialog, then as destructive.",
      "Don't set display-lg or display-md in all caps. Don't use display weights below heading-lg (28px); use heading-md (20px) or heading-sm (16px) instead.",
      "Don't loosen tracking on display sizes or tighten it on body. Keep the letterSpacing values defined in the typography tokens.",
      "Don't use warm greys, pure black (#000000) or untinted grey for text or surfaces. Use neutral.950 and the slate neutral ramp.",
      "Don't round buttons or inputs beyond radius.md (4px), or cards beyond radius.lg (6px). Reserve radius.full for badges.",
      "Don't use warning.200 as text or as an icon color on white. It is the light-mode warning surface and needs warning-foreground (warning.900) on top.",
      "Don't put brand.300 or brand.400 text on light backgrounds. They are dark-mode tokens and fall below 3:1 on neutral.50."
    ]
  }
}
