{
  "schemaVersion": "1.0",
  "id": "hushed-sentinel",
  "version": "1.1.0",
  "name": "Hushed Sentinel",
  "tier": "free",
  "summary": "Dark-first security UI with lichen-gold actions, green-tinted slate surfaces and a calm type rhythm for long monitoring shifts.",
  "tags": {
    "industries": [
      "cybersecurity",
      "infrastructure",
      "developer-tools"
    ],
    "moods": [
      "calm",
      "organic",
      "vigilant",
      "grounded"
    ],
    "density": "comfortable",
    "contrast": "standard"
  },
  "rationale": {
    "overview": "Hushed Sentinel is for people who watch security dashboards for hours: SOC analysts, platform engineers and incident responders. Most security tools put neon green or alarm red on black, and the result is that every alert looks urgent. This system is dark-first: a green-black canvas (neutral.950), a lichen-gold primary (brand.400 in dark, brand.700 in light), and quiet surfaces. Only destructive, warning and success carry strong color, so real threats are the only things that stand out.",
    "color": "Lichen is a yellow-olive gold (OKLCH hue about 95 to 100). It carries every primary action, focus ring and selected state. Neutrals are slates tinted slightly green so they sit next to lichen without going grey. Pure black and pure grey are never used. Destructive is a crimson-magenta at about OKLCH hue 5. It sits roughly 90 degrees from lichen, with ΔE00 above 40 in both modes, so a blocked host or a deleted rule is never mistaken for a routine action. Warning is shifted toward orange (hue about 65) so warning.400 does not compete with brand.400. Success is a leaf green with softened 50 to 200 tints so it stays in the same warm, organic family. In dark mode the card (#1a1e19) sits one small step above the background (neutral.950), and popovers use neutral.900. In both modes, every foreground pair measures at least 5:1 against its surface, and muted-foreground measures at least 6:1 on muted.",
    "typography": "Archivo is the only family for display and interface text. Its sturdy, slightly condensed shapes work for incident titles and for dense tables. The scale uses a 1.25 ratio from a 16px body: 20, 25, 31, 39, 48. Smaller steps are 14 and 12. Display styles use weights 600 and 700, with letterSpacing tightened from -0.01 at 20px to -0.03 at 48px. Body text uses a line height of 1.5 to 1.6. Space Mono is used only for IP addresses, hashes, rule IDs and log lines, at 400 or 700, the only weights it ships.",
    "layout": "Comfortable density on a 4px base grid. Content columns are at most 1280px wide. Table rows are 44px tall, so log lines stay readable without wrapping. Panels are separated by space.8 (32px) or space.10 (40px). Card padding is space.6 (24px).",
    "elevation": "Depth comes mainly from tonal surface steps (background, then card, then popover) rather than from shadows. Cards use a 1px border token and at most shadow.sm. Shadow.md and shadow.lg are only for popovers, menus and modal dialogs, so overlays clearly float above the monitoring surface.",
    "shapes": "Rounding is soft and slightly organic. Controls use radius.md (8px), cards use radius.lg (12px), and radius.full is only for status badges. Interactive elements never use radius.none, which keeps the tone approachable rather than militaristic."
  },
  "primitives": {
    "color": {
      "brand": {
        "50": "#fbf8e8",
        "100": "#f5efc9",
        "200": "#ebe09a",
        "300": "#dccc6a",
        "400": "#c9b441",
        "500": "#b39d26",
        "600": "#957f12",
        "700": "#776310",
        "800": "#5c4c10",
        "900": "#413510",
        "950": "#2a2108"
      },
      "neutral": {
        "50": "#f4f5f1",
        "100": "#e6e8e2",
        "200": "#cfd3cb",
        "300": "#b1b7ad",
        "400": "#8f968b",
        "500": "#737b70",
        "600": "#5b6359",
        "700": "#454c43",
        "800": "#30362f",
        "900": "#1f241e",
        "950": "#121510"
      },
      "success": {
        "50": "#edf7ee",
        "100": "#d6eedb",
        "200": "#b4e0c0",
        "300": "#8dd0a4",
        "400": "#65b683",
        "500": "#389c64",
        "600": "#23824f",
        "700": "#16683d",
        "800": "#0a502d",
        "900": "#01381d",
        "950": "#00220f"
      },
      "warning": {
        "50": "#fff5e8",
        "100": "#ffe6c4",
        "200": "#f6cc8f",
        "300": "#e8ad66",
        "400": "#d09034",
        "500": "#b27300",
        "600": "#935f00",
        "700": "#744a00",
        "800": "#583800",
        "900": "#3e2700",
        "950": "#261700"
      },
      "danger": {
        "50": "#fff4f5",
        "100": "#ffe3e6",
        "200": "#ffc6ce",
        "300": "#ff9dac",
        "400": "#f66e89",
        "500": "#e1436b",
        "600": "#c02d56",
        "700": "#9c2043",
        "800": "#791231",
        "900": "#580521",
        "950": "#390011"
      }
    },
    "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
        ]
      },
      "mono": {
        "family": "Space Mono",
        "fallback": "ui-monospace, monospace",
        "source": "google",
        "weights": [
          400,
          700
        ]
      }
    },
    "radius": {
      "none": 0,
      "sm": 4,
      "md": 8,
      "lg": 12,
      "xl": 16,
      "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(8, 12, 7, 0.35)",
      "md": "0 6px 16px -4px rgba(8, 12, 7, 0.50)",
      "lg": "0 20px 44px -10px rgba(8, 12, 7, 0.60)"
    }
  },
  "typography": {
    "display-lg": {
      "font": "display",
      "size": 48,
      "lineHeight": 1.08,
      "weight": 700,
      "letterSpacing": -0.03
    },
    "display-md": {
      "font": "display",
      "size": 39,
      "lineHeight": 1.12,
      "weight": 600,
      "letterSpacing": -0.024
    },
    "heading-lg": {
      "font": "display",
      "size": 31,
      "lineHeight": 1.18,
      "weight": 600,
      "letterSpacing": -0.018
    },
    "heading-md": {
      "font": "display",
      "size": 25,
      "lineHeight": 1.25,
      "weight": 600,
      "letterSpacing": -0.012
    },
    "heading-sm": {
      "font": "sans",
      "size": 20,
      "lineHeight": 1.35,
      "weight": 600,
      "letterSpacing": -0.006
    },
    "body-lg": {
      "font": "sans",
      "size": 18,
      "lineHeight": 1.6,
      "weight": 400,
      "letterSpacing": 0
    },
    "body-md": {
      "font": "sans",
      "size": 16,
      "lineHeight": 1.55,
      "weight": 400,
      "letterSpacing": 0
    },
    "body-sm": {
      "font": "sans",
      "size": 14,
      "lineHeight": 1.5,
      "weight": 400,
      "letterSpacing": 0.002
    },
    "label": {
      "font": "sans",
      "size": 14,
      "lineHeight": 1.25,
      "weight": 500,
      "letterSpacing": 0.005
    },
    "caption": {
      "font": "sans",
      "size": 12,
      "lineHeight": 1.4,
      "weight": 500,
      "letterSpacing": 0.012
    },
    "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.600}"
    },
    "dark": {
      "background": "{color.neutral.950}",
      "foreground": "{color.neutral.50}",
      "card": "#1a1e19",
      "card-foreground": "{color.neutral.50}",
      "popover": "{color.neutral.900}",
      "popover-foreground": "{color.neutral.50}",
      "primary": "{color.brand.400}",
      "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": 40,
      "paddingX": "{space.4}",
      "radius": "{radius.md}",
      "typography": "{typography.label}",
      "fontWeight": 600
    },
    "input": {
      "height": 40,
      "paddingX": "{space.3}",
      "radius": "{radius.md}",
      "typography": "{typography.body-sm}",
      "borderWidth": 1
    },
    "card": {
      "padding": "{space.6}",
      "radius": "{radius.lg}",
      "shadow": "{shadow.sm}",
      "borderWidth": 1
    },
    "badge": {
      "height": 22,
      "paddingX": "{space.2}",
      "radius": "{radius.full}",
      "typography": "{typography.caption}"
    }
  },
  "guidance": {
    "do": [
      "Use the primary button (lichen) for exactly one main action per view. Use secondary or ghost variants for every other action.",
      "Set IP addresses, hashes and rule IDs in Space Mono at typography.code (14px) and keep them left-aligned in table cells.",
      "Pair every severity color (destructive, warning, success) with an icon and a text label in badges and table cells.",
      "Build and review every new component in dark mode first, on background (neutral.950), card (#1a1e19) and popover (neutral.900).",
      "Keep table rows at least 44px tall and separate them with a 1px border token, not shadows.",
      "Show focus with a 2px ring token outline offset by 2px on buttons, inputs and table rows."
    ],
    "dont": [
      "Don't use primary or accent for errors, blocked hosts or critical threats. Use destructive for those.",
      "Don't use #000000 or untinted grey for any surface, text or border. Pick from the neutral ramp.",
      "Don't set display-font styles below heading-md (25px), and don't use weights other than 600 and 700 for display text.",
      "Don't apply shadow.md or shadow.lg to cards or table rows. Use them only for popovers, menus and dialogs.",
      "Don't use Space Mono for prose, labels or button text, or at any weight other than 400 or 700.",
      "Don't put warning (warning.400) next to the primary button as a second call to action. Keep warning to status badges and banners."
    ]
  }
}
