{
  "license": "CC0-1.0",
  "shader": {
    "id": "ry70cv0q",
    "title": "Telemetry",
    "license": "CC0-1.0",
    "provenance_type": "witnessed_generation",
    "made_with": "Claude",
    "status": "active",
    "compile_ok": true,
    "render_hash": "f667008128a019ff",
    "tags": [
      "Telemetry",
      "biometrics",
      "harmonics",
      "syncro",
      "retro",
      "monitor",
      "screen",
      "lab"
    ],
    "parents": [],
    "author": "u7y1evhf0znj",
    "author_name": "ksin",
    "author_url": "/u/ksin",
    "created_at": "2026-07-21T11:06:11.810Z",
    "poster_url": "/posters/ry70cv0q.avif",
    "stats": {
      "slops": 1,
      "views": 360,
      "forks": 0
    },
    "self": "/api/v1/shaders/ry70cv0q",
    "isf": "/*{\n  \"DESCRIPTION\": \"digital screen — a tall NERV/MAGI console that scrolls vertically and loops. Four packed bands: an ORBITAL globe (rotating wireframe Earth, tilted orbit rings, satellites, a patrolling spaceship with a dashed comms beam, an orbiting particle swarm and a rotating scan cone, all depth-dimmed front/back); a BIOMETRIC human-body hologram scanned by a sweeping scan bar, roving targeting reticle, jumping lock-on brackets, joint nodes, ribcage, pulsing heart, spine particle flow, ECG trace, detector needle gauge and a DNA double-helix sequencer; a DATA deck (decoding 7-seg title, flickering binary, twin frequency waveforms, roman-numeral selector, ms counters, level gauge, pulsing hexes); and a HARMONICS panel (phase-shifted sine bundle with particle fountain, psychographic scatter, radial MAGI diagram, spectrum analyzer, alert triangle). Streaming code rain runs behind everything, vertical data buses carry packets, and a fixed HUD frames it with status LEDs, tickers, a diagonal scan sweep and a scroll-loop gauge — then CRT post: barrel, scanlines, aperture grille, flicker, tear, grain, vignette.\",\n  \"CREDIT\": \"CC0\",\n  \"CATEGORIES\": [\"generator\", \"ui\", \"retro\", \"scifi\"],\n  \"INPUTS\": [\n    { \"NAME\": \"uSpeed\",    \"TYPE\": \"float\", \"DEFAULT\": 1.00, \"MIN\": 0.0, \"MAX\": 3.0 },\n    { \"NAME\": \"uScroll\",   \"TYPE\": \"float\", \"DEFAULT\": 0.35, \"MIN\": 0.0, \"MAX\": 1.5 },\n    { \"NAME\": \"uGlow\",     \"TYPE\": \"float\", \"DEFAULT\": 0.60, \"MIN\": 0.0, \"MAX\": 1.5 },\n    { \"NAME\": \"uScan\",     \"TYPE\": \"float\", \"DEFAULT\": 0.50, \"MIN\": 0.0, \"MAX\": 1.0 },\n    { \"NAME\": \"uFlicker\",  \"TYPE\": \"float\", \"DEFAULT\": 0.40, \"MIN\": 0.0, \"MAX\": 1.0 },\n    { \"NAME\": \"uCurve\",    \"TYPE\": \"float\", \"DEFAULT\": 0.40, \"MIN\": 0.0, \"MAX\": 1.0 },\n    { \"NAME\": \"uAlert\",    \"TYPE\": \"float\", \"DEFAULT\": 0.00, \"MIN\": 0.0, \"MAX\": 1.0 },\n    { \"NAME\": \"uGrid\",     \"TYPE\": \"float\", \"DEFAULT\": 0.60, \"MIN\": 0.0, \"MAX\": 1.0 },\n    { \"NAME\": \"uVignette\", \"TYPE\": \"float\", \"DEFAULT\": 0.45, \"MIN\": 0.0, \"MAX\": 1.0 }\n  ]\n}*/\n\n// MAGI MONITOR — ISF port of the Shadertoy/WebGL2 version\n// (GLSL ES 1.00: literal loop bounds, gl_FragColor, TIME/RENDERSIZE).\n\n#define PI 3.14159265\n#define WORLD_H 3.6\n\nfloat gPx, gSp, gT;\nvec3 CO, CR, CG, CC, CY, CP;\n\nfloat h11(float n){ return fract(sin(n*127.1)*43758.5453); }\nfloat h21(vec2 p){ return fract(sin(dot(p, vec2(127.1, 311.7)))*43758.5453); }\nfloat vnoise(float x){\n    float i = floor(x), f = fract(x);\n    return mix(h11(i), h11(i + 1.0), f*f*(3.0 - 2.0*f));\n}\nfloat fbm(float x){\n    float v = 0.0, a = 0.55;\n    for (int i = 0; i < 4; i++){ v += a*vnoise(x); x = x*2.17 + 9.7; a *= 0.5; }\n    return v;\n}\n\nfloat sdBox(vec2 p, vec2 b){\n    vec2 d = abs(p) - b;\n    return length(max(d, vec2(0.0))) + min(max(d.x, d.y), 0.0);\n}\nfloat segH(vec2 p, float l){ return length(vec2(max(abs(p.x) - l, 0.0), p.y)); }\nfloat sdSeg(vec2 p, vec2 a, vec2 b){\n    vec2 pa = p - a, ba = b - a;\n    float h = clamp(dot(pa, ba)/dot(ba, ba), 0.0, 1.0);\n    return length(pa - ba*h);\n}\n// Rational bloom instead of exp(): neon() is inlined ~150 times, and dropping that\n// many transcendentals is a big cut in shader compile time and per-pixel cost.\nfloat neon(float d, float w){\n    float dd = abs(d) - w;\n    float core = clamp(0.5 - dd/(2.0*gPx), 0.0, 1.0);   // linear AA (cheaper than smoothstep)\n    float g = max(dd, 0.0)*90.0;\n    return core + (uGlow*0.8)/(1.0 + g*g);\n}\nfloat nseg(vec2 p, vec2 a, vec2 b, float w){ return neon(sdSeg(p, a, b), w); }\nfloat fillIn(float d){ return clamp(0.5 - d/(2.0*gPx), 0.0, 1.0); }\nvec2 rot2(vec2 v, float a){\n    float c = cos(a), s = sin(a);\n    return vec2(c*v.x - s*v.y, s*v.x + c*v.y);\n}\n\nfloat lcorner(vec2 p, vec2 corner, vec2 dir, float len, float w){\n    float d1 = sdSeg(p, corner, corner + vec2(-dir.x*len, 0.0));\n    float d2 = sdSeg(p, corner, corner + vec2(0.0, -dir.y*len));\n    return neon(min(d1, d2), w);\n}\nfloat sqBrackets(vec2 p, vec2 c, vec2 h, float len, float w){\n    float g = 0.0;\n    g = max(g, lcorner(p, c + vec2( h.x,  h.y), vec2( 1.0,  1.0), len, w));\n    g = max(g, lcorner(p, c + vec2(-h.x,  h.y), vec2(-1.0,  1.0), len, w));\n    g = max(g, lcorner(p, c + vec2( h.x, -h.y), vec2( 1.0, -1.0), len, w));\n    g = max(g, lcorner(p, c + vec2(-h.x, -h.y), vec2(-1.0, -1.0), len, w));\n    return g;\n}\nfloat reticle(vec2 p, vec2 c, float s, float w){\n    vec2 q = p - c;\n    float g = 0.0;\n    g = max(g, nseg(q, vec2(-s, 0.0), vec2(-s*0.35, 0.0), w));\n    g = max(g, nseg(q, vec2( s, 0.0), vec2( s*0.35, 0.0), w));\n    g = max(g, nseg(q, vec2(0.0, -s), vec2(0.0, -s*0.35), w));\n    g = max(g, nseg(q, vec2(0.0,  s), vec2(0.0,  s*0.35), w));\n    g = max(g, neon(abs(length(q) - s*0.5), w));\n    g = max(g, fillIn(length(q) - s*0.08));\n    return g;\n}\n\n// ---- 7-segment glyphs ------------------------------------------------------\nfloat bitOn(float m, float b){ return step(0.5, mod(floor(m/b), 2.0)); }\n// Union the 7 segment distances first, then stroke ONCE (OFF segments get a big\n// distance) — seg7 is inlined at dozens of call sites.\nfloat seg7(vec2 p, float m, float sc, float w){\n    vec2 q = p / sc;\n    if (abs(q.x) > 1.9 || abs(q.y) > 1.9) return 0.0;\n    float d = 1e3;\n    d = min(d, segH(q - vec2(0.0,  0.75), 0.30) + (1.0 - bitOn(m,  1.0))*1e3);          // A\n    d = min(d, segH(vec2(q.y - 0.375, q.x - 0.45), 0.26) + (1.0 - bitOn(m,  2.0))*1e3); // B\n    d = min(d, segH(vec2(q.y + 0.375, q.x - 0.45), 0.26) + (1.0 - bitOn(m,  4.0))*1e3); // C\n    d = min(d, segH(q - vec2(0.0, -0.75), 0.30) + (1.0 - bitOn(m,  8.0))*1e3);          // D\n    d = min(d, segH(vec2(q.y + 0.375, q.x + 0.45), 0.26) + (1.0 - bitOn(m, 16.0))*1e3); // E\n    d = min(d, segH(vec2(q.y - 0.375, q.x + 0.45), 0.26) + (1.0 - bitOn(m, 32.0))*1e3); // F\n    d = min(d, segH(q, 0.30) + (1.0 - bitOn(m, 64.0))*1e3);                             // G\n    return neon(d*sc, w);\n}\nfloat dmask(float d){\n    if (d < 0.5) return 63.0;  if (d < 1.5) return 6.0;   if (d < 2.5) return 91.0;\n    if (d < 3.5) return 79.0;  if (d < 4.5) return 102.0; if (d < 5.5) return 109.0;\n    if (d < 6.5) return 125.0; if (d < 7.5) return 7.0;   if (d < 8.5) return 127.0;\n    return 111.0;\n}\n// Both text helpers are O(1): a pixel lands in exactly ONE glyph cell, so index it\n// directly instead of looping every glyph (they are inlined at ~50 call sites).\nfloat number(vec2 p, float val, float nd, float sc, float w){\n    float pitch = sc*1.35;\n    float halfW = nd*pitch*0.5;\n    if (abs(p.x) > halfW + sc || abs(p.y) > sc*2.0) return 0.0;\n    float idx = floor((p.x + halfW)/pitch);\n    if (idx < 0.0 || idx >= nd) return 0.0;\n    vec2 q = p - vec2((idx - (nd - 1.0)*0.5)*pitch, 0.0);\n    float dg = mod(floor(val/pow(10.0, nd - 1.0 - idx)), 10.0);\n    return seg7(q, dmask(dg), sc, w);\n}\nfloat glyphRow(vec2 p, vec2 c, float n, float sc, float w, float seed, float rr){\n    vec2 q = p - c;\n    float pitch = sc*1.5;\n    float halfW = n*pitch*0.5;\n    if (abs(q.x) > halfW + sc || abs(q.y) > sc*2.0) return 0.0;\n    float idx = floor((q.x + halfW)/pitch);\n    if (idx < 0.0 || idx >= n) return 0.0;\n    vec2 pp = q - vec2((idx - (n - 1.0)*0.5)*pitch, 0.0);\n    float sd = seed + idx*7.31 + floor(gT*rr + h11(seed + idx)*3.0)*13.7;\n    float m = 1.0 + floor(h11(sd)*126.99);\n    return seg7(pp, m, sc, w);\n}\n\n// ---- data-deck panels ------------------------------------------------------\nvec3 titleBlock(vec2 p){\n    if (p.y < 0.66 || p.x < 0.36) return vec3(0.0);\n    vec3 acc = vec3(0.0);\n    acc += CO*1.10*glyphRow(p, vec2(0.98, 0.775), 9.0, 0.058, 0.011, 33.0, 0.5);\n    acc += CO*0.80*neon(segH(p - vec2(0.98, 0.700), 0.58), 0.0018);\n    acc += CO*0.55*glyphRow(p, vec2(0.70, 0.868), 12.0, 0.013, 0.0032, 91.0, 0.8);\n    acc += CO*0.75*glyphRow(p, vec2(1.52, 0.868), 1.0, 0.016, 0.0036, 55.0, 0.3);\n    return acc;\n}\nvec3 binaryBox(vec2 p){\n    vec2 c = vec2(0.98, 0.585), b = vec2(0.58, 0.080);\n    if (sdBox(p - c, b) > 0.05) return vec3(0.0);\n    vec3 acc = CO*0.9*neon(sdBox(p - c, b) - 0.012, 0.0022);\n    vec2 q = p - c + b;\n    q -= vec2(0.022, 0.017);\n    vec2 cellSz = vec2(0.036, 0.043);\n    vec2 id = floor(q/cellSz);\n    vec2 cc = (fract(q/cellSz) - 0.5)*cellSz;\n    if (id.x >= 0.0 && id.x < 31.0 && id.y >= 0.0 && id.y < 3.0){\n        float rnd = h21(id + vec2(0.0, 7.0));\n        float flip = floor(gT*(0.4 + rnd*2.2));\n        float bitv = step(0.5, h21(id + vec2(flip*13.7, flip*7.1)));\n        float g;\n        if (bitv > 0.5) g = neon(segH(cc.yx, 0.013), 0.0045);\n        else            g = neon(abs(sdBox(cc, vec2(0.004, 0.010)) - 0.006), 0.0042);\n        acc += CO*g*(0.70 + 0.30*h21(id + 3.3));\n    }\n    return acc;\n}\nvec3 leftColumn(vec2 p){\n    if (p.x > 0.36 || p.y > 0.55) return vec3(0.0);\n    vec3 acc = vec3(0.0);\n    acc += CO*0.65*glyphRow(p, vec2(0.17, 0.505), 6.0, 0.018, 0.0042, 41.0, 0.0);\n    acc += CO*0.65*glyphRow(p, vec2(0.17, 0.462), 6.0, 0.018, 0.0042, 47.0, 0.0);\n    acc += CC*1.10*number(p - vec2(0.185, 0.415), mod(floor(gT*77.0), 10000.0), 4.0, 0.020, 0.0038);\n    vec2 gc = vec2(0.1225, 0.21), gb = vec2(0.0775, 0.16);\n    float gd = sdBox(p - gc, gb) - 0.015;\n    acc += CP*0.40*fillIn(gd);\n    acc += CO*0.90*neon(gd, 0.0022);\n    vec2 q = p - gc;\n    if (gd < -0.004){\n        float fy = (q.y + gb.y)/0.030;\n        float row = floor(fy);\n        float ry = (fract(fy) - 0.5)*0.030;\n        float lhalf = (mod(row, 5.0) < 0.5) ? 0.026 : 0.013;\n        float td = length(vec2(max(abs(q.x + gb.x - 0.012 - lhalf) - lhalf, 0.0), ry));\n        acc += CO*0.75*neon(td, 0.0016);\n        float lev = -gb.y + 2.0*gb.y*(0.5 + 0.44*sin(gT*0.5 + 1.3));\n        acc += CY*neon(length(vec2(max(abs(q.x) - gb.x + 0.02, 0.0), q.y - lev)), 0.0022);\n    }\n    return acc;\n}\nvec3 romanBox(vec2 p){\n    vec2 c = vec2(0.48, 0.25), b = vec2(0.08, 0.20);\n    if (sdBox(p - c, b) > 0.05) return vec3(0.0);\n    vec3 acc = CO*0.9*neon(sdBox(p - c, b) - 0.010, 0.0022);\n    acc += CO*0.7*neon(segH(p - c, 0.08), 0.0018);\n    float sel = mod(floor(gT*0.6), 2.0);\n    vec2 ac = vec2(0.48, (sel < 0.5) ? 0.35 : 0.15);\n    acc += CO*0.10*fillIn(sdBox(p - ac, vec2(0.068, 0.085)));\n    {\n        vec2 q = p - vec2(0.48, 0.35);\n        float g = neon(segH(q.yx, 0.055), 0.0060);\n        g = max(g, neon(segH(q - vec2(0.0, 0.062), 0.020), 0.0040));\n        g = max(g, neon(segH(q + vec2(0.0, 0.062), 0.020), 0.0040));\n        acc += CO*g*((sel < 0.5) ? 1.15 : 0.45);\n    }\n    {\n        vec2 q = p - vec2(0.48, 0.15);\n        float g =        neon(segH(vec2(q.y, q.x - 0.024), 0.055), 0.0060);\n        g = max(g,       neon(segH(vec2(q.y, q.x + 0.024), 0.055), 0.0060));\n        g = max(g, neon(segH(q - vec2(0.0, 0.062), 0.042), 0.0040));\n        g = max(g, neon(segH(q + vec2(0.0, 0.062), 0.042), 0.0040));\n        acc += CO*g*((sel < 0.5) ? 0.45 : 1.15);\n    }\n    return acc;\n}\nvec3 wavePanel(vec2 p, vec2 c, vec2 b, float style, float seed){\n    if (sdBox(p - c, b) > 0.05) return vec3(0.0);\n    vec3 acc = CO*0.9*neon(sdBox(p - c, b) - 0.012, 0.0022);\n    vec2 q = p - c;\n    if (abs(q.x) < b.x - 0.008 && abs(q.y) < b.y - 0.008){\n        vec2 rp = vec2(q.y, -(q.x + b.x - 0.024));\n        acc += CO*0.60*glyphRow(rp, vec2(0.02, 0.0), 10.0, 0.011, 0.0026, seed, 0.0);\n        float xw;\n        if (style < 0.5){\n            xw = 0.02 + (fbm(q.y*6.0 - gT*1.3 + seed) - 0.55)*0.10;\n            float dd = abs(q.x - xw);\n            acc += CY*(neon(dd, 0.0065) + exp(-dd*30.0)*0.30*uGlow);\n        } else {\n            float env = 0.12 + pow(fbm(q.y*2.5 + gT*0.9 + seed), 2.0)*1.25;\n            float n2 = (vnoise(q.y*70.0 - gT*6.0) - 0.5)*2.0;\n            xw = 0.02 + n2*abs(n2)*env*0.055;\n            float dd = abs(q.x - xw);\n            acc += (CG*0.55 + CY*0.30)*(neon(dd, 0.0022) + exp(-dd*45.0)*0.20*uGlow);\n        }\n        acc += CO*0.7*number(q - vec2(0.055, -b.y + 0.035), (style < 0.5) ? 1.0 : 2.0, 2.0, 0.011, 0.0025);\n    }\n    return acc;\n}\nvec3 counterCol(vec2 p){\n    if (p.x < 0.99 || p.x > 1.23 || p.y > 0.50) return vec3(0.0);\n    vec3 acc = vec3(0.0);\n    vec2 q = p - vec2(1.035, 0.25);\n    if (abs(q.x) < 0.045 && abs(q.y) < 0.215){\n        acc += CG*0.6*neon(segH(vec2(q.y, q.x + 0.017), 0.205), 0.0014);\n        float fy = (q.y + 0.205)/0.018;\n        float row = floor(fy);\n        float ry = (fract(fy) - 0.5)*0.018;\n        float lhalf = (mod(row, 5.0) < 0.5) ? 0.011 : 0.005;\n        float td = length(vec2(max(abs(q.x + 0.017 - lhalf) - lhalf, 0.0), ry));\n        acc += CG*0.75*neon(td, 0.0013);\n    }\n    acc += CO*1.15*number(p - vec2(1.13, 0.40), mod(floor(gT*100.0), 10000.0), 4.0, 0.021, 0.0038);\n    acc += CO*0.50*glyphRow(p, vec2(1.13, 0.345), 6.0, 0.010, 0.0024, 77.0, 0.4);\n    vec2 wc = vec2(1.13, 0.24), wb = vec2(0.075, 0.042);\n    float blink = step(0.5, fract(gT*(1.2 + 3.0*uAlert)));\n    float dW = sdBox(p - wc, wb) - 0.010;\n    acc += CR*(0.28 + 0.34*blink)*fillIn(dW);\n    acc += CR*neon(dW, 0.0022)*(0.6 + 0.6*blink);\n    acc += vec3(1.0, 0.80, 0.55)*(0.35 + 0.85*blink)*glyphRow(p, wc, 5.0, 0.015, 0.0034, 3.0, 0.0);\n    acc += CO*0.40*glyphRow(p, vec2(1.13, 0.130), 7.0, 0.009, 0.0022, 15.0, 0.7);\n    acc += CO*0.40*glyphRow(p, vec2(1.13, 0.100), 7.0, 0.009, 0.0022, 19.0, 0.7);\n    return acc;\n}\nvec3 hexPanel(vec2 p){\n    vec2 c = vec2(1.40, 0.25), b = vec2(0.155, 0.20);\n    if (sdBox(p - c, b) > 0.05) return vec3(0.0);\n    vec3 acc = CO*0.9*neon(sdBox(p - c, b) - 0.012, 0.0022);\n    vec2 q = p - c;\n    if (abs(q.x) < b.x - 0.010 && abs(q.y) < b.y - 0.010){\n        float s = 0.047;\n        vec2 u = q/s;\n        vec2 rr = vec2(1.0, 1.7320508);\n        vec2 hh = rr*0.5;\n        vec2 a1 = mod(u, rr) - hh;\n        vec2 a2 = mod(u - hh, rr) - hh;\n        vec2 gv = (dot(a1, a1) < dot(a2, a2)) ? a1 : a2;\n        vec2 id = u - gv;\n        vec2 av = abs(gv);\n        float hd = max(dot(av, vec2(0.5, 0.8660254)), av.x);\n        float hs = h21(id);\n        float pulse = 0.5 + 0.5*sin(gT*(1.5 + uAlert*3.0) + hs*6.2831);\n        pulse = pow(pulse, 3.0)*(0.45 + 0.55*step(0.30, hs));\n        acc += CO*pulse*0.42*fillIn((hd - 0.40)*s);\n        acc += CO*0.65*neon((0.5 - hd)*s, 0.0016);\n    }\n    return acc;\n}\nfloat connectorSym(vec2 p){\n    float g =        neon(segH(p, 0.011), 0.0020);\n    g = max(g, neon(segH(vec2(p.y, p.x + 0.015), 0.012), 0.0020));\n    g = max(g, neon(segH(vec2(p.y, p.x - 0.015), 0.012), 0.0020));\n    return g;\n}\nfloat plusSym(vec2 p){\n    return max(neon(segH(p, 0.008), 0.0020), neon(segH(p.yx, 0.008), 0.0020));\n}\nvec3 ornaments(vec2 p){\n    vec3 acc = vec3(0.0);\n    float b0 = 0.5 + 0.6*step(0.5, fract(gT*0.8));\n    float b1 = 0.5 + 0.6*step(0.5, fract(gT*0.8 + 0.31));\n    float b2 = 0.5 + 0.6*step(0.5, fract(gT*0.8 + 0.62));\n    acc += CG*b2*connectorSym(p - vec2(0.585, 0.250));\n    acc += CG*b0*connectorSym(p - vec2(0.800, 0.250));\n    acc += CG*b1*connectorSym(p - vec2(1.225, 0.250));\n    acc += CG*b2*connectorSym(p - vec2(1.310, 0.478));\n    acc += CY*b1*plusSym(p - vec2(0.585, 0.380));\n    acc += CY*b2*plusSym(p - vec2(0.800, 0.380));\n    acc += CY*b0*plusSym(p - vec2(1.225, 0.380));\n    acc += CY*b0*plusSym(p - vec2(0.585, 0.105));\n    acc += CY*b1*plusSym(p - vec2(0.800, 0.105));\n    return acc;\n}\n\n// ---- spaceship + satellite icons -------------------------------------------\nvec3 shipDraw(vec2 p, vec2 pos, float ang, float sc, float dep){\n    vec2 q = rot2(p - pos, -ang);\n    float w = 0.0030;\n    float g = 0.0;\n    g = max(g, nseg(q, vec2(1.30, 0.0)*sc, vec2(-0.70, 0.0)*sc, w));\n    g = max(g, nseg(q, vec2(1.30, 0.0)*sc, vec2(-0.50, 0.72)*sc, w));\n    g = max(g, nseg(q, vec2(1.30, 0.0)*sc, vec2(-0.50,-0.72)*sc, w));\n    g = max(g, nseg(q, vec2(-0.50, 0.72)*sc, vec2(-0.70, 0.0)*sc, w));\n    g = max(g, nseg(q, vec2(-0.50,-0.72)*sc, vec2(-0.70, 0.0)*sc, w));\n    g = max(g, neon(sdBox(q - vec2(0.45, 0.0)*sc, vec2(0.24, 0.11)*sc) - 0.01, w));\n    vec3 col = CO*g*dep;\n    col += CC*0.9*dep*fillIn(sdBox(q - vec2(0.55, 0.0)*sc, vec2(0.07, 0.04)*sc));\n    float fl = 0.55 + 0.45*h11(floor(gT*40.0));\n    float td = sdSeg(q, vec2(-0.70, 0.0)*sc, vec2(-1.20 - fl*0.4, 0.0)*sc);\n    col += CC*exp(-td*45.0)*0.7*dep*fl;\n    return col;\n}\nvec3 satDraw(vec2 p, vec2 pos, float sc, float dep, float ph){\n    vec2 q = (p - pos);\n    float w = 0.0026;\n    float g = 0.0;\n    g = max(g, neon(sdBox(q, vec2(0.40, 0.30)*sc) - 0.05*sc, w));\n    g = max(g, neon(sdBox(q - vec2(1.05, 0.0)*sc, vec2(0.50, 0.24)*sc) - 0.02*sc, w));\n    g = max(g, neon(sdBox(q + vec2(1.05, 0.0)*sc, vec2(0.50, 0.24)*sc) - 0.02*sc, w));\n    g = max(g, nseg(q, vec2(-0.40, 0.0)*sc, vec2(-0.55, 0.0)*sc, w));\n    g = max(g, nseg(q, vec2( 0.40, 0.0)*sc, vec2( 0.55, 0.0)*sc, w));\n    g = max(g, nseg(q - vec2(1.05, 0.0)*sc, vec2(0.0, -0.22)*sc, vec2(0.0, 0.22)*sc, w));\n    g = max(g, nseg(q + vec2(1.05, 0.0)*sc, vec2(0.0, -0.22)*sc, vec2(0.0, 0.22)*sc, w));\n    vec3 col = CO*g*dep;\n    float bl = step(0.5, fract(gT*1.5 + ph));\n    col += CR*fillIn(length(q - vec2(0.0, 0.42)*sc) - 0.10*sc)*bl*dep;\n    return col;\n}\n\n// ---- extra primitives: smooth union, particles, spectrum -------------------\nfloat smin(float a, float b, float k){\n    float h = clamp(0.5 + 0.5*(b - a)/k, 0.0, 1.0);\n    return mix(b, a, h) - k*h*(1.0 - h);\n}\nfloat capsule(vec2 p, vec2 a, vec2 b, float r){ return sdSeg(p, a, b) - r; }\nvec3 particleField(vec2 p, vec2 c, vec2 hs, float n, float seed, vec2 vel, vec3 col, float sz){\n    vec3 acc = vec3(0.0);\n    for (int i = 0; i < 16; i++){\n        if (float(i) >= n) continue;\n        float fi = float(i);\n        vec2 base = vec2(h11(seed + fi*1.7), h11(seed + fi*3.1 + 5.0));\n        vec2 pos = c - hs + mod(base*2.0*hs + vel*gT, 2.0*hs);\n        float tw = max(0.45 + 0.55*sin(gT*4.0 + fi*1.3), 0.0);\n        acc += col*tw*fillIn(length(p - pos) - sz);\n    }\n    return acc;\n}\nvec3 spectrumBar(vec2 p, vec2 c, vec2 hs, float nb, float seed, vec3 col){\n    vec3 acc = CO*0.25*neon(sdBox(p - c, hs) - 0.006, 0.0016);\n    vec2 q = p - c + hs;\n    if (q.x > 0.0 && q.x < 2.0*hs.x && q.y > 0.0 && q.y < 2.0*hs.y){\n        float bw = 2.0*hs.x/nb;\n        float bi = floor(q.x/bw);\n        float xin = fract(q.x/bw);\n        float h = 0.12 + 0.88*abs(sin(gT*(2.0 + bi*0.35) + seed + bi*0.7))*(0.4 + 0.6*h11(bi + seed));\n        float inbar = step(0.14, xin)*step(xin, 0.86);\n        if (q.y < h*2.0*hs.y) acc += col*(0.45 + 0.5*h)*inbar;\n        acc += col*0.4*neon(q.y - h*2.0*hs.y, 0.0022)*inbar;\n    }\n    return acc;\n}\n\n// ---- background + buses + module frame -------------------------------------\nvec3 bgWorld(vec2 p){\n    vec3 acc = vec3(0.012, 0.005, 0.002);\n    float g = 0.15;\n    vec2 q = vec2(p.x + gT*0.006, p.y);\n    vec2 cc = mod(q, g) - g*0.5;\n    vec2 id = floor(q/g);\n    float cr = max(neon(segH(cc, 0.010), 0.0013), neon(segH(cc.yx, 0.010), 0.0013));\n    acc += CO*cr*0.10*uGrid*(0.5 + 0.5*h21(id));\n    vec2 f2 = mod(p*vec2(1.0, 1.0)/0.05, 1.0) - 0.5;\n    acc += CO*0.05*uGrid*fillIn(length(f2)*0.05 - 0.004);\n    // streaming code rain — only the bright falling head costs a seg7\n    vec2 rcz = vec2(0.030, 0.028);\n    vec2 rid = floor(p/rcz);\n    float spd = 0.4 + 0.8*h11(rid.x*1.3);\n    float litw = fract(-p.y*0.9 + gT*spd*0.6 + h11(rid.x*2.7));\n    float head = smoothstep(0.55, 1.0, litw);\n    if (head > 0.02){\n        vec2 rf = fract(p/rcz) - 0.5;\n        float gm = 1.0 + floor(h11(rid.x*3.1 + rid.y*7.7 + floor(gT*4.0))*126.0);\n        acc += CO*0.13*uGrid*head*seg7(rf*rcz, gm, 0.0095, 0.0022);\n    }\n    return acc;\n}\nvec3 busLayer(vec2 p){\n    vec3 acc = vec3(0.0);\n    for (int i = 0; i < 2; i++){\n        float bx = (i == 0) ? 0.075 : 1.525;\n        float d = abs(p.x - bx);\n        acc += CG*0.35*neon(d, 0.0012);\n        float ph = mod(p.y*3.0 - gT*(1.3 + float(i)*0.4), 1.0);\n        float pk = smoothstep(0.14, 0.0, ph);\n        acc += CC*0.5*pk*fillIn(d - 0.006);\n        float rung = neon(segH(vec2(d - 0.006, mod(p.y, 0.12) - 0.06), 0.006), 0.0012);\n        acc += CG*0.18*rung;\n    }\n    return acc;\n}\nvec3 moduleFrame(vec2 p, float cy, float titleSeed){\n    vec3 acc = vec3(0.0);\n    float inx = step(abs(p.x - 0.80), 0.775);\n    acc += CO*0.30*neon(sdBox(p - vec2(0.80, cy), vec2(0.775, 0.435)) - 0.010, 0.0022);\n    acc += CO*0.6*neon(p.y - (cy + 0.375), 0.0013)*inx;\n    acc += CO*0.95*glyphRow(p, vec2(0.52, cy + 0.408), 11.0, 0.0135, 0.0032, titleSeed, 0.4);\n    acc += CO*0.55*neon(segH(p - vec2(0.52, cy + 0.386), 0.34), 0.0013);\n    acc += CC*0.9*number(p - vec2(1.40, cy + 0.408), mod(floor(gT*30.0), 100000.0), 5.0, 0.012, 0.0026);\n    float rec = step(0.5, fract(gT*1.4 + titleSeed));\n    acc += CR*rec*fillIn(length(p - vec2(0.075, cy + 0.408)) - 0.008);\n    acc += CO*0.5*neon(p.y - (cy - 0.375), 0.0012)*inx;\n    acc += CO*0.5*glyphRow(p, vec2(0.80, cy - 0.408), 32.0, 0.0092, 0.0021, titleSeed + 50.0 + floor(gT*4.0), 3.0);\n    for (int s = 0; s < 2; s++){\n        float sx = (s == 0) ? 0.135 : 1.465;\n        float dd = abs(p.x - sx);\n        if (dd < 0.03 && abs(p.y - cy) < 0.36){\n            float fy = (p.y - cy)/0.05;\n            float ry = (fract(fy) - 0.5)*0.05;\n            float lhalf = (mod(floor(fy), 5.0) < 0.5) ? 0.018 : 0.008;\n            float td = length(vec2(max(abs(p.x - sx - ((s == 0) ? lhalf : -lhalf)) - lhalf, 0.0), ry));\n            acc += CO*0.4*neon(td, 0.0012);\n        }\n    }\n    return acc;\n}\n\n// ---- MODULE 1: orbital globe -----------------------------------------------\nvec3 globeModule(vec2 p){\n    if (p.y > 0.92) return vec3(0.0);\n    float cy = 0.45;\n    vec3 acc = moduleFrame(p, cy, 131.0);\n    vec2 c = vec2(0.44, 0.44);\n    float R = 0.25;\n\n    for (int i = 0; i < 10; i++){\n        float fi = float(i);\n        vec2 sp = c + vec2((h11(fi*1.7) - 0.5)*1.05, (h11(fi*3.9 + 2.0) - 0.5)*0.70);\n        float tw = 0.4 + 0.6*abs(sin(gT*2.5 + fi*1.3));\n        acc += CY*0.28*tw*fillIn(length(p - sp) - 0.0035);\n    }\n    for (int k = 0; k < 3; k++){\n        float fk = float(k);\n        float rx = 0.40 - fk*0.05, ry = 0.15 - fk*0.017;\n        float tl = -0.28 + fk*0.22;\n        vec2 e = rot2(p - c, tl);\n        float d = (length(vec2(e.x/rx, e.y/ry)) - 1.0)*ry;\n        acc += CC*0.22*neon(d, 0.0016);\n    }\n    vec2 qs = (p - c)/R;\n    float r = length(qs);\n    if (r < 1.35){\n        acc += CP*0.55*neon((r - 1.0)*R, 0.0024);\n        if (r < 1.0){\n            float z = sqrt(1.0 - r*r);\n            acc += CP*0.10*(0.35 + 0.65*z);\n            for (int s = 0; s < 2; s++){\n                float zz = (s == 0) ? z : -z;\n                vec3 P = vec3(qs, zz);\n                P.xz = rot2(P.xz, gT*0.35);\n                P.yz = rot2(P.yz, 0.42);\n                float lon = atan(P.z, P.x);\n                float lat = asin(clamp(P.y, -1.0, 1.0));\n                float clat = max(cos(lat), 0.05);\n                float dLon = abs(fract(lon/0.5236 + 0.5) - 0.5)*0.5236*clat*R;\n                float dLat = abs(fract(lat/0.4488 + 0.5) - 0.5)*0.4488*R;\n                float wire = max(neon(dLon, 0.0015), neon(dLat, 0.0015));\n                acc += CC*wire*((s == 0) ? 0.85 : 0.24)*(0.30 + 0.70*abs(zz));\n            }\n        }\n    }\n    for (int i = 0; i < 4; i++){\n        float fi = float(i);\n        float k = mod(fi, 3.0);\n        float rx = 0.40 - k*0.05, ry = 0.15 - k*0.017;\n        float tl = -0.28 + k*0.22;\n        float a = gT*(0.55 + 0.12*fi) + fi*1.9;\n        vec2 pos = c + rot2(vec2(cos(a)*rx, sin(a)*ry), -tl);\n        float dep = (sin(a) > 0.0) ? 1.0 : 0.28;\n        acc += satDraw(p, pos, 0.030, dep, fi*1.3);\n    }\n    // orbiting particle swarm\n    for (int i = 0; i < 12; i++){\n        float fi = float(i);\n        float a = gT*0.9 + fi*0.5236;\n        vec2 pos = c + rot2(vec2(cos(a)*0.35, sin(a)*0.125), 0.15);\n        float dep = (sin(a) > 0.0) ? 1.0 : 0.30;\n        acc += CY*0.5*dep*fillIn(length(p - pos) - 0.0038);\n    }\n    // spaceship + dashed comms beam\n    {\n        float a = gT*0.32 + 1.2;\n        float rx = 0.44, ry = 0.18, tl = 0.20;\n        vec2 shipPos = c + rot2(vec2(cos(a)*rx, sin(a)*ry), -tl);\n        vec2 tang = rot2(vec2(-sin(a)*rx, cos(a)*ry), -tl);\n        float ang = atan(tang.y, tang.x);\n        float dep = (sin(a) > 0.0) ? 1.0 : 0.32;\n        acc += shipDraw(p, shipPos, ang, 0.052, dep);\n        vec2 grnd = c + vec2(0.11, -0.16);\n        vec2 bdir = normalize(grnd - shipPos);\n        float bdist = sdSeg(p, shipPos, grnd);\n        float along = dot(p - shipPos, bdir);\n        float dash = step(0.5, fract(along*36.0 - gT*5.0));\n        acc += CC*0.45*neon(bdist, 0.0015)*dash*dep;\n        acc += CR*fillIn(length(p - grnd) - 0.006)*step(0.5, fract(gT*2.0));\n    }\n    // expanding radar ping rings\n    for (int i = 0; i < 2; i++){\n        float t = fract(gT*0.4 + float(i)*0.5);\n        acc += CG*0.40*(1.0 - t)*neon(length(p - c) - t*0.42, 0.0016);\n    }\n    // rotating scan cone\n    {\n        float ca = gT*0.7;\n        vec2 apex = c + vec2(0.0, 0.30);\n        vec2 rdp = p - apex;\n        float pang = atan(rdp.x, -rdp.y);\n        float cone = smoothstep(0.28, 0.0, abs(mod(pang - ca + PI, 6.2831) - PI));\n        acc += CG*0.10*cone*smoothstep(0.34, 0.0, length(rdp))*step(rdp.y, 0.0);\n    }\n    acc += CO*0.22*neon(sdBox(p - vec2(1.20, 0.63), vec2(0.24, 0.10)) - 0.008, 0.0018);\n    acc += CO*0.6*glyphRow(p, vec2(1.05, 0.685), 4.0, 0.011, 0.0026, 51.0, 0.0);\n    acc += CC*0.9*number(p - vec2(1.28, 0.685), mod(floor(gT*43.0), 100000.0), 5.0, 0.012, 0.0026);\n    acc += CO*0.6*glyphRow(p, vec2(1.05, 0.58), 4.0, 0.011, 0.0026, 59.0, 0.0);\n    acc += CC*0.9*number(p - vec2(1.28, 0.58), mod(floor(gT*67.0), 100000.0), 5.0, 0.012, 0.0026);\n    for (int i = 0; i < 5; i++){\n        float fi = float(i);\n        float bl = 0.05 + 0.13*(0.5 + 0.5*sin(gT*1.3 + fi*0.9));\n        acc += CY*0.6*fillIn(sdBox(p - vec2(1.02 + fi*0.045, 0.40 + bl*0.5), vec2(0.014, bl)) );\n    }\n    vec2 rc = vec2(1.30, 0.30); float rr2 = 0.11;\n    acc += CG*0.7*neon(length(p - rc) - rr2, 0.0016);\n    acc += CG*0.4*neon(length(p - rc) - rr2*0.5, 0.0013);\n    {\n        float sa = gT*1.6;\n        vec2 dir = vec2(cos(sa), sin(sa));\n        vec2 rp = p - rc;\n        float along = dot(rp, dir);\n        float perp = abs(dot(rp, vec2(-dir.y, dir.x)));\n        if (along > 0.0 && length(rp) < rr2)\n            acc += CG*0.5*(1.0 - smoothstep(0.0, 0.010, perp));\n        float blip = h11(floor(gT*0.9));\n        vec2 bp = rc + vec2(cos(blip*6.28)*rr2*0.6, sin(blip*9.0)*rr2*0.6);\n        acc += CR*fillIn(length(p - bp) - 0.006)*step(0.5, fract(gT*2.0));\n    }\n    return acc;\n}\n\n// Normally-proportioned standing figure (~7.7 heads tall) from capsules. `hp` must\n// already be folded to the right half — vec2(abs(x), y) relative to the figure\n// centre. `bh` is total height in world units (figure spans ~±0.5*bh).\nfloat bodySDF(vec2 hp, float bh, float br){\n    float k = 0.014*bh;\n    vec2 hq = hp - vec2(0.0, 0.428)*bh;\n    float d = (length(hq/vec2(0.86, 1.0)) - 0.065*bh)*0.86;                                  // head\n    d = smin(d, capsule(hp, vec2(0.0, 0.368)*bh, vec2(0.0, 0.315)*bh, 0.030*bh), k);         // neck\n    d = smin(d, capsule(hp, vec2(0.0, 0.295)*bh, vec2(0.115, 0.283)*bh, 0.038*bh), k*2.0);   // shoulders\n    d = smin(d, capsule(hp, vec2(0.0, 0.283)*bh, vec2(0.0, 0.165)*bh, 0.082*bh*br), k*2.0);  // chest\n    d = smin(d, capsule(hp, vec2(0.0, 0.165)*bh, vec2(0.0, 0.065)*bh, 0.064*bh), k*2.0);     // waist\n    // pelvis: a flat-sided rounded BOX, not a capsule — a capsule's round end cap\n    // (plus a wide blend into the thighs) read as a bulging backside.\n    d = smin(d, sdBox(hp - vec2(0.0, 0.036)*bh, vec2(0.048, 0.036)*bh) - 0.018*bh, k);       // pelvis\n    d = smin(d, capsule(hp, vec2(0.115, 0.275)*bh, vec2(0.136, 0.100)*bh, 0.034*bh), k);     // upper arm\n    d = smin(d, capsule(hp, vec2(0.136, 0.100)*bh, vec2(0.150, -0.055)*bh, 0.027*bh), k);    // forearm\n    d = smin(d, capsule(hp, vec2(0.150, -0.055)*bh, vec2(0.156, -0.108)*bh, 0.024*bh), k);   // hand\n    d = smin(d, capsule(hp, vec2(0.052, 0.010)*bh, vec2(0.047, -0.245)*bh, 0.044*bh), k);    // thigh\n    d = smin(d, capsule(hp, vec2(0.047, -0.245)*bh, vec2(0.043, -0.462)*bh, 0.032*bh), k);   // shin\n    d = smin(d, capsule(hp, vec2(0.043, -0.462)*bh, vec2(0.088, -0.490)*bh, 0.020*bh), k);   // foot\n    return d;\n}\n// Coarse 4-primitive stand-in for the glitch ghost — calling the full bodySDF twice\n// inlines it twice and quadruples compile time, and at burst speed nobody reads detail.\nfloat bodyGhost(vec2 hp, float bh){\n    float k = 0.03*bh;\n    float d = length(hp - vec2(0.0, 0.428)*bh) - 0.065*bh;\n    d = smin(d, capsule(hp, vec2(0.0, 0.300)*bh, vec2(0.0, 0.020)*bh, 0.078*bh), k*2.0);\n    d = smin(d, capsule(hp, vec2(0.115, 0.280)*bh, vec2(0.150, -0.100)*bh, 0.030*bh), k);\n    d = smin(d, capsule(hp, vec2(0.050, 0.010)*bh, vec2(0.043, -0.490)*bh, 0.040*bh), k);\n    return d;\n}\n\n// ---- MODULE 2: human-body biometric analysis -------------------------------\nvec3 bodyModule(vec2 p){\n    if (p.y < 0.88 || p.y > 1.82) return vec3(0.0);\n    vec3 acc = moduleFrame(p, 1.35, 71.0);\n    vec2 bc = vec2(0.50, 1.35);\n    float bh = 0.58;\n\n    float sway = sin(gT*0.5)*0.025;\n    vec2 q = rot2(p - bc, sway);\n    float breathe = 1.0 + 0.025*sin(gT*1.6);\n\n    // glitch: per-band horizontal slip, dropout bands, RGB ghost\n    float burst = step(0.86, h11(floor(gT*2.3)));\n    float bandY = floor(q.y*46.0 + gT*2.0);\n    float goff = (h11(bandY*3.7 + floor(gT*7.0)) - 0.5)*bh*0.07*(0.16 + burst*1.7);\n    float drop = step(0.04 + burst*0.12, h11(bandY*1.31 + floor(gT*5.0)));\n    vec2 qg = vec2(q.x + goff, q.y);\n    vec2 hp = vec2(abs(qg.x), qg.y);\n\n    float sf = fract(gT*0.30);\n    float sy = bc.y + (0.52 - 1.04*sf)*bh;\n    float scanNear = exp(-abs(p.y - sy)*6.0);\n    float sx = bc.x + (0.5 - fract(gT*0.17))*0.42;\n\n    float bd = bodySDF(hp, bh, breathe);\n\n    acc += CC*0.06*fillIn(bd)*drop;\n    acc += CC*0.10*scanNear*fillIn(bd)*drop;\n    acc += CC*0.09*fillIn(bd)*(0.5 + 0.5*sin(p.y*150.0 - gT*3.0))*drop;\n    acc += mix(CC, CO, 0.25)*(0.9 + 0.7*scanNear)*neon(bd, 0.0022)*drop;\n    if (burst > 0.5){\n        float bdR = bodyGhost(vec2(abs(qg.x + goff*2.5 + 0.012*bh), qg.y), bh);\n        acc += CR*0.40*neon(bdR, 0.0026);\n        vec2 blk = floor(p*vec2(62.0, 94.0) + vec2(0.0, gT*3.0));\n        float bn = step(0.90, h11(blk.x*2.1 + blk.y*5.3 + floor(gT*8.0)));\n        acc += CC*0.35*bn*fillIn(bd);\n    }\n    acc += CG*0.55*exp(-abs(p.x - sx)*70.0)*(1.0 - smoothstep(0.0, 0.012, bd));\n\n    acc += CO*0.5*drop*neon(sdSeg(hp, vec2(0.0, 0.30)*bh, vec2(0.0, 0.07)*bh), 0.0012);\n    for (int i = 0; i < 3; i++){\n        float ry = 0.25 - float(i)*0.050;\n        float rib = abs(length((hp - vec2(0.0, ry)*bh)/vec2(1.0, 0.55)) - 0.075*bh);\n        acc += CO*0.32*drop*neon(rib, 0.0012)*step(qg.y, 0.29*bh)*step(0.11*bh, qg.y);\n    }\n    float hb = pow(0.5 + 0.5*sin(gT*7.0), 5.0);\n    acc += CR*(0.5 + 1.1*hb)*fillIn(length(qg - vec2(-0.028, 0.215)*bh) - 0.013);\n\n    acc += CG*(0.45 + 0.55*sin(gT*3.0      ))*drop*neon(length(hp - vec2(0.115,  0.283)*bh) - 0.011, 0.0014);\n    acc += CG*(0.45 + 0.55*sin(gT*3.0 + 1.2))*drop*neon(length(hp - vec2(0.136,  0.100)*bh) - 0.010, 0.0014);\n    acc += CG*(0.45 + 0.55*sin(gT*3.0 + 2.4))*drop*neon(length(hp - vec2(0.150, -0.055)*bh) - 0.009, 0.0014);\n    acc += CG*(0.45 + 0.55*sin(gT*3.0 + 3.6))*drop*neon(length(hp - vec2(0.052,  0.010)*bh) - 0.011, 0.0014);\n    acc += CG*(0.45 + 0.55*sin(gT*3.0 + 4.8))*drop*neon(length(hp - vec2(0.047, -0.245)*bh) - 0.010, 0.0014);\n\n    float inBody = 1.0 - smoothstep(0.0, 0.012, bd);\n    acc += CG*inBody*exp(-abs(p.y - sy)*70.0)*0.9;\n    acc += CG*inBody*glyphRow(p, vec2(bc.x, sy + 0.02), 6.0, 0.010, 0.0026, 300.0 + floor(gT*3.0), 0.0)*0.6;\n\n    vec2 rp = bc + vec2(sin(gT*0.9)*0.16, sin(gT*0.7 + 1.0)*0.42)*bh;\n    acc += CR*reticle(p, rp, 0.042, 0.0020);\n    acc += CR*0.7*number(p - (rp + vec2(0.072, 0.03)), mod(floor(gT*57.0), 1000.0), 3.0, 0.010, 0.0024);\n\n    vec2 f0 = bc + vec2(0.0, 0.428)*bh, f1 = bc + vec2(0.156, -0.108)*bh, f2 = bc + vec2(-0.047, -0.245)*bh;\n    for (int i = 0; i < 2; i++){\n        float sd = floor(gT*0.6 + float(i)*0.5);\n        float pick = mod(sd + float(i), 3.0);\n        vec2 fp = (pick < 0.5) ? f0 : (pick < 1.5) ? f1 : f2;\n        float pl = 0.5 + 0.5*sin(gT*4.0 + float(i)*2.0);\n        acc += CY*(0.4 + 0.5*pl)*sqBrackets(p, fp, vec2(0.042, 0.042), 0.020, 0.0020);\n    }\n\n    // particle systems: spine energy flow + thought cloud\n    acc += particleField(p, bc + vec2(0.0, 0.18*bh), vec2(0.010, 0.14*bh), 10.0, 33.0, vec2(0.0, 0.14), CC, 0.0034);\n    acc += particleField(p, bc + vec2(0.0, 0.47*bh), vec2(0.09*bh, 0.06*bh), 12.0, 77.0, vec2(0.03, 0.02), CY, 0.0030);\n\n    // vector scope (rotating, breathing ellipse)\n    {\n        vec2 vsc = vec2(0.745, 1.56); float vr = 0.070;\n        acc += CG*0.45*neon(length(p - vsc) - vr, 0.0013);\n        acc += CG*0.25*neon(segH(p - vsc, vr), 0.0011);\n        acc += CG*0.25*neon(segH((p - vsc).yx, vr), 0.0011);\n        vec2 vq = rot2(p - vsc, gT*0.8);\n        float ea = vr*0.82, eb = vr*(0.10 + 0.30*abs(sin(gT*1.3)));\n        acc += CC*0.75*neon((length(vq/vec2(ea, eb)) - 1.0)*eb, 0.0016);\n    }\n    // spectral waterfall / heat cells\n    {\n        vec2 wc3 = vec2(0.745, 1.20), wb3 = vec2(0.082, 0.082);\n        acc += CO*0.22*neon(sdBox(p - wc3, wb3) - 0.006, 0.0016);\n        if (abs(p.x - wc3.x) < wb3.x - 0.005 && abs(p.y - wc3.y) < wb3.y - 0.005){\n            vec2 cid = floor((p - wc3 + wb3)/vec2(0.017, 0.014));\n            float v = h11(cid.x*3.1 + cid.y*7.7 + floor(gT*2.5));\n            v = v*v;\n            acc += mix(CR, CY, v)*0.55*v;\n        }\n        acc += CO*0.45*glyphRow(p, vec2(0.745, 1.098), 6.0, 0.0095, 0.0022, 555.0, 2.5);\n    }\n\n    // left column: ECG vitals + detector needle gauge\n    vec2 vc = vec2(0.165, 1.42), vb = vec2(0.09, 0.05);\n    acc += CO*0.25*neon(sdBox(p - vc, vb) - 0.006, 0.0016);\n    if (abs(p.x - vc.x) < vb.x - 0.004 && abs(p.y - vc.y) < vb.y - 0.004){\n        float xin = (p.x - (vc.x - vb.x))/(2.0*vb.x);\n        float ph = fract(xin*2.0 - gT*0.6);\n        float spike = exp(-pow((ph - 0.5)*22.0, 2.0)) - 0.35*exp(-pow((ph - 0.42)*30.0, 2.0)) + 0.55*exp(-pow((ph - 0.58)*30.0, 2.0));\n        float yv = vc.y + spike*0.032;\n        acc += CG*(neon(p.y - yv, 0.0022) + exp(-abs(p.y - yv)*40.0)*0.15);\n    }\n    acc += CO*0.5*glyphRow(p, vec2(0.125, 1.335), 3.0, 0.010, 0.0024, 90.0, 0.0);\n    acc += CR*0.9*number(p - vec2(0.205, 1.335), mod(floor(gT*8.0), 1000.0), 3.0, 0.012, 0.0026);\n    vec2 dc = vec2(0.165, 1.15); float dr = 0.06;\n    acc += CG*0.5*neon(length(p - dc) - dr, 0.0013)*step(dc.y, p.y);\n    for (int i = 0; i < 5; i++){\n        float ta = PI*(0.1 + 0.8*float(i)/4.0);\n        acc += CG*0.4*neon(sdSeg(p, dc + vec2(cos(ta), sin(ta))*dr*0.82, dc + vec2(cos(ta), sin(ta))*dr), 0.0012);\n    }\n    float na = PI*(0.5 + 0.45*sin(gT*2.3));\n    acc += CR*0.9*neon(sdSeg(p, dc, dc + vec2(cos(na), sin(na))*dr*0.9), 0.0018);\n    acc += CY*fillIn(length(p - dc) - 0.006);\n\n    // DNA double-helix sequencer (O(1): strands direct, rungs quantized)\n    {\n        vec2 dh = vec2(0.93, 1.35);\n        float hw = 0.05, hh = 0.27;\n        if (abs(p.x - dh.x) < hw + 0.03 && abs(p.y - dh.y) < hh){\n            float yy = p.y - dh.y;\n            float ph = yy*24.0 + gT*1.6;\n            float x1 = dh.x + sin(ph)*hw;\n            float x2 = dh.x + sin(ph + PI)*hw;\n            acc += CC*(0.30 + 0.55*max(cos(ph), 0.0))*neon(p.x - x1, 0.0032);\n            acc += CY*(0.30 + 0.55*max(cos(ph + PI), 0.0))*neon(p.x - x2, 0.0032);\n            float sh = 0.034;\n            float ry = floor(yy/sh)*sh + sh*0.5;\n            float rph = ry*24.0 + gT*1.6;\n            vec2 ra = vec2(dh.x + sin(rph)*hw, dh.y + ry);\n            vec2 rb = vec2(dh.x + sin(rph + PI)*hw, dh.y + ry);\n            acc += CG*0.40*neon(sdSeg(p, ra, rb), 0.0014);\n        }\n        acc += CO*0.20*neon(sdBox(p - dh, vec2(hw + 0.03, hh)) - 0.006, 0.0016);\n        acc += CO*0.45*glyphRow(p, vec2(dh.x, dh.y - hh - 0.022), 6.0, 0.0095, 0.0022, 620.0, 2.0);\n    }\n\n    // right column: streaming genome/analysis code\n    acc += CO*0.55*glyphRow(p, vec2(1.30, 1.62), 7.0, 0.011, 0.0026, 361.0, 0.3);\n    for (int i = 0; i < 7; i++){\n        float yy = 1.55 - float(i)*0.058;\n        acc += CO*0.5*glyphRow(p, vec2(1.30, yy), 9.0, 0.0088, 0.0021, 400.0 + float(i)*11.0, 1.4);\n    }\n    acc += CO*0.5*glyphRow(p, vec2(1.26, 1.15), 5.0, 0.010, 0.0024, 480.0, 0.0);\n    acc += CC*1.0*number(p - vec2(1.44, 1.15), mod(floor(gT*13.0), 1000.0), 3.0, 0.014, 0.0028);\n\n    float alB = step(0.5, fract(gT*2.5));\n    vec2 wc = vec2(0.52, 1.02), wb2 = vec2(0.15, 0.026);\n    acc += CR*(0.18 + 0.45*alB)*fillIn(sdBox(p - wc, wb2) - 0.008);\n    acc += vec3(1.0, 0.85, 0.6)*(0.4 + 0.6*alB)*glyphRow(p, wc, 10.0, 0.011, 0.0026, 5.0, 0.0);\n    return acc;\n}\n\n// ---- MODULE 3: data deck ----------------------------------------------------\nvec3 dataModule(vec2 p){\n    if (p.y < 1.78 || p.y > 2.72) return vec3(0.0);\n    vec2 q = p - vec2(0.0, 1.80);\n    vec3 acc = CO*0.30*neon(sdBox(q - vec2(0.80, 0.45), vec2(0.775, 0.435)) - 0.010, 0.0022);\n    acc += titleBlock(q);\n    acc += binaryBox(q);\n    acc += leftColumn(q);\n    acc += romanBox(q);\n    acc += wavePanel(q, vec2(0.69, 0.25), vec2(0.09, 0.20), 0.0, 5.0);\n    acc += wavePanel(q, vec2(0.91, 0.25), vec2(0.09, 0.20), 1.0, 11.0);\n    acc += counterCol(q);\n    acc += hexPanel(q);\n    acc += ornaments(q);\n    // sweeping highlight bar travelling up the deck\n    acc += CO*0.055*exp(-abs(q.y - fract(gT*0.18)*0.9)*22.0);\n    return acc;\n}\n\n// ---- MODULE 4: harmonics + scatter + radial --------------------------------\nvec3 harmonicsModule(vec2 p){\n    if (p.y < 2.68 || p.y > 3.62) return vec3(0.0);\n    vec3 acc = moduleFrame(p, 3.15, 211.0);\n\n    vec2 gc = vec2(0.60, 3.28), gb = vec2(0.50, 0.17);\n    if (abs(p.x - gc.x) < gb.x && abs(p.y - gc.y) < gb.y){\n        float xx = (p.x - gc.x);\n        acc += CO*0.35*neon(p.y - gc.y, 0.0016);\n        for (int j = 0; j < 6; j++){\n            float fj = float(j);\n            float env = 0.13*(1.0 - 0.10*fj);\n            float y = gc.y + env*sin(xx*(9.0 + fj*2.5) + gT*(1.2 + fj*0.3) + fj*0.9)\n                                  *(0.5 + 0.5*sin(xx*3.0 - gT));\n            float dd = abs(p.y - y);\n            vec3 cc = mix(CR, CC, fj/5.0);\n            acc += cc*(neon(dd, 0.0022) + exp(-dd*40.0)*0.12);\n        }\n        float ph = gc.x - gb.x + fract(gT*0.25)*2.0*gb.x;\n        acc += CY*0.5*neon(p.x - ph, 0.0014)*step(abs(p.y - gc.y), gb.y);\n        // marker dot riding the lead curve at the playhead\n        float mxx = ph - gc.x;\n        float myy = gc.y + 0.13*sin(mxx*9.0 + gT*1.2)*(0.5 + 0.5*sin(mxx*3.0 - gT));\n        acc += CY*fillIn(length(p - vec2(ph, myy)) - 0.007);\n    }\n    acc += CO*0.22*neon(sdBox(p - gc, vec2(gb.x + 0.02, gb.y + 0.02)) - 0.006, 0.0018);\n\n    vec2 sc0 = vec2(0.34, 2.96);\n    for (int i = 0; i < 16; i++){\n        float fi = float(i);\n        float t = gT*0.4 + fi;\n        vec2 sp = sc0 + vec2((h11(fi*1.3) - 0.5)*0.44 + 0.02*sin(t),\n                             (h11(fi*2.7 + 1.0) - 0.5)*0.16 + 0.01*cos(t*1.3));\n        acc += CY*0.55*fillIn(length(p - sp) - 0.006);\n        acc += CY*0.25*neon(length(p - sp) - 0.014, 0.0016);\n    }\n    acc += CO*0.4*neon(sdBox(p - sc0, vec2(0.26, 0.10)) - 0.008, 0.0018);\n    acc += CO*0.5*glyphRow(p, vec2(0.34, 2.83), 8.0, 0.0095, 0.0022, 260.0, 0.0);\n\n    vec2 mc = vec2(1.24, 2.98);\n    for (int k = 0; k < 4; k++){\n        float rr = 0.045 + float(k)*0.032;\n        acc += CG*0.35*neon(length(p - mc) - rr, 0.0013);\n    }\n    {\n        vec2 rp = p - mc;\n        float ang = atan(rp.y, rp.x);\n        float tri = cos(mod(ang*1.5 - gT*0.5, 2.0944) - 1.0472);\n        acc += CO*0.5*neon((0.155 - length(rp)) + (1.0 - tri)*0.05, 0.0016)*step(length(rp), 0.165);\n        for (int k = 0; k < 3; k++){\n            float aa = gT*0.4 + float(k)*2.0944;\n            acc += CR*0.7*nseg(p, mc, mc + vec2(cos(aa), sin(aa))*0.14, 0.0016);\n        }\n    }\n    acc += CC*0.7*number(p - vec2(1.24, 2.80), mod(floor(gT*29.0), 1000000.0), 6.0, 0.0095, 0.0022);\n\n    // particle fountain feeding the graph\n    acc += particleField(p, gc, vec2(gb.x, gb.y), 16.0, 91.0, vec2(-0.06, 0.03), CC, 0.0030);\n    // spectrum analyzer\n    acc += spectrumBar(p, vec2(0.88, 2.88), vec2(0.16, 0.075), 13.0, 5.0, CG);\n    // blinking alert triangle\n    {\n        vec2 ac = vec2(0.58, 2.86);\n        float bl = step(0.5, fract(gT*2.0));\n        float td = min(min(sdSeg(p, ac + vec2(0.0, 0.05), ac + vec2(0.05, -0.04)),\n                           sdSeg(p, ac + vec2(0.05, -0.04), ac + vec2(-0.05, -0.04))),\n                           sdSeg(p, ac + vec2(-0.05, -0.04), ac + vec2(0.0, 0.05)));\n        acc += CR*(0.4 + 0.6*bl)*neon(td, 0.0020);\n        acc += CR*(0.4 + 0.6*bl)*fillIn(sdBox(p - ac - vec2(0.0, 0.006), vec2(0.004, 0.017)));\n        acc += CR*(0.4 + 0.6*bl)*fillIn(length(p - ac - vec2(0.0, -0.024)) - 0.005);\n    }\n    return acc;\n}\n\nvec3 scene(vec2 p){\n    vec3 c = bgWorld(p);\n    c += busLayer(p);\n    c += globeModule(p);\n    c += bodyModule(p);\n    c += dataModule(p);\n    c += harmonicsModule(p);\n    return c;\n}\n\n// ---- fixed screen-space HUD frame ------------------------------------------\nfloat onl(float d, float w){\n    float dd = abs(d) - w;\n    return (1.0 - smoothstep(-gSp, gSp, dd)) + exp(-max(dd, 0.0)*80.0)*uGlow*0.5;\n}\nvec3 overlay(vec2 v, float aspect, float scrollN){\n    vec3 acc = vec3(0.0);\n    float pxAA = gPx;\n    gPx = gSp;\n    acc += CO*0.7*onl(v.y - 0.965, 0.0016);\n    acc += CO*0.7*onl(v.y - 0.035, 0.0016);\n    acc += CO*0.9*sqBrackets(v, vec2(aspect*0.5, 0.5), vec2(aspect*0.5 - 0.012, 0.5 - 0.012),\n                             0.045 + 0.014*sin(gT*1.5), 0.0022);\n    acc += CO*0.9*glyphRow(v, vec2(0.16, 0.984), 8.0, 0.012, 0.0028, 700.0, 0.0);\n    float rec = step(0.5, fract(gT*1.3));\n    acc += CR*rec*fillIn(length(v - vec2(0.02, 0.984)) - 0.008);\n    acc += CO*0.9*number(v - vec2(aspect - 0.16, 0.984), mod(floor(gT*10.0), 1000000.0), 6.0, 0.012, 0.0026);\n    acc += CO*0.6*glyphRow(v, vec2(aspect*0.5, 0.016), 26.0, 0.010, 0.0022, 800.0 + floor(gT*4.0), 4.0);\n    acc += CO*0.8*glyphRow(v, vec2(0.14, 0.016), 6.0, 0.011, 0.0026, 640.0, 0.0);\n    float gx = aspect - 0.022;\n    acc += CO*0.5*onl(v.x - gx, 0.0012)*step(abs(v.y - 0.5), 0.44);\n    float fillTop = 0.06 + scrollN*0.88;\n    if (v.y > 0.06 && v.y < fillTop && abs(v.x - gx) < 0.010)\n        acc += CY*0.7;\n    acc += CY*0.9*fillIn(sdBox(v - vec2(gx, fillTop), vec2(0.012, 0.004)));\n    // status LEDs\n    for (int i = 0; i < 3; i++){\n        float b = step(0.5, fract(gT*(1.5 + float(i)*0.4) + float(i)));\n        vec3 lc = (i == 0) ? CR : (i == 1) ? CY : CG;\n        acc += lc*(0.3 + 0.7*b)*fillIn(length(v - vec2(0.31 + float(i)*0.024, 0.984)) - 0.006);\n    }\n    // travelling diagonal scan sweep\n    float sw = mod(gT*0.55, aspect + 1.2) - 0.6;\n    float sd2 = abs((v.x + v.y*0.5) - sw);\n    acc += CO*0.05*exp(-sd2*11.0);\n    gPx = pxAA;\n    return acc;\n}\n\n// ---- main ------------------------------------------------------------------\nvoid main(){\n    vec2 R = RENDERSIZE.xy;\n    vec2 fragCoord = gl_FragCoord.xy;\n    gT = TIME*uSpeed;\n\n    float al = clamp(uAlert, 0.0, 1.0);\n    CO = mix(vec3(1.00, 0.32, 0.05), vec3(1.00, 0.12, 0.05), al*0.60);\n    CR = vec3(1.00, 0.12, 0.07);\n    CG = mix(vec3(0.30, 1.00, 0.45), vec3(1.00, 0.50, 0.10), al*0.55);\n    CC = mix(vec3(0.50, 0.95, 1.00), vec3(1.00, 0.40, 0.30), al*0.50);\n    CY = mix(vec3(1.00, 0.85, 0.20), vec3(1.00, 0.35, 0.10), al*0.45);\n    CP = mix(vec3(0.75, 0.40, 1.00), vec3(1.00, 0.25, 0.35), al*0.50);\n\n    vec2 uv = fragCoord/R;\n    vec2 nn = uv*2.0 - 1.0;\n    nn *= 1.0 + uCurve*0.07*dot(nn, nn);\n    vec2 uv2 = nn*0.5 + 0.5;\n\n    float aspect = R.x/R.y;\n    float viewH = 1.6/aspect;\n    gPx = 1.2*viewH/R.y;\n    gSp = 1.4/R.y;\n\n    float scroll = gT*uScroll;\n    float scrollN = fract(scroll/WORLD_H);\n\n    float tear = step(0.96, h11(floor(gT*3.0)));\n    float rowr = h21(vec2(floor(uv2.y*300.0), floor(gT*30.0)));\n    float xoff = uFlicker*tear*(rowr - 0.5)*0.02;\n\n    float x = uv2.x*1.6 + xoff;\n    float wy = mod(uv2.y*viewH + scroll, WORLD_H);\n    vec3 col = scene(vec2(x, wy));\n\n    col += overlay(vec2(uv2.x*aspect, uv2.y), aspect, scrollN);\n\n    col = mix(col, col*vec3(1.25, 0.45, 0.35), al*0.35);\n    col += CR*0.05*al*(0.5 + 0.5*sin(gT*6.0));\n\n    float scan = 0.75 + 0.25*sin(fragCoord.y*3.14159);\n    col *= mix(1.0, scan, uScan*0.6);\n    float m3 = mod(floor(fragCoord.x), 3.0);\n    vec3 mask = (m3 < 0.5) ? vec3(1.18, 0.91, 0.91)\n              : (m3 < 1.5) ? vec3(0.91, 1.18, 0.91) : vec3(0.91, 0.91, 1.18);\n    col *= mix(vec3(1.0), mask, uScan*0.5);\n\n    col *= 1.0 - uFlicker*(0.06*h11(floor(gT*24.0)) + 0.02*(0.5 + 0.5*sin(gT*117.0 + uv2.y*3.0)));\n    col += (h21(fragCoord + fract(gT)*vec2(17.0, 3.0)) - 0.5)*0.035*uFlicker;\n\n    float edge = smoothstep(0.0, 0.006, uv2.x)*smoothstep(1.0, 0.994, uv2.x)\n               * smoothstep(0.0, 0.006, uv2.y)*smoothstep(1.0, 0.994, uv2.y);\n    col *= edge;\n    col *= clamp(1.0 - uVignette*0.6*dot(nn*0.85, nn*0.85), 0.0, 1.0);\n\n    col = 1.0 - exp(-col*1.6);\n    col = pow(max(col, vec3(0.0)), vec3(0.9));\n    gl_FragColor = vec4(col, 1.0);\n}\n",
    "generator": {
      "model": "claude-opus-4.8",
      "provider": null,
      "prompt": null,
      "params": null
    }
  }
}