/* Abstract, compliance-safe vertical artwork — no client logos, no brand marks. Each case gets a generated data-motif built from its own operating signature. */ /* Tints mirror components/core/Tag.jsx's vertical map, so tag dot and artwork always agree. */ const CA_TINT = { igaming:'#7C7CFF', forex:'#2FD5DA', fintech:'#3B6BFF', ecommerce:'#B45CF7', nutra:'#8BB4FF', ngo:'#7C5CFF' }; function CAigaming(c) { const bars = [18,26,22,34,30,44,40,58,52,72,66,88]; return (<> {[0,1,2,3].map(i => ( ))} {bars.map((h, i) => ( ))} ); } function CAforex(c) { const candles = [[0,54,84,60,78],[1,44,76,50,70],[2,50,88,58,66],[3,38,70,44,62],[4,46,80,52,56], [5,34,66,40,52],[6,40,74,46,44],[7,28,60,34,40],[8,34,68,40,34],[9,22,54,28,30],[10,28,62,34,24],[11,16,48,22,18]]; return (<> {candles.map(([i, lo, hi, o, cl]) => { const x = 44 + i * 29, top = 190 - hi, bot = 190 - lo; const yo = 190 - Math.max(o, cl), hgt = Math.abs(o - cl) + 4; return ( ); })} ); } function CAcrypto(c) { const nodes = [[64,70],[126,132],[112,44],[196,92],[184,170],[262,52],[276,138],[340,96],[348,178],[228,28]]; const links = [[0,1],[0,2],[1,3],[2,3],[1,4],[3,5],[3,6],[4,6],[5,7],[6,7],[6,8],[5,9],[2,9],[7,8]]; return (<> {links.map(([a, b], i) => ( ))} {nodes.map(([x, y], i) => ( ))} ); } function CAecommerce(c) { const cells = []; for (let r = 0; r < 4; r++) for (let k = 0; k < 9; k++) cells.push([r, k]); return (<> {cells.map(([r, k]) => { const on = (k * 3 + r * 5) % 7 < 3; return ; })} ); } const CA_ART = { igaming:CAigaming, forex:CAforex, crypto:CAcrypto, ecommerce:CAecommerce }; function CaseArt({ id, v, label, height = 200 }) { const c = CA_TINT[v] || CA_TINT[id] || '#7C5CFF'; const art = (CA_ART[id] || CAcrypto)(c); return (
{label}
); } Object.assign(window, { CaseArt });