{
  "schema_version": 1,
  "revision": "2026-10-30.11",
  "canonical_base": "https://brand.nikuniku.ai/assets/rebrand-kit-v0.1/",
  "kind": "Kinetic contour-following fibers, native Canvas 2D projection; not target model output",
  "entry": "artwork/interactive/demo.html",
  "script": "artwork/interactive/sculpture.js",
  "style": "artwork/interactive/sculpture.css",
  "fallback_asset_id": "interactive.logo-lines-poster.svg",
  "fallback_path": "artwork/interactive/logo-lines-poster.svg",
  "files": [
    {
      "asset_id": "interactive.build-poster.mjs",
      "path": "artwork/interactive/build-poster.mjs",
      "bytes": 1539,
      "sha256": "06e9ce738f0ac67307678c2c9ec61b0a6c0fd60b040ffa39fa337e0d80dc4fd7"
    },
    {
      "asset_id": "interactive.build-fibers.py",
      "path": "artwork/interactive/build-fibers.py",
      "bytes": 3333,
      "sha256": "72102eca7a58703470973679bb29aefdc78af8309ddb519202ebb58a50e67ae9"
    },
    {
      "asset_id": "interactive.fibers-data.mjs",
      "path": "artwork/interactive/fibers-data.mjs",
      "bytes": 36449,
      "sha256": "ea6cec234b7404b23e89d62e830ff12542a9250704c2796627b4b78ccac4e283"
    },
    {
      "asset_id": "interactive.logo-master.svg",
      "path": "artwork/interactive/logo-master.svg",
      "bytes": 854,
      "sha256": "8aba8c44b773a715baa52a370ac98ac8f10cc7e2052f6bb8313b6ff47d290cb1"
    },
    {
      "asset_id": "interactive.logo-paths.mjs",
      "path": "artwork/interactive/logo-paths.mjs",
      "bytes": 654,
      "sha256": "4d1a524bad5ef9ffcd1b4de9cd7eeae0df06f0839c5adf82bb4dd71dc8b61fc9"
    },
    {
      "asset_id": "interactive.logo-lines.mjs",
      "path": "artwork/interactive/logo-lines.mjs",
      "bytes": 16379,
      "sha256": "56f802b5bf5bc9f0c30628d15a73a41fd60ed17ad77fb47d64920999ce0ad328"
    },
    {
      "asset_id": "interactive.logo-lines-poster.svg",
      "path": "artwork/interactive/logo-lines-poster.svg",
      "bytes": 63838,
      "sha256": "75e8842daac8c13f144503ec4863d2aed035ff5845c35b5327f87049e6116aa4"
    },
    {
      "asset_id": "interactive.README.md",
      "path": "artwork/interactive/README.md",
      "bytes": 1714,
      "sha256": "b57f563e7ec7de858d76a883d6a5a2a11defa2a3304bcdfe42665f8e5fa35f00"
    },
    {
      "asset_id": "interactive.sculpture.js",
      "path": "artwork/interactive/sculpture.js",
      "bytes": 509,
      "sha256": "be238e661f68538ee63021702073e39f5f8b07380279f0061ad80111b3b0c1bd"
    },
    {
      "asset_id": "interactive.sculpture.css",
      "path": "artwork/interactive/sculpture.css",
      "bytes": 1397,
      "sha256": "ebcb65fb0eda7ef97d71a8b833821ec5923f37703390c34f6dcbcfec3ffebebd"
    },
    {
      "asset_id": "interactive.demo.html",
      "path": "artwork/interactive/demo.html",
      "bytes": 2364,
      "sha256": "c1f52e41184737b7c8e3942656c7c29e19fd7340f6af99aa9c7753c9a5bb3f08"
    },
    {
      "asset_id": "interactive.computed-motion.html",
      "path": "computed-motion.html",
      "bytes": 12072,
      "sha256": "bb6dd7f304d85fd0da006f06d7500034c1a153f6cc9378f7eb53fb48c2addf0d"
    }
  ],
  "runtime": {
    "library": "Canvas 2D native browser",
    "version": "native API",
    "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": "bounded multi-frequency sway, no continuous full spin",
    "idle_yaw_max_rad": 0.96,
    "cycle_seconds": null,
    "default": "visible open wire volume with slow bounded orbit and breathing plus direction/speed-driven XYZ rotation",
    "axes": 3,
    "settle_seconds_approx": 6,
    "velocity_normalized_cap": 2,
    "velocity_decay_seconds": 0.28,
    "pose_lag_seconds": 0.11,
    "velocity_bend": "Contour tangent/normal displacements, anchored ends, phase offset per layer",
    "inputs": [
      "pointer position/direction/speed",
      "scroll direction/speed",
      "mouse drag orbit",
      "Alt+wheel or ctrl+wheel pinch dolly",
      "two-finger pinch",
      "zoom buttons",
      "aggregation slider",
      "reset"
    ],
    "idle": "30fps desktop /24fps mobile cap; visible-only breathing; stops on pause, reset, offscreen or hidden",
    "pointer_yaw_max_rad": 1.12,
    "pointer_pitch_max_rad": 0.82,
    "scroll_max_rad": 0.75,
    "pause": "freeze rendering and input offsets",
    "reset": "smooth full convergence and hold; new pointer/scroll input or resume releases hold",
    "reduced_motion": "static by default; explicit opt-in allowed",
    "offscreen_hidden": "no animation loop",
    "touch": "single-finger native vertical scroll; two-finger pinch inside sculpture",
    "coherent_groups": 3,
    "material": {
      "surface": "open wire volume only; no polygon fill, skin, caps or solid side walls",
      "depth_model_units_max": 88,
      "filled_polygons": 0,
      "wire_count": {
        "desktop": 57,
        "mobile": 31
      },
      "fibers": "contour-following filaments occupy front, back and bowed intermediate depths",
      "static_fallback": "front contour wire poster"
    },
    "spatial_interaction": {
      "pointer": "direction and speed steer local hinges and global orbit",
      "drag": "mouse capture for global orbit; touch retains native scroll",
      "wheel": "ordinary wheel preserves page scroll; Alt+wheel or ctrl+wheel pinch zoom only inside sculpture",
      "zoom_persistence": "framing persists until reset; +/− buttons step12%, range65–140%; full logo remains zoomable",
      "return": "after1.3s inactivity, ease to exact logo by about6s, hold through7.5s, then resume breathing; camera framing persists",
      "ambient": "continuous smooth seeded multi-scale wind and breathing; no periodic dead phase",
      "zoom_range": [
        -0.35,
        0.4
      ]
    },
    "rotation_axes": [
      "X",
      "Y",
      "Z"
    ],
    "projection": "Euler X then Y then Z, bounded perspective",
    "idle_open_range": [
      0.15,
      0.4
    ],
    "frame_caps": {
      "desktop": 30,
      "mobile": 24
    },
    "idle_phase": "smooth seeded noise at3.7s and9.3s scales plus slow breathing; grouped shapes remain coherent"
  },
  "states": [
    "static/no-JS",
    "loading/poster",
    "active",
    "paused",
    "offscreen/hidden",
    "reduced-motion",
    "Canvas unavailable",
    "module load error/refresh"
  ],
  "logo_derivation": {
    "source": "artwork/interactive/logo-master.svg",
    "paths": "artwork/interactive/logo-paths.mjs",
    "renderer": "artwork/interactive/logo-lines.mjs",
    "fiber_data": "artwork/interactive/fibers-data.mjs",
    "rebuild": "artwork/interactive/build-fibers.py",
    "identity_boundary": "Secondary motion artwork only; never replace master/logo IDs. Official logo remains fixed, unoutlined, unrotated and untextured.",
    "source_sha256": "8aba8c44b773a715baa52a370ac98ac8f10cc7e2052f6bb8313b6ff47d290cb1",
    "method": "Curved inward isocontours follow the meat silhouette and bone negative space; sparse smoothed secondary-art sampling; three coherent hinges; direction and normalized velocity bend along contour tangent/normal with damped momentum and anchored endpoints; pointer/scroll drive opening and return; ambient breathing while visible; reset holds the full logo form; no horizontal scanlines",
    "status": "current input-driven kinetic secondary-art candidate; fixed official logo stays unchanged; supersedes solid-shell and horizontal-scanline studies"
  },
  "preserve": [
    "unchanged identity logo paths",
    "library attribution and licenses",
    "model/runtime IDs, LICENSE/NOTICE and real output provenance"
  ],
  "acceptance": [
    "Real fine-line pixels respond to projection, not poster rotation",
    "Keyboard pause/reset, normal touch scroll, reduced motion and hidden suspension",
    "Failed line module or Canvas returns 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": "Sparse curved meat-contour fibers; three coherent hinges; input-driven pointer/scroll pose with brief damped settling and visible-only ambient breathing capped at30fps desktop /24fps mobile; native Canvas 2D projection; secondary artwork only",
    "source": "artwork/interactive/logo-lines.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": "Current contour-wire intro/outro MP4/WebM in three aspects, README GIF and SVG/PNG endframes provided in artwork-manifest.json. Never retrieve retired exports."
  }
}
