import { jsx as n, jsxs as i, Fragment as Fe } from "react/jsx-runtime"; import { useMemo as he, useState as $, useRef as Z, useEffect as de } from "react"; import { useFrame as Qe } from "@react-three/fiber"; import { Html as De, Grid as At } from "@react-three/drei"; import * as Ye from "three"; import { Color as Dt } from "three"; function Nt({ vector: e, origin: t = [0, 0, 0], color: o = "#facc15" }) { const { dir: r, len: l, position: a } = he(() => { const c = new Ye.Vector3(...t), s = new Ye.Vector3(...e), d = c.distanceTo(s); return { dir: s.clone().sub(c).normalize(), len: d, position: c }; }, [e, t]), h = he(() => new Ye.ArrowHelper(r, a, l, o, 0.2 * Math.min(l, 1) + 0.1, 0.1 * Math.min(l, 1) + 0.05), [r, l, a, o]); return /* @__PURE__ */ n("primitive", { object: h }); } function _t(e, t = !1) { const o = []; for (let r = 0; r <= e; r++) for (let l = 0; l <= e - r; l++) { const a = e - r - l; if (a >= 0) if (!t) o.push([r, l, a]); else { const h = r === 0 ? [1] : [1, -1], c = l === 0 ? [1] : [1, -1], s = a === 0 ? [1] : [1, -1]; for (const d of h) for (const m of c) for (const u of s) o.push([r * d, l * m, a * u]); } } return o; } function Ht({ vector: e, radius: t, distance: o, color: r }) { const { position: l, quaternion: a } = he(() => { const h = new Ye.Vector3(...e).normalize(), c = new Ye.Vector3(0, 1, 0), s = new Ye.Quaternion().setFromUnitVectors(c, h); return { position: h.clone().multiplyScalar(o / 2), quaternion: s }; }, [e, o]); return /* @__PURE__ */ i("mesh", { position: l, quaternion: a, children: [ /* @__PURE__ */ n("cylinderGeometry", { args: [t, t, o, 32] }), /* @__PURE__ */ n("meshStandardMaterial", { color: r, opacity: 0.5, transparent: !0 }) ] }); } function Wt({ complexity: e, lightlanes: t = !1, radius: o = 0.5, distance: r = 5, allSectors: l = !1, cumulative: a = !1 }) { const h = he(() => { const s = [], d = a ? 1 : e, m = e; for (let u = d; u <= m; u++) { const x = _t(u, l); for (const y of x) s.push({ vec: y, c: u }); } return s; }, [e, l, a]), c = (s) => { const d = a ? Math.max(e, 1) : e; return `hsl(${270 * (1 - (d > 1 ? (s - 1) / (d - 1) : 1))}, 100%, 50%)`; }; return /* @__PURE__ */ n("group", { children: h.map((s, d) => { const m = a ? c(s.c) : t ? "#ff33c5" : "#4ade80"; return t ? /* @__PURE__ */ n( Ht, { vector: s.vec, radius: o, distance: r, color: m }, `cyl-${d}-${s.vec.join(",")}-${s.c}` ) : /* @__PURE__ */ n( Nt, { vector: s.vec, color: m }, `vec-${d}-${s.vec.join(",")}-${s.c}` ); }) }); } const Vt = "glitch:play-sound", jt = "glitch:stop-sound", we = { click: "ui.button_click", hover: "ui.button_hover", computeStart: "machine.compute_start", computeStep: "machine.compute_step", computeDone: "machine.compute_done" }; function Ct(e, t) { typeof window > "u" || window.dispatchEvent(new CustomEvent(e, { detail: t })); } function Ce(e, t, o) { try { if (e?.playSound) { e.playSound(t, o); return; } } catch { } Ct(Vt, { id: t, payload: o }); } function Yt(e, t, o) { try { if (e?.stopSound) { e.stopSound(t, o); return; } } catch { } Ct(jt, { id: t, payload: o }); } const Ue = 1e-12; function ut(e = 123456789) { let t = e >>> 0; return function() { t |= 0, t = t + 1831565813 | 0; let r = Math.imul(t ^ t >>> 15, 1 | t); return r = r + Math.imul(r ^ r >>> 7, 61 | r) ^ r, ((r ^ r >>> 14) >>> 0) / 4294967296; }; } function Ut(e, t = Math.random) { if (!Number.isFinite(e) || e <= 0) return 0; if (e < 30) { const h = Math.exp(-e); let c = 0, s = 1; do c++, s *= t(); while (s > h); return c - 1; } const o = Math.max(1e-12, t()), r = t(), l = Math.sqrt(-2 * Math.log(o)) * Math.cos(2 * Math.PI * r), a = e + Math.sqrt(e) * l; return Math.max(0, Math.round(a)); } function st(e) { return [e[0] ?? e.x, e[1] ?? e.y, e[2] ?? e.z]; } function Gt(e, t, o) { return Math.sqrt(e * e + t * t + o * o); } function kt(e) { const t = 2 * Math.PI; let o = e % t; return o < 0 && (o += t), o; } function Jt(e) { const t = 2 * e() - 1, o = 2 * Math.PI * e(); return { theta: Math.acos(Math.max(-1, Math.min(1, t))), phi: o }; } function mt(e) { const t = 2 * Math.PI; let o = e % t; return o < 0 && (o += t), o > Math.PI && (o = t - o), o; } function Mt(e = Math.random) { const t = Math.max(1e-12, e()), o = e(); return Math.sqrt(-2 * Math.log(t)) * Math.cos(2 * Math.PI * o); } function qt(e, t, o) { const r = Math.sin(t); return [ e * r * Math.cos(o), e * Math.cos(t), e * r * Math.sin(o) ]; } function Xt(e, t = !1, o = !1) { const r = [], l = o ? 1 : e, a = e; for (let h = l; h <= a; h++) for (let c = 0; c <= h; c++) for (let s = 0; s <= h - c; s++) { const d = h - c - s; if (!t) { r.push([c, s, d]); continue; } const m = c === 0 ? [1] : [1, -1], u = s === 0 ? [1] : [1, -1], x = d === 0 ? [1] : [1, -1]; for (const y of m) for (const B of u) for (const F of x) r.push([c * y, s * B, d * F]); } return r; } function wt({ D: e, complexity: t, allSectors: o = !1, cumulative: r = !1 }) { if (!Number.isFinite(e) || e <= 0) return []; if (!Number.isInteger(t) || t < 1) return []; const l = Xt(t, o, r), a = []; for (let h = 0; h < l.length; h++) { const [c, s, d] = l[h], m = Gt(c, s, d); m <= Ue || a.push([e * c / m, e * s / m, e * d / m]); } return a; } function Kt(e, t, o) { if (!e || e.length === 0 || !Number.isFinite(o) || o <= 0) return 0; const [r, l, a] = st(t), h = o * o; let c = 0; for (let s = 0; s < e.length; s++) { const [d, m, u] = st(e[s]), x = d * d + m * m + u * u; if (x <= Ue) continue; let y = (r * d + l * m + a * u) / x; y < 0 && (y = 0), y > 1 && (y = 1); const B = y * d, F = y * m, R = y * u, C = r - B, j = l - F, v = a - R; C * C + j * j + v * v < h && c++; } return c; } function Qt(e, t, o, r) { if (!e || e.length === 0 || !Number.isFinite(t) || t <= 0 || !Number.isFinite(r) || r <= 0) return 0; const [l, a, h] = st(o), s = t * t - 0.5 * r * r; let d = 0; for (let m = 0; m < e.length; m++) { const [u, x, y] = st(e[m]); l * u + a * x + h * y > s && d++; } return d; } function Bt({ D: e, lane_radius: t }) { if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(t) || t <= 0) return 0; const o = t * t / (4 * e * e); return o <= 0 ? 0 : o > 1 ? 1 : o; } function Zt({ D: e, lane_radius: t, lane_length: o }) { if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(t) || t <= 0 || !Number.isFinite(o) || o <= 0) return 0; if (o >= e - Ue) return Bt({ D: e, lane_radius: t }); const r = t, l = o, a = e - l; if (r <= a) return 0; if (r >= e + l) return 1; const h = Math.sqrt(Math.max(0, e * e - l * l)); let c; return r < h ? c = (e * e + l * l - r * r) / (2 * e * l) : r < e ? c = Math.sqrt(Math.max(0, 1 - r * r / (e * e))) : c = -1, Number.isFinite(c) ? (c < -1 && (c = -1), c > 1 && (c = 1), (1 - c) / 2) : 0; } function en({ flux: e, D: t, lane_radius: o, dt: r }) { if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(r) || r <= 0) return 0; const l = Bt({ D: t, lane_radius: o }); return e * l * r; } function tn({ flux: e, D: t, lane_radius: o, lane_length: r, dt: l }) { if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(l) || l <= 0) return 0; const a = Zt({ D: t, lane_radius: o, lane_length: r }); return e * a * l; } function Et({ flux: e, D: t, lane_radius: o, dt: r, hitTestModel: l = "shell", lane_length: a }) { return l === "segment" ? tn({ flux: e, D: t, lane_radius: o, lane_length: a, dt: r }) : en({ flux: e, D: t, lane_radius: o, dt: r }); } function nn(e) { if (!e || typeof e != "object") throw new Error("createSamplingSimulation: config object is required."); const t = e.lane_radius ?? e.radius, o = e.D, r = e.complexity, l = e.flux, a = e.bin_size ?? 1, h = e.sub_bin_sampling ?? 4, c = e.thetaDrift ?? e.theta_drift ?? 0, s = e.thetaJitter ?? e.theta_jitter ?? 0, d = e.phiJitter ?? e.phi_jitter ?? 0, m = e.laneLength ?? e.lane_length ?? e.distance ?? o, u = e.hitTestModel ?? e.hit_test_model ?? "shell", x = e.observationMode ?? e.observation_mode ?? "orbit"; if (!Number.isFinite(o) || o <= 0) throw new Error("createSamplingSimulation: D must be a positive number."); if (!Number.isFinite(t) || t <= 0) throw new Error("createSamplingSimulation: lane_radius (or radius) must be a positive number."); if (!Number.isInteger(r) || r < 1) throw new Error("createSamplingSimulation: complexity must be an integer >= 1."); if (!Number.isFinite(l) || l < 0) throw new Error("createSamplingSimulation: flux must be a finite number >= 0."); if (!Number.isFinite(a) || a <= 0) throw new Error("createSamplingSimulation: bin_size must be a positive number."); if (!Number.isInteger(h) || h < 1) throw new Error("createSamplingSimulation: sub_bin_sampling must be an integer >= 1."); if (!Number.isFinite(c)) throw new Error("createSamplingSimulation: thetaDrift must be finite."); if (!Number.isFinite(s) || s < 0) throw new Error("createSamplingSimulation: thetaJitter must be a finite number >= 0."); if (!Number.isFinite(d) || d < 0) throw new Error("createSamplingSimulation: phiJitter must be a finite number >= 0."); if (!Number.isFinite(m) || m <= 0) throw new Error("createSamplingSimulation: laneLength/lane_length/distance must be a positive number."); if (u !== "shell" && u !== "segment") throw new Error('createSamplingSimulation: hitTestModel must be "shell" or "segment".'); if (x !== "orbit" && x !== "randomSphere") throw new Error('createSamplingSimulation: observationMode must be "orbit" or "randomSphere".'); return { D: o, lane_radius: t, complexity: r, flux: l, bin_size: a, sub_bin_sampling: h, theta: mt(e.theta ?? Math.PI / 2), phi: kt(e.phi ?? 0), velocity: e.velocity ?? 0, thetaDrift: c, thetaJitter: s, phiJitter: d, lane_length: m, hitTestModel: u, observationMode: x, allSectors: !!e.allSectors, cumulative: !!e.cumulative, usePoisson: e.usePoisson !== !1, seed: Number.isFinite(e.seed) ? e.seed : 1 }; } function It(e) { const t = nn(e), o = wt(t), r = t.hitTestModel === "segment" ? wt({ ...t, D: t.lane_length }) : o, l = ut(t.seed), a = ut(t.seed + 1), h = ut(t.seed + 2), c = t.bin_size / t.sub_bin_sampling, s = Et({ flux: t.flux, D: t.D, lane_radius: t.lane_radius, dt: c, hitTestModel: t.hitTestModel, lane_length: t.lane_length }); let d = 0, m = 0, u = t.phi, x = t.theta, y = 0, B = 0, F = 0, R = 0, C = 0, j = 0, v = 0; function L(k, A) { return t.usePoisson ? Ut(k, A) : k; } function O(k = x, A = u) { return qt(t.D, k, A); } function J() { let k, A; if (t.observationMode === "randomSphere") { const P = Jt(h); k = P.theta, A = P.phi; } else k = mt( x + (t.thetaJitter > 0 ? t.thetaJitter * Mt(h) : 0) ), A = kt( u + (t.phiJitter > 0 ? t.phiJitter * Mt(h) : 0) ); const ee = O(k, A), z = t.hitTestModel === "segment" ? Kt(r, ee, t.lane_radius) : Qt(o, t.D, ee, t.lane_radius); j = z; const D = o.length, N = D > 0 ? z * t.flux * c / D : 0; return B += L(N, l), F += L(s, a), R += N, v += z, C++, { laneCount: z, satPos: ee, lambdaLightlaneSubBin: N, phase: A, theta: k }; } function _() { const k = C > 0 ? C * c : t.bin_size, A = s * t.sub_bin_sampling, D = { time: y, bin_size: k, lightlane: B, isotropic: F, lambdaIsotropic: C > 0 ? s * C : A, overlaps: j, overlapsMean: C > 0 ? v / C : 0, subBins: C, phase: u, theta: x, lambdaLightlaneExpected: R }; return B = 0, F = 0, R = 0, v = 0, C = 0, D; } return { config: { ...t }, getLaneCount() { return o.length; }, getState() { return { elapsed: y, phase: u, theta: x, timeInBin: d, timeInSubBin: m, accumulatedLightlane: B, accumulatedIsotropic: F, expectedLightlaneThisBin: R, processedSubBinsInCurrentBin: C, lastLaneCount: j, laneCount: o.length }; }, reset() { d = 0, m = 0, u = t.phi, x = t.theta, y = 0, B = 0, F = 0, R = 0, C = 0, j = 0, v = 0; }, flushPartialBin() { if (C <= 0) return null; const k = _(); return d = 0, m = 0, k; }, simulate(k) { if (!Number.isFinite(k) || k <= 0) return { bins: [], lastLaneCount: j, subBinEvents: 0, elapsed: y }; let A = k, ee = 0; const z = []; for (; A > Ue; ) { const D = c - m, N = t.bin_size - d, P = Math.min(A, D, N); u += t.velocity * P, x = mt(x + t.thetaDrift * P), y += P, m += P, d += P, A -= P, m >= c - Ue && (m = 0, J(), ee++), d >= t.bin_size - Ue && (d = 0, z.push(_())); } return { bins: z, lastLaneCount: j, subBinEvents: ee, elapsed: y }; } }; } function Ft(e, t) { const o = e.n + 1, r = t - e.mean, l = e.mean + r / o, a = e.m2 + r * (t - l); return { n: o, mean: l, m2: a }; } function Pt() { return { n: 0, mean: 0, m2: 0 }; } function on({ complexity: e, samplesPerPoint: t, runsPerPoint: o, binSize: r, subBinSampling: l, props: a, observationMode: h, seed: c }) { let s = Pt(), d = Pt(), m = 0; for (let F = 0; F < o; F++) { const R = It({ D: a.chandraDistance, theta: a.theta, phi: a.phi, observationMode: h, velocity: a.orbitSpeed, thetaDrift: a.thetaDrift, thetaJitter: a.thetaJitter, phiJitter: a.phiJitter, bin_size: r, complexity: e, sub_bin_sampling: l, flux: a.K, lane_radius: a.radius, distance: a.distance, hitTestModel: "segment", allSectors: a.allSectors, cumulative: a.cumulative, usePoisson: a.usePoisson, seed: c + F * 7919 }); F === 0 && (m = R.getLaneCount()); for (let C = 0; C < t; C++) { const { bins: j } = R.simulate(r), v = j[0]; v && (s = Ft(s, v.lightlane), d = Ft(d, v.isotropic)); } } const u = s.n > 1 ? s.m2 / (s.n - 1) : 0, x = d.n > 1 ? d.m2 / (d.n - 1) : 0, y = s.mean > 0 ? u / s.mean : 0, B = d.mean > 0 ? x / d.mean : 0; return { complexity: e, laneCount: m, meanBlue: s.mean, meanYellow: d.mean, fanoBlue: y, fanoYellow: B, fanoExcess: Math.max(0, y - B) }; } function rn(e, t = 1) { const o = e.filter((u) => u.complexity >= t && u.complexity > 1 && u.fanoExcess > 1e-6); if (o.length < 3) return null; let r = 0, l = 0, a = 0, h = 0; const c = o.length; for (const u of o) { const x = Math.log(u.laneCount), y = Math.log(u.fanoExcess); r += x, l += y, a += x * x, h += x * y; } const s = c * a - r * r; if (Math.abs(s) < 1e-12) return null; const d = (c * h - r * l) / s, m = (l - d * r) / c; return { A: Math.exp(m), alpha: -d, predictFanoExcessFromLaneCount(u) { return Math.exp(m + d * Math.log(Math.max(1, u))); } }; } function an(e, t = 1) { const o = e.filter((c) => c.complexity >= t && c.complexity > 1 && c.fanoExcess > 1e-6); if (o.length < 4) return null; const r = Math.min(...o.map((c) => c.fanoExcess)), l = Math.max(0, r * 0.98); let a = null; const h = 80; for (let c = 0; c <= h; c++) { const s = c / h * l, d = o.map((O) => ({ x: O.laneCount, y: O.fanoExcess - s })).filter((O) => O.y > 1e-9); if (d.length < 3) continue; let m = 0, u = 0, x = 0, y = 0; const B = d.length; for (const O of d) { const J = Math.log(O.x), _ = Math.log(O.y); m += J, u += _, x += J * J, y += J * _; } const F = B * x - m * m; if (Math.abs(F) < 1e-12) continue; const R = (B * y - m * u) / F, C = (u - R * m) / B, j = Math.exp(C), v = -R; if (!(j > 0) || !(v > 0)) continue; let L = 0; for (const O of o) { const J = s + j * Math.pow(Math.max(1, O.laneCount), -v), _ = Math.log(Math.max(1e-9, O.fanoExcess)) - Math.log(Math.max(1e-9, J)); L += _ * _; } (!a || L < a.score) && (a = { A: j, alpha: v, B: s, score: L }); } return a ? { A: a.A, alpha: a.alpha, B: a.B, score: a.score, predictFanoExcessFromLaneCount(c) { return a.B + a.A * Math.pow(Math.max(1, c), -a.alpha); } } : null; } function sn(e) { const t = e.filter((u) => u.x > 0 && u.y > 0); if (t.length < 3) return null; let o = 0, r = 0, l = 0, a = 0; const h = t.length; for (const u of t) { const x = Math.log(u.x), y = Math.log(u.y); o += x, r += y, l += x * x, a += x * y; } const c = h * l - o * o; if (Math.abs(c) < 1e-12) return null; const s = (h * a - o * r) / c, d = (r - s * o) / h, m = Math.exp(d); return { A: m, beta: s, predict(u) { return m * Math.pow(Math.max(1e-9, u), s); }, invert(u) { return m <= 0 || Math.abs(s) < 1e-12 || u <= 0 ? null : Math.pow(u / m, 1 / s); } }; } function ln(e, t) { if (!Number.isFinite(t) || t <= 0 || e.length === 0) return null; const o = [...e].sort((s, d) => s.complexity - d.complexity), r = [...o].sort((s, d) => s.laneCount - d.laneCount), l = r[0], a = r[r.length - 1]; if (t <= l.laneCount) return { complexity: l.complexity, mode: "observed-range" }; for (let s = 1; s < r.length; s++) { const d = r[s - 1], m = r[s]; if (t <= m.laneCount) { const u = Math.max(1e-9, m.laneCount - d.laneCount), x = (t - d.laneCount) / u; return { complexity: d.complexity + x * (m.complexity - d.complexity), mode: "observed-range" }; } } const c = sn(o.map((s) => ({ x: s.complexity, y: s.laneCount })))?.invert(t) ?? null; return c && Number.isFinite(c) ? { complexity: c, mode: "extrapolated" } : { complexity: a.complexity, mode: "observed-max" }; } function Tt(e, t, o, r) { return e.map((l, a) => `${a === 0 ? "M" : "L"} ${o(l.complexity)} ${r(t(l))}`).join(" "); } function cn(e) { return e >= 10 ? e.toFixed(0) : e >= 2 ? e.toFixed(1) : e.toFixed(2); } function dn(e, t) { const r = [ 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.5, 3, 4, 5, 7.5, 10 ].filter((c) => c >= e && c <= t); if (r.length >= 3) return r; const l = 5, a = Math.log(e), h = Math.log(t); return Array.from({ length: l }, (c, s) => { const d = s / (l - 1); return Math.exp(a + (h - a) * d); }); } function pn(e) { const [t, o] = $(40), [r, l] = $(1e3), [a, h] = $(3), [c, s] = $(1), [d, m] = $(4), [u, x] = $("randomSphere"), [y, B] = $(0.05), [F, R] = $(10), [C, j] = $(0), [v, L] = $([]), [O, J] = $(0), [_, k] = $(!1), A = Z(!1), ee = Z(-1), z = () => { Ce(e.host, we.hover, { page: "fano" }); }, D = (b, T) => { Ce(e.host, we.click, { page: "fano", target: b, ...T }); }; de(() => { let b = !1; return L([]), J(0), k(!0), (async () => { const T = []; for (let E = 1; E <= t; E++) { if (b) return; const I = on({ complexity: E, samplesPerPoint: r, runsPerPoint: a, binSize: c, subBinSampling: d, props: e, observationMode: u, seed: 1e4 + E * 97 + C * 100003 }); T.push(I), L([...T]), J(E / t), await new Promise((ne) => setTimeout(ne, 0)); } b || k(!1); })(), () => { b = !0; }; }, [ t, r, a, c, d, u, C, e.radius, e.distance, e.chandraDistance, e.allSectors, e.cumulative, e.theta, e.phi, e.orbitSpeed, e.thetaDrift, e.thetaJitter, e.phiJitter, e.K, e.speedup, e.usePoisson ]), de(() => { const b = A.current; if (A.current = _, _ && !b) { ee.current = -1, Ce(e.host, we.computeStart, { page: "fano" }); return; } !_ && b && (Yt(e.host, we.computeStep, { page: "fano" }), Ce(e.host, we.computeDone, { page: "fano", points: v.length })); }, [_, e.host, v.length]), de(() => { if (!_) return; const b = Math.floor(O * 10); b <= ee.current || (ee.current = b, Ce(e.host, we.computeStep, { page: "fano", progress: O })); }, [O, _, e.host]); const N = he(() => rn(v, F), [v, F]), P = he(() => an(v, F), [v, F]), H = he(() => { if (!N || N.alpha <= 0 || y <= 0) return null; if (P && P.B >= y) return { targetExcess: y, requiredLaneCount: Number.POSITIVE_INFINITY, measuredCrossing: v.find((se) => se.fanoExcess <= y) ?? null, complexityEstimate: null, blockedByFloor: !0, floorExcess: P.B }; const b = P ? Math.max(1e-9, y - P.B) : y, T = P ? P.A : N.A, E = P ? P.alpha : N.alpha, I = Math.pow(T / b, 1 / E); if (!Number.isFinite(I) || I <= 0) return null; const ne = v.find((se) => se.fanoExcess <= y) ?? null, G = ln(v, I); return { targetExcess: y, requiredLaneCount: I, measuredCrossing: ne, complexityEstimate: G, blockedByFloor: !1, floorExcess: P?.B ?? 0 }; }, [N, P, v, y]), g = he(() => { const E = { top: 20, right: 20, bottom: 42, left: 48 }, I = 860 - E.left - E.right, ne = 360 - E.top - E.bottom, G = Math.max(2, t), se = [ 1, ...v.map((Y) => Y.fanoBlue), ...v.map((Y) => Y.fanoYellow), ...v.map((Y) => 1 + Y.fanoExcess) ].filter((Y) => Number.isFinite(Y) && Y > 0), ve = Math.min(...se), Re = Math.max(...se), X = Math.max(1e-3, Math.min(0.95, ve * 0.95)), Pe = Math.max(1.05, Re * 1.05), Be = Math.log(X), Je = Math.log(Pe), me = (Y) => E.left + (Y - 1) / (G - 1) * I, Ee = (Y) => { const Ie = Math.min(Pe, Math.max(X, Y)), le = Math.log(Ie); return E.top + ne - (le - Be) / Math.max(1e-9, Je - Be) * ne; }, Se = dn(X, Pe); return { width: 860, height: 360, margin: E, innerW: I, innerH: ne, xToPx: me, yToPx: Ee, yMax: Pe, yMin: X, yTicks: Se }; }, [v, t]), ue = he( () => v.length > 1 ? Tt(v, (b) => b.fanoBlue, g.xToPx, g.yToPx) : "", [v, g] ), ke = he( () => v.length > 1 ? Tt(v, (b) => b.fanoYellow, g.xToPx, g.yToPx) : "", [v, g] ), q = v.at(-1) ?? null; return /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "auto" }, children: /* @__PURE__ */ i( "div", { style: { width: "100%", height: "100%", display: "flex", flexDirection: "column", background: "radial-gradient(circle at 20% 10%, rgba(30,41,59,0.9), rgba(2,6,23,0.96))", color: "var(--terminal-green-soft)", padding: "16px", paddingBottom: `${16 + (e.bottomInset ?? 0)}px`, boxSizing: "border-box", gap: "12px", fontFamily: "var(--font-ui)" }, children: [ /* @__PURE__ */ i("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", gap: "12px", flexWrap: "wrap" }, children: [ /* @__PURE__ */ i("div", { children: [ /* @__PURE__ */ n("div", { style: { fontSize: "14px", fontWeight: 400, letterSpacing: "0.12em", textTransform: "uppercase", fontFamily: "var(--font-headline)", color: "var(--terminal-green-soft)" }, children: "Fano Sweep" }), /* @__PURE__ */ i("div", { style: { fontSize: "11px", color: "var(--terminal-green)", marginTop: "4px" }, children: [ "Goal: show ", "Fano(Blue)", " trending toward 1.0 (or toward Yellow) as complexity increases." ] }) ] }), /* @__PURE__ */ i("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [ e.onBack && /* @__PURE__ */ n( "button", { type: "button", onClick: () => { D("back-to-simulator"), e.onBack?.(); }, onPointerEnter: z, style: { border: "1px solid var(--terminal-panel-border)", background: "rgba(7,19,11,0.8)", color: "var(--terminal-green-soft)", padding: "8px 12px", borderRadius: "8px", cursor: "pointer", fontSize: "12px", fontWeight: 400, fontFamily: "var(--font-headline)", letterSpacing: "0.08em", textTransform: "uppercase" }, children: "Back To Simulator" } ), /* @__PURE__ */ n( "button", { type: "button", onClick: () => { D("rerun-sweep"), j((b) => b + 1); }, onPointerEnter: z, style: { border: "1px solid var(--terminal-panel-border)", background: _ ? "rgba(125, 255, 155, 0.14)" : "rgba(7,19,11,0.8)", color: "var(--terminal-green-soft)", padding: "8px 12px", borderRadius: "8px", cursor: "pointer", fontSize: "12px", fontWeight: 400, fontFamily: "var(--font-headline)", letterSpacing: "0.08em", textTransform: "uppercase" }, children: _ ? "Rerun (queued)" : "Rerun Sweep" } ) ] }) ] }), /* @__PURE__ */ i("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [ /* @__PURE__ */ n( "button", { type: "button", onClick: () => { D("preset-video-demo"), x("randomSphere"), o(60), l(1200), h(2), s(1), m(4), R(12); }, onPointerEnter: z, style: { border: "1px solid var(--terminal-panel-border)", background: "rgba(7,19,11,0.8)", color: "var(--terminal-green-soft)", padding: "6px 10px", borderRadius: 8, cursor: "pointer", fontSize: 11, fontWeight: 400, fontFamily: "var(--font-headline)", letterSpacing: "0.06em" }, children: "Preset: Video Demo" } ), /* @__PURE__ */ n( "button", { type: "button", onClick: () => { D("preset-robust-sweep"), x("randomSphere"), o(200), l(3e3), h(5), s(1), m(16), R(40); }, onPointerEnter: z, style: { border: "1px solid rgba(125, 255, 155, 0.32)", background: "rgba(2,6,23,0.8)", color: "var(--terminal-green-soft)", padding: "6px 10px", borderRadius: 8, cursor: "pointer", fontSize: 11, fontWeight: 400, fontFamily: "var(--font-headline)", letterSpacing: "0.06em" }, children: "Preset: Robust Sweep" } ) ] }), /* @__PURE__ */ i("div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(140px, 1fr))", gap: "8px" }, children: [ /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ "Max Complexity", /* @__PURE__ */ n( "input", { type: "number", min: 2, max: 200, value: t, onChange: (b) => o(Math.max(2, Math.min(200, Number(b.target.value) || 2))), onFocus: () => z(), style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } } ) ] }), /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ "Samples / Point", /* @__PURE__ */ n( "input", { type: "number", min: 100, max: 2e4, step: 100, value: r, onChange: (b) => l(Math.max(100, Math.min(2e4, Number(b.target.value) || 100))), onFocus: () => z(), style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } } ) ] }), /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ "Runs / Point (Seeds)", /* @__PURE__ */ n( "input", { type: "number", min: 1, max: 20, step: 1, value: a, onChange: (b) => h(Math.max(1, Math.min(20, Number(b.target.value) || 1))), onFocus: () => z(), style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } } ) ] }), /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ "Bin Size (s)", /* @__PURE__ */ n( "input", { type: "number", min: 0.1, max: 20, step: 0.1, value: c, onChange: (b) => s(Math.max(0.1, Math.min(20, Number(b.target.value) || 0.1))), onFocus: () => z(), style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } } ) ] }), /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ "Sub-Bin Sampling", /* @__PURE__ */ n( "input", { type: "number", min: 1, max: 256, step: 1, value: d, onChange: (b) => m(Math.max(1, Math.min(256, Math.round(Number(b.target.value) || 1)))), onFocus: () => z(), style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } } ) ] }), /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ "Observation Mode", /* @__PURE__ */ i( "select", { value: u, onChange: (b) => x(b.target.value), onFocus: () => z(), style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }, children: [ /* @__PURE__ */ n("option", { value: "randomSphere", children: "Random Sphere (recommended)" }), /* @__PURE__ */ n("option", { value: "orbit", children: "Orbit (path-biased)" }) ] } ) ] }), /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ "Target Excess (B-Y)", /* @__PURE__ */ n( "input", { type: "number", min: 1e-3, max: 1, step: 5e-3, value: y, onChange: (b) => B(Math.max(1e-3, Math.min(1, Number(b.target.value) || 0.05))), onFocus: () => z(), style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } } ) ] }), /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ "Fit Start Complexity", /* @__PURE__ */ n( "input", { type: "number", min: 1, max: t, step: 1, value: F, onChange: (b) => R(Math.max(1, Math.min(t, Number(b.target.value) || 1))), onFocus: () => z(), style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } } ) ] }), /* @__PURE__ */ i("div", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "6px" }, children: [ "Progress", /* @__PURE__ */ n("div", { style: { background: "rgba(7,19,11,0.9)", border: "1px solid var(--terminal-panel-border)", borderRadius: "999px", padding: "3px" }, children: /* @__PURE__ */ n( "div", { style: { height: "8px", width: `${Math.round(O * 100)}%`, background: "linear-gradient(90deg, var(--terminal-green-dim), var(--terminal-green-soft))", borderRadius: "999px", transition: "width 0.15s ease" } } ) }), /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: _ ? `Running ${Math.round(O * 100)}%` : "Complete" }) ] }) ] }), /* @__PURE__ */ i("div", { style: { display: "flex", flexDirection: "column", gap: "12px", minHeight: 0, flex: 1 }, children: [ /* @__PURE__ */ n( "div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", width: "100%", minWidth: 0, minHeight: "min(58vh, 520px)" }, children: /* @__PURE__ */ i("svg", { viewBox: `0 0 ${g.width} ${g.height}`, style: { width: "100%", height: "100%" }, children: [ /* @__PURE__ */ n("rect", { x: 0, y: 0, width: g.width, height: g.height, fill: "transparent" }), g.yTicks.map((b, T) => { const E = g.yToPx(b); return /* @__PURE__ */ i("g", { children: [ /* @__PURE__ */ n("line", { x1: g.margin.left, y1: E, x2: g.margin.left + g.innerW, y2: E, stroke: "rgba(125, 255, 155, 0.12)" }), /* @__PURE__ */ n("text", { x: 8, y: E + 4, fill: "var(--terminal-green)", fontSize: "10", fontFamily: "var(--font-ui)", children: cn(b) }) ] }, `ygrid-${T}`); }), /* @__PURE__ */ n( "line", { x1: g.margin.left, y1: g.yToPx(1), x2: g.margin.left + g.innerW, y2: g.yToPx(1), stroke: "#f97316", strokeDasharray: "4 4", opacity: 0.8 } ), /* @__PURE__ */ n("text", { x: g.margin.left + 6, y: g.yToPx(1) - 6, fill: "#fdba74", fontSize: "10", children: "Fano = 1" }), /* @__PURE__ */ n("line", { x1: g.margin.left, y1: g.margin.top + g.innerH, x2: g.margin.left + g.innerW, y2: g.margin.top + g.innerH, stroke: "rgba(125, 255, 155, 0.3)" }), /* @__PURE__ */ n("line", { x1: g.margin.left, y1: g.margin.top, x2: g.margin.left, y2: g.margin.top + g.innerH, stroke: "rgba(125, 255, 155, 0.3)" }), Array.from({ length: Math.min(t, 10) }, (b, T) => { const E = 1 + (t - 1) * T / Math.max(1, Math.min(t - 1, 9)), I = g.xToPx(E); return /* @__PURE__ */ i("g", { children: [ /* @__PURE__ */ n("line", { x1: I, y1: g.margin.top + g.innerH, x2: I, y2: g.margin.top + g.innerH + 4, stroke: "rgba(125, 255, 155, 0.3)" }), /* @__PURE__ */ n("text", { x: I, y: g.margin.top + g.innerH + 18, fill: "var(--terminal-green)", fontSize: "10", fontFamily: "var(--font-ui)", textAnchor: "middle", children: Math.round(E) }) ] }, `xtick-${T}`); }), ke && /* @__PURE__ */ n("path", { d: ke, fill: "none", stroke: "#fbbf24", strokeWidth: "2", opacity: 0.95 }), ue && /* @__PURE__ */ n("path", { d: ue, fill: "none", stroke: "#60a5fa", strokeWidth: "2.25", opacity: 0.95 }), N && v.length > 2 && (() => { const b = v.filter((T) => T.complexity >= F).map((T, E) => { const I = 1 + N.predictFanoExcessFromLaneCount(T.laneCount); return `${E === 0 ? "M" : "L"} ${g.xToPx(T.complexity)} ${g.yToPx(I)}`; }).join(" "); return /* @__PURE__ */ n("path", { d: b, fill: "none", stroke: "#93c5fd", strokeDasharray: "5 4", strokeWidth: "1.5", opacity: 0.8 }); })(), P && v.length > 2 && (() => { const b = v.filter((T) => T.complexity >= F).map((T, E) => { const I = 1 + P.predictFanoExcessFromLaneCount(T.laneCount); return `${E === 0 ? "M" : "L"} ${g.xToPx(T.complexity)} ${g.yToPx(I)}`; }).join(" "); return /* @__PURE__ */ n("path", { d: b, fill: "none", stroke: "#22d3ee", strokeDasharray: "2 4", strokeWidth: "1.5", opacity: 0.7 }); })(), v.map((b) => /* @__PURE__ */ i("g", { children: [ /* @__PURE__ */ n("circle", { cx: g.xToPx(b.complexity), cy: g.yToPx(b.fanoYellow), r: "2.2", fill: "#fbbf24" }), /* @__PURE__ */ n("circle", { cx: g.xToPx(b.complexity), cy: g.yToPx(b.fanoBlue), r: "2.5", fill: "#60a5fa" }) ] }, `dot-${b.complexity}`)), /* @__PURE__ */ n("text", { x: g.margin.left + g.innerW / 2, y: g.height - 8, fill: "var(--terminal-green)", fontSize: "11", fontFamily: "var(--font-ui)", textAnchor: "middle", children: "Complexity" }), /* @__PURE__ */ n( "text", { x: 14, y: g.margin.top + g.innerH / 2, fill: "var(--terminal-green)", fontSize: "11", fontFamily: "var(--font-ui)", textAnchor: "middle", transform: `rotate(-90 14 ${g.margin.top + g.innerH / 2})`, children: "Fano Factor (Var / Mean, log scale)" } ) ] }) } ), /* @__PURE__ */ i( "div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))", gap: "8px", alignItems: "start" }, children: [ /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Legend" }), /* @__PURE__ */ n("div", { style: { color: "#60a5fa" }, children: "Blue: Lightlane Fano" }), /* @__PURE__ */ n("div", { style: { color: "#fbbf24" }, children: "Yellow: Isotropic Fano" }), /* @__PURE__ */ n("div", { style: { color: "#fdba74", marginTop: "4px" }, children: "Dashed orange: Fano = 1" }), /* @__PURE__ */ n("div", { style: { color: "#93c5fd", marginTop: "4px" }, children: "Dashed blue: power-fit extrapolation (blue excess over yellow)" }), /* @__PURE__ */ n("div", { style: { color: "#22d3ee", marginTop: "4px" }, children: "Dashed cyan: floor-aware fit (B + A×N^-α)" }) ] }), /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Latest Point" }), q ? /* @__PURE__ */ i(Fe, { children: [ /* @__PURE__ */ i("div", { children: [ "Complexity: ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.complexity }) ] }), /* @__PURE__ */ i("div", { children: [ "Lanes: ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.laneCount }) ] }), /* @__PURE__ */ i("div", { children: [ "Mean Ratio (B/Y): ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: (q.meanBlue / Math.max(1e-9, q.meanYellow)).toFixed(3) }) ] }), /* @__PURE__ */ i("div", { children: [ "Fano Blue: ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#93c5fd" }, children: q.fanoBlue.toFixed(3) }) ] }), /* @__PURE__ */ i("div", { children: [ "Fano Yellow: ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#fef3c7" }, children: q.fanoYellow.toFixed(3) }) ] }), /* @__PURE__ */ i("div", { children: [ "Excess (B-Y): ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.fanoExcess.toFixed(3) }) ] }), /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ "Aggregated over ", r.toLocaleString(), " bins × ", a, " seeds" ] }) ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "No points yet." }) ] }), /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Power Fit" }), N ? /* @__PURE__ */ i(Fe, { children: [ /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green-soft)" }, children: [ "Excess ≈ ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: N.A.toExponential(2) }), " × N", /* @__PURE__ */ i("sup", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: [ "-", N.alpha.toFixed(2) ] }) ] }), /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ "Fit is on blue excess over yellow using lane count N, starting at complexity ", F, "." ] }) ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "Need more points with nonzero excess." }), P && /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ "Floor fit: excess ≈ ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: P.B.toFixed(3) }), " + ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: P.A.toExponential(2) }), " × N", /* @__PURE__ */ i("sup", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: [ "-", P.alpha.toFixed(2) ] }) ] }) ] }), /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Indistinguishable Target" }), /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginBottom: "6px" }, children: [ "Criterion: ", /* @__PURE__ */ i("span", { style: { color: "var(--terminal-green-soft)" }, children: [ "Fano Blue - Fano Yellow ≤ ", y.toFixed(3) ] }) ] }), H ? /* @__PURE__ */ i(Fe, { children: [ H.blockedByFloor ? /* @__PURE__ */ i(Fe, { children: [ /* @__PURE__ */ n("div", { style: { color: "#ff8f8f" }, children: "Floor-aware fit predicts no finite crossing for this threshold." }), /* @__PURE__ */ i("div", { children: [ "Fitted excess floor:", " ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: H.floorExcess.toFixed(3) }) ] }), /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: "Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau." }) ] }) : /* @__PURE__ */ i(Fe, { children: [ /* @__PURE__ */ i("div", { children: [ "Required lane count N (fit):", " ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: Math.round(H.requiredLaneCount).toLocaleString() }) ] }), /* @__PURE__ */ i("div", { children: [ "Estimated complexity:", " ", /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#93c5fd" }, children: H.complexityEstimate ? Math.ceil(H.complexityEstimate.complexity).toLocaleString() : "n/a" }), H.complexityEstimate && /* @__PURE__ */ i("span", { style: { color: "var(--terminal-green)" }, children: [ " ", "(", H.complexityEstimate.mode === "observed-range" ? "interpolated from current sweep" : H.complexityEstimate.mode === "extrapolated" ? "extrapolated" : "bounded by current sweep", ")" ] }) ] }) ] }), /* @__PURE__ */ n("div", { style: { marginTop: "6px", color: "var(--terminal-green)" }, children: H.measuredCrossing ? `Observed crossing already reached at complexity ${H.measuredCrossing.complexity}.` : "No observed crossing yet in current sweep; estimate uses fit." }) ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "Need a stable excess fit (nonzero blue excess across multiple points)." }) ] }), /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px", color: "var(--terminal-green)" }, children: [ "Use ", /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "Random Sphere" }), " to isolate discretization convergence from path bias. Orbit mode is still useful to show persistent anisotropy on specific trajectories.", /* @__PURE__ */ i("div", { style: { marginTop: "6px" }, children: [ "For a stronger/cleaner claim in the video: report the threshold estimate together with ", /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "bin size" }), ", ", /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "sub-bin sampling" }), ", and ", /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "runs/point" }), "." ] }), /* @__PURE__ */ n("div", { style: { marginTop: "6px" }, children: "If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers." }) ] }) ] } ) ] }) ] } ) }); } const Ge = new Dt("#dbeafe"); function hn(e, t) { const o = new Float32Array(t * 3), r = new Float32Array(t * 3), l = [], a = e + 0.01; for (let h = 0; h < t; h += 1) { const c = Math.random(), s = Math.random(), d = 2 * Math.PI * c, m = 1 - 2 * s, u = Math.sqrt(Math.max(0, 1 - m * m)), x = h * 3; o[x] = a * u * Math.cos(d), o[x + 1] = a * u * Math.sin(d), o[x + 2] = a * m, r[x] = Ge.r * 0.15, r[x + 1] = Ge.g * 0.15, r[x + 2] = Ge.b * 0.15, l.push({ speed: 0.8 + Math.random() * 2.6, phase: Math.random() * Math.PI * 2, minBrightness: 0.03 + Math.random() * 0.06, maxBoost: 0.35 + Math.random() * 0.85 }); } return { positions: o, colors: r, sparklePoints: l }; } function un({ radius: e }) { const t = Z(null), o = 16e3, { positions: r, colors: l, sparklePoints: a } = he( () => hn(e, o), [e] ); return Qe(({ clock: h }) => { const c = t.current; if (!c) return; const s = c.geometry.getAttribute("color"); if (!s) return; const d = h.getElapsedTime(), m = s.array; for (let u = 0; u < a.length; u += 1) { const x = a[u], y = Math.pow(Math.max(0, Math.sin(d * x.speed + x.phase)), 24), B = x.minBrightness + y * x.maxBoost, F = u * 3; m[F] = Ge.r * B, m[F + 1] = Ge.g * B, m[F + 2] = Ge.b * B; } s.needsUpdate = !0; }), /* @__PURE__ */ i("group", { children: [ /* @__PURE__ */ i("mesh", { children: [ /* @__PURE__ */ n("sphereGeometry", { args: [e, 64, 64] }), /* @__PURE__ */ n( "meshStandardMaterial", { color: "#60a5fa", emissive: "#1d4ed8", emissiveIntensity: 0.18, transparent: !0, opacity: 0.08, roughness: 0.15, metalness: 0.05 } ) ] }), /* @__PURE__ */ i("mesh", { renderOrder: 2, children: [ /* @__PURE__ */ n("sphereGeometry", { args: [e, 48, 48] }), /* @__PURE__ */ n( "meshBasicMaterial", { color: "#93c5fd", wireframe: !0, transparent: !0, opacity: 0.14, toneMapped: !1 } ) ] }), /* @__PURE__ */ i("points", { ref: t, renderOrder: 3, children: [ /* @__PURE__ */ i("bufferGeometry", { children: [ /* @__PURE__ */ n("bufferAttribute", { attach: "attributes-position", args: [r, 3] }), /* @__PURE__ */ n("bufferAttribute", { attach: "attributes-color", args: [l, 3] }) ] }), /* @__PURE__ */ n( "pointsMaterial", { size: Math.max(0.06, e * 0.018), sizeAttenuation: !0, transparent: !0, opacity: 0.95, vertexColors: !0, depthWrite: !1, toneMapped: !1 } ) ] }) ] }); } function mn({ radius: e, paused: t = !1 }) { const o = Z(null); return Qe((r) => { if (!t && o.current) { const l = r.clock.elapsedTime * 3, a = 0.5 + (Math.sin(l) + 1) / 2 * 1.5; o.current.emissiveIntensity = a; } }), /* @__PURE__ */ i("mesh", { position: [0, 0, 0], children: [ /* @__PURE__ */ n("sphereGeometry", { args: [e, 64, 64] }), /* @__PURE__ */ n( "meshStandardMaterial", { ref: o, color: "#ec4899", emissive: "#db2777", emissiveIntensity: 1, toneMapped: !1 } ) ] }); } function fn(e) { const t = 2 * Math.PI; let o = e % t; return o < 0 && (o += t), o > Math.PI && (o = t - o), o; } function gn({ radius: e, theta: t, phi: o, orbitTime: r, simTime: l, thetaDrift: a = 0, paused: h = !1 }) { const c = Z(null); return Qe(() => { if (!h && c.current) { const s = o + r.current, d = fn(t + (l?.current ?? 0) * a), m = e * Math.sin(d) * Math.cos(s), u = e * Math.cos(d), x = e * Math.sin(d) * Math.sin(s); c.current.position.set(m, u, x), c.current.lookAt(0, 0, 0); } }), /* @__PURE__ */ i("group", { ref: c, children: [ /* @__PURE__ */ i("mesh", { renderOrder: 10, children: [ /* @__PURE__ */ n("sphereGeometry", { args: [0.09, 16, 16] }), /* @__PURE__ */ n("meshBasicMaterial", { color: "#22d3ee", toneMapped: !1 }) ] }), /* @__PURE__ */ i("mesh", { renderOrder: 9, children: [ /* @__PURE__ */ n("sphereGeometry", { args: [0.16, 16, 16] }), /* @__PURE__ */ n("meshBasicMaterial", { color: "#22d3ee", transparent: !0, opacity: 0.18, toneMapped: !1 }) ] }), /* @__PURE__ */ i("mesh", { rotation: [Math.PI / 2, 0, 0], children: [ /* @__PURE__ */ n("cylinderGeometry", { args: [0.14, 0.18, 1, 16] }), /* @__PURE__ */ n("meshStandardMaterial", { color: "#c0c0c0", metalness: 0.8, roughness: 0.2 }) ] }), /* @__PURE__ */ i("mesh", { position: [0, 0, 0.3], rotation: [Math.PI / 2, 0, 0], children: [ /* @__PURE__ */ n("cylinderGeometry", { args: [0.18, 0.18, 0.16, 8] }), /* @__PURE__ */ n("meshStandardMaterial", { color: "#d4af37", metalness: 0.95, roughness: 0.18 }) ] }), /* @__PURE__ */ i("mesh", { position: [0, 0, 0.6], rotation: [Math.PI / 2, 0, 0], children: [ /* @__PURE__ */ n("cylinderGeometry", { args: [0.22, 0.22, 0.2, 16] }), /* @__PURE__ */ n("meshStandardMaterial", { color: "#ffd700", metalness: 1, roughness: 0.1 }) ] }), /* @__PURE__ */ i("mesh", { position: [0, 0, 0.7], renderOrder: 11, children: [ /* @__PURE__ */ n("sphereGeometry", { args: [0.05, 12, 12] }), /* @__PURE__ */ n("meshBasicMaterial", { color: "#f97316", toneMapped: !1 }) ] }), /* @__PURE__ */ i("mesh", { position: [0, 0, 0.35], rotation: [Math.PI / 2, 0, 0], renderOrder: 8, children: [ /* @__PURE__ */ n("cylinderGeometry", { args: [0.015, 0.015, 0.7, 8] }), /* @__PURE__ */ n("meshBasicMaterial", { color: "#f97316", transparent: !0, opacity: 0.7, toneMapped: !1 }) ] }), /* @__PURE__ */ i("group", { position: [0, 0, 0.22], children: [ /* @__PURE__ */ i("mesh", { position: [0.6, 0, 0], children: [ /* @__PURE__ */ n("boxGeometry", { args: [0.8, 0.4, 0.05] }), /* @__PURE__ */ n("meshStandardMaterial", { color: "#1e3a8a", metalness: 0.5, roughness: 0.1 }) ] }), /* @__PURE__ */ i("mesh", { position: [-0.6, 0, 0], children: [ /* @__PURE__ */ n("boxGeometry", { args: [0.8, 0.4, 0.05] }), /* @__PURE__ */ n("meshStandardMaterial", { color: "#1e3a8a", metalness: 0.5, roughness: 0.1 }) ] }), /* @__PURE__ */ i("mesh", { position: [0.28, 0, -0.01], children: [ /* @__PURE__ */ n("boxGeometry", { args: [0.18, 0.05, 0.04] }), /* @__PURE__ */ n("meshStandardMaterial", { color: "#94a3b8", metalness: 0.7, roughness: 0.22 }) ] }), /* @__PURE__ */ i("mesh", { position: [-0.28, 0, -0.01], children: [ /* @__PURE__ */ n("boxGeometry", { args: [0.18, 0.05, 0.04] }), /* @__PURE__ */ n("meshStandardMaterial", { color: "#94a3b8", metalness: 0.7, roughness: 0.22 }) ] }) ] }) ] }); } const ce = { solid: "#60a5fa", dark: "#3b82f6", light: "#93c5fd", glow: "rgba(96,165,250,0.5)", panel: "rgba(0,20,40,0.8)" }, ae = { solid: "#fbbf24", dark: "#f59e0b", light: "#fef3c7", glow: "rgba(251,191,36,0.5)" }, it = "var(--font-headline)", pe = "var(--font-ui)", xn = "var(--terminal-green)", Ae = "var(--terminal-green-soft)", ye = "var(--terminal-green-muted)"; function bn({ bars: e }) { const t = window.innerHeight; return /* @__PURE__ */ i(Fe, { children: [ e.map((o) => { const r = t - o.startBottom - o.barHeight, l = o.targetLeft - o.startLeft, a = o.targetTop - r; return /* @__PURE__ */ n( "div", { style: { position: "absolute", left: `${o.startLeft}px`, top: `${r}px`, width: `${o.barWidth}px`, height: `${o.barHeight}px`, background: o.color, borderRadius: "2px 2px 0 0", opacity: 0.95, animation: "flyToDistribution 1.2s ease-in-out forwards", "--delta-x": `${l}px`, "--delta-y": `${a}px`, zIndex: 1e3, boxShadow: `0 0 15px ${o.color}` } }, o.id ); }), /* @__PURE__ */ n("style", { children: ` @keyframes flyToDistribution { 0% { transform: translate(0, 0) scale(1); opacity: 0.95; } 40% { transform: translate(calc(var(--delta-x) * 0.3), calc(var(--delta-y) * 0.5)) scale(0.9); opacity: 0.9; } 85% { transform: translate(calc(var(--delta-x) * 0.95), calc(var(--delta-y) * 0.95)) scale(0.7); opacity: 0.85; } 100% { transform: translate(var(--delta-x), var(--delta-y)) scale(0.6); opacity: 0; } } .clickable-bar { transition: all 0.2s ease; } .clickable-bar:hover { transform: scaleY(1.1) scaleX(1.2); filter: brightness(1.3); box-shadow: 0 0 10px currentColor; } ` }) ] }); } function at() { return { n: 0, meanObs: 0, m2Obs: 0, meanIso: 0, m2Iso: 0 }; } function yn(e, t, o) { const r = e.n + 1, l = t - e.meanObs, a = e.meanObs + l / r, h = e.m2Obs + l * (t - a), c = o - e.meanIso, s = e.meanIso + c / r, d = e.m2Iso + c * (o - s); return { n: r, meanObs: a, m2Obs: h, meanIso: s, m2Iso: d }; } function vn({ complexity: e, radius: t, distance: o, theta: r, phi: l, observationMode: a, allSectors: h, cumulative: c, K: s, orbitRadius: d, orbitVelocity: m, thetaDrift: u, thetaJitter: x, phiJitter: y, usePoisson: B, speedup: F, paused: R, sceneView: C, bottomInset: j = 0, showNumericDiagnostics: v = !0, compactNumericDiagnostics: L = !1, host: O, centerDistribution: J = !1, hideFlyingBars: _ = !1 }) { const [k, A] = $({ current: 0, total: 0, lastCheck: 0, overlaps: 0, currentTheory: 0, binOverlapsMean: 0, currentExpectedLightlane: 0 }), ee = 4, z = he(() => It({ D: d, theta: r, phi: l, observationMode: a, velocity: m, thetaDrift: u, thetaJitter: x, phiJitter: y, distance: o, hitTestModel: "segment", bin_size: 1, complexity: e, sub_bin_sampling: ee, flux: s, lane_radius: t, allSectors: h, cumulative: c, usePoisson: B }), [d, r, l, a, m, u, x, y, e, s, t, o, h, c, B]), D = 60, N = Z(new Array(D).fill(-1)), P = Z(new Array(D).fill(-1)), H = Z(0), [g, ue] = $(new Array(D).fill(-1)), [ke, q] = $(new Array(D).fill(-1)), b = Et({ flux: s, D: d, lane_radius: t, dt: 1, hitTestModel: "segment", lane_length: o }), T = Math.sqrt(b), E = 15, I = 4 * T, ne = Math.max(0, b - I), G = b + I, se = B, ve = Math.max(0, Math.floor(ne)), Re = Math.max(ve, Math.ceil(G)), X = se ? Re - ve + 1 : E, Pe = se ? 1 : Math.max(1e-9, (G - ne) / E), Be = (f) => { if (se) { const S = Math.round(f); return S <= ve ? 0 : S >= Re ? X - 1 : S - ve; } return f < ne ? 0 : f >= G ? X - 1 : Math.floor((f - ne) / Pe); }, Je = (f) => se ? ve + f : ne + (f + 0.5) * Pe, [me, Ee] = $(new Array(X).fill(0)), [Se, Y] = $(new Array(X).fill(0)), [Ie, le] = $(/* @__PURE__ */ new Set()), [qe, Le] = $(/* @__PURE__ */ new Set()), [Ne, ze] = $([]), $e = Z(0), _e = Z(at()), [U, Ze] = $(at()), et = Z(R), tt = Z(0); de(() => { Ee(new Array(X).fill(0)), Y(new Array(X).fill(0)), N.current.fill(-1), P.current.fill(-1), H.current = 0, ue(new Array(D).fill(-1)), q(new Array(D).fill(-1)), le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set()), ze([]), _e.current = at(), Ze(at()), A({ current: 0, total: 0, lastCheck: 0, overlaps: 0, currentTheory: 0, binOverlapsMean: 0, currentExpectedLightlane: 0 }); }, [e, s, t, o, d, r, l, a, m, u, x, y, h, c, B, X]); const nt = (f, S) => { if (f.length === 0) return; let w = 0, oe = 0, te = 0, fe = k.binOverlapsMean, V = k.currentExpectedLightlane, re = _e.current; for (const ie of f) { const ge = ie.lightlane, xe = ie.isotropic; if (w += ge, oe = ge, te = xe, fe = ie.overlapsMean, V = ie.lambdaLightlaneExpected, re = yn(re, ge, xe), N.current[H.current] = ge, P.current[H.current] = xe, H.current++, H.current >= D) { const Me = Math.max(10, ...N.current.filter((Q) => Q >= 0), ...P.current.filter((Q) => Q >= 0)); K([...N.current], [...P.current], Me), N.current.fill(-1), P.current.fill(-1), H.current = 0, le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set()); } } _e.current = re, A((ie) => ({ current: oe, total: ie.total + w, lastCheck: Date.now(), overlaps: S, currentTheory: te, binOverlapsMean: fe, currentExpectedLightlane: V })), Ze(re), ue([...N.current]), q([...P.current]); }, He = Z(!1), We = Z(null), ot = (f, S) => { f.stopPropagation(), He.current = !0, We.current = S, f.target.setPointerCapture(f.pointerId), Ce(O, we.click, { target: `${S}-periodogram`, action: "pointer-down" }); }, rt = (f, S, w, oe) => { if (!He.current || We.current !== S) return; f.stopPropagation(); const te = f.currentTarget.getBoundingClientRect(), fe = f.clientX - te.left, V = Math.floor(fe / te.width * D); if (V >= 0 && V < D) { const re = w[V], ie = S === "observed" ? Ie.has(V) : qe.has(V); re >= 0 && !ie && W(V, re, S, oe); } }, p = (f) => { f.stopPropagation(), He.current = !1, We.current = null; }, M = (f, S, w, oe) => { const te = window.innerWidth, fe = f / D * te, V = te / D, re = Math.max(2, S / oe * 80), xe = w === "observed" ? 25 : 110, Me = Be(S), Q = 20, be = te - 2 * Q, Te = Q + (Me + 0.5) / X * be; return { startLeft: fe, startBottom: xe, barHeight: re, barWidth: V, targetLeft: Te, targetTop: 150, binIndex: Me }; }, W = (f, S, w, oe) => { if (S < 0) return; const te = Date.now(); te - tt.current >= 45 && (tt.current = te, Ce(O, we.computeStep, { target: `${w}-periodogram`, value: S })); const { startLeft: fe, startBottom: V, barHeight: re, barWidth: ie, targetLeft: ge, targetTop: xe } = M(f, S, w, oe), Me = { id: $e.current++, value: S, startLeft: fe, startBottom: V, barHeight: re, barWidth: ie, targetLeft: ge, targetTop: xe, color: w === "observed" ? ae.solid : ce.solid, type: w }; ze((Q) => [...Q, Me]), w === "observed" ? (le((Q) => new Set(Q).add(f)), Ee((Q) => { const be = [...Q], Te = Be(S); return be[Te]++, be; })) : (Le((Q) => new Set(Q).add(f)), Y((Q) => { const be = [...Q], Te = Be(S); return be[Te]++, be; })); }, K = (f, S, w) => { const oe = [], te = [...me], fe = [...Se]; f.forEach((V, re) => { if (V >= 0) { const { startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, binIndex: Te } = M(re, V, "observed", w); oe.push({ id: $e.current++, value: V, startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, color: ae.solid, type: "observed" }), te[Te]++; } }), S.forEach((V, re) => { if (V >= 0) { const { startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, binIndex: Te } = M(re, V, "theory", w); oe.push({ id: $e.current++, value: V, startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, color: ce.solid, type: "theory" }), fe[Te]++; } }), ze((V) => [...V, ...oe]), Ee(te), Y(fe); }; de(() => { if (Ne.length > 0) { const f = setTimeout(() => { ze([]); }, 1300); return () => clearTimeout(f); } }, [Ne.length]); const Ve = Z(0); de(() => { H.current < Ve.current && (le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set())), Ve.current = H.current; }), de(() => { const f = et.current; if (et.current = R, !R || f) return; const S = z.flushPartialBin(); S && nt([S], S.overlaps); }, [R, z]), Qe((f, S) => { if (R) return; const w = z.simulate(S * F); w.subBinEvents > 0 && A((oe) => ({ ...oe, overlaps: w.lastLaneCount })), nt(w.bins, w.lastLaneCount); }); const zt = g.filter((f) => f >= 0), Rt = ke.filter((f) => f >= 0), lt = Math.max(10, Math.max(0, ...zt)), ct = Math.max(10, Math.max(0, ...Rt)), ft = Math.max(1, ...me, ...Se), gt = U.n > 1 ? U.m2Obs / (U.n - 1) : 0, dt = U.n > 1 ? U.m2Iso / (U.n - 1) : 0, Lt = U.meanIso > 0 ? U.meanObs / U.meanIso : 0, xt = dt > 0 ? gt / dt : 0, pt = U.meanObs > 0 ? gt / U.meanObs : 0, Xe = U.meanIso > 0 ? dt / U.meanIso : 0, ht = z.getLaneCount(), bt = ht > 0 && s > 0 ? ht * b / s : 0, yt = v && !L, Ke = C !== "lightlane", Oe = C !== "poisson", $t = Ne.filter((f) => f.type === "theory" && Ke || f.type === "observed" && Oe), Ot = C === "poisson" ? "Shot Noise Distribution" : C === "lightlane" ? "Shot Noise + Lightlane" : "Head to Head", je = { background: "rgba(255,255,255,0.04)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px", fontFamily: pe }, vt = /* @__PURE__ */ i("div", { style: { marginTop: L ? "0" : "12px", display: "grid", gridTemplateColumns: L ? "1fr" : "repeat(3, minmax(0, 1fr))", gap: L ? "6px" : "8px", fontSize: "10px", color: Ae, fontFamily: pe }, children: [ /* @__PURE__ */ i("div", { style: je, children: [ /* @__PURE__ */ n("div", { style: { color: ye }, children: "Samples" }), /* @__PURE__ */ n("div", { style: { fontFamily: "monospace" }, children: U.n }) ] }), /* @__PURE__ */ i("div", { style: je, children: [ /* @__PURE__ */ n("div", { style: { color: ye }, children: "Mean Ratio (Lightlane/Poisson)" }), /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: Ae }, children: U.n > 0 ? Lt.toFixed(3) : "n/a" }) ] }), /* @__PURE__ */ i("div", { style: je, children: [ /* @__PURE__ */ n("div", { style: { color: ye }, children: "Var Ratio (Lightlane/Poisson)" }), /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: xt > 1.1 ? ae.light : ce.light }, children: U.n > 1 ? xt.toFixed(3) : "n/a" }) ] }), /* @__PURE__ */ i("div", { style: je, children: [ /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Lightlane" }), /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: ae.light }, children: U.n > 1 ? pt.toFixed(3) : "n/a" }) ] }), /* @__PURE__ */ i("div", { style: je, children: [ /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Poisson" }), /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: ce.light }, children: U.n > 1 ? Xe.toFixed(3) : "n/a" }) ] }), /* @__PURE__ */ i("div", { style: je, children: [ /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Ratio (Lightlane/Poisson)" }), /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: Xe > 0 && pt / Xe > 1.05 ? ae.light : Ae }, children: U.n > 1 && Xe > 0 ? (pt / Xe).toFixed(3) : "n/a" }) ] }) ] }), St = /* @__PURE__ */ i("div", { style: { marginTop: L ? "6px" : "8px", display: L ? "grid" : "flex", gridTemplateColumns: L ? "1fr" : void 0, justifyContent: L ? void 0 : "center", gap: L ? "4px" : "12px", flexWrap: L ? void 0 : "wrap", fontSize: "10px", color: ye, fontFamily: pe }, children: [ /* @__PURE__ */ i("span", { children: [ "LC(now): ", k.overlaps ] }), /* @__PURE__ */ i("span", { children: [ "LC(bin avg): ", k.binOverlapsMean.toFixed(2) ] }), /* @__PURE__ */ i("span", { children: [ "LC iso target: ", Number.isFinite(bt) ? bt.toFixed(2) : "n/a" ] }), /* @__PURE__ */ i("span", { children: [ "E[Lightlane|bin]: ", k.currentExpectedLightlane.toFixed(2) ] }), /* @__PURE__ */ i("span", { children: [ "Lightlane(last): ", typeof k.current == "number" ? Number(k.current).toFixed(2) : k.current ] }), /* @__PURE__ */ i("span", { children: [ "Lanes: ", ht ] }), /* @__PURE__ */ i("span", { children: [ "Mode: ", a === "randomSphere" ? "Random Sphere" : "Orbit" ] }), /* @__PURE__ */ i("span", { children: [ "theta drift: ", u.toFixed(3) ] }), /* @__PURE__ */ i("span", { children: [ "theta jitter: ", x.toFixed(3) ] }), /* @__PURE__ */ i("span", { children: [ "phi jitter: ", y.toFixed(3) ] }) ] }); return /* @__PURE__ */ i(Fe, { children: [ !_ && /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none" }, children: /* @__PURE__ */ n(bn, { bars: $t }) }), /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", display: "flex", flexDirection: "column", justifyContent: J ? "center" : "flex-start" }, children: [ /* @__PURE__ */ i("div", { style: { position: "absolute", top: "18px", left: "20px", right: "20px", color: Ae, fontSize: "12px", fontWeight: 400, textAlign: "center", textTransform: "uppercase", letterSpacing: "0.16em", fontFamily: it }, children: [ Ot, /* @__PURE__ */ i("span", { style: { fontSize: "10px", fontWeight: "normal", marginLeft: "10px", opacity: 0.8, fontFamily: pe, color: xn }, children: [ "(λ = ", b.toFixed(1), ", σ = ", T.toFixed(1), ")" ] }) ] }), /* @__PURE__ */ i("div", { style: { width: "100%", padding: J ? "20px" : "60px 20px 20px 20px", background: J ? "transparent" : "linear-gradient(to bottom, rgba(0,0,0,0.9), transparent)", fontFamily: pe, alignSelf: "center" }, children: [ /* @__PURE__ */ n("div", { style: { position: "absolute", left: "5px", top: J ? "130px" : "170px", transform: "rotate(-90deg)", transformOrigin: "left top", fontSize: "10px", color: ye, fontStyle: "italic", whiteSpace: "nowrap", fontFamily: pe }, children: "← Frequency (how many)" }), /* @__PURE__ */ n("div", { style: { display: "flex", height: "100px", gap: "2px", alignItems: "flex-end", padding: "0 20px" }, children: me.map((f, S) => { const w = Se[S], oe = f / ft * 100, te = w / ft * 100; return /* @__PURE__ */ i("div", { style: { flex: 1, display: "flex", flexDirection: "column", alignItems: "center", position: "relative", height: "100%", justifyContent: "flex-end" }, children: [ /* @__PURE__ */ i("div", { style: { width: "100%", display: "flex", justifyContent: "center", gap: "1px", alignItems: "flex-end", height: "100%", position: "relative" }, children: [ Ke && /* @__PURE__ */ n("div", { style: { width: Oe ? "45%" : "92%", height: `${te}%`, background: `linear-gradient(to top, ${ce.solid}, ${ce.dark})`, borderRadius: "2px 2px 0 0", minHeight: w > 0 ? "2px" : "0", transition: "height 0.3s ease", boxShadow: w > 0 ? `0 0 5px ${ce.glow}` : "none", position: "relative" }, children: w > 0 && /* @__PURE__ */ n("div", { style: { position: "absolute", top: "-16px", left: "50%", transform: "translateX(-50%)", fontSize: "9px", fontWeight: "bold", color: ce.solid, textShadow: "0 0 3px rgba(0,0,0,0.8)" }, children: w }) }), Oe && /* @__PURE__ */ n("div", { style: { width: Ke ? "45%" : "92%", height: `${oe}%`, background: `linear-gradient(to top, ${ae.solid}, ${ae.dark})`, borderRadius: "2px 2px 0 0", minHeight: f > 0 ? "2px" : "0", transition: "height 0.3s ease", boxShadow: f > 0 ? `0 0 5px ${ae.glow}` : "none", position: "relative" }, children: f > 0 && /* @__PURE__ */ n("div", { style: { position: "absolute", top: "-16px", left: "50%", transform: "translateX(-50%)", fontSize: "9px", fontWeight: "bold", color: ae.solid, textShadow: "0 0 3px rgba(0,0,0,0.8)" }, children: f }) }) ] }), /* @__PURE__ */ n("div", { style: { position: "absolute", bottom: "-18px", fontSize: "9px", color: ye, fontWeight: "bold", fontFamily: pe }, children: Je(S).toFixed(0) }) ] }, S); }) }), /* @__PURE__ */ n("div", { style: { textAlign: "center", marginTop: "25px", fontSize: "10px", color: ye, fontStyle: "italic", fontFamily: pe }, children: "Photon Count Value →" }), /* @__PURE__ */ i("div", { style: { display: "flex", justifyContent: "center", gap: "20px", marginTop: "25px", fontSize: "10px" }, children: [ Ke && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "5px" }, children: [ /* @__PURE__ */ n("div", { style: { width: "12px", height: "12px", background: ce.solid, borderRadius: "2px" } }), /* @__PURE__ */ n("span", { style: { color: ce.solid }, children: "Theory (Poisson)" }) ] }), Oe && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "5px" }, children: [ /* @__PURE__ */ n("div", { style: { width: "12px", height: "12px", background: ae.solid, borderRadius: "2px" } }), /* @__PURE__ */ n("span", { style: { color: ae.solid }, children: "Observed (Lightlanes)" }) ] }) ] }), yt && vt, yt && St ] }) ] }), v && L && /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none" }, children: /* @__PURE__ */ i("div", { style: { position: "absolute", top: "88px", left: "12px", width: "min(300px, calc(100vw - 24px))", background: "linear-gradient(to bottom, rgba(0,0,0,0.88), rgba(0,0,0,0.55))", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", boxShadow: "0 8px 24px rgba(0,0,0,0.35)", fontFamily: pe }, children: [ /* @__PURE__ */ n("div", { style: { color: Ae, fontSize: "10px", textTransform: "uppercase", letterSpacing: "0.08em", marginBottom: "8px", fontWeight: 400, fontFamily: it }, children: "Diagnostics" }), vt, St ] }) }), /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", display: "flex", flexDirection: "column", justifyContent: "flex-end", paddingBottom: `${j}px`, boxSizing: "border-box" }, children: [ Ke && /* @__PURE__ */ i( "div", { onPointerDown: (f) => ot(f, "theory"), onPointerMove: (f) => rt(f, "theory", ke, ct), onPointerUp: p, onPointerLeave: p, style: { width: "100%", height: "100px", background: `linear-gradient(to top, ${ce.panel}, transparent)`, display: "flex", alignItems: "flex-end", padding: Oe ? "0 20px 5px 20px" : "0 20px 20px 20px", gap: "2px", position: "relative", borderBottom: Oe ? "1px solid #555" : "none", pointerEvents: "auto", touchAction: "none", cursor: "crosshair" }, children: [ /* @__PURE__ */ n("div", { style: { position: "absolute", top: "10px", left: "20px", color: ce.solid, fontSize: "10px", fontWeight: 400, pointerEvents: "none", fontFamily: it, letterSpacing: "0.08em" }, children: "THEORY (Poisson) - Swipe or click to count" }), ke.map((f, S) => { const w = qe.has(S); return /* @__PURE__ */ n( "div", { className: f >= 0 && !w ? "clickable-bar" : "", style: { flex: 1, height: f >= 0 && !w ? `${f / ct * 100}%` : "0", background: f === 0 ? "rgba(255,255,255,0.1)" : ce.solid, color: ce.solid, minHeight: f >= 0 && !w ? "1px" : "0", transition: "all 0.3s ease", opacity: w ? 0 : 0.8, borderRadius: "2px 2px 0 0", transform: w ? "scale(0)" : "scale(1)", pointerEvents: "none" } }, S ); }), /* @__PURE__ */ i("div", { style: { position: "absolute", bottom: "10px", right: "80px", color: Ae, fontFamily: pe, fontSize: "10px", pointerEvents: "none" }, children: [ "Max: ", ct ] }) ] } ), Oe && /* @__PURE__ */ i( "div", { onPointerDown: (f) => ot(f, "observed"), onPointerMove: (f) => rt(f, "observed", g, lt), onPointerUp: p, onPointerLeave: p, style: { width: "100%", height: "100px", background: "linear-gradient(to top, rgba(0,0,0,0.8), transparent)", display: "flex", alignItems: "flex-end", padding: "0 20px 20px 20px", gap: "2px", position: "relative", pointerEvents: "auto", touchAction: "none", cursor: "crosshair" }, children: [ /* @__PURE__ */ n("div", { style: { position: "absolute", top: "10px", left: "20px", color: ae.solid, fontSize: "10px", fontWeight: 400, pointerEvents: "none", fontFamily: it, letterSpacing: "0.08em" }, children: "OBSERVED (Lightlanes) - Swipe or click to count" }), g.map((f, S) => { const w = Ie.has(S); return /* @__PURE__ */ n( "div", { className: f >= 0 && !w ? "clickable-bar" : "", style: { flex: 1, height: f >= 0 && !w ? `${f / lt * 100}%` : "0", background: f === 0 ? "rgba(255,255,255,0.1)" : f > 0 ? ae.solid : "transparent", color: ae.solid, minHeight: f >= 0 && !w ? "2px" : "0", transition: "all 0.3s ease", borderTop: f >= 0 && !w ? `2px solid ${ae.light}` : "none", opacity: w ? 0 : 0.8, position: "relative", borderRadius: "2px 2px 0 0", transform: w ? "scale(0)" : "scale(1)", pointerEvents: "none" }, children: (S + 1) % 5 === 0 && !w && /* @__PURE__ */ n("div", { style: { position: "absolute", bottom: "-20px", left: "50%", transform: "translateX(-50%)", width: "1px", height: "5px", background: "#fff", opacity: 0.5, pointerEvents: "none" }, children: /* @__PURE__ */ n("span", { style: { position: "absolute", top: "5px", left: "-50%", fontSize: "10px", color: ye, fontFamily: pe }, children: S + 1 }) }) }, S ); }), /* @__PURE__ */ i("div", { style: { position: "absolute", bottom: "10px", right: "80px", color: Ae, fontFamily: pe, fontSize: "10px" }, children: [ "Max: ", lt ] }) ] } ) ] }) ] }); } const Sn = { complexity: 1, radius: 2, distance: 5, chandraDistance: 6, showAxes: !1, // Cleaner look for challenge lightlanes: !0, // Always show lightlanes allSectors: !0, cumulative: !1, phi: 0, theta: Math.PI / 2, observationMode: "orbit", orbitSpeed: 0.2, thetaDrift: 0, thetaJitter: 0, phiJitter: 0, speedup: 1, K: 1e3, usePoisson: !0, sceneView: "both", hideScenePresentation: !1, hideFlyingBars: !1, hideDataBoxes: !1 }; function kn(e) { const t = e.host, o = e.devUi?.compactNumericDiagnostics ?? !1, r = e.devUi?.maxComplexity ?? 20, l = e.devUi?.maxSpeedup ?? 240, a = 74, h = 20, c = e.config?.params || {}, { complexity: s, radius: d, distance: m, chandraDistance: u, showAxes: x, lightlanes: y, allSectors: B, cumulative: F, phi: R, theta: C, observationMode: j, orbitSpeed: v, thetaDrift: L, thetaJitter: O, phiJitter: J, speedup: _, K: k, usePoisson: A, sceneView: ee, hideScenePresentation: z, hideFlyingBars: D, hideDataBoxes: N } = { ...Sn, ...c }, P = !N, H = Z(0), g = Z(0), [ue, ke] = $(!1), [q, b] = $("scene"), [T, E] = $(ee), [I, ne] = $(s), [G, se] = $(_), [ve, Re] = $(null), X = Z(null); de(() => { E(ee); }, [ee]), de(() => { ne(s); }, [s]), de(() => { se(_); }, [_]); const Pe = G > 20, Be = T !== "lightlane", Je = T !== "poisson", me = q === "scene" && T !== "poisson", Ee = (p) => p === "poisson" ? "Poisson" : p === "lightlane" ? "Lightlane" : "Both", Se = () => { Ce(t, we.hover, { page: q, sceneView: T }); }, Y = (p, M) => { Ce(t, we.click, { page: q, sceneView: T, target: p, ...M }); }, Ie = (p) => { Re(p), X.current && clearTimeout(X.current), X.current = setTimeout(() => { Re(null), X.current = null; }, 1500); }, le = (p) => { const M = Array.from({ length: h }, (W, K) => K === 0 ? 1 : K === h - 1 ? p : Math.round(1 + (p - 1) * K / (h - 1))); return Array.from(new Set(M)).sort((W, K) => W - K); }, qe = (p, M) => { const W = le(M); return W.find((K) => p < K) ?? W[W.length - 1]; }, Le = (p, M) => { const W = le(M); for (let K = W.length - 1; K >= 0; K -= 1) if (p > W[K]) return W[K]; return W[0]; }, Ne = (p, M) => { const W = le(M), K = W.findIndex((Ve) => p <= Ve); return K >= 0 ? K : W.length - 1; }, ze = Ne(I, r), $e = Ne(G, l), _e = `${(ze + 1) / h * 100}%`, U = `${($e + 1) / h * 100}%`, Ze = me && I > le(r)[0], et = me && I < le(r).at(-1), tt = G > le(l)[0], nt = G < le(l).at(-1), He = (p) => { if (!me) return; const M = p === "up" ? qe(I, r) : Le(I, r); M !== I && (Y("complexity", { direction: p, value: M }), ne(M), e.devUi?.onSetParam?.("complexity", M), Ie(`Complexity ${M}`)); }, We = (p) => { const M = p === "up" ? qe(G, l) : Le(G, l); M !== G && (Y("turbo", { direction: p, value: M }), se(M), e.devUi?.onSetParam?.("speedup", M), Ie(`Turbo ${M}x`)); }, ot = () => { const p = ["poisson", "lightlane", "both"], M = p.indexOf(T), W = p[(M + 1) % p.length]; Y("mode", { value: W }), E(W), Ie(`Mode ${Ee(W)}`); }, rt = () => { Y("fano-page", { value: q === "scene" ? "fano" : "scene" }), b((p) => p === "scene" ? "fano" : "scene"); }; return de(() => { const p = (M) => { if (M.code !== "Space" || M.repeat) return; const W = M.target, K = W?.tagName; K === "INPUT" || K === "TEXTAREA" || W?.isContentEditable || (M.preventDefault(), ke((Ve) => !Ve)); }; return window.addEventListener("keydown", p), () => window.removeEventListener("keydown", p); }, []), de(() => () => { X.current && clearTimeout(X.current); }, []), Qe((p, M) => { ue || q === "fano" || (H.current += M * v * G, g.current += M * G); }), de(() => { H.current = 0, g.current = 0; }, [ I, d, m, u, R, C, j, v, L, O, J, G, k, B, F, A ]), /* @__PURE__ */ i(Fe, { children: [ /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none", zIndex: 3e3 }, children: /* @__PURE__ */ n("div", { style: { position: "absolute", top: 12, right: 12, display: "flex", gap: 8, pointerEvents: "auto" }, children: /* @__PURE__ */ n( "button", { type: "button", onClick: () => { Y("advanced"), e.devUi?.onOpenHarness?.(); }, onPointerEnter: Se, style: { border: "1px solid var(--terminal-panel-border)", background: "rgba(7,19,11,0.86)", color: "var(--terminal-green-soft)", borderRadius: 10, padding: "10px 12px", fontSize: 12, fontWeight: 400, letterSpacing: "0.08em", fontFamily: "var(--font-headline)", textTransform: "uppercase", cursor: "pointer", boxShadow: "0 8px 24px rgba(0,0,0,0.25)" }, children: "Advanced" } ) }) }), /* @__PURE__ */ n("ambientLight", { intensity: 0.4 }), /* @__PURE__ */ n("directionalLight", { position: [10, 10, 5], intensity: 1, castShadow: !0 }), /* @__PURE__ */ n("pointLight", { position: [-10, -10, -10], intensity: 0.5, color: "blue" }), q === "scene" ? /* @__PURE__ */ i(Fe, { children: [ !z && Be && /* @__PURE__ */ n(un, { radius: u }), !z && Je && /* @__PURE__ */ n( Wt, { complexity: I, lightlanes: y, radius: d, distance: m, allSectors: B, cumulative: F } ), !z && /* @__PURE__ */ n(mn, { radius: d, paused: ue }), /* @__PURE__ */ n( gn, { radius: u, theta: C, phi: R, orbitTime: H, simTime: g, thetaDrift: L, paused: ue } ), /* @__PURE__ */ n( vn, { complexity: I, radius: d, distance: m, theta: C, phi: R, observationMode: j, allSectors: B, cumulative: F, K: k, orbitRadius: u, orbitVelocity: v, thetaDrift: L, thetaJitter: O, phiJitter: J, usePoisson: A, speedup: G, paused: ue, sceneView: T, bottomInset: a, showNumericDiagnostics: P, compactNumericDiagnostics: o, host: t, centerDistribution: z, hideFlyingBars: D || Pe } ), ue && /* @__PURE__ */ n("group", { position: [0, u + 1.5, 0], children: /* @__PURE__ */ i("mesh", { children: [ /* @__PURE__ */ n("sphereGeometry", { args: [0.12, 16, 16] }), /* @__PURE__ */ n("meshBasicMaterial", { color: "#ef4444", toneMapped: !1 }) ] }) }), x && /* @__PURE__ */ n("axesHelper", { args: [Math.max(5, I)] }), /* @__PURE__ */ n( At, { infiniteGrid: !0, fadeDistance: 50, sectionColor: "#333", cellColor: "#111", position: [0, -0.01, 0] } ) ] }) : /* @__PURE__ */ n( pn, { radius: d, distance: m, chandraDistance: u, allSectors: B, cumulative: F, theta: C, phi: R, orbitSpeed: v, thetaDrift: L, thetaJitter: O, phiJitter: J, K: k, speedup: G, usePoisson: A, bottomInset: a, onBack: () => b("scene"), host: t } ), /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", zIndex: 3200 }, children: [ ve && /* @__PURE__ */ n( "div", { style: { position: "absolute", top: "50%", left: "50%", transform: "translate(-50%, -50%) skewX(-12deg)", padding: "16px 28px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", fontStyle: "italic", fontSize: 42, letterSpacing: "0.16em", textTransform: "uppercase", textShadow: "0 0 20px rgba(125,255,155,0.38), 0 0 42px rgba(125,255,155,0.18)" }, children: /* @__PURE__ */ n("span", { style: { display: "inline-block", transform: "skewX(12deg)" }, children: ve }) } ), /* @__PURE__ */ n( "div", { style: { position: "absolute", left: 10, bottom: a + 16, width: 26, height: "min(44vh, 320px)", display: "flex", alignItems: "flex-end" }, children: /* @__PURE__ */ i( "div", { style: { position: "relative", width: "100%", height: "100%", borderRadius: 14, border: "1px solid rgba(251,191,36,0.35)", background: "linear-gradient(to top, rgba(30,18,0,0.92), rgba(7,19,11,0.15))", boxShadow: "0 0 22px rgba(251,191,36,0.12)", overflow: "hidden", opacity: me ? 1 : 0.35, transition: "opacity 0.2s ease" }, children: [ /* @__PURE__ */ n( "div", { style: { position: "absolute", inset: "6px", borderRadius: 10, border: "1px solid rgba(251,191,36,0.14)" } } ), /* @__PURE__ */ n( "div", { style: { position: "absolute", left: 5, right: 5, bottom: 5, height: _e, borderRadius: 9, background: "linear-gradient(to top, rgba(245,158,11,0.96), rgba(253,224,71,0.96))", boxShadow: "0 0 18px rgba(251,191,36,0.5)", transition: "height 0.25s ease" } } ), /* @__PURE__ */ n( "div", { style: { position: "absolute", inset: "8px 7px", display: "grid", gridTemplateRows: `repeat(${h}, 1fr)`, pointerEvents: "none" }, children: Array.from({ length: h }).map((p, M) => /* @__PURE__ */ n( "div", { style: { borderTop: M === 0 ? "none" : "1px solid rgba(251,191,36,0.15)" } }, `complexity-tick-${M}` )) } ), /* @__PURE__ */ i( "div", { style: { position: "absolute", left: 34, bottom: 0, color: "#fcd34d", fontFamily: "var(--font-headline)", fontSize: 10, letterSpacing: "0.08em", textTransform: "uppercase", writingMode: "vertical-rl", transform: "rotate(180deg)", textShadow: "0 0 12px rgba(251,191,36,0.25)" }, children: [ "Complexity ", ze + 1, "/", h ] } ) ] } ) } ), /* @__PURE__ */ n( "div", { style: { position: "absolute", right: 10, bottom: a + 16, width: 26, height: "min(44vh, 320px)", display: "flex", alignItems: "flex-end" }, children: /* @__PURE__ */ i( "div", { style: { position: "relative", width: "100%", height: "100%", borderRadius: 14, border: "1px solid rgba(244,114,182,0.35)", background: "linear-gradient(to top, rgba(42,7,23,0.94), rgba(7,19,11,0.15))", boxShadow: "0 0 22px rgba(244,114,182,0.14)", overflow: "hidden" }, children: [ /* @__PURE__ */ n( "div", { style: { position: "absolute", inset: "6px", borderRadius: 10, border: "1px solid rgba(244,114,182,0.14)" } } ), /* @__PURE__ */ n( "div", { style: { position: "absolute", left: 5, right: 5, bottom: 5, height: U, borderRadius: 9, background: "linear-gradient(to top, rgba(236,72,153,0.96), rgba(244,114,182,0.98))", boxShadow: "0 0 18px rgba(244,114,182,0.5)", transition: "height 0.25s ease" } } ), /* @__PURE__ */ n( "div", { style: { position: "absolute", inset: "8px 7px", display: "grid", gridTemplateRows: `repeat(${h}, 1fr)`, pointerEvents: "none" }, children: Array.from({ length: h }).map((p, M) => /* @__PURE__ */ n( "div", { style: { borderTop: M === 0 ? "none" : "1px solid rgba(244,114,182,0.15)" } }, `turbo-tick-${M}` )) } ), /* @__PURE__ */ i( "div", { style: { position: "absolute", right: 34, bottom: 0, color: "#f9a8d4", fontFamily: "var(--font-headline)", fontSize: 10, letterSpacing: "0.08em", textTransform: "uppercase", writingMode: "vertical-rl", textShadow: "0 0 12px rgba(244,114,182,0.25)" }, children: [ "Turbo ", $e + 1, "/", h ] } ) ] } ) } ), /* @__PURE__ */ n( "div", { style: { position: "absolute", left: 12, right: 12, bottom: 10, display: "grid", gridTemplateColumns: "repeat(4, minmax(0, 1fr))", gap: 8, pointerEvents: "auto" }, children: [ { label: "Complexity", kind: "adjust", active: !1, disabled: !me, accent: "rgba(245,158,11,0.2)", sublabel: `${I} • ${ze + 1}/${h}`, meterColor: "linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))", meterSide: "left", meterFill: _e, onDecrease: () => He("down"), onIncrease: () => He("up"), canDecrease: Ze, canIncrease: et }, { label: "Mode", kind: "action", onClick: ot, active: !1, accent: "rgba(59,130,246,0.18)", sublabel: Ee(T) }, { label: "Fano Sweep", kind: "action", onClick: rt, active: q === "fano", accent: "rgba(59,130,246,0.22)", sublabel: q === "fano" ? "Open" : "Scene" }, { label: "Turbo", kind: "adjust", active: !1, accent: "rgba(34,197,94,0.2)", sublabel: `${G}x • ${$e + 1}/${h}`, meterColor: "linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))", meterSide: "right", meterFill: U, onDecrease: () => We("down"), onIncrease: () => We("up"), canDecrease: tt, canIncrease: nt } ].map((p) => p.kind === "adjust" ? /* @__PURE__ */ i( "div", { style: { minHeight: 54, border: "1px solid var(--terminal-panel-border)", background: p.active ? p.accent : "rgba(7,19,11,0.86)", color: "var(--terminal-green-soft)", borderRadius: 10, padding: "8px 10px", display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", gap: 6, boxShadow: p.active ? "0 0 18px rgba(125,255,155,0.12)" : "0 8px 24px rgba(0,0,0,0.25)", position: "relative", overflow: "hidden", opacity: p.disabled ? 0.38 : 1 }, children: [ "meterColor" in p && /* @__PURE__ */ i(Fe, { children: [ /* @__PURE__ */ n( "div", { style: { position: "absolute", top: 6, bottom: 6, left: p.meterSide === "left" ? 6 : void 0, right: p.meterSide === "right" ? 6 : void 0, width: 6, borderRadius: 999, background: "rgba(255,255,255,0.07)", border: "1px solid rgba(255,255,255,0.08)" } } ), /* @__PURE__ */ n( "div", { style: { position: "absolute", bottom: 7, left: p.meterSide === "left" ? 7 : void 0, right: p.meterSide === "right" ? 7 : void 0, width: 4, height: p.meterFill, borderRadius: 999, background: p.meterColor, boxShadow: p.meterSide === "left" ? "0 0 10px rgba(251,191,36,0.45)" : "0 0 10px rgba(244,114,182,0.45)", transition: "height 0.25s ease" } } ) ] }), /* @__PURE__ */ n( "span", { style: { fontFamily: "var(--font-headline)", fontSize: 11, fontWeight: 400, letterSpacing: "0.08em", textTransform: "uppercase", lineHeight: 1.1 }, children: p.label } ), /* @__PURE__ */ n( "span", { style: { fontFamily: "var(--font-ui)", fontSize: 10, color: "var(--terminal-green)", letterSpacing: "0.08em", lineHeight: 1 }, children: p.sublabel } ), /* @__PURE__ */ i("div", { style: { display: "grid", gridTemplateColumns: "repeat(2, minmax(0, 1fr))", gap: 6, width: "100%", marginTop: "auto" }, children: [ /* @__PURE__ */ n( "button", { type: "button", onClick: p.onDecrease, onPointerEnter: Se, disabled: p.disabled || !p.canDecrease, style: { border: "1px solid rgba(255,255,255,0.12)", background: "rgba(255,255,255,0.04)", color: "var(--terminal-green-soft)", borderRadius: 8, minHeight: 24, cursor: p.disabled || !p.canDecrease ? "not-allowed" : "pointer", fontFamily: "var(--font-headline)", fontSize: 12, letterSpacing: "0.08em", opacity: p.disabled || !p.canDecrease ? 0.35 : 1, position: "relative", zIndex: 1 }, children: "-" } ), /* @__PURE__ */ n( "button", { type: "button", onClick: p.onIncrease, onPointerEnter: Se, disabled: p.disabled || !p.canIncrease, style: { border: "1px solid rgba(255,255,255,0.12)", background: "rgba(255,255,255,0.04)", color: "var(--terminal-green-soft)", borderRadius: 8, minHeight: 24, cursor: p.disabled || !p.canIncrease ? "not-allowed" : "pointer", fontFamily: "var(--font-headline)", fontSize: 12, letterSpacing: "0.08em", opacity: p.disabled || !p.canIncrease ? 0.35 : 1, position: "relative", zIndex: 1 }, children: "+" } ) ] }) ] }, p.label ) : /* @__PURE__ */ i( "button", { type: "button", onClick: p.onClick, onPointerEnter: Se, disabled: "disabled" in p ? p.disabled : !1, style: { minHeight: 54, border: "1px solid var(--terminal-panel-border)", background: p.active ? p.accent : "rgba(7,19,11,0.86)", color: "var(--terminal-green-soft)", borderRadius: 10, padding: "8px 10px", cursor: "disabled" in p && p.disabled ? "not-allowed" : "pointer", display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", gap: 2, boxShadow: p.active ? "0 0 18px rgba(125,255,155,0.12)" : "0 8px 24px rgba(0,0,0,0.25)", position: "relative", overflow: "hidden", opacity: "disabled" in p && p.disabled ? 0.38 : 1 }, children: [ /* @__PURE__ */ n( "span", { style: { fontFamily: "var(--font-headline)", fontSize: 11, fontWeight: 400, letterSpacing: "0.08em", textTransform: "uppercase", lineHeight: 1.1 }, children: p.label } ), /* @__PURE__ */ n( "span", { style: { fontFamily: "var(--font-ui)", fontSize: 10, color: "var(--terminal-green)", letterSpacing: "0.08em", lineHeight: 1 }, children: p.sublabel } ) ] }, p.label )) } ) ] }), /* @__PURE__ */ n("color", { attach: "background", args: ["#050505"] }) ] }); } const Bn = { name: "lightlane", displayName: "Lightlane Challenge", version: "1.1.0", paramSchema: { hideScenePresentation: { type: "boolean", label: "Hide Sphere + Lightlanes", default: !1 }, hideFlyingBars: { type: "boolean", label: "Hide Flying Bars", default: !1 }, hideDataBoxes: { type: "boolean", label: "Hide Data Boxes", default: !1 }, complexity: { type: "range", label: "Complexity", default: 5, min: 1, max: 20, step: 1 }, radius: { type: "range", label: "Distance to star", default: 2, min: 0.1, max: 5, step: 0.1 }, chandraDistance: { type: "range", label: "Chandra Camera Distance", default: 6, min: 5, max: 30, step: 0.5 }, observationMode: { type: "select", label: "Observation Mode", default: "randomSphere", options: [ { value: "orbit", label: "Orbit" }, { value: "randomSphere", label: "Random Sphere" } ] }, sceneView: { type: "select", label: "Scene View", default: "both", options: [ { value: "both", label: "Both" }, { value: "poisson", label: "Poisson" }, { value: "lightlane", label: "Lightlane" } ] }, orbitSpeed: { type: "range", label: "Orbit Speed", default: 0.2, min: 0, max: 2, step: 0.01 }, thetaDrift: { type: "range", label: "Theta Drift", default: 0, min: -1, max: 1, step: 0.01 }, thetaJitter: { type: "range", label: "Theta Jitter", default: 0, min: 0, max: 0.25, step: 5e-3 }, phiJitter: { type: "range", label: "Phi Jitter", default: 0, min: 0, max: 0.5, step: 0.01 }, speedup: { type: "range", label: "Speedup", default: 1, min: 1, max: 240, step: 1 } }, defaultParams: { complexity: 5, radius: 2, orbitSpeed: 0.2, thetaDrift: 0, thetaJitter: 0, phiJitter: 0, chandraDistance: 6, observationMode: "randomSphere", sceneView: "both", speedup: 1, // Internal defaults will handle the rest distance: 5, showAxes: !1, lightlanes: !0, allSectors: !0, cumulative: !1, phi: 0, theta: Math.PI / 2, K: 1e3, usePoisson: !0, hideScenePresentation: !1, hideFlyingBars: !1, hideDataBoxes: !1 } }; export { kn as default, Bn as metadata }; //# sourceMappingURL=lightlane.js.map