{
  "schema_version": 1,
  "revision": "2026-10-30.2",
  "canonical_base": "https://brand.nikuniku.ai/assets/rebrand-kit-v0.1/",
  "kind": "real-time WebGL2 original brand sculpture; not target model output",
  "entry": "artwork/interactive/demo.html",
  "script": "artwork/interactive/sculpture.js",
  "style": "artwork/interactive/sculpture.css",
  "fallback_asset_id": "artwork.release-cover-dark.png",
  "fallback_path": "artwork/release-cover-dark.png",
  "files": [
    {
      "asset_id": "interactive.parametric.mjs",
      "path": "artwork/interactive/parametric.mjs",
      "bytes": 4200,
      "sha256": "86fb0b3d35ef25cc53baf160315f1994c753ed6c90b6ede8247e24d9892ba3f8"
    },
    {
      "asset_id": "interactive.README.md",
      "path": "artwork/interactive/README.md",
      "bytes": 3978,
      "sha256": "b6210e282173a06397545112f43ae47d079aeed80298435e1a9e95e0a17bb85c"
    },
    {
      "asset_id": "interactive.export-mesh.py",
      "path": "artwork/interactive/export-mesh.py",
      "bytes": 2589,
      "sha256": "d32838d5289a99a136f8544c479f500ba5de49d24a5b389fe0eeaecb279617cb"
    },
    {
      "asset_id": "interactive.fetch-vendor.py",
      "path": "artwork/interactive/fetch-vendor.py",
      "bytes": 1410,
      "sha256": "c29ef7a53ec7f6167ca1c8baa3a9e9c1fc73f73a72ee9ad7f631186a6fa56716"
    },
    {
      "asset_id": "interactive.sculpture.json",
      "path": "artwork/interactive/sculpture.json",
      "bytes": 1560,
      "sha256": "ab5b89c9ac8d1d40e4982e84515126037560fe87c963aa9bfaee36e6a019fe9f"
    },
    {
      "asset_id": "interactive.sculpture.bin",
      "path": "artwork/interactive/sculpture.bin",
      "bytes": 1181664,
      "sha256": "b47a31c0f71e3a8afc9806a55efee66875bea5acaa44d68c4b6e7a1bd894cc6c"
    },
    {
      "asset_id": "interactive.mesh-data.mjs",
      "path": "artwork/interactive/mesh-data.mjs",
      "bytes": 2693,
      "sha256": "1261093a17e3781f620b75823150ccd76fce4d9f417d6cbd0fb0d6929dfd8344"
    },
    {
      "asset_id": "interactive.sculpture.js",
      "path": "artwork/interactive/sculpture.js",
      "bytes": 14665,
      "sha256": "dee66b7e89810ee332bf00a3036939961ef27be37c0e1571ad5003285162a9c1"
    },
    {
      "asset_id": "interactive.sculpture.css",
      "path": "artwork/interactive/sculpture.css",
      "bytes": 1219,
      "sha256": "6a7efe1c1a6a4d08e992f5c9ed15cc932c41e8e5151d50b885605c98323e41a5"
    },
    {
      "asset_id": "interactive.vendor.three.module.min.js",
      "path": "artwork/interactive/vendor/three.module.min.js",
      "bytes": 364998,
      "sha256": "36a60b0120335f89a80a0dab70292292b0ec414b3d05e83cd09a3ea428c6712a"
    },
    {
      "asset_id": "interactive.vendor.three.core.min.js",
      "path": "artwork/interactive/vendor/three.core.min.js",
      "bytes": 384222,
      "sha256": "6486aa0d719cfa87ec88dc47223b59b1fb8417a1a407fc0e52467c943e2f8cc9"
    },
    {
      "asset_id": "interactive.vendor.LICENSE.txt",
      "path": "artwork/interactive/vendor/LICENSE.txt",
      "bytes": 1081,
      "sha256": "8b378ebe60e2fe500158cb0ac71cb5e8b7d92953c2abcc63a0eb90499653b5bc"
    },
    {
      "asset_id": "interactive.vendor.SOURCES.json",
      "path": "artwork/interactive/vendor/SOURCES.json",
      "bytes": 1013,
      "sha256": "272ce948c3d09d86988204743b01f1c7fed9b341f980a8b02492ef9f9ead9bb4"
    },
    {
      "asset_id": "interactive.demo.html",
      "path": "artwork/interactive/demo.html",
      "bytes": 1925,
      "sha256": "cc5a26245a51881345a7aacd3fa81907e504b364b12420465633932b89a1b430"
    },
    {
      "asset_id": "interactive.computed-motion.html",
      "path": "computed-motion.html",
      "bytes": 9487,
      "sha256": "6ed2aa95e95c731a0609fdb70449eca9d869866a17b88e80b50e312892275272"
    }
  ],
  "runtime": {
    "library": "Three.js",
    "version": "0.184.0",
    "module_delivery": "self-hosted, no CDN",
    "hosting": "HTTPS static server; file:// retains poster, modules/fetch need server",
    "paid_calls": 0,
    "telemetry": false,
    "external_writes": false
  },
  "motion": {
    "idle_rad_per_second": 0.045,
    "pointer_yaw_max_rad": 0.18,
    "pointer_pitch_max_rad": 0.08,
    "scroll_max_rad": 0.495,
    "pause": "freeze rendering and input offsets",
    "reset": "initial orientation; paused state preserved",
    "reduced_motion": "static by default; explicit opt-in allowed",
    "offscreen_hidden": "no animation loop",
    "touch": "normal native scrolling; no drag capture"
  },
  "states": [
    "static/no-JS",
    "loading/poster",
    "active",
    "paused",
    "offscreen/hidden",
    "reduced-motion",
    "WebGL2 unavailable",
    "asset load error/timeout",
    "context loss/retry"
  ],
  "source_mesh": "artwork/source/contact-study.blend",
  "preserve": [
    "unchanged identity logo paths",
    "library attribution and licenses",
    "model/runtime IDs, LICENSE/NOTICE and real output provenance"
  ],
  "acceptance": [
    "Real mesh pixels and orientation respond, not flat image rotation",
    "Keyboard pause/reset, normal touch scroll, reduced motion and hidden suspension",
    "Failed mesh/WebGL/context-loss return to readable static poster and retry",
    "Check native text, 200% text, all aspect sizes and actual download hashes"
  ],
  "computed_examples": {
    "entry": "computed-motion.html",
    "surface": "GPU evaluated original contact-study.py parametric equations; .035 shell; no exact Blender bevel/Cycles parity",
    "source": "artwork/interactive/parametric.mjs",
    "tension_range": [
      0,
      1
    ],
    "timeline_range_seconds": [
      0,
      4
    ],
    "timeline_default": "paused; seek samples one state; play runs once; replay restarts",
    "runtime_video": "brand packaging only; never replaces actual footage or model evidence",
    "exports": "Existing MP4s use prior Blender motion. New computed sequence has not been exported as a matching MP4."
  }
}
