/* EMOJESIS — game data. Pure data, no DOM. Works in the browser (attaches to globalThis.EMOJESIS_DATA) and in Node (module.exports) for validate.js. */ (function () { 'use strict'; var CATEGORIES = [ 'nature', 'weather', 'life', 'animals', 'humanity', 'civilization', 'culture', 'technology', 'internet', 'occult', 'cosmos', 'absurd' ]; var STARTERS = ['fire', 'water', 'earth', 'air']; /* Element: { id, emoji, name, category, description, secret? } */ var ELEMENTS = { /* ---- starters ---- */ fire: { id: 'fire', emoji: '🔥', name: 'Fire', category: 'nature', description: 'Warmth, destruction, and the first bad idea.' }, water: { id: 'water', emoji: '💧', name: 'Water', category: 'nature', description: 'It remembers every shape it has ever been.' }, earth: { id: 'earth', emoji: '🪨', name: 'Earth', category: 'nature', description: 'Patient, heavy, and full of opinions.' }, air: { id: 'air', emoji: '💨', name: 'Air', category: 'nature', description: 'Invisible, everywhere, and slightly dramatic.' }, /* ---- nature ---- */ mud: { id: 'mud', emoji: '🟤', name: 'Mud', category: 'nature', description: 'Earth that gave up on posture.' }, lava: { id: 'lava', emoji: '🌋', name: 'Lava', category: 'nature', description: 'The planet\u2019s way of thinking out loud.' }, ocean: { id: 'ocean', emoji: '🌊', name: 'Ocean', category: 'nature', description: 'Water, ambition edition.' }, mountain: { id: 'mountain', emoji: '⛰️', name: 'Mountain', category: 'nature', description: 'A very long argument with the sky.' }, wood: { id: 'wood', emoji: '🪵', name: 'Wood', category: 'nature', description: 'A tree, repurposed.' }, honey: { id: 'honey', emoji: '🍯', name: 'Honey', category: 'nature', description: 'A lifetime of small errands, bottled.' }, /* ---- weather ---- */ steam: { id: 'steam', emoji: '🌫️', name: 'Steam', category: 'weather', description: 'Opposites, agreeing to disagree upward.' }, cloud: { id: 'cloud', emoji: '☁️', name: 'Cloud', category: 'weather', description: 'The sky\u2019s rough draft.' }, rain: { id: 'rain', emoji: '🌧️', name: 'Rain', category: 'weather', description: 'The cloud finally admitted something.' }, wind: { id: 'wind', emoji: '🌬️', name: 'Wind', category: 'weather', description: 'Air with somewhere to be.' }, storm: { id: 'storm', emoji: '⛈️', name: 'Storm', category: 'weather', description: 'Two clouds having it out.' }, lightning: { id: 'lightning', emoji: '⚡', name: 'Lightning', category: 'weather', description: 'The sky, briefly honest.' }, snow: { id: 'snow', emoji: '❄️', name: 'Snow', category: 'weather', description: 'Rain, but it learned to whisper.' }, rainbow: { id: 'rainbow', emoji: '🌈', name: 'Rainbow', category: 'weather', description: 'An apology from the weather.' }, fog: { id: 'fog', emoji: '🌁', name: 'Fog', category: 'weather', description: 'A cloud that lost its nerve.' }, /* ---- life ---- */ life: { id: 'life', emoji: '🌱', name: 'Life', category: 'life', description: 'The mud flinched first.' }, plant: { id: 'plant', emoji: '🌿', name: 'Plant', category: 'life', description: 'Life, rooted and smug about it.' }, tree: { id: 'tree', emoji: '🌳', name: 'Tree', category: 'life', description: 'Patience, made visible.' }, flower: { id: 'flower', emoji: '🌸', name: 'Flower', category: 'life', description: 'The plant\u2019s loud opinion.' }, wheat: { id: 'wheat', emoji: '🌾', name: 'Wheat', category: 'life', description: 'Grass with ambitions.' }, forest: { id: 'forest', emoji: '🌲', name: 'Forest', category: 'life', description: 'Trees discovered crowds.' }, /* ---- animals ---- */ fish: { id: 'fish', emoji: '🐟', name: 'Fish', category: 'animals', description: 'Life learned to swim before it learned to walk. Priorities.' }, bird: { id: 'bird', emoji: '🐦', name: 'Bird', category: 'animals', description: 'Life, ignoring gravity\u2019s memo.' }, egg: { id: 'egg', emoji: '🥚', name: 'Egg', category: 'animals', description: 'A bird\u2019s most confident decision.' }, cat: { id: 'cat', emoji: '🐈', name: 'Cat', category: 'animals', description: 'Something small decided to live with you.' }, dog: { id: 'dog', emoji: '🐶', name: 'Dog', category: 'animals', description: 'The wolf made an excellent mistake.' }, wolf: { id: 'wolf', emoji: '🐺', name: 'Wolf', category: 'animals', description: 'The mountain learned to hunt.' }, bee: { id: 'bee', emoji: '🐝', name: 'Bee', category: 'animals', description: 'A flower\u2019s courier service.' }, snake: { id: 'snake', emoji: '🐍', name: 'Snake', category: 'animals', description: 'The garden got interesting.' }, whale: { id: 'whale', emoji: '🐋', name: 'Whale', category: 'animals', description: 'Time and water, taken seriously.' }, owl: { id: 'owl', emoji: '🦉', name: 'Night Owl', category: 'animals', secret: true, description: 'It only interviews at night.' }, dinosaur: { id: 'dinosaur', emoji: '🦖', name: 'Dinosaur', category: 'animals', description: 'Some experiments take longer.' }, butterfly: { id: 'butterfly', emoji: '🦋', name: 'Butterfly', category: 'animals', description: 'A rumor with wings.' }, /* ---- humanity ---- */ human: { id: 'human', emoji: '🧑', name: 'Human', category: 'humanity', description: 'From mud, something stood up.' }, brain: { id: 'brain', emoji: '🧠', name: 'Brain', category: 'humanity', description: 'A library that argues back.' }, love: { id: 'love', emoji: '❤️', name: 'Love', category: 'humanity', description: 'A self-combination with consequences.' }, /* ---- civilization ---- */ tool: { id: 'tool', emoji: '🔨', name: 'Tool', category: 'civilization', description: 'The rock was promoted.' }, house: { id: 'house', emoji: '🏠', name: 'House', category: 'civilization', description: 'A tree, forgiven.' }, village: { id: 'village', emoji: '🏘️', name: 'Village', category: 'civilization', description: 'Houses discovered gossip.' }, city: { id: 'city', emoji: '🏙️', name: 'City', category: 'civilization', description: 'A village that stopped sleeping.' }, wheel: { id: 'wheel', emoji: '🛞', name: 'Wheel', category: 'civilization', description: 'The circle\u2019s career began.' }, bread: { id: 'bread', emoji: '🍞', name: 'Bread', category: 'civilization', description: 'Grain, transformed by impatience.' }, coffee: { id: 'coffee', emoji: '☕', name: 'Coffee', category: 'civilization', description: 'The bean demanded fire.' }, paper: { id: 'paper', emoji: '📄', name: 'Paper', category: 'civilization', description: 'The tree, flattened into memory.' }, book: { id: 'book', emoji: '📚', name: 'Book', category: 'civilization', description: 'Paper with a spine and opinions.' }, metal: { id: 'metal', emoji: '🔩', name: 'Metal', category: 'civilization', description: 'The mountain\u2019s hidden temper.' }, sword: { id: 'sword', emoji: '⚔️', name: 'Sword', category: 'civilization', description: 'An argument made of metal.' }, boat: { id: 'boat', emoji: '⛵', name: 'Boat', category: 'civilization', description: 'The wood forgave the water.' }, ship: { id: 'ship', emoji: '🚢', name: 'Ship', category: 'civilization', description: 'A boat that stopped being polite.' }, bridge: { id: 'bridge', emoji: '🌉', name: 'Bridge', category: 'civilization', description: 'The mountain\u2019s shortcut.' }, castle: { id: 'castle', emoji: '🏰', name: 'Castle', category: 'civilization', description: 'A house with trust issues.' }, engine: { id: 'engine', emoji: '🚂', name: 'Engine', category: 'civilization', description: 'Steam, given a job.' }, gold: { id: 'gold', emoji: '🪙', name: 'Gold', category: 'civilization', description: 'Shinier with age.' }, money: { id: 'money', emoji: '💵', name: 'Money', category: 'civilization', description: 'Gold that fits in a pocket.' }, key: { id: 'key', emoji: '🗝️', name: 'Key', category: 'civilization', description: 'It opens exactly one thing. Good luck.' }, /* ---- culture ---- */ writing: { id: 'writing', emoji: '✍️', name: 'Writing', category: 'culture', description: 'Thoughts, taxidermied.' }, art: { id: 'art', emoji: '🎨', name: 'Art', category: 'culture', description: 'The rainbow, on purpose.' }, music: { id: 'music', emoji: '🎵', name: 'Music', category: 'culture', description: 'The bird\u2019s idea, stolen gracefully.' }, philosophy: { id: 'philosophy', emoji: '🤔', name: 'Philosophy', category: 'culture', description: 'Two books arguing forever.' }, forbiddenBook: { id: 'forbiddenBook', emoji: '📕', name: 'Forbidden Book', category: 'culture', secret: true, description: 'Some books are burned because they burn back.' }, library: { id: 'library', emoji: '🏛️', name: 'Library', category: 'culture', description: 'A house that remembers for you.' }, statue: { id: 'statue', emoji: '🗿', name: 'Statue', category: 'culture', description: 'Someone wanted to be remembered badly.' }, theatre: { id: 'theatre', emoji: '🎭', name: 'Theatre', category: 'culture', description: 'Art that watches you back.' }, idea: { id: 'idea', emoji: '💡', name: 'Idea', category: 'culture', description: 'A dangerous amount of electricity, safely contained.' }, /* ---- technology ---- */ computer: { id: 'computer', emoji: '💻', name: 'Computer', category: 'technology', description: 'An idea with a fan.' }, robot: { id: 'robot', emoji: '🤖', name: 'Robot', category: 'technology', description: 'A brain with a warranty.' }, ai: { id: 'ai', emoji: '💭', name: 'AI', category: 'technology', description: 'The machine started finishing your sentences.' }, developer: { id: 'developer', emoji: '👨‍💻', name: 'Developer', category: 'technology', description: 'Runs on caffeine and unresolved tickets.' }, battery: { id: 'battery', emoji: '🔋', name: 'Battery', category: 'technology', description: 'Lightning, grounded.' }, antenna: { id: 'antenna', emoji: '📡', name: 'Antenna', category: 'technology', description: 'A metal ear for invisible things.' }, rocket: { id: 'rocket', emoji: '🚀', name: 'Rocket', category: 'technology', description: 'A ship that chose violence over water.' }, satellite: { id: 'satellite', emoji: '🛰️', name: 'Satellite', category: 'technology', description: 'An antenna that moved out.' }, telescope: { id: 'telescope', emoji: '🔭', name: 'Telescope', category: 'technology', description: 'The mountain had questions too.' }, phone: { id: 'phone', emoji: '📱', name: 'Phone', category: 'technology', description: 'A computer for your pocket and your every waking moment.' }, wifi: { id: 'wifi', emoji: '📶', name: 'Wi-Fi', category: 'technology', description: 'The internet, untethered and unbothered.' }, syntheticHeart: { id: 'syntheticHeart', emoji: '🦾', name: 'Synthetic Heart', category: 'technology', secret: true, description: 'It beats. That\u2019s the disturbing part.' }, /* ---- internet ---- */ internet: { id: 'internet', emoji: '🌐', name: 'Internet', category: 'internet', description: 'Two computers started talking. Nobody stopped them.' }, link: { id: 'link', emoji: '🔗', name: 'Link', category: 'internet', description: 'A door made of text.' }, personalWebsite: { id: 'personalWebsite', emoji: '🛖', name: 'Personal Website', category: 'internet', description: 'You made a home on the web.' }, blog: { id: 'blog', emoji: '📰', name: 'Blog', category: 'internet', secret: true, description: 'A diary the whole world is welcome to ignore.' }, rss: { id: 'rss', emoji: '🔁', name: 'RSS', category: 'internet', secret: true, description: 'The web, as it was meant to be read.' }, internetCat: { id: 'internetCat', emoji: '🐱', name: 'Internet Cat', category: 'internet', description: 'The internet\u2019s true purpose.' }, meme: { id: 'meme', emoji: '🤣', name: 'Meme', category: 'internet', description: 'An idea in its final, unstoppable form.' }, deadWeb: { id: 'deadWeb', emoji: '🕸️', name: 'Dead Web', category: 'internet', secret: true, description: 'The links still point somewhere. Nothing answers.' }, virus: { id: 'virus', emoji: '🦠', name: 'Virus', category: 'internet', description: 'It only wanted to multiply.' }, glitch: { id: 'glitch', emoji: '👾', name: 'Glitch', category: 'internet', secret: true, description: 'The machine dreamed of a machine.' }, /* ---- occult ---- */ skull: { id: 'skull', emoji: '💀', name: 'Skull', category: 'occult', description: 'Everyone\u2019s final form.' }, ghost: { id: 'ghost', emoji: '👻', name: 'Ghost', category: 'occult', secret: true, description: 'Death, but it left the light on.' }, undead: { id: 'undead', emoji: '🧟', name: 'Undead', category: 'occult', description: 'Love, unfortunately, finds a way.' }, secret: { id: 'secret', emoji: '🔮', name: 'Secret', category: 'occult', secret: true, description: 'Some doors only open at night.' }, blackHole: { id: 'blackHole', emoji: '🕳️', name: 'Black Hole', category: 'occult', secret: true, description: 'The universe\u2019s locked drawer.' }, phoenix: { id: 'phoenix', emoji: '🐦‍🔥', name: 'Phoenix', category: 'occult', secret: true, description: 'It read the whole thing and came back louder.' }, /* ---- cosmos ---- */ time: { id: 'time', emoji: '⏳', name: 'Time', category: 'cosmos', description: 'The world learned patience.' }, night: { id: 'night', emoji: '🌃', name: 'Night', category: 'cosmos', description: 'Time, left alone, becomes night.' }, moon: { id: 'moon', emoji: '🌙', name: 'Moon', category: 'cosmos', description: 'The sky\u2019s oldest rock.' }, star: { id: 'star', emoji: '⭐', name: 'Star', category: 'cosmos', description: 'A light that outlived its fire.' }, sun: { id: 'sun', emoji: '☀️', name: 'Sun', category: 'cosmos', secret: true, description: 'Fire, squared and glorified.' }, galaxy: { id: 'galaxy', emoji: '🌌', name: 'Galaxy', category: 'cosmos', description: 'A city of suns.' }, eclipse: { id: 'eclipse', emoji: '🌑', name: 'Eclipse', category: 'cosmos', secret: true, description: 'The sky\u2019s private joke.' }, ufo: { id: 'ufo', emoji: '🛸', name: 'UFO', category: 'cosmos', secret: true, description: 'It blinked back.' }, alien: { id: 'alien', emoji: '👽', name: 'Alien', category: 'cosmos', description: 'Life, from a different draft.' }, netuno: { id: 'netuno', emoji: '🪐', name: 'Netuno', category: 'cosmos', secret: true, description: 'The outer dark has a name, and it\u2019s this one.' }, supernova: { id: 'supernova', emoji: '💥', name: 'Supernova', category: 'cosmos', description: 'An ending so bright it counts as a beginning.' }, /* ---- absurd ---- */ hotTake: { id: 'hotTake', emoji: '🌶️', name: 'Hot Take', category: 'absurd', description: 'Everyone has one. No one wants yours.' }, ancientInfluencer: { id: 'ancientInfluencer', emoji: '🤳', name: 'Ancient Influencer', category: 'absurd', secret: true, description: 'Two million followers. Zero posts.' }, meeting: { id: 'meeting', emoji: '📅', name: 'Meeting', category: 'absurd', description: 'Two developers produced a third meeting.' } }; /* Recipe: { a, b, result, msg, msgs?, secret?, ordered?, nightOnly?, fx? } */ var RECIPES = [ /* ---- the teaching chain ---- */ { a: 'fire', b: 'water', result: 'steam', msg: 'Opposites create atmosphere.' }, { a: 'water', b: 'earth', result: 'mud', msg: 'Earth that gave up on posture.' }, { a: 'air', b: 'water', result: 'cloud', msg: 'The sky\u2019s rough draft.' }, { a: 'cloud', b: 'water', result: 'rain', msg: 'The cloud finally admitted something.' }, { a: 'rain', b: 'earth', result: 'life', msg: 'The mud flinched first.' }, { a: 'life', b: 'water', result: 'plant', msg: 'Life, rooted and smug about it.' }, { a: 'plant', b: 'time', result: 'tree', msg: 'Patience, made visible.' }, { a: 'tree', b: 'fire', result: 'wood', msg: 'A tree, repurposed.' }, { a: 'earth', b: 'earth', result: 'mountain', msg: 'A very long argument with the sky.' }, { a: 'human', b: 'earth', result: 'tool', msg: 'The rock was promoted.' }, { a: 'steam', b: 'earth', result: 'time', msg: 'The world learned patience.' }, /* ---- nature & weather ---- */ { a: 'fire', b: 'earth', result: 'lava', msg: 'The planet\u2019s way of thinking out loud.', fx: 'flare' }, { a: 'water', b: 'water', result: 'ocean', msg: 'Water, ambition edition.' }, { a: 'air', b: 'air', result: 'wind', msg: 'Air with somewhere to be.' }, { a: 'cloud', b: 'cloud', result: 'storm', msg: 'Two clouds having it out.', fx: 'shake' }, { a: 'storm', b: 'air', result: 'lightning', msg: 'The sky, briefly honest.', fx: 'zap' }, { a: 'rain', b: 'wind', result: 'snow', msg: 'Rain, but it learned to whisper.' }, { a: 'rain', b: 'sun', result: 'rainbow', msg: 'An apology from the weather.' }, { a: 'steam', b: 'cloud', result: 'fog', msg: 'A cloud that lost its nerve.' }, { a: 'lava', b: 'water', result: 'steam', msg: 'The planet sighed.' }, { a: 'storm', b: 'water', result: 'rain', msg: 'The storm, softened.' }, { a: 'steam', b: 'air', result: 'cloud', msg: 'Steam, promoted.' }, { a: 'cloud', b: 'wind', result: 'storm', msg: 'The cloud learned to move, and regretted it.', fx: 'shake' }, { a: 'storm', b: 'fire', result: 'lightning', msg: 'The storm struck a match.', fx: 'zap' }, { a: 'mountain', b: 'cloud', result: 'snow', msg: 'The mountain collects its mail.' }, /* ---- life ---- */ { a: 'ocean', b: 'lightning', result: 'life', msg: 'Primordial soup, stirred violently.', fx: 'zap' }, { a: 'mud', b: 'rain', result: 'plant', msg: 'The mud sprouted an opinion.' }, { a: 'plant', b: 'plant', result: 'tree', msg: 'Two plants entered a long agreement.' }, { a: 'plant', b: 'sun', result: 'flower', msg: 'The plant\u2019s loud opinion.' }, { a: 'plant', b: 'earth', result: 'wheat', msg: 'Grass with ambitions.' }, { a: 'tree', b: 'tree', result: 'forest', msg: 'Trees discovered crowds.' }, { a: 'bee', b: 'flower', result: 'honey', msg: 'A lifetime of small errands, bottled.' }, /* ---- animals ---- */ { a: 'ocean', b: 'life', result: 'fish', msg: 'Life learned to swim before it learned to walk. Priorities.' }, { a: 'life', b: 'air', result: 'bird', msg: 'Life, ignoring gravity\u2019s memo.' }, { a: 'bird', b: 'bird', result: 'egg', msg: 'A bird\u2019s most confident decision.' }, { a: 'house', b: 'life', result: 'cat', msg: 'Something small decided to live with you.' }, { a: 'wolf', b: 'human', result: 'dog', msg: 'The wolf made an excellent mistake.' }, { a: 'mountain', b: 'life', result: 'wolf', msg: 'The mountain learned to hunt.' }, { a: 'flower', b: 'wind', result: 'bee', msg: 'A flower\u2019s courier service.' }, { a: 'wood', b: 'life', result: 'snake', msg: 'The garden got interesting.' }, { a: 'fish', b: 'time', result: 'whale', msg: 'Time and water, taken seriously.' }, { a: 'life', b: 'time', result: 'dinosaur', msg: 'Some experiments take longer.' }, { a: 'flower', b: 'air', result: 'butterfly', msg: 'A rumor with wings.' }, { a: 'ocean', b: 'egg', result: 'fish', msg: 'The egg chose water.' }, { a: 'egg', b: 'air', result: 'bird', msg: 'The egg chose poorly, then brilliantly.' }, { a: 'house', b: 'fish', result: 'cat', msg: 'It came for the fish. It stayed for the couch.' }, { a: 'fish', b: 'fish', result: 'whale', msg: 'The fish kept growing its story.' }, { a: 'plant', b: 'mud', result: 'snake', msg: 'The garden\u2019s quiet rumor.' }, { a: 'dog', b: 'moon', result: 'wolf', msg: 'Something old answers the moon.' }, { a: 'egg', b: 'time', result: 'dinosaur', msg: 'The egg waited too well.' }, { a: 'flower', b: 'life', result: 'butterfly', msg: 'Life, in a decorative mood.' }, /* ---- humanity ---- */ { a: 'life', b: 'mud', result: 'human', msg: 'From mud, something stood up.' }, { a: 'mud', b: 'lightning', result: 'human', msg: 'Prometheus would like a word.', fx: 'zap' }, { a: 'human', b: 'book', result: 'brain', msg: 'A library that argues back.' }, { a: 'human', b: 'human', result: 'love', msg: 'A self-combination with consequences.' }, { a: 'human', b: 'star', result: 'love', msg: 'A clich\u00e9 that keeps working.' }, /* ---- civilization ---- */ { a: 'wood', b: 'earth', result: 'house', msg: 'A tree, forgiven.' }, { a: 'house', b: 'house', result: 'village', msg: 'Houses discovered gossip.' }, { a: 'village', b: 'village', result: 'city', msg: 'A village that stopped sleeping.' }, { a: 'wood', b: 'wood', result: 'wheel', msg: 'The circle\u2019s career began.' }, { a: 'wheat', b: 'fire', result: 'bread', msg: 'Grain, transformed by impatience.' }, { a: 'plant', b: 'fire', result: 'coffee', msg: 'The bean demanded fire.' }, { a: 'wood', b: 'tool', result: 'paper', msg: 'The tree, flattened into memory.' }, { a: 'paper', b: 'paper', result: 'book', msg: 'Paper with a spine and opinions.' }, { a: 'mountain', b: 'fire', result: 'metal', msg: 'The mountain\u2019s hidden temper.' }, { a: 'metal', b: 'fire', result: 'sword', msg: 'An argument made of metal.' }, { a: 'wood', b: 'water', result: 'boat', msg: 'The wood forgave the water.' }, { a: 'boat', b: 'metal', result: 'ship', msg: 'A boat that stopped being polite.' }, { a: 'metal', b: 'mountain', result: 'bridge', msg: 'The mountain\u2019s shortcut.' }, { a: 'house', b: 'mountain', result: 'castle', msg: 'A house with trust issues.' }, { a: 'steam', b: 'metal', result: 'engine', msg: 'Steam, given a job.' }, { a: 'metal', b: 'time', result: 'gold', msg: 'Shinier with age.' }, { a: 'gold', b: 'paper', result: 'money', msg: 'Gold that fits in a pocket.' }, { a: 'tool', b: 'metal', result: 'key', msg: 'It opens exactly one thing. Good luck.' }, { a: 'village', b: 'money', result: 'city', msg: 'The village got expensive.' }, { a: 'village', b: 'mountain', result: 'castle', msg: 'The village grew walls and opinions.' }, { a: 'boat', b: 'boat', result: 'ship', msg: 'Two boats became an argument for a third.' }, { a: 'ship', b: 'mountain', result: 'bridge', msg: 'The mountain compromised.' }, { a: 'steam', b: 'tool', result: 'engine', msg: 'The tool learned to breathe.' }, { a: 'gold', b: 'gold', result: 'money', msg: 'Gold that gossiped.' }, { a: 'human', b: 'mountain', result: 'statue', msg: 'The mountain, flattered.' }, { a: 'human', b: 'wood', result: 'tool', msg: 'The branch volunteered.' }, { a: 'wood', b: 'ocean', result: 'boat', msg: 'The wood studied the water carefully.' }, { a: 'metal', b: 'rainbow', result: 'gold', msg: 'The end of the rainbow has accounting.' }, /* ---- culture ---- */ { a: 'human', b: 'paper', result: 'writing', msg: 'Thoughts, taxidermied.' }, { a: 'tool', b: 'paper', result: 'writing', msg: 'The tool learned to leave marks.' }, { a: 'human', b: 'rainbow', result: 'art', msg: 'The rainbow, on purpose.' }, { a: 'human', b: 'flower', result: 'art', msg: 'The flower, framed.' }, { a: 'human', b: 'bird', result: 'music', msg: 'The bird\u2019s idea, stolen gracefully.' }, { a: 'human', b: 'whale', result: 'music', msg: 'The first album was fifty minutes of ocean.' }, { a: 'book', b: 'book', result: 'philosophy', msg: 'Two books arguing forever.' }, { a: 'brain', b: 'book', result: 'philosophy', msg: 'The brain read until it looped.' }, { a: 'book', b: 'fire', result: 'forbiddenBook', msg: 'Some books are burned because they burn back.', secret: true, fx: 'flare' }, { a: 'library', b: 'fire', result: 'forbiddenBook', msg: 'The smoke spelled something.', secret: true, fx: 'flare' }, { a: 'book', b: 'house', result: 'library', msg: 'A house that remembers for you.' }, { a: 'mountain', b: 'tool', result: 'statue', msg: 'Someone wanted to be remembered badly.' }, { a: 'art', b: 'music', result: 'theatre', msg: 'Art that watches you back.' }, { a: 'music', b: 'book', result: 'theatre', msg: 'The book got a stage and lost its manners.' }, { a: 'brain', b: 'lightning', result: 'idea', msg: 'A dangerous amount of electricity reached the brain.', fx: 'zap' }, /* ---- technology ---- */ { a: 'idea', b: 'metal', result: 'computer', msg: 'An idea with a fan.' }, { a: 'metal', b: 'brain', result: 'robot', msg: 'A brain with a warranty.' }, { a: 'computer', b: 'brain', result: 'ai', msg: 'The machine started finishing your sentences.' }, { a: 'computer', b: 'coffee', result: 'developer', msg: 'Nothing compiles without caffeine.' }, { a: 'human', b: 'computer', result: 'developer', msg: 'The first day is mostly installing things.' }, { a: 'lightning', b: 'metal', result: 'battery', msg: 'Lightning, grounded.' }, { a: 'lightning', b: 'gold', result: 'battery', msg: 'Expensive lightning, stored politely.' }, { a: 'metal', b: 'air', result: 'antenna', msg: 'A metal ear for invisible things.' }, { a: 'ship', b: 'fire', result: 'rocket', msg: 'A ship that chose violence over water.', fx: 'flare' }, { a: 'engine', b: 'metal', result: 'rocket', msg: 'The engine looked up.', fx: 'flare' }, { a: 'rocket', b: 'antenna', result: 'satellite', msg: 'An antenna that moved out.' }, { a: 'phone', b: 'rocket', result: 'satellite', msg: 'The phone achieved orbit and still no signal.' }, { a: 'book', b: 'mountain', result: 'telescope', msg: 'The mountain had questions too.' }, { a: 'computer', b: 'battery', result: 'phone', msg: 'A computer that fits in your pocket and your every waking moment.' }, { a: 'internet', b: 'antenna', result: 'wifi', msg: 'The internet, untethered and unbothered.' }, { a: 'robot', b: 'love', result: 'syntheticHeart', msg: 'It beats. That\u2019s the disturbing part.', secret: true }, { a: 'computer', b: 'tool', result: 'robot', msg: 'The computer got hands. Mostly harmless.' }, { a: 'robot', b: 'book', result: 'ai', msg: 'It read everything. It has notes.' }, /* ---- internet ---- */ { a: 'computer', b: 'computer', result: 'internet', msg: 'Two computers started talking. Nobody stopped them.' }, { a: 'internet', b: 'tool', result: 'link', msg: 'A door made of text.' }, { a: 'internet', b: 'house', result: 'personalWebsite', msg: 'You made a home on the web.' }, { a: 'internet', b: 'writing', result: 'personalWebsite', msg: 'A room of one\u2019s own, with hyperlinks.' }, { a: 'personalWebsite', b: 'writing', result: 'blog', msg: 'A diary the whole world is welcome to ignore.', secret: true }, { a: 'book', b: 'internet', result: 'blog', msg: 'Chapters, posted into the void.', secret: true }, { a: 'blog', b: 'antenna', result: 'rss', msg: 'The web, as it was meant to be read.', secret: true }, { a: 'cat', b: 'computer', result: 'internetCat', msg: 'The internet has found its true purpose.' }, { a: 'cat', b: 'internet', result: 'internetCat', msg: 'The wires learned to purr.' }, { a: 'internetCat', b: 'idea', result: 'meme', msg: 'An idea in its final, unstoppable form.' }, { a: 'internet', b: 'art', result: 'meme', msg: 'Art, optimized for chaos.' }, { a: 'internet', b: 'computer', result: 'deadWeb', msg: 'The links still point somewhere. Nothing answers.', secret: true, fx: 'spooky' }, { a: 'internet', b: 'ghost', result: 'deadWeb', msg: 'Some pages only load in memory.', secret: true, fx: 'spooky' }, { a: 'computer', b: 'life', result: 'virus', msg: 'It only wanted to multiply.' }, { a: 'computer', b: 'bee', result: 'virus', msg: 'It only wanted to multiply.' }, { a: 'ai', b: 'ai', result: 'glitch', msg: 'The machine dreamed of a machine.', secret: true, fx: 'spooky' }, { a: 'robot', b: 'ghost', result: 'glitch', msg: 'Haunted machinery is still machinery.', secret: true, fx: 'spooky' }, /* ---- occult ---- */ { a: 'human', b: 'time', result: 'skull', msg: 'Everyone\u2019s final form.' }, { a: 'dinosaur', b: 'time', result: 'skull', msg: 'Extinction, personalized.' }, { a: 'skull', b: 'skull', result: 'ghost', msg: 'Death, but it left the light on.', secret: true, fx: 'spooky' }, { a: 'skull', b: 'air', result: 'ghost', msg: 'The skull let go of the heavy parts.', secret: true, fx: 'spooky' }, { a: 'skull', b: 'love', result: 'undead', msg: 'Love, unfortunately, finds a way.' }, { a: 'ghost', b: 'love', result: 'undead', msg: 'It came back for the company.' }, { a: 'moon', b: 'key', result: 'secret', msg: 'Some doors only open at night.', secret: true, fx: 'spooky' }, { a: 'star', b: 'key', result: 'secret', msg: 'The key was always pointing up.', secret: true }, { a: 'secret', b: 'galaxy', result: 'blackHole', msg: 'The universe\u2019s locked drawer.', secret: true, fx: 'cosmic' }, { a: 'sun', b: 'time', result: 'blackHole', msg: 'Even light gets tired.', secret: true, fx: 'cosmic' }, { a: 'forbiddenBook', b: 'fire', result: 'phoenix', msg: 'It read the whole thing and came back louder.', secret: true, ordered: true, fx: 'flare' }, /* ---- cosmos ---- */ { a: 'time', b: 'time', result: 'night', msg: 'Time, left alone, becomes night.' }, { a: 'time', b: 'moon', result: 'night', msg: 'The moon supervises the dark.' }, { a: 'night', b: 'earth', result: 'moon', msg: 'The sky\u2019s oldest rock.' }, { a: 'night', b: 'mountain', result: 'moon', msg: 'The mountain\u2019s reflection on the sky.' }, { a: 'fire', b: 'night', result: 'star', msg: 'A light that outlived its fire.' }, { a: 'night', b: 'night', result: 'star', msg: 'Night, squared, starts to shine.' }, { a: 'fire', b: 'fire', result: 'sun', msg: 'Fire, squared and glorified.', secret: true, fx: 'flare' }, { a: 'telescope', b: 'star', result: 'galaxy', msg: 'A city of suns.', fx: 'cosmic' }, { a: 'star', b: 'star', result: 'galaxy', msg: 'Stars discovered crowds.', fx: 'cosmic' }, { a: 'sun', b: 'moon', result: 'eclipse', msg: 'The sky\u2019s private joke.', secret: true, fx: 'cosmic' }, { a: 'moon', b: 'star', result: 'owl', msg: 'It only interviews at night.', secret: true, nightOnly: true }, { a: 'moon', b: 'telescope', result: 'ufo', msg: 'It blinked back.', secret: true, nightOnly: true, fx: 'spooky' }, { a: 'ufo', b: 'life', result: 'alien', msg: 'Life, from a different draft.' }, { a: 'life', b: 'galaxy', result: 'alien', msg: 'Somewhere, life filed a copy.' }, { a: 'alien', b: 'rocket', result: 'ufo', msg: 'Return flight.' }, { a: 'star', b: 'secret', result: 'netuno', msg: 'The outer dark has a name, and it\u2019s this one.', secret: true, fx: 'cosmic' }, { a: 'telescope', b: 'galaxy', result: 'netuno', msg: 'You found it by looking too long.', secret: true, fx: 'cosmic' }, { a: 'star', b: 'fire', result: 'supernova', msg: 'An ending so bright it counts as a beginning.', fx: 'flare' }, /* ---- absurd ---- */ { a: 'internet', b: 'philosophy', result: 'hotTake', msg: 'Everyone has one. No one wants yours.' }, { a: 'philosophy', b: 'fire', result: 'hotTake', msg: 'Someone is wrong somewhere, urgently.', fx: 'flare' }, { a: 'statue', b: 'phone', result: 'ancientInfluencer', msg: 'Two million followers. Zero posts.', secret: true }, { a: 'statue', b: 'internet', result: 'ancientInfluencer', msg: 'The followers were always there. Now there\u2019s a count.', secret: true }, { a: 'developer', b: 'developer', result: 'meeting', msg: 'Two developers produced a third meeting.' } ]; var DATA = { ELEMENTS: ELEMENTS, RECIPES: RECIPES, CATEGORIES: CATEGORIES, STARTERS: STARTERS }; if (typeof module !== 'undefined' && module.exports) { module.exports = DATA; } globalThis.EMOJESIS_DATA = DATA; })();