{
  "$description": "Blue-black with steel-indigo light.",
  "$extensions": {
    "network.openvibe": {
      "name": "Midnight",
      "slug": "midnight",
      "mode": "dark",
      "generator": "openvibe.design"
    }
  },
  "color": {
    "bg": {
      "base": {
        "$type": "color",
        "$value": "#0a0e17",
        "$description": "The page behind everything",
        "$extensions": {
          "network.openvibe": {
            "css": "--bg-primary"
          }
        }
      },
      "surface": {
        "$type": "color",
        "$value": "#111827",
        "$description": "Bands and side panels",
        "$extensions": {
          "network.openvibe": {
            "css": "--bg-secondary"
          }
        }
      },
      "subtle": {
        "$type": "color",
        "$value": "#1a2235",
        "$description": "Wells, tracks and quiet fills",
        "$extensions": {
          "network.openvibe": {
            "css": "--bg-tertiary"
          }
        }
      },
      "raised": {
        "$type": "color",
        "$value": "#151d2e",
        "$description": "Cards, rows and sheets",
        "$extensions": {
          "network.openvibe": {
            "css": "--bg-card"
          }
        }
      },
      "hover": {
        "$type": "color",
        "$value": "#1e2a42",
        "$description": "A control under the pointer or finger",
        "$extensions": {
          "network.openvibe": {
            "css": "--bg-hover"
          }
        }
      },
      "input": {
        "$type": "color",
        "$value": "#0d1220",
        "$description": "Text fields",
        "$extensions": {
          "network.openvibe": {
            "css": "--bg-input"
          }
        }
      }
    },
    "text": {
      "primary": {
        "$type": "color",
        "$value": "#e2e8f0",
        "$description": "Body text and titles",
        "$extensions": {
          "network.openvibe": {
            "css": "--text-primary"
          }
        }
      },
      "secondary": {
        "$type": "color",
        "$value": "#94a3b8",
        "$description": "Supporting text",
        "$extensions": {
          "network.openvibe": {
            "css": "--text-secondary"
          }
        }
      },
      "muted": {
        "$type": "color",
        "$value": "#8693a5",
        "$description": "Hints and meta lines",
        "$extensions": {
          "network.openvibe": {
            "css": "--text-muted"
          }
        }
      }
    },
    "accent": {
      "base": {
        "$type": "color",
        "$value": "#6366f1",
        "$description": "Links, icons, focus rings",
        "$extensions": {
          "network.openvibe": {
            "css": "--accent"
          }
        }
      },
      "light": {
        "$type": "color",
        "$value": "#818cf8",
        "$description": "The accent a step lighter",
        "$extensions": {
          "network.openvibe": {
            "css": "--accent-light"
          }
        }
      },
      "dark": {
        "$type": "color",
        "$value": "#4f46e5",
        "$description": "The accent a step darker",
        "$extensions": {
          "network.openvibe": {
            "css": "--accent-dark"
          }
        }
      },
      "strong": {
        "$type": "color",
        "$value": "#6164ec",
        "$description": "Filled buttons",
        "$extensions": {
          "network.openvibe": {
            "css": "--accent-strong"
          }
        }
      },
      "on": {
        "$type": "color",
        "$value": "#ffffff",
        "$description": "Text on the accent",
        "$extensions": {
          "network.openvibe": {
            "css": "--on-accent"
          }
        }
      },
      "onStrong": {
        "$type": "color",
        "$value": "#ffffff",
        "$description": "Text on a filled button",
        "$extensions": {
          "network.openvibe": {
            "css": "--on-accent-strong"
          }
        }
      },
      "glow": {
        "$type": "color",
        "$value": "rgba(99,102,241,0.35)",
        "$description": "Glows and halos",
        "$extensions": {
          "network.openvibe": {
            "css": "--accent-glow"
          }
        }
      }
    },
    "line": {
      "base": {
        "$type": "color",
        "$value": "#1e293b",
        "$description": "Dividers and outlines",
        "$extensions": {
          "network.openvibe": {
            "css": "--border"
          }
        }
      },
      "strong": {
        "$type": "color",
        "$value": "#334155",
        "$description": "Outlines that must show",
        "$extensions": {
          "network.openvibe": {
            "css": "--border-light"
          }
        }
      }
    },
    "status": {
      "ok": {
        "base": {
          "$type": "color",
          "$value": "#22c55e",
          "$description": "Success fills",
          "$extensions": {
            "network.openvibe": {
              "css": "--success"
            }
          }
        },
        "text": {
          "$type": "color",
          "$value": "#22c55e",
          "$description": "Success text on any surface",
          "$extensions": {
            "network.openvibe": {
              "css": "--success-text"
            }
          }
        }
      },
      "warn": {
        "base": {
          "$type": "color",
          "$value": "#f59e0b",
          "$description": "Warning fills",
          "$extensions": {
            "network.openvibe": {
              "css": "--warning"
            }
          }
        },
        "text": {
          "$type": "color",
          "$value": "#f59e0b",
          "$description": "Warning text on any surface",
          "$extensions": {
            "network.openvibe": {
              "css": "--warning-text"
            }
          }
        }
      },
      "bad": {
        "base": {
          "$type": "color",
          "$value": "#ef4444",
          "$description": "Danger fills",
          "$extensions": {
            "network.openvibe": {
              "css": "--danger"
            }
          }
        },
        "text": {
          "$type": "color",
          "$value": "#f26262",
          "$description": "Danger text on any surface",
          "$extensions": {
            "network.openvibe": {
              "css": "--danger-text"
            }
          }
        }
      },
      "info": {
        "base": {
          "$type": "color",
          "$value": "#38bdf8",
          "$description": "Information fills",
          "$extensions": {
            "network.openvibe": {
              "css": "--info"
            }
          }
        },
        "text": {
          "$type": "color",
          "$value": "#38bdf8",
          "$description": "Information text on any surface",
          "$extensions": {
            "network.openvibe": {
              "css": "--info-text"
            }
          }
        }
      },
      "live": {
        "base": {
          "$type": "color",
          "$value": "#ef4444",
          "$description": "LIVE badges",
          "$extensions": {
            "network.openvibe": {
              "css": "--live-red"
            }
          }
        },
        "text": {
          "$type": "color",
          "$value": "#f26262",
          "$description": "LIVE text on any surface",
          "$extensions": {
            "network.openvibe": {
              "css": "--live-red-text"
            }
          }
        }
      }
    }
  },
  "motion": {
    "duration": {
      "1": {
        "$type": "duration",
        "$value": "120ms",
        "$description": "A quick answer",
        "$extensions": {
          "network.openvibe": {
            "css": "--ov-dur-1"
          }
        }
      },
      "2": {
        "$type": "duration",
        "$value": "200ms",
        "$description": "A change of state",
        "$extensions": {
          "network.openvibe": {
            "css": "--ov-dur-2"
          }
        }
      },
      "3": {
        "$type": "duration",
        "$value": "320ms",
        "$description": "A lift or a glow",
        "$extensions": {
          "network.openvibe": {
            "css": "--ov-dur-3"
          }
        }
      },
      "4": {
        "$type": "duration",
        "$value": "520ms",
        "$description": "The slow way back",
        "$extensions": {
          "network.openvibe": {
            "css": "--ov-dur-4"
          }
        }
      }
    },
    "easing": {
      "out": {
        "$type": "cubicBezier",
        "$value": [
          0.2,
          0.8,
          0.2,
          1
        ],
        "$description": "Leaves fast, settles slow",
        "$extensions": {
          "network.openvibe": {
            "css": "--ov-ease-out"
          }
        }
      },
      "spring": {
        "$type": "cubicBezier",
        "$value": [
          0.34,
          1.56,
          0.64,
          1
        ],
        "$description": "Overshoots, then comes back",
        "$extensions": {
          "network.openvibe": {
            "css": "--ov-ease-spring"
          }
        }
      },
      "in-out": {
        "$type": "cubicBezier",
        "$value": [
          0.65,
          0,
          0.35,
          1
        ],
        "$description": "Even on both sides",
        "$extensions": {
          "network.openvibe": {
            "css": "--ov-ease-in-out"
          }
        }
      }
    }
  },
  "shape": {
    "radius": {
      "1": {
        "$type": "dimension",
        "$value": "10px",
        "$description": "Small things: chips, inputs, rows",
        "$extensions": {
          "network.openvibe": {
            "css": "--ov-radius-1",
            "shape": "default"
          }
        }
      },
      "2": {
        "$type": "dimension",
        "$value": "14px",
        "$description": "Cards, sections, panels",
        "$extensions": {
          "network.openvibe": {
            "css": "--ov-radius-2",
            "shape": "default"
          }
        }
      },
      "3": {
        "$type": "dimension",
        "$value": "20px",
        "$description": "Sheets, dialogs, big surfaces",
        "$extensions": {
          "network.openvibe": {
            "css": "--ov-radius-3",
            "shape": "default"
          }
        }
      }
    }
  },
  "brand": {
    "o": {
      "$type": "color",
      "$value": "#4f7cff",
      "$description": "The mark's O",
      "$extensions": {
        "network.openvibe": {
          "css": "--ov-brand-o"
        }
      }
    },
    "v": {
      "$type": "color",
      "$value": "#8b5cf6",
      "$description": "The mark's V",
      "$extensions": {
        "network.openvibe": {
          "css": "--ov-brand-v"
        }
      }
    }
  }
}
