{
  "schemaVersion": "1.0.0",
  "revision": 1,
  "cityId": "fractal-citadel",
  "name": "Fractal Citadel / luminous voids",
  "source": {
    "briefPath": "../../city.md",
    "sha256": "d350ece35c16263fee1b2acea8d7bbc6b6cf4e7c358c41cfcaf2d55764dd8f45"
  },
  "rationale": "Obsidian-violet panels act like the city\u2019s shadowed courts, with crystalline white text and cyan actions lit from within. Square double panel borders repeat the nested portal motif while a four-pixel spacing rhythm keeps the hierarchy predictable. Unbounded headings echo broad geometric lintels; Recursive uses restrained proportional forms for reading and monospaced forms for resource accounting. Violet marks selection, gold marks focus and warnings, and feedback retains labels and icons so meaning never depends on color alone. Ornament is concentrated at panel boundaries rather than behind content.",
  "fonts": [
    {
      "id": "unbounded",
      "family": "Citadel 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": "recursive",
      "family": "Citadel 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": "unbounded",
      "sizePx": 28,
      "lineHeight": 1.2,
      "weight": 650,
      "trackingPx": -0.5,
      "case": "none",
      "opticalSizing": "auto",
      "axes": {}
    },
    "heading": {
      "font": "unbounded",
      "sizePx": 16,
      "lineHeight": 1.35,
      "weight": 550,
      "trackingPx": 0,
      "case": "none",
      "opticalSizing": "auto",
      "axes": {}
    },
    "body": {
      "font": "recursive",
      "sizePx": 14,
      "lineHeight": 1.45,
      "weight": 420,
      "trackingPx": 0,
      "case": "none",
      "opticalSizing": "auto",
      "axes": {
        "MONO": 0,
        "CASL": 0,
        "slnt": 0,
        "CRSV": 0
      }
    },
    "label": {
      "font": "recursive",
      "sizePx": 12,
      "lineHeight": 1.45,
      "weight": 650,
      "trackingPx": 0.6,
      "case": "uppercase",
      "opticalSizing": "auto",
      "axes": {
        "MONO": 1,
        "CASL": 0,
        "slnt": 0,
        "CRSV": 0
      }
    },
    "small": {
      "font": "recursive",
      "sizePx": 12,
      "lineHeight": 1.45,
      "weight": 450,
      "trackingPx": 0,
      "case": "none",
      "opticalSizing": "auto",
      "axes": {
        "MONO": 0,
        "CASL": 0,
        "slnt": 0,
        "CRSV": 0
      }
    },
    "numeric": {
      "font": "recursive",
      "sizePx": 16,
      "lineHeight": 1.45,
      "weight": 600,
      "trackingPx": 0,
      "case": "none",
      "opticalSizing": "auto",
      "axes": {
        "MONO": 1,
        "CASL": 0,
        "slnt": 0,
        "CRSV": 0
      }
    }
  },
  "colors": {
    "surface": "#110C20",
    "text": "#F2F5FF",
    "muted": "#B6ACC9",
    "border": "#60527D",
    "accent": "#53E8F4",
    "warning": "#F3CD79",
    "button": "#251A3D",
    "buttonText": "#F2F5FF",
    "selected": "#573582",
    "selectedText": "#FFFFFF",
    "primary": "#53E8F4",
    "primaryText": "#101321",
    "track": "#35284D",
    "focus": "#F3CD79"
  },
  "layout": {
    "unitPx": 4,
    "panelPaddingPx": 20,
    "gapPx": 12
  },
  "components": {
    "panel": {
      "radiusPx": 0,
      "borderWidthPx": 3,
      "borderStyle": "double",
      "shadow": {
        "xPx": 0,
        "yPx": 0,
        "blurPx": 0
      }
    },
    "button": {
      "radiusPx": 0,
      "borderWidthPx": 1,
      "borderStyle": "solid",
      "shadow": {
        "xPx": 0,
        "yPx": 0,
        "blurPx": 0
      }
    },
    "titleAlign": "left",
    "disabledOpacity": 0.5,
    "progressHeightPx": 6
  },
  "icons": {
    "status": "planned",
    "direction": "Sharp square and triangular silhouettes with one nested negative-space cut, white strokes and sparing cyan centers; branching marks indicate networks, concentric squares indicate storage, and triangular apertures indicate collection. Use simple recognizable silhouettes at small sizes, preserve accessible labels, and never rely on color alone.",
    "assets": []
  },
  "guardrails": {
    "minBodyPx": 14,
    "minSmallPx": 12,
    "minTextContrast": 4.5,
    "minFocusContrast": 3
  }
}
