{
  "$schema": "https://mian.ro/schema/v2/registry.json",
  "schemaVersion": "2.0.0",
  "generatedAt": "2026-10-02T13:14:06.957Z",
  "id": "kalguksu",
  "name": "Kalguksu",
  "family": "Linear",
  "origin": "Korea",
  "tagline": "Knife-cut, precise, clean.",
  "description": "Kalguksu means \"knife noodles\": dough rolled flat on a floured board and cut by hand into clean strips. Kalguksu is a monochrome, grid-true system with crisp 45° cut corners, tabular numbers and motion that slices rather than fades.",
  "inspiration": [
    "Cut with a knife → 45° cut corners on badges, bars and progress ends; content wipes in like a slice",
    "Rolled flat on a board → a strict grid: full table rules, square hit areas, a dotted chart grid",
    "Flour-dusted dough → pure white and ink black, one zucchini-green accent from the garnish",
    "Hand-measured strips → monospaced numbers and labels, blade-thin switch knob"
  ],
  "traits": {
    "mood": [
      "precise",
      "structured",
      "monochrome",
      "dependable",
      "engineered"
    ],
    "intensity": 2,
    "contrast": "high",
    "geometry": "grid-true, crisp rules",
    "type": "sans with tabular figures",
    "surface": "flat with rules",
    "motion": "crisp",
    "goodFor": [
      "finance",
      "admin dashboards",
      "b2b saas",
      "analytics",
      "logistics"
    ],
    "lessFor": [
      "children",
      "playful consumer"
    ],
    "density": "default"
  },
  "license": "LicenseRef-MIAN-1.0",
  "designLanguage": {
    "essence": "Kalguksu means “knife noodles”: dough rolled flat on a floured board and cut into clean strips by hand. The language is monochrome, measured and exact, a strict grid, full table rules, tabular numbers, and its signature is the cut: 45° corners on labels, bars and progress ends, and motion that slices content in rather than fading it.",
    "principles": [
      "The grid is visible: tables are fully ruled, segmented controls share borders, charts sit on a dotted board.",
      "Cut, don’t round: small elements get a 45° chamfer (6px) instead of a radius.",
      "Ink and flour: black, white and greys; one zucchini-green accent for focus and meaning.",
      "Numbers and labels are monospaced and tabular.",
      "Motion slices along a line (clip-path wipes) in 120–240ms with a sharp in-out curve."
    ],
    "aspects": {
      "Shape": "6px fields, 8px containers, 0px badges with a cut top-right corner. The switch knob is a thin blade.",
      "Surface": "White on white with 1px borders; card headers and modal headers are separated by a full rule; footers sit on surface-2.",
      "Colour": "Pure monochrome; the accent (deep green / light green in dark) is reserved for focus rings and highlights.",
      "Type": "Clean sans at 600 with tight tracking (−0.035em) for headings; uppercase mono labels at 11px with 0.06em tracking.",
      "Motion": "kalguksu-drop: clip-path inset(0 0 100% 0) → inset(0), 240ms cubic-bezier(.7,0,.3,1). Tab underlines are drawn left-to-right with scaleX.",
      "Data": "Square bars with the top-left corner cut, on a 12px dot grid; progress is a tick-marked strip with a slanted leading edge; dashed grid lines."
    },
    "extend": [
      "Give the component 1px var(--mn-border) edges and align every internal division to a shared rule, no floating gaps.",
      "Label with uppercase mono (font: 500 .6875rem var(--mn-font-mono); letter-spacing .06em).",
      "Mark importance with a clip-path chamfer: polygon(0 0, calc(100% - 6px) 0, 100% 6px, 100% 100%, 0 100%).",
      "Selected = inverted (fg background, bg text). Pressing adds an inset 1px line; nothing moves."
    ],
    "avoid": [
      "Large radii and pills",
      "Soft shadows",
      "Colour used decoratively",
      "Proportional numbers in data",
      "Fade-only or bouncy motion"
    ],
    "recipe": "[data-noodle=\"kalguksu\"] .tile {\n  padding: 12px 14px; border: 1px solid var(--mn-border); border-radius: 0;\n  background: var(--mn-surface); font-feature-settings: \"tnum\";\n  clip-path: polygon(0 0, calc(100% - 6px) 0, 100% 6px, 100% 100%, 0 100%);\n}\n[data-noodle=\"kalguksu\"] .tile[aria-selected=\"true\"] { background: var(--mn-fg); color: var(--mn-bg); }\n[data-noodle=\"kalguksu\"] .tile .label { font: 500 .6875rem/1 var(--mn-font-mono); text-transform: uppercase; letter-spacing: .06em; }"
  },
  "psychology": {
    "temperature": "neutral",
    "colours": [
      {
        "role": "Primary",
        "hex": "#0a0a0a",
        "family": "Black and ink",
        "depth": "deep, muted",
        "says": "Authority, precision, luxury. It makes everything next to it look more deliberate.",
        "use": "Fashion, editorial, developer tools, any brand that will let its content be the colour.",
        "risk": "Pure #000 on pure #fff is harsh on long text. Soften one of the two slightly, or warm both."
      },
      {
        "role": "Accent",
        "hex": "#2f6f3e",
        "family": "Green",
        "depth": "mid",
        "says": "Growth, health, permission, money. The easiest colour to look at for a long time.",
        "use": "Finance, health, food, sustainability, and “go” or success states.",
        "risk": "Success messages are green too: a green brand needs a success state that is clearly a status (icon, words). Claims of sustainability made with green alone read as greenwashing."
      },
      {
        "role": "Page",
        "hex": "#ffffff",
        "family": "White and paper",
        "depth": "pale, muted",
        "says": "Space, honesty, simplicity. Warm whites feel human, cool whites feel clinical.",
        "use": "Almost everything. The page colour sets the temperature of the whole brand.",
        "risk": "Empty is not the same as calm: white space needs a grid behind it."
      }
    ],
    "relation": "A neutral primary with one green accent: the accent means “look here” precisely because nothing else is coloured.",
    "type": {
      "body": {
        "class": "neutral",
        "name": "Neutral sans",
        "says": "Clear, modern, impartial. The voice of software and signage.",
        "use": "Interfaces, documentation, most product marketing.",
        "risk": "The same few neutral sans typefaces set every generated page. Without a distinct weight, size or pairing it reads as a template."
      },
      "heading": {
        "class": "neutral",
        "name": "Neutral sans",
        "says": "Clear, modern, impartial. The voice of software and signage.",
        "use": "Interfaces, documentation, most product marketing.",
        "risk": "The same few neutral sans typefaces set every generated page. Without a distinct weight, size or pairing it reads as a template."
      },
      "weight": 600,
      "summary": "One voice throughout: neutral sans. Headings are semibold, which reads as confident without shouting."
    },
    "personality": {
      "reads": [
        "precise",
        "structured",
        "monochrome",
        "dependable",
        "engineered"
      ],
      "intensity": 2,
      "dimensions": [
        "Competence"
      ],
      "suits": [
        "finance",
        "admin dashboards",
        "b2b saas",
        "analytics",
        "logistics"
      ],
      "lessFor": [
        "children",
        "playful consumer"
      ],
      "tone": "Calm and clear. Short sentences, one idea each, a friendly but not chatty register."
    },
    "logo": "A simple geometric mark with slightly softened corners fits; avoid both hard spikes and full circles."
  },
  "url": "https://mian.ro/noodles/kalguksu",
  "markdownUrl": "https://mian.ro/ai/noodles/kalguksu.md",
  "stylesheet": "https://mian.ro/dist/noodles/kalguksu.css",
  "usage": "<html data-noodle=\"kalguksu\">",
  "fonts": {
    "sans": "ui-sans-serif, system-ui, -apple-system, \"Segoe UI Variable Text\", \"Segoe UI\", \"Helvetica Neue\", Helvetica, Arial, sans-serif",
    "heading": "ui-sans-serif, system-ui, -apple-system, \"Segoe UI Variable Text\", \"Segoe UI\", \"Helvetica Neue\", Helvetica, Arial, sans-serif",
    "mono": "ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, \"Liberation Mono\", monospace"
  },
  "headingWeight": 600,
  "radius": {
    "field": "6px",
    "box": "8px",
    "badge": "0px"
  },
  "shadow": "subtle",
  "density": "default",
  "glass": false,
  "light": {
    "bg": "#ffffff",
    "surface": "#ffffff",
    "surface2": "#f4f4f3",
    "fg": "#0a0a0a",
    "muted": "#5e5e5e",
    "border": "#e6e6e6",
    "input": "#d0d0d0",
    "primary": "#0a0a0a",
    "primaryFg": "#ffffff",
    "secondary": "#f4f4f3",
    "secondaryFg": "#0a0a0a",
    "accent": "#2f6f3e",
    "accentFg": "#ffffff",
    "ring": "#2f6f3e",
    "success": "#15803d",
    "successFg": "#ffffff",
    "warning": "#b45309",
    "warningFg": "#ffffff",
    "danger": "#dc2626",
    "dangerFg": "#ffffff",
    "info": "#0369a1",
    "infoFg": "#ffffff",
    "primaryText": "#0a0a0a",
    "secondaryText": "#717171",
    "accentText": "#2f6f3e",
    "successText": "#14793a",
    "warningText": "#aa4f09",
    "dangerText": "#c72323",
    "infoText": "#0369a1",
    "link": "#0a0a0a"
  },
  "dark": {
    "bg": "#0a0a0a",
    "surface": "#111111",
    "surface2": "#1b1b1b",
    "fg": "#ededed",
    "muted": "#a3a3a3",
    "border": "#262626",
    "input": "#3b3b3b",
    "primary": "#ededed",
    "primaryFg": "#0a0a0a",
    "secondary": "#1b1b1b",
    "secondaryFg": "#ededed",
    "accent": "#86c795",
    "accentFg": "#0b1f10",
    "ring": "#86c795",
    "success": "#4ade80",
    "successFg": "#052e16",
    "warning": "#fbbf24",
    "warningFg": "#1f1300",
    "danger": "#f87171",
    "dangerFg": "#210505",
    "info": "#38bdf8",
    "infoFg": "#03202d",
    "primaryText": "#ededed",
    "secondaryText": "#808080",
    "accentText": "#86c795",
    "successText": "#4ade80",
    "warningText": "#fbbf24",
    "dangerText": "#f87171",
    "infoText": "#38bdf8",
    "link": "#ededed"
  },
  "css": "[data-noodle=\"kalguksu\"] {\n  --mn-bg: light-dark(#ffffff, #0a0a0a);\n  --mn-surface: light-dark(#ffffff, #111111);\n  --mn-surface-2: light-dark(#f4f4f3, #1b1b1b);\n  --mn-fg: light-dark(#0a0a0a, #ededed);\n  --mn-muted: light-dark(#5e5e5e, #a3a3a3);\n  --mn-border: light-dark(#e6e6e6, #262626);\n  --mn-input: light-dark(#d0d0d0, #3b3b3b);\n  --mn-primary: light-dark(#0a0a0a, #ededed);\n  --mn-primary-fg: light-dark(#ffffff, #0a0a0a);\n  --mn-secondary: light-dark(#f4f4f3, #1b1b1b);\n  --mn-secondary-fg: light-dark(#0a0a0a, #ededed);\n  --mn-accent: light-dark(#2f6f3e, #86c795);\n  --mn-accent-fg: light-dark(#ffffff, #0b1f10);\n  --mn-ring: light-dark(#2f6f3e, #86c795);\n  --mn-success: light-dark(#15803d, #4ade80);\n  --mn-success-fg: light-dark(#ffffff, #052e16);\n  --mn-warning: light-dark(#b45309, #fbbf24);\n  --mn-warning-fg: light-dark(#ffffff, #1f1300);\n  --mn-danger: light-dark(#dc2626, #f87171);\n  --mn-danger-fg: light-dark(#ffffff, #210505);\n  --mn-info: light-dark(#0369a1, #38bdf8);\n  --mn-info-fg: light-dark(#ffffff, #03202d);\n  --mn-primary-text: light-dark(#0a0a0a, #ededed);\n  --mn-secondary-text: light-dark(#717171, #808080);\n  --mn-accent-text: light-dark(#2f6f3e, #86c795);\n  --mn-success-text: light-dark(#14793a, #4ade80);\n  --mn-warning-text: light-dark(#aa4f09, #fbbf24);\n  --mn-danger-text: light-dark(#c72323, #f87171);\n  --mn-info-text: light-dark(#0369a1, #38bdf8);\n  --mn-link: light-dark(#0a0a0a, #ededed);\n  --mn-font: ui-sans-serif, system-ui, -apple-system, \"Segoe UI Variable Text\", \"Segoe UI\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --mn-font-heading: ui-sans-serif, system-ui, -apple-system, \"Segoe UI Variable Text\", \"Segoe UI\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --mn-font-mono: ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, \"Liberation Mono\", monospace;\n  --mn-heading-weight: 600;\n  --mn-radius-field: 6px;\n  --mn-radius-box: 8px;\n  --mn-radius-badge: 0px;\n  --mn-shadow-sm: 0 1px 2px rgb(0 0 0 / .05);\n  --mn-shadow-md: 0 2px 6px -1px rgb(0 0 0 / .08), 0 1px 2px rgb(0 0 0 / .04);\n  --mn-shadow-lg: 0 12px 32px -8px rgb(0 0 0 / .18), 0 4px 8px -4px rgb(0 0 0 / .08);\n  --mn-size-xs: 26px;\n  --mn-size-sm: 32px;\n  --mn-size-md: 38px;\n  --mn-size-lg: 46px;\n  --mn-text-sm: 14px;\n  --mn-surface-alpha: 100%;\n  --mn-backdrop: none;\n  --mn-bg-image: none;\n}\n"
}
