[
 {
  "id": "dont_step_on_cat",
  "host": "inti",
  "offered_by": [
   "inti"
  ],
  "title_ca": "No trepitgis l'Inti!",
  "intro_ca": "Miau! Baixem les escales junts? Jo vaig davant… a veure si no em trepitges!",
  "lines": {
   "play": [
    {
     "speaker": "nolah",
     "text": "Inti, deixa'm passar!",
     "expression": "determined"
    },
    {
     "speaker": "nolah",
     "text": "Mama, l'Inti se'm posa davant!",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "Inti, aparta't, que baixo!",
     "expression": "determined"
    },
    {
     "speaker": "nolah",
     "text": "Ui, ui, ui… quin gat més entremaliat!",
     "expression": "happy"
    },
    {
     "speaker": "nolah",
     "text": "Inti, les escales no són per jugar!",
     "expression": "curious"
    },
    {
     "speaker": "nolah",
     "text": "Papa, l'Inti vol que el trepitgi!",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "Inti, vés més a poc a poc!",
     "expression": "determined"
    },
    {
     "speaker": "nolah",
     "text": "On vas tan de pressa, gatet?",
     "expression": "curious"
    },
    {
     "speaker": "nolah",
     "text": "Inti, ets el gat més tossut del món!",
     "expression": "happy"
    },
    {
     "speaker": "nolah",
     "text": "Compte, Inti, que no et veig la cua!",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "Inti, fes-te a un costat, sisplau!",
     "expression": "happy"
    },
    {
     "speaker": "nolah",
     "text": "Mama! L'Inti em fa la traveta!",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "Inti, let me past!",
     "lang": "en",
     "expression": "determined"
    },
    {
     "speaker": "nolah",
     "text": "¡Inti, déjame pasar!",
     "lang": "es",
     "expression": "determined"
    },
    {
     "speaker": "nolah",
     "text": "Mum, Inti keeps getting in front of me!",
     "lang": "en",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "¡Mamá, Inti se me pone delante!",
     "lang": "es",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "Inti, move over, I'm coming down!",
     "lang": "en",
     "expression": "determined"
    },
    {
     "speaker": "nolah",
     "text": "¡Inti, apártate, que bajo!",
     "lang": "es",
     "expression": "determined"
    },
    {
     "speaker": "nolah",
     "text": "Oh, oh, oh… what a cheeky cat!",
     "lang": "en",
     "expression": "happy"
    },
    {
     "speaker": "nolah",
     "text": "¡Uy, uy, uy… qué gato más travieso!",
     "lang": "es",
     "expression": "happy"
    },
    {
     "speaker": "nolah",
     "text": "Inti, the stairs aren't for playing!",
     "lang": "en",
     "expression": "curious"
    },
    {
     "speaker": "nolah",
     "text": "¡Inti, las escaleras no son para jugar!",
     "lang": "es",
     "expression": "curious"
    },
    {
     "speaker": "nolah",
     "text": "Dad, Inti wants me to tread on him!",
     "lang": "en",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "¡Papá, Inti quiere que lo pise!",
     "lang": "es",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "Inti, slow down a bit!",
     "lang": "en",
     "expression": "determined"
    },
    {
     "speaker": "nolah",
     "text": "¡Inti, ve más despacito!",
     "lang": "es",
     "expression": "determined"
    },
    {
     "speaker": "nolah",
     "text": "Where are you off to in such a hurry, kitty?",
     "lang": "en",
     "expression": "curious"
    },
    {
     "speaker": "nolah",
     "text": "¿Adónde vas tan deprisa, gatito?",
     "lang": "es",
     "expression": "curious"
    },
    {
     "speaker": "nolah",
     "text": "Inti, you're the most stubborn cat in the world!",
     "lang": "en",
     "expression": "happy"
    },
    {
     "speaker": "nolah",
     "text": "¡Inti, eres el gato más cabezota del mundo!",
     "lang": "es",
     "expression": "happy"
    },
    {
     "speaker": "nolah",
     "text": "Careful, Inti, I can't see your tail!",
     "lang": "en",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "¡Cuidado, Inti, que no te veo la cola!",
     "lang": "es",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "Inti, step aside, please!",
     "lang": "en",
     "expression": "happy"
    },
    {
     "speaker": "nolah",
     "text": "¡Inti, hazte a un lado, por favor!",
     "lang": "es",
     "expression": "happy"
    },
    {
     "speaker": "nolah",
     "text": "Mum! Inti keeps tripping me up!",
     "lang": "en",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "¡Mamá! ¡Inti me pone la zancadilla!",
     "lang": "es",
     "expression": "surprised"
    }
   ],
   "hit": [
    {
     "speaker": "nolah",
     "text": "Ai! Perdona, Inti!",
     "expression": "sad"
    },
    {
     "speaker": "nolah",
     "text": "Ui, pobret! Ho sento molt!",
     "expression": "sad"
    },
    {
     "speaker": "nolah",
     "text": "Inti! T'he fet mal?",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "Perdó, perdó, perdó!",
     "expression": "sad"
    },
    {
     "speaker": "inti",
     "text": "MIAAAU!",
     "expression": "angry"
    },
    {
     "speaker": "inti",
     "text": "MRRRAU!",
     "expression": "angry"
    },
    {
     "speaker": "inti",
     "text": "FFFFF!",
     "expression": "angry"
    },
    {
     "speaker": "nolah",
     "text": "Oops! Sorry, Inti!",
     "lang": "en",
     "expression": "sad"
    },
    {
     "speaker": "nolah",
     "text": "¡Ay! ¡Perdona, Inti!",
     "lang": "es",
     "expression": "sad"
    },
    {
     "speaker": "nolah",
     "text": "Oh, poor thing! I'm so sorry!",
     "lang": "en",
     "expression": "sad"
    },
    {
     "speaker": "nolah",
     "text": "¡Uy, pobrecito! ¡Lo siento mucho!",
     "lang": "es",
     "expression": "sad"
    },
    {
     "speaker": "nolah",
     "text": "Inti! Did I hurt you?",
     "lang": "en",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "¡Inti! ¿Te he hecho daño?",
     "lang": "es",
     "expression": "surprised"
    },
    {
     "speaker": "nolah",
     "text": "Sorry, sorry, sorry!",
     "lang": "en",
     "expression": "sad"
    },
    {
     "speaker": "nolah",
     "text": "¡Perdón, perdón, perdón!",
     "lang": "es",
     "expression": "sad"
    },
    {
     "speaker": "inti",
     "text": "MIAAAOW!",
     "lang": "en",
     "expression": "angry"
    },
    {
     "speaker": "inti",
     "text": "¡MIAAAU!",
     "lang": "es",
     "expression": "angry"
    },
    {
     "speaker": "inti",
     "text": "MRRROW!",
     "lang": "en",
     "expression": "angry"
    },
    {
     "speaker": "inti",
     "text": "¡MRRRAU!",
     "lang": "es",
     "expression": "angry"
    },
    {
     "speaker": "inti",
     "text": "HSSSS!",
     "lang": "en",
     "expression": "angry"
    },
    {
     "speaker": "inti",
     "text": "¡FFFFF!",
     "lang": "es",
     "expression": "angry"
    }
   ],
   "win": [
    {
     "speaker": "inti",
     "text": "Ni un trepig! Ets una campiona baixant escales!",
     "expression": "happy"
    },
    {
     "speaker": "inti",
     "text": "Molt bé! Les meves potetes estan senceres!",
     "expression": "happy"
    },
    {
     "speaker": "inti",
     "text": "Not a single squashed paw! You're a stairs champion!",
     "lang": "en",
     "expression": "happy"
    },
    {
     "speaker": "inti",
     "text": "¡Ni un pisotón! ¡Eres una campeona bajando escaleras!",
     "lang": "es",
     "expression": "happy"
    },
    {
     "speaker": "inti",
     "text": "Well done! My little paws are all in one piece!",
     "lang": "en",
     "expression": "happy"
    },
    {
     "speaker": "inti",
     "text": "¡Muy bien! ¡Mis patitas están enteritas!",
     "lang": "es",
     "expression": "happy"
    }
   ],
   "lose": [
    {
     "speaker": "inti",
     "text": "Ai, les meves potetes! M'has trepitjat massa vegades…",
     "expression": "sad"
    },
    {
     "speaker": "inti",
     "text": "Ow, my little paws! You trod on me too many times…",
     "lang": "en",
     "expression": "sad"
    },
    {
     "speaker": "inti",
     "text": "¡Ay, mis patitas! Me has pisado demasiadas veces…",
     "lang": "es",
     "expression": "sad"
    }
   ],
   "end": [
    {
     "speaker": "inti",
     "text": "Miau! Recorda: a les escales, mira sempre on poses els peus. Una caiguda fa molt mal!",
     "expression": "determined"
    },
    {
     "speaker": "inti",
     "text": "Les escales poden ser perilloses. Baixa a poc a poc, agafa't a la barana i mira davant teu!",
     "expression": "determined"
    },
    {
     "speaker": "inti",
     "text": "Saps per què els gats no caiem per les escales? Perquè mirem on posem les potes! Fes com jo.",
     "expression": "curious"
    },
    {
     "speaker": "inti",
     "text": "Si hi ha joguines, roba o un gat a les escales, atura't i mira bé abans de baixar. Prometut?",
     "expression": "determined"
    },
    {
     "speaker": "inti",
     "text": "Miaow! Remember: on the stairs, always watch where you put your feet. A fall really hurts!",
     "lang": "en",
     "expression": "determined"
    },
    {
     "speaker": "inti",
     "text": "¡Miau! Recuerda: en las escaleras, mira siempre dónde pones los pies. ¡Una caída hace mucho daño!",
     "lang": "es",
     "expression": "determined"
    },
    {
     "speaker": "inti",
     "text": "Stairs can be dangerous. Go down slowly, hold on to the banister and look where you're going!",
     "lang": "en",
     "expression": "determined"
    },
    {
     "speaker": "inti",
     "text": "Las escaleras pueden ser peligrosas. ¡Baja despacio, agárrate a la barandilla y mira delante de ti!",
     "lang": "es",
     "expression": "determined"
    },
    {
     "speaker": "inti",
     "text": "Do you know why cats don't fall down the stairs? Because we watch where we put our paws! Do what I do.",
     "lang": "en",
     "expression": "curious"
    },
    {
     "speaker": "inti",
     "text": "¿Sabes por qué los gatos no nos caemos por las escaleras? ¡Porque miramos dónde ponemos las patas! Haz como yo.",
     "lang": "es",
     "expression": "curious"
    },
    {
     "speaker": "inti",
     "text": "If there are toys, clothes or a cat on the stairs, stop and look carefully before going down. Promise?",
     "lang": "en",
     "expression": "determined"
    },
    {
     "speaker": "inti",
     "text": "Si hay juguetes, ropa o un gato en las escaleras, para y mira bien antes de bajar. ¿Prometido?",
     "lang": "es",
     "expression": "determined"
    }
   ]
  },
  "intro_video": "assets/minigames/intro-dont-step-on-cat.mp4",
  "title_en": "Don't step on Inti!",
  "title_es": "¡No pises a Inti!",
  "intro_en": "Miaow! Shall we go downstairs together? I'll go first… let's see if you can avoid my paws!",
  "intro_es": "¡Miau! ¿Bajamos las escaleras juntos? Yo voy delante… ¡a ver si no me pisas!"
 },
 {
  "id": "image_puzzle",
  "offered_by": [
   "*"
  ],
  "title_ca": "Trencaclosques d’imatges",
  "intro_ca": "Cada imatge amaga un petit món. El reconstruïm peça a peça?",
  "lines": {},
  "image_puzzles": [
   {
    "id": "garden",
    "image": "assets/minigames/garden-family.webp",
    "title_key": "games.image_puzzle.garden"
   },
   {
    "id": "lantern-forest",
    "image": "assets/minigames/lantern-forest-family.webp",
    "title_key": "games.image_puzzle.forest"
   },
   {
    "id": "shell-cove",
    "image": "assets/minigames/shell-cove-friends.webp",
    "title_key": "games.image_puzzle.cove"
   }
  ],
  "intro_video": "assets/minigames/intro-image-puzzle.mp4",
  "kind": "image_puzzle",
  "topic": "nature",
  "instructions_ca": "Arrossega cada peça al seu lloc, o toca una peça i després un espai.",
  "hint_ca": "Comença per les cantonades i busca els colors i les línies que continuen d’una peça a l’altra.",
  "title_en": "Picture puzzle",
  "title_es": "Puzle de imágenes",
  "intro_en": "Every picture hides a little world. Shall we put it back together piece by piece?",
  "intro_es": "Cada imagen esconde un pequeño mundo. ¿La reconstruimos pieza a pieza?",
  "instructions_en": "Drag each piece into place, or tap a piece and then a space.",
  "instructions_es": "Arrastra cada pieza a su sitio, o toca una pieza y después un hueco.",
  "hint_en": "Start with the corners and look for colours and lines that carry on from one piece to the next.",
  "hint_es": "Empieza por las esquinas y busca los colores y las líneas que continúan de una pieza a otra."
 },
 {
  "id": "differences",
  "offered_by": [
   "*"
  ],
  "title_ca": "Cinc secrets amagats",
  "intro_ca": "Tres racons plens de secrets… M’ajudes a trobar què ha canviat?",
  "lines": {},
  "difference_puzzles": [
   {
    "id": "kitchen",
    "image": "assets/minigames/differences-kitchen-family-v2.webp",
    "comparison": "assets/minigames/differences-kitchen-family-changed-v2.webp",
    "title_key": "games.differences.kitchen.title",
    "hint_key": "games.differences.kitchen.hint",
    "spots": [
     [
      0.108,
      0.103,
      0.06,
      0.065
     ],
     [
      0.971,
      0.127,
      0.056,
      0.054
     ],
     [
      0.085,
      0.73,
      0.12,
      0.055
     ],
     [
      0.468,
      0.768,
      0.13,
      0.095
     ],
     [
      0.85,
      0.787,
      0.14,
      0.07
     ]
    ],
    "cast": [
     "nolah",
     "adriana",
     "francina"
    ]
   },
   {
    "id": "garden",
    "image": "assets/minigames/differences-garden-family-v2.webp",
    "comparison": "assets/minigames/differences-garden-family-changed-v2.webp",
    "title_key": "games.differences.garden.title",
    "hint_key": "games.differences.garden.hint",
    "spots": [
     [
      0.775,
      0.068,
      0.052,
      0.058
     ],
     [
      0.272,
      0.8,
      0.065,
      0.071
     ],
     [
      0.519,
      0.486,
      0.065,
      0.055
     ],
     [
      0.519,
      0.613,
      0.07,
      0.07
     ],
     [
      0.757,
      0.818,
      0.083,
      0.073
     ]
    ],
    "cast": [
     "nolah",
     "david",
     "lujzi"
    ]
   },
   {
    "id": "atelier",
    "image": "assets/minigames/differences-atelier-family-v2.webp",
    "comparison": "assets/minigames/differences-atelier-family-changed-v2.webp",
    "title_key": "games.differences.atelier.title",
    "hint_key": "games.differences.atelier.hint",
    "spots": [
     [
      0.081,
      0.089,
      0.06,
      0.07
     ],
     [
      0.951,
      0.16,
      0.09,
      0.09
     ],
     [
      0.179,
      0.781,
      0.114,
      0.048
     ],
     [
      0.548,
      0.826,
      0.065,
      0.055
     ],
     [
      0.673,
      0.758,
      0.135,
      0.1
     ]
    ],
    "cast": [
     "nolah",
     "friend_chloe",
     "friend_nina",
     "friend_sofia"
    ]
   }
  ],
  "intro_video": "assets/minigames/intro-differences.mp4",
  "kind": "differences",
  "topic": "nature",
  "instructions_ca": "Troba les cinc diferències. Pots tocar qualsevol de les dues imatges.",
  "hint_ca": "Compara les formes i els colors dels objectes grans.",
  "title_en": "Five hidden secrets",
  "title_es": "Cinco secretos escondidos",
  "intro_en": "Three corners full of secrets… Will you help me find what’s changed?",
  "intro_es": "Tres rincones llenos de secretos… ¿Me ayudas a encontrar qué ha cambiado?",
  "instructions_en": "Find the five differences. You can tap either picture.",
  "instructions_es": "Encuentra las cinco diferencias. Puedes tocar cualquiera de las dos imágenes.",
  "hint_en": "Compare the shapes and colours of the big objects.",
  "hint_es": "Compara las formas y los colores de los objetos grandes."
 },
 {
  "id": "hidden_objects",
  "offered_by": [
   "*"
  ],
  "title_ca": "Objectes amagats",
  "intro_ca": "Tres racons plens de secrets! M’ajudes a trobar els objectes amagats?",
  "lines": {},
  "hidden_object_puzzles": [
   {
    "id": "kitchen",
    "image": "assets/minigames/hidden-kitchen-family-v1.webp",
    "title_key": "games.hidden.kitchen.title",
    "instructions_key": "games.hidden.kitchen.instructions",
    "hint_key": "games.hidden.kitchen.hint",
    "prop": "chestnut",
    "spots": [
     [
      0.20625315179021683,
      0.46027742749054223,
      0.020171457387796268
     ],
     [
      0.2586989409984871,
      0.7994955863808323,
      0.02168431669188099
     ],
     [
      0.6999495713565305,
      0.489281210592686,
      0.019667170953101363
     ],
     [
      0.7806354009077155,
      0.6456494325346784,
      0.02168431669188099
     ],
     [
      0.7866868381240545,
      0.7704918032786885,
      0.020171457387796268
     ]
    ],
    "cast": [
     "nolah",
     "adriana",
     "francina"
    ]
   },
   {
    "id": "greenhouse",
    "image": "assets/minigames/hidden-greenhouse-family-v1.webp",
    "title_key": "games.hidden.greenhouse.title",
    "instructions_key": "games.hidden.greenhouse.instructions",
    "hint_key": "games.hidden.greenhouse.hint",
    "prop": "mushroom",
    "spots": [
     [
      0.22390317700453857,
      0.46027742749054223,
      0.025718608169440244
     ],
     [
      0.8028240040342914,
      0.4110970996216898,
      0.02723146747352496
     ],
     [
      0.7720625315179022,
      0.5081967213114754,
      0.026727181038830056
     ],
     [
      0.2909732728189612,
      0.682219419924338,
      0.02723146747352496
     ],
     [
      0.7387796268280383,
      0.8385876418663304,
      0.030761472516389308
     ]
    ],
    "cast": [
     "nolah",
     "david",
     "lujzi"
    ]
   },
   {
    "id": "seaside",
    "image": "assets/minigames/hidden-seaside-friends-v1.webp",
    "title_key": "games.hidden.seaside.title",
    "instructions_key": "games.hidden.seaside.instructions",
    "hint_key": "games.hidden.seaside.hint",
    "prop": "crystal",
    "spots": [
     [
      0.22138174483106404,
      0.37831021437578816,
      0.025214321734745335
     ],
     [
      0.734745335350479,
      0.25851197982345525,
      0.02723146747352496
     ],
     [
      0.7634896621280888,
      0.47414880201765447,
      0.030761472516389308
     ],
     [
      0.6787695410993444,
      0.7566204287515763,
      0.04084720121028744
     ],
     [
      0.37771053958648515,
      0.8865069356872636,
      0.044377206253151794
     ]
    ],
    "cast": [
     "nolah",
     "friend_chloe",
     "friend_nina"
    ]
   }
  ],
  "intro_video": "assets/minigames/intro-hidden-objects.mp4",
  "kind": "hidden_objects",
  "topic": "healthy_food",
  "instructions_ca": "Tria una escena i troba els cinc objectes amagats.",
  "hint_ca": "Mira els racons, les plantes i les prestatgeries.",
  "title_en": "Hidden objects",
  "title_es": "Objetos ocultos",
  "intro_en": "Three corners full of secrets! Will you help me find the hidden objects?",
  "intro_es": "¡Tres rincones llenos de secretos! ¿Me ayudas a encontrar los objetos escondidos?",
  "instructions_en": "Choose a scene and find the five hidden objects.",
  "instructions_es": "Elige una escena y encuentra los cinco objetos escondidos.",
  "hint_en": "Look in the corners, the plants and the shelves.",
  "hint_es": "Mira en los rincones, las plantas y las estanterías."
 },
 {
  "id": "maze",
  "offered_by": [
   "*"
  ],
  "title_ca": "El fil invisible",
  "intro_ca": "L’amor ens uneix amb un fil invisible. Troba el camí fins a la família i els amics!",
  "lines": {},
  "intro_video": "assets/minigames/intro-maze.mp4",
  "kind": "maze",
  "topic": "nature",
  "instructions_ca": "Continua el fil daurat fins a qui estima la Nolah. Vigila els passos i el temps!",
  "hint_ca": "Arrossega la punta lluminosa que ja és dins del laberint fins a la sortida del costat de l’altra persona. El fil s’hi connectarà tot sol. El primer pas ja està fet. Tens els passos del camí més curt i uns passos extra segons el nivell. Si els passos restants baixen de zero o s’acaba el temps, perds. Desfer camí també gasta passos. Amb teclat: fletxes per avançar; el fil s’uneix en arribar a la sortida.",
  "title_en": "The invisible thread",
  "title_es": "El hilo invisible",
  "intro_en": "Love joins us with an invisible thread. Find the way to family and friends!",
  "intro_es": "El amor nos une con un hilo invisible. ¡Encuentra el camino hasta la familia y los amigos!",
  "instructions_en": "Follow the golden thread to someone who loves Nolah. Watch your steps and the time!",
  "instructions_es": "Sigue el hilo dorado hasta quien quiere a Nolah. ¡Vigila los pasos y el tiempo!",
  "hint_en": "Drag the glowing tip that’s already inside the maze to the exit beside the other person. The thread will connect by itself. The first step is already done. You get the steps of the shortest path plus some extra steps depending on the level. If your remaining steps drop below zero or time runs out, you lose. Going back also uses up steps. With a keyboard: use the arrows to move; the thread joins up when you reach the exit.",
  "hint_es": "Arrastra la punta luminosa que ya está dentro del laberinto hasta la salida junto a la otra persona. El hilo se conectará solo. El primer paso ya está hecho. Tienes los pasos del camino más corto y unos pasos extra según el nivel. Si los pasos restantes bajan de cero o se acaba el tiempo, pierdes. Deshacer camino también gasta pasos. Con teclado: flechas para avanzar; el hilo se une al llegar a la salida."
 },
 {
  "id": "shop",
  "offered_by": [
   "*"
  ],
  "title_ca": "El mercat",
  "intro_ca": "Anem al mercat! Cal pagar l’import exacte, sense canvi.",
  "lines": {},
  "intro_video": "assets/minigames/intro-shop.mp4",
  "kind": "shop",
  "topic": "maths",
  "instructions_ca": "Calcula la compra i paga l’import exacte. No es torna canvi.",
  "hint_ca": "Multiplica cada preu per la quantitat. Combina monedes d’1 i 2 € i bitllets de 5, 10 i 20 €.",
  "title_en": "The market",
  "title_es": "El mercado",
  "intro_en": "Let’s go to the market! You must pay the exact amount, with no change.",
  "intro_es": "¡Vamos al mercado! Hay que pagar el importe exacto, sin cambio.",
  "instructions_en": "Work out the shopping total and pay the exact amount. No change is given.",
  "instructions_es": "Calcula la compra y paga el importe exacto. No se devuelve cambio.",
  "hint_en": "Multiply each price by the quantity. Combine €1 and €2 coins with €5, €10 and €20 notes.",
  "hint_es": "Multiplica cada precio por la cantidad. Combina monedas de 1 y 2 € y billetes de 5, 10 y 20 €."
 },
 {
  "id": "sudoku",
  "offered_by": [
   "*"
  ],
  "title_ca": "El sudoku del bosc",
  "intro_ca": "Quatre tresors del bosc volen un lloc al taulell. Que no es repeteixi cap!",
  "lines": {},
  "intro_video": "assets/minigames/intro-sudoku.mp4",
  "kind": "sudoku",
  "topic": "maths",
  "instructions_ca": "Tria una casella buida i després un símbol. Cada fila, columna i requadre de 2 × 2 els necessita tots quatre.",
  "hint_ca": "Comença per una fila amb pocs espais buits. Les peces amb un punt daurat són pistes fixes.",
  "title_en": "The forest sudoku",
  "title_es": "El sudoku del bosque",
  "intro_en": "Four forest treasures want a place on the board. Don’t let any repeat!",
  "intro_es": "Cuatro tesoros del bosque quieren un sitio en el tablero. ¡Que no se repita ninguno!",
  "instructions_en": "Choose an empty square and then a symbol. Every row, column and 2 × 2 box needs all four.",
  "instructions_es": "Elige una casilla vacía y después un símbolo. Cada fila, columna y recuadro de 2 × 2 los necesita los cuatro.",
  "hint_en": "Start with a row that has few empty spaces. Pieces with a golden dot are fixed clues.",
  "hint_es": "Empieza por una fila con pocos huecos vacíos. Las piezas con un punto dorado son pistas fijas."
 },
 {
  "id": "memory",
  "offered_by": [
   "*"
  ],
  "title_ca": "Les parelles dels amics",
  "intro_ca": "He preparat unes cartes amb els nostres amics i la família. Recordes on és cada parella?",
  "lines": {},
  "intro_video": "assets/minigames/intro-memory.mp4",
  "kind": "memory",
  "topic": "crochet",
  "instructions_ca": "Gira dues cartes i troba les parelles de personatges. Si són diferents, es tornaran a amagar.",
  "hint_ca": "Gira amb calma i recorda on és cada personatge.",
  "title_en": "Friends’ pairs",
  "title_es": "Las parejas de los amigos",
  "intro_en": "I’ve made some cards with our friends and family. Can you remember where each pair is?",
  "intro_es": "He preparado unas cartas con nuestros amigos y la familia. ¿Recuerdas dónde está cada pareja?",
  "instructions_en": "Turn over two cards and find the matching characters. If they’re different, they’ll hide again.",
  "instructions_es": "Gira dos cartas y encuentra las parejas de personajes. Si son diferentes, se volverán a esconder.",
  "hint_en": "Take your time and remember where each character is.",
  "hint_es": "Gira con calma y recuerda dónde está cada personaje."
 },
 {
  "id": "pipes",
  "offered_by": [
   "*"
  ],
  "title_ca": "El jardí de la Nolah",
  "intro_ca": "Les flors tenen set! Ajuda la Nolah a girar les canonades per portar l’aigua fins a les flors del jardí.",
  "lines": {},
  "intro_video": "assets/minigames/intro-pipes.mp4",
  "kind": "pipes",
  "topic": "nature",
  "instructions_ca": "Gira les canonades i porta l’aigua de la Nolah fins a les flors de dalt a la dreta.",
  "hint_ca": "L’aigua blava mostra el camí cap a les flors. Cada unió necessita dues obertures encarades.",
  "title_es": "El jardín de Nolah",
  "intro_es": "¡Las flores tienen sed! Ayuda a Nolah a girar las tuberías para llevar el agua hasta las flores del jardín.",
  "instructions_es": "Gira las tuberías y lleva el agua de Nolah hasta las flores de arriba a la derecha.",
  "hint_es": "El agua azul muestra el camino hacia las flores. Cada unión necesita dos aberturas enfrentadas.",
  "title_en": "Nolah’s garden",
  "intro_en": "The flowers are thirsty! Help Nolah turn the pipes to carry the water to the flowers in the garden.",
  "instructions_en": "Turn the pipes and bring Nolah’s water to the flowers at the top right.",
  "hint_en": "The blue water shows the way to the flowers. Every joint needs two openings facing each other."
 },
 {
  "id": "shapes",
  "offered_by": [],
  "title_ca": "La manta de retalls",
  "intro_ca": "Fem una manta ben bonica amb retalls de colors. Hi caben tots, sense deixar forats!",
  "lines": {},
  "kind": "shapes",
  "topic": "crochet",
  "instructions_ca": "Tria un retall, gira’l si cal i toca el lloc on vols posar-ne la cantonada superior esquerra. També el pots arrossegar.",
  "hint_ca": "Comença per les vores. Pots retirar una peça col·locada i tornar-la a posar en un altre lloc.",
  "title_en": "The patchwork quilt",
  "title_es": "La manta de retales",
  "intro_en": "Let’s make a lovely quilt from colourful patches. They all fit, with no gaps!",
  "intro_es": "Hagamos una manta preciosa con retales de colores. ¡Caben todos, sin dejar huecos!",
  "instructions_en": "Choose a patch, turn it if needed and tap where you want its top-left corner to go. You can also drag it.",
  "instructions_es": "Elige un retal, gíralo si hace falta y toca el sitio donde quieres poner su esquina superior izquierda. También puedes arrastrarlo.",
  "hint_en": "Start with the edges. You can lift a placed piece and put it somewhere else.",
  "hint_es": "Empieza por los bordes. Puedes quitar una pieza colocada y volver a ponerla en otro sitio."
 },
 {
  "id": "where_is_nolah",
  "host": "nolah",
  "offered_by": [
   "*"
  ],
  "title_ca": "On és la Nolah?",
  "intro_ca": "M’ajudes a trobar-me? Tens 30 segons!",
  "lines": {},
  "where_is_nolah_puzzles": [
   {
    "id": "christmas-market",
    "image": "assets/minigames/where-is-nolah-christmas-market.webp",
    "title_key": "games.where_is_nolah.christmas_market",
    "target": [
     0.16471354166666666,
     0.5884259259259259,
     0.022135416666666668,
     0.10740740740740741
    ]
   },
   {
    "id": "cadaquesh",
    "image": "assets/minigames/where-is-nolah-cadaquesh.webp",
    "title_key": "games.where_is_nolah.cadaquesh",
    "target": [
     0.19635416666666666,
     0.7175925925925926,
     0.026041666666666668,
     0.08055555555555556
    ]
   },
   {
    "id": "castanyada",
    "image": "assets/minigames/where-is-nolah-castanyada.webp",
    "title_key": "games.where_is_nolah.castanyada",
    "target": [
     0.5802083333333333,
     0.6166666666666667,
     0.03125,
     0.09444444444444444
    ]
   },
   {
    "id": "music-concert",
    "image": "assets/minigames/where-is-nolah-music-concert.webp",
    "title_key": "games.where_is_nolah.music_concert",
    "target": [
     0.6529947916666666,
     0.5717592592592593,
     0.032552083333333336,
     0.10185185185185185
    ]
   }
  ],
  "intro_video": "assets/minigames/intro-where-is-nolah.mp4",
  "kind": "where_is_nolah",
  "instructions_ca": "Troba la Nolah en 30 segons! Arrossega la imatge per explorar-la i toca-la quan la vegis.",
  "hint_ca": "Arrossega amb el dit o el ratolí per mirar tots els racons. El temps continua mentre consultes la pista!",
  "title_en": "Where’s Nolah?",
  "title_es": "¿Dónde está Nolah?",
  "intro_en": "Will you help me find myself? You’ve got 30 seconds!",
  "intro_es": "¿Me ayudas a encontrarme? ¡Tienes 30 segundos!",
  "instructions_en": "Find Nolah in 30 seconds! Drag the picture to explore it and tap her when you spot her.",
  "instructions_es": "¡Encuentra a Nolah en 30 segundos! Arrastra la imagen para explorarla y tócala cuando la veas.",
  "hint_en": "Drag with your finger or the mouse to look in every corner. The clock keeps ticking while you read the hint!",
  "hint_es": "Arrastra con el dedo o el ratón para mirar todos los rincones. ¡El tiempo sigue corriendo mientras consultas la pista!"
 },
 {
  "id": "cake_workshop",
  "offered_by": [
   "*"
  ],
  "title_ca": "El gran taller de pastissos",
  "intro_ca": "Una recepta, un munt de colors i un jurat amb ganes de celebrar!",
  "lines": {},
  "intro_video": "assets/minigames/intro-cake.mp4",
  "kind": "cake",
  "instructions_ca": "Prepara la recepta, barreja, forneja i decora el teu pastís.",
  "hint_ca": "Mira les quantitats de la recepta. Després, decora al teu gust: cada pastís és especial!",
  "title_en": "The great cake workshop",
  "title_es": "El gran taller de pasteles",
  "intro_en": "A recipe, lots of colours and a judging panel ready to celebrate!",
  "intro_es": "¡Una receta, un montón de colores y un jurado con ganas de celebrar!",
  "instructions_en": "Follow the recipe, mix, bake and decorate your cake.",
  "instructions_es": "Prepara la receta, mezcla, hornea y decora tu pastel.",
  "hint_en": "Check the amounts in the recipe. Then decorate it your way: every cake is special!",
  "hint_es": "Mira las cantidades de la receta. Después, decora a tu gusto: ¡cada pastel es especial!"
 },
 {
  "id": "piano_adventures",
  "offered_by": [
   "*"
  ],
  "title_ca": "Les aventures del piano",
  "intro_ca": "Escoltem un eco musical i llegim una partitura per fer un petit concert!",
  "lines": {},
  "intro_video": "assets/minigames/intro-piano.mp4",
  "kind": "piano",
  "instructions_ca": "Tria entre dues activitats: repeteix un eco musical o llegeix una melodia sorpresa al pentagrama.",
  "hint_ca": "A l’eco, escolta sense pistes visuals. Des de la segona frase, copia també la durada. Al concert, llegeix la partitura i mantén cada tecla el temps indicat.",
  "title_en": "Piano adventures",
  "title_es": "Las aventuras del piano",
  "intro_en": "Let’s echo a musical phrase and read a score for a little concert!",
  "intro_es": "¡Escuchamos un eco musical y leemos una partitura para hacer un pequeño concierto!",
  "instructions_en": "Choose between two activities: echo a musical phrase or read a surprise melody on the staff.",
  "instructions_es": "Elige entre dos actividades: repite un eco musical o lee una melodía sorpresa en el pentagrama.",
  "hint_en": "In Echo, listen without visual clues. From phrase two, match note lengths too. In Concert, read the score and hold each key for the written length.",
  "hint_es": "En el eco, escucha sin pistas visuales. Desde la segunda frase, copia también la duración. En el concierto, lee la partitura y mantén cada tecla el tiempo indicado."
 },
 {
  "id": "horse_preparation",
  "host": "toni",
  "offered_by": [],
  "title_ca": "Preparem els cavalls de Cal Fuster",
  "intro_ca": "Amb en Toni, cuidem el nostre cavall i el preparem per a una bona passejada!",
  "lines": {},
  "kind": "horse_preparation",
  "instructions_ca": "Tria un cavall. Raspalla’l, neteja els cascs, pentina’l i posa-li l’equip en ordre.",
  "hint_ca": "Segueix els consells d’en Toni. Primer cuidem el cavall; després posem el suador, la sella i la resta de l’equip.",
  "title_en": "Getting the Cal Fuster horses ready",
  "title_es": "Preparamos los caballos de Cal Fuster",
  "intro_en": "With Toni, we look after our horse and get it ready for a lovely ride!",
  "intro_es": "¡Con Toni, cuidamos de nuestro caballo y lo preparamos para un buen paseo!",
  "instructions_en": "Choose a horse. Brush it, clean its hooves, comb its mane and put its tack on in order.",
  "instructions_es": "Elige un caballo. Cepíllalo, limpia los cascos, péinalo y ponle el equipo en orden.",
  "hint_en": "Follow Toni’s tips. First we look after the horse; then we put on the saddle pad, the saddle and the rest of the tack.",
  "hint_es": "Sigue los consejos de Toni. Primero cuidamos el caballo; después ponemos el sudadero, la silla y el resto del equipo."
 },
 {
  "id": "spell_academy",
  "offered_by": [
   "*"
  ],
  "title_ca": "L’aula dels encanteris",
  "intro_ca": "Wingardium Leviosa! Una taula plena d’objectes espera la teva màgia. Mantén-los a l’aire durant 30 segons!",
  "lines": {},
  "intro_video": "assets/minigames/intro-spells.mp4",
  "kind": "spells",
  "title_es": "El aula de los hechizos",
  "intro_es": "¡Wingardium Leviosa! Una mesa llena de objetos espera tu magia. ¡Mantenlos en el aire durante 30 segundos!",
  "instructions_ca": "Mou la Nolah: arrossega, toca o fes servir les fletxes. Acosta la vareta als objectes que cauen!",
  "instructions_es": "Mueve a Nolah: arrastra, toca o usa las flechas. ¡Acerca la varita a los objetos que caen!",
  "hint_ca": "Traça el gest o toca les estrelles en ordre. Després mou la Nolah per la taula durant 30 segons: la vareta recarrega els objectes que cauen. Si toquen la taula, ja no volen. Cada vegada cauran més de pressa!",
  "hint_es": "Traza el gesto o toca las estrellas en orden. Después mueve a Nolah por la mesa durante 30 segundos: la varita recarga los objetos que caen. Si tocan la mesa, ya no vuelan. ¡Cada vez caerán más deprisa!",
  "title_en": "The spell classroom",
  "intro_en": "Wingardium Leviosa! A table full of objects is waiting for your magic. Keep them airborne for 30 seconds!",
  "instructions_en": "Move Nolah: drag, tap or use arrow keys. Bring her wand close to falling objects!",
  "hint_en": "Trace the gesture or tap its stars in order. Then move Nolah along the table for 30 seconds: her wand recharges falling objects. Once they touch the table, they stay there. They fall faster as time goes on!"
 }
]
