{
  "schemaVersion": "1.0",
  "id": "terracotta-drafting",
  "version": "1.1.0",
  "name": "Terracotta Drafting",
  "tier": "free",
  "summary": "Warm studio UI for architecture practices: mulberry actions on clay-tinted neutrals, olive and ochre status, grotesk headings.",
  "tags": {
    "industries": [
      "architecture",
      "interior-design",
      "construction"
    ],
    "moods": [
      "warm-human",
      "earthy",
      "approachable",
      "calm"
    ],
    "density": "comfortable",
    "contrast": "standard"
  },
  "rationale": {
    "overview": "Terracotta Drafting serves architecture studios and their clients: principals, project managers and homeowners reviewing drawing sets. Surfaces take their color from materials, so neutrals carry a clay tint and the one saturated hue is Mulberry. The layout favors readable sheet lists, flat cards with 1px borders and a single primary action per view.",
    "color": "Mulberry (brand, hue about 315) is the only action color. It fills primary (brand.600 light, brand.400 dark) and ring (brand.500 light, brand.400 dark). Every neutral step keeps the same warm clay tint, rising slightly in chroma toward 950 so dark surfaces read as fired clay, not grey. Success is an olive ramp, with 700 to 950 pulled back from green toward yellow-olive. Warning is ochre. Both sit on the warm side and match the neutrals' temperature. Destructive is brick red near hue 25 (danger.600 light, danger.400 dark), well over ΔE 18 from primary in both modes. Light-mode text pairs: foreground on background is about 16:1, muted-foreground (neutral.700) on muted (neutral.100) about 5.8:1, and white on primary about 6.7:1. Dark-mode text pairs: primary-foreground on primary is about 5.6:1, and muted-foreground (neutral.300) on muted (neutral.800) about 5.6:1.",
    "typography": "The type scale uses a 1.25 ratio from a 16px body: 20, 25, 31, 39, 49. Schibsted Grotesk 600/700 sets display-lg, display-md and heading-lg (31px and up). Letter spacing tightens from -0.02em to -0.03em as size grows. Hanken Grotesk 400/500/600 sets heading-md down to caption, with body line height of 1.55 to 1.6. Geist Mono 400 at 13px is for sheet IDs, drawing numbers, dimensions and code.",
    "layout": "Comfortable density on a 4px grid (space tokens 0.5 to 24). Content columns max out at 1180px. Project and sheet lists use 48px rows with 16px (space.4) horizontal padding. Rows are divided by the border token, not by shadows.",
    "elevation": "Mostly flat. Cards use a 1px border plus shadow.sm. Popovers and menus use shadow.md. Dialogs over the drawing canvas use shadow.lg. In dark mode, depth comes from surface steps: background #1f1a16, card #29231f, popover #2f2924. Shadows are not the main cue there.",
    "shapes": "Controls (button, input) use radius.md (8px), cards radius.lg (12px) and image or drawing containers radius.xl (16px). radius.full is used only for status badges (Draft, Approved, Issued) at 22px height."
  },
  "primitives": {
    "color": {
      "brand": {
        "50": "#fbf4fa",
        "100": "#f4e6f1",
        "200": "#e8cde3",
        "300": "#d6a6cc",
        "400": "#bd7db0",
        "500": "#a25a92",
        "600": "#8a4179",
        "700": "#6f3262",
        "800": "#55264b",
        "900": "#3d1a36",
        "950": "#261021"
      },
      "neutral": {
        "50": "#faf7f3",
        "100": "#f3eee7",
        "200": "#e5ddd3",
        "300": "#d0c6ba",
        "400": "#b0a598",
        "500": "#948879",
        "600": "#7a6e61",
        "700": "#635a4e",
        "800": "#4c443b",
        "900": "#36302a",
        "950": "#1f1a16"
      },
      "success": {
        "50": "#f4f8ec",
        "100": "#e6efd4",
        "200": "#cfe0b0",
        "300": "#b1cc85",
        "400": "#92b262",
        "500": "#77963f",
        "600": "#5f7a31",
        "700": "#4b6127",
        "800": "#3a4b1f",
        "900": "#2c3817",
        "950": "#1b220e"
      },
      "warning": {
        "50": "#fcf7e8",
        "100": "#f8edcb",
        "200": "#f0dca3",
        "300": "#e3c676",
        "400": "#d1ad4d",
        "500": "#b8912f",
        "600": "#9a7523",
        "700": "#7d5c1b",
        "800": "#624715",
        "900": "#4a3410",
        "950": "#2f2009"
      },
      "danger": {
        "50": "#fdf4f2",
        "100": "#fbe4df",
        "200": "#f6c8be",
        "300": "#ee9d8e",
        "400": "#e0705e",
        "500": "#c9483a",
        "600": "#a93529",
        "700": "#8c2a21",
        "800": "#72231c",
        "900": "#551b15",
        "950": "#37100c"
      }
    },
    "font": {
      "display": {
        "family": "Schibsted Grotesk",
        "fallback": "system-ui, sans-serif",
        "source": "google",
        "weights": [
          600,
          700
        ]
      },
      "sans": {
        "family": "Hanken Grotesk",
        "fallback": "system-ui, sans-serif",
        "source": "google",
        "weights": [
          400,
          500,
          600
        ]
      },
      "mono": {
        "family": "Geist Mono",
        "fallback": "ui-monospace, monospace",
        "source": "google",
        "weights": [
          400
        ]
      }
    },
    "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(54, 48, 42, 0.06)",
      "md": "0 4px 12px -2px rgba(54, 48, 42, 0.12)",
      "lg": "0 16px 40px -8px rgba(54, 48, 42, 0.20)"
    }
  },
  "typography": {
    "display-lg": {
      "font": "display",
      "size": 49,
      "lineHeight": 1.08,
      "weight": 700,
      "letterSpacing": -0.03
    },
    "display-md": {
      "font": "display",
      "size": 39,
      "lineHeight": 1.12,
      "weight": 700,
      "letterSpacing": -0.025
    },
    "heading-lg": {
      "font": "display",
      "size": 31,
      "lineHeight": 1.2,
      "weight": 600,
      "letterSpacing": -0.02
    },
    "heading-md": {
      "font": "sans",
      "size": 25,
      "lineHeight": 1.28,
      "weight": 600,
      "letterSpacing": -0.015
    },
    "heading-sm": {
      "font": "sans",
      "size": 20,
      "lineHeight": 1.35,
      "weight": 600,
      "letterSpacing": -0.01
    },
    "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.3,
      "weight": 500,
      "letterSpacing": 0.005
    },
    "caption": {
      "font": "sans",
      "size": 12,
      "lineHeight": 1.4,
      "weight": 500,
      "letterSpacing": 0.01
    },
    "code": {
      "font": "mono",
      "size": 13,
      "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.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": "#29231f",
      "card-foreground": "{color.neutral.50}",
      "popover": "#2f2924",
      "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 one primary button (primary / primary-foreground, 40px high) per view. Render other actions as secondary or ghost buttons.",
      "Show focus as a 2px ring token outline with a 2px offset on buttons, inputs and list rows in both modes.",
      "Set sheet numbers, dimensions and areas in the code style (Geist Mono 13px), and right-align numeric table columns.",
      "Use Schibsted Grotesk only for display-lg (49px), display-md (39px) and heading-lg (31px). Use Hanken Grotesk for heading-md and everything smaller.",
      "Pair each status badge (Draft, Approved, Issued, Overdue) with a text label or icon, using success, warning or destructive with its matching foreground."
    ],
    "dont": [
      "Don't use primary or accent for errors, deletions or overdue states. Use destructive / destructive-foreground.",
      "Don't place body text longer than one line on the accent surface. Reserve accent for selected rows and highlights.",
      "Don't put shadow.md or shadow.lg on cards. Cards use shadow.sm plus a 1px border.",
      "Don't introduce pure black, #000-based overlays or cool greys. Draw every surface and divider from the neutral ramp.",
      "Don't set Schibsted Grotesk below 24px or in all caps, and don't use muted-foreground for text smaller than caption (12px)."
    ]
  }
}
