{
  "schemaVersion": "1.0",
  "id": "russet-tasting",
  "version": "1.1.0",
  "name": "Russet Tasting",
  "tier": "free",
  "summary": "Magazine-style restaurant UI: Bricolage Grotesque headlines, sienna actions on cool grey-blue neutrals, spacious layout.",
  "tags": {
    "industries": [
      "restaurant",
      "hospitality",
      "food-media"
    ],
    "moods": [
      "editorial",
      "confident",
      "appetizing",
      "calm"
    ],
    "density": "spacious",
    "contrast": "standard"
  },
  "rationale": {
    "overview": "Russet Tasting is for restaurant websites, booking flows and menu apps that should read like a food magazine. The hierarchy sits in the type rather than in decoration. Bricolage Grotesque headlines at 32–60px carry the personality. A cool grey-blue neutral ramp keeps menus and forms crisp. Sienna, a single warm accent, marks every action.",
    "color": "Sienna (brand.600 #a95419 in light, brand.400 #e48a4f in dark) is the only action color. It is used for primary buttons, links and the focus ring. Against white, brand.600 measures 5.3:1. In dark mode, brand.400 measures 6.7:1 on neutral.950. Neutrals are tinted blue-grey, hue around 215°, with chroma held low and even from 50 to 950, so no step turns muddy. Destructive uses the magenta-leaning crimson danger.600 (light) and danger.400 (dark). It sits roughly 40° of hue away from Sienna, keeping ΔE well above 18 in both modes. Success is shifted slightly toward yellow-green so it sits warmer beside Sienna. success.700 on white measures 7.2:1. Warning is a soft gold ramp from the same warm family. Light mode uses warning.200 surfaces with warning.900 text. Dark mode uses a warning.400 fill with warning.950 text.",
    "typography": "Bricolage Grotesque (600, 700) is the display voice. It sets display-lg 60/1.05, display-md 48/1.1 and heading-lg 32/1.2. Letter spacing tightens as size grows: -0.03em at 60px, -0.025em at 48px, -0.015em at 32px. Figtree (400, 500, 600) handles every functional role: heading-md 20/1.3, heading-sm 16/1.4, body-lg 18/1.6, body-md 16/1.6, body-sm 14/1.55, label 14/1.25 and caption 12/1.4. The scale follows a 1.25 major third anchored at 16px, rounded to 20, 32, 48 and 60. The display sizes skip a step so the jump from heading-md to heading-lg reads at a glance. JetBrains Mono (400, 500) at 14/1.6 is reserved for order codes, table numbers and allergen codes.",
    "layout": "Spacious density on a 4px base grid. Section padding is space.16 (64px) on desktop and space.10 (40px) on mobile. Content columns cap at 1120px. Menu items are separated by at least space.4 (16px). Buttons are 44px tall and inputs are 48px, so touch targets stay above 44px.",
    "elevation": "Almost flat. Cards use a 1px border token over shadow.sm, a 2px blur at 6% opacity tinted with neutral.950. shadow.md is for popovers and date pickers. shadow.lg is only for modal dialogs. In dark mode, elevation comes from surface lightness instead: card and popover use neutral.900 on a neutral.950 background.",
    "shapes": "Tight, print-like rounding. Use radius.md (6px) on buttons and inputs, radius.lg (10px) on cards and radius.xl (14px) on dialogs. radius.full is limited to status and allergen badges so pills stay scannable."
  },
  "primitives": {
    "color": {
      "brand": {
        "50": "#fdf5ef",
        "100": "#fbe7d6",
        "200": "#f6cdab",
        "300": "#efad78",
        "400": "#e48a4f",
        "500": "#cf6d2c",
        "600": "#a95419",
        "700": "#87410f",
        "800": "#6a3209",
        "900": "#4d2306",
        "950": "#2e1403"
      },
      "neutral": {
        "50": "#f5f7fa",
        "100": "#eaeef3",
        "200": "#d6dde6",
        "300": "#b8c2cf",
        "400": "#95a1b1",
        "500": "#77839a",
        "600": "#5c677c",
        "700": "#475165",
        "800": "#343c4d",
        "900": "#222936",
        "950": "#141a24"
      },
      "success": {
        "50": "#f0faf2",
        "100": "#d8f2de",
        "200": "#b2e3bf",
        "300": "#84cf99",
        "400": "#56b673",
        "500": "#379a58",
        "600": "#277d46",
        "700": "#1d6439",
        "800": "#164d2d",
        "900": "#103a22",
        "950": "#082414"
      },
      "warning": {
        "50": "#fffbeb",
        "100": "#fdf2c8",
        "200": "#f9e195",
        "300": "#f2cb5c",
        "400": "#e5b02f",
        "500": "#c8921a",
        "600": "#a37512",
        "700": "#805a0d",
        "800": "#5f430b",
        "900": "#412d07",
        "950": "#251a04"
      },
      "danger": {
        "50": "#fff3f6",
        "100": "#ffe4ec",
        "200": "#fdc8d8",
        "300": "#fa9fbb",
        "400": "#f0719a",
        "500": "#d9457a",
        "600": "#b82a5f",
        "700": "#951c4a",
        "800": "#75163a",
        "900": "#56102a",
        "950": "#37091b"
      }
    },
    "font": {
      "display": {
        "family": "Bricolage Grotesque",
        "fallback": "'Helvetica Neue', Arial, sans-serif",
        "source": "google",
        "weights": [
          600,
          700
        ]
      },
      "sans": {
        "family": "Figtree",
        "fallback": "system-ui, sans-serif",
        "source": "google",
        "weights": [
          400,
          500,
          600
        ]
      },
      "mono": {
        "family": "JetBrains Mono",
        "fallback": "ui-monospace, monospace",
        "source": "google",
        "weights": [
          400,
          500
        ]
      }
    },
    "radius": {
      "none": 0,
      "sm": 2,
      "md": 6,
      "lg": 10,
      "xl": 14,
      "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(20, 26, 36, 0.06)",
      "md": "0 4px 14px -2px rgba(20, 26, 36, 0.12)",
      "lg": "0 16px 40px -8px rgba(20, 26, 36, 0.22)"
    }
  },
  "typography": {
    "display-lg": {
      "font": "display",
      "size": 60,
      "lineHeight": 1.05,
      "weight": 700,
      "letterSpacing": -0.03
    },
    "display-md": {
      "font": "display",
      "size": 48,
      "lineHeight": 1.1,
      "weight": 700,
      "letterSpacing": -0.025
    },
    "heading-lg": {
      "font": "display",
      "size": 32,
      "lineHeight": 1.2,
      "weight": 600,
      "letterSpacing": -0.015
    },
    "heading-md": {
      "font": "sans",
      "size": 20,
      "lineHeight": 1.3,
      "weight": 600,
      "letterSpacing": -0.01
    },
    "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.55,
      "weight": 400,
      "letterSpacing": 0
    },
    "label": {
      "font": "sans",
      "size": 14,
      "lineHeight": 1.25,
      "weight": 500,
      "letterSpacing": 0.01
    },
    "caption": {
      "font": "sans",
      "size": 12,
      "lineHeight": 1.4,
      "weight": 500,
      "letterSpacing": 0.02
    },
    "code": {
      "font": "mono",
      "size": 14,
      "lineHeight": 1.6,
      "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.600}",
      "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.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": 44,
      "paddingX": "{space.5}",
      "radius": "{radius.md}",
      "typography": "{typography.label}",
      "fontWeight": 600
    },
    "input": {
      "height": 48,
      "paddingX": "{space.4}",
      "radius": "{radius.md}",
      "typography": "{typography.body-md}",
      "borderWidth": 1
    },
    "card": {
      "padding": "{space.8}",
      "radius": "{radius.lg}",
      "shadow": "{shadow.sm}",
      "borderWidth": 1
    },
    "badge": {
      "height": 24,
      "paddingX": "{space.2}",
      "radius": "{radius.full}",
      "typography": "{typography.caption}"
    }
  },
  "guidance": {
    "do": [
      "Give each view one primary button (Reserve, Order, Confirm). Render all other actions as secondary (neutral.100 surface) or ghost buttons.",
      "Use exactly one display-lg (60px) or display-md (48px) heading per page. Use heading-lg (32px) for menu section titles such as Starters or Mains.",
      "Set prices, times and table numbers in Figtree with font-feature-settings 'tnum', so figures align in menu and booking columns.",
      "Show the focus state as a 2px ring token outline with a 2px offset on buttons, inputs and menu-item links in both modes.",
      "Pair every success, warning and destructive badge or alert with an icon or text label, such as 'Sold out' or 'Booked', so meaning never relies on color alone.",
      "Use space.16 (64px) section padding on desktop and space.10 (40px) on mobile, with a 1120px maximum content width."
    ],
    "dont": [
      "Don't use primary (Sienna) for errors, sold-out states or cancellations. Use destructive with destructive-foreground for those.",
      "Don't set Bricolage Grotesque below 24px, and don't use it for body copy, form labels, buttons or dish descriptions.",
      "Don't introduce warm greys or #000000. Text uses neutral.950 on light surfaces and neutral.50 on dark surfaces.",
      "Don't set paragraph text in primary on the accent surface. Use accent-foreground for any text longer than one line.",
      "Don't place muted-foreground text on the brand or warning surfaces. It is only checked against background, card and muted.",
      "Don't add shadows above shadow.sm to cards. Reserve shadow.md for popovers and date pickers, and shadow.lg for modal dialogs."
    ]
  }
}
