{
  "name": "SHAUGHV ambient background",
  "required_for_cdn_sites": false,
  "script": "https://cdn.shaughv.com/js/shaughv-ambient.js?v=2026-10-21.2",
  "example": "https://cdn.shaughv.com/ambient-background",
  "renderer": "Canvas 2D; no external dependencies, images, video, fonts, or WebGPU",
  "source": {
    "project": "QorkMe",
    "repository": "https://github.com/QubeTX/QorkMe",
    "revision": "50b366712f0c3e4f4c7d88dcc2c09ef91f0ff79e",
    "adaptation": "Original procedural field, pointer displacement, pulse and finite wake; standalone mounting, scoped coordinates, configurable colors and glyphs; field ink alpha multiplied by 1.4 for visibility. Wake alpha and masks are unchanged.",
    "license": "Apache-2.0 with ObsidianUI MIT attribution for the Bayer/character treatment",
    "license_url": "https://cdn.shaughv.com/brand/shaughv/ambient/LICENSE-APACHE-2.0.txt",
    "notices_url": "https://cdn.shaughv.com/brand/shaughv/ambient/NOTICE.txt"
  },
  "defaults": { "target": "document.body", "layout": "page", "color": "orange", "secondary": "same as primary for a custom color", "glyphs": "QORK.ME", "home": false },
  "presets": {
    "orange": { "primary": "#FF5E1A", "secondary": "#FF5E1A", "background": "#F5F5F0" },
    "sage": { "primary": "#5B8A5B", "secondary": "#5B8A5B", "background": "#F5F5F0" },
    "black": { "primary": "#000000", "secondary": "#000000", "background": "#F5F5F0" },
    "white": { "primary": "#FFFFFF", "secondary": "#FFFFFF", "background": "#171815" },
    "qork-ivory": { "primary": "#2663e1", "secondary": "#6f40e1", "fallback": "#5474d1", "background": "#f6f4ef" }
  },
  "integration": {
    "html": "<script src=\"https://cdn.shaughv.com/js/shaughv-ambient.js?v=2026-10-21.2\"></script>\n<script>const ambient = ShaughvAmbient.mount({ color: 'orange' });</script>",
    "javascript": "const ambient = ShaughvAmbient.mount({ target: heroElement, layout: 'stage', color: 'var(--site-accent)', secondary: '#8359c7', glyphs: 'STUDIO.' });\n// On unmount:\nambient.destroy();",
    "layering": "Run after the target exists. Set page background yourself; keep content position:relative with z-index:1. For bounded targets set position:relative, isolation:isolate and an explicit size. Canvases are transparent at z-index:0 and pointer-events:none.",
    "ownership": "Opt-in only. New mounts replace the previous instance on the same target. Destroy when removing a framework-owned target. Separate targets can own separate instances.",
    "colors": "Preset or valid CSS color, resolved against target at mount/setColor. Optional secondary hue. Call setColor again after theme-variable changes. Suggested background colors are never applied automatically. Canvas colors render in sRGB.",
    "api": ["mount(options)", "setColor(primary, secondary?)", "pause(boolean)", "pulse()", "destroy()", "ShaughvAmbient.palettes"]
  },
  "layouts": {
    "page": "24fps, up to 180 columns at approximately 11px cells; clear center 38–62%, feathered edges; <=640px clear center 28–72% and opacity .65. home:true uses .55 desktop/.4 mobile.",
    "stage": "30fps, 106 columns, elliptical feathering. Fills the target without changing its geometry.",
    "resolution": "Page/wake DPR <=1.25 and about 2 million backing pixels per canvas; stage DPR <=1.5."
  },
  "interaction": "Original 1.4s pulse and displaced dither field; 850ms finite mouse wake, 11px grid, 48 samples, .42 head easing, maximum-intensity merge and .36 alpha multiplier.",
  "accessibility": {
    "reduced_motion": "Static field; no wake or pulse animation.",
    "touch": "Ambient field remains; wake requires a fine hover-capable mouse and ignores dragging.",
    "visibility": "Hidden tabs freeze elapsed time. Bounded sections pause offscreen.",
    "wake_cleanup": "Scroll, typing, blur, resize, hiding and manual pause clear the wake. Wake frame work ends when the marks fade.",
    "fallback": "Static CSS dots if Canvas is unavailable; hidden in forced-colors. Decoration never intercepts input or enters the accessibility tree."
  }
}
