{
  "schemaVersion": "1.0.0",
  "revision": 1,
  "cityId": "serravane",
  "name": "Serravane / signal in brine",
  "source": {
    "briefPath": "../generation.json",
    "sha256": "552e622654a239aafb4f2004531cc16bb20cd88843eb4c52c0b8a53529f7e5c6"
  },
  "rationale": "A brine-black panel carries the city's sharp filament language without making the controls hard to read. Ivory type and pale signal marks feel like observations surfaced from the basin; rose warning text marks damage and extraction. Compact, angular Unbounded headings provide the alien civic voice, while Recursive keeps instructions and resource counts readable. Square seams, fine borders and offset shadows suggest bolted ceramic instruments rather than ornamental fantasy frames.",
  "fonts": [
    {
      "id": "signal",
      "family": "City Unbounded",
      "fallback": "sans-serif",
      "kind": "local",
      "assetPath": "../../../../app/static/fonts/typography/unbounded.ttf",
      "licensePath": "../../../../app/static/fonts/typography/unbounded-OFL.txt",
      "axes": { "wght": { "min": 200, "max": 900 } }
    },
    {
      "id": "ledger",
      "family": "City Recursive",
      "fallback": "sans-serif",
      "kind": "local",
      "assetPath": "../../../../app/static/fonts/typography/recursive.ttf",
      "licensePath": "../../../../app/static/fonts/typography/recursive-OFL.txt",
      "axes": {
        "MONO": { "min": 0, "max": 1 },
        "CASL": { "min": 0, "max": 1 },
        "wght": { "min": 300, "max": 1000 },
        "slnt": { "min": -15, "max": 0 },
        "CRSV": { "min": 0, "max": 1 }
      }
    }
  ],
  "typography": {
    "display": { "font": "signal", "sizePx": 31, "lineHeight": 1.14, "weight": 700, "trackingPx": -0.8, "case": "none", "opticalSizing": "auto", "axes": {} },
    "heading": { "font": "signal", "sizePx": 17, "lineHeight": 1.32, "weight": 600, "trackingPx": -0.3, "case": "none", "opticalSizing": "auto", "axes": {} },
    "body": { "font": "ledger", "sizePx": 15, "lineHeight": 1.48, "weight": 430, "trackingPx": 0, "case": "none", "opticalSizing": "auto", "axes": { "MONO": 0, "CASL": 0 } },
    "label": { "font": "ledger", "sizePx": 13, "lineHeight": 1.3, "weight": 680, "trackingPx": 0.8, "case": "uppercase", "opticalSizing": "auto", "axes": { "MONO": 0.4, "CASL": 0 } },
    "small": { "font": "ledger", "sizePx": 12, "lineHeight": 1.4, "weight": 430, "trackingPx": 0, "case": "none", "opticalSizing": "auto", "axes": { "MONO": 0, "CASL": 0 } },
    "numeric": { "font": "ledger", "sizePx": 16, "lineHeight": 1.25, "weight": 650, "trackingPx": 0, "case": "none", "opticalSizing": "auto", "axes": { "MONO": 1, "CASL": 0 } }
  },
  "colors": {
    "surface": "#171B22",
    "text": "#E8DFD0",
    "muted": "#B6AFA8",
    "border": "#687079",
    "accent": "#B9E8E2",
    "warning": "#F0B9AE",
    "button": "#30343C",
    "buttonText": "#F2EADF",
    "selected": "#B9E8E2",
    "selectedText": "#171B22",
    "primary": "#E8DFD0",
    "primaryText": "#171B22",
    "track": "#3A4149",
    "focus": "#B9E8E2"
  },
  "layout": { "unitPx": 4, "panelPaddingPx": 20, "gapPx": 12 },
  "components": {
    "panel": { "radiusPx": 2, "borderWidthPx": 1, "borderStyle": "solid", "shadow": { "xPx": 5, "yPx": 5, "blurPx": 0 } },
    "button": { "radiusPx": 1, "borderWidthPx": 1, "borderStyle": "solid", "shadow": { "xPx": 2, "yPx": 2, "blurPx": 0 } },
    "titleAlign": "left",
    "disabledOpacity": 0.45,
    "progressHeightPx": 5
  },
  "icons": {
    "status": "planned",
    "direction": "Use recognisable resource silhouettes cut from dense black shapes by one or two thin, branching signal lines. Let the line fork, hook and terminate sharply like the city filaments; avoid soft leaves or elvish scrollwork. Preserve distinct profiles and accessible labels for brine, ceramic, fiber, grafts, homes and listening.",
    "assets": []
  },
  "guardrails": { "minBodyPx": 14, "minSmallPx": 12, "minTextContrast": 4.5, "minFocusContrast": 3 }
}
