{"format":"murdoku-puzzle/1","id":"last-appointment","iconSet":"catalogue","version":1,"difficulty":"easy","level":3,"size":{"rows":6,"cols":6},"languages":["en","hu","de","fr","es","it","nl","pl","pt","ro","ca","cs","fi","vi","tr","el","ru","uk","ar","ko","ja","zh-Hans","zh-Hant"],"defaultLanguage":"en","title":"The Last Appointment","tagline":"Seville, Friday evening · a hair salon near the Alameda · the last client of the week and an unpaid order","author":"mathace","concept":"Murdoku – Manuel Garand (murdoku.com); unofficial fan-made case","created":"2026-10-19","story":"Salon Alicia has been cutting and colouring hair for twenty years, and on Friday evening it is full. Valentín, a sales rep for a hair-care company, came to collect the price of three months of shampoo – and told everyone that the order book did not match the stock on the shelves. At nine the shutter came down, and he vanished. Six people were in the salon. Valentín was found dead. He never took the next order.","rules":{"standard":["Every <b>row</b> and every <b>column</b> holds exactly <b>one person</b>. As soon as you place someone, cross out their whole row and column.","<b>“Beside”</b> = directly left, right, above or below, and <b>in the same area</b>. Squares with objects (the counter, the coat rack, the mirror, the sinks, the locker, the potted plant, the trolley and the dressing table) cannot be occupied; the barber chairs, the sofa, the armchair and the stool can.","Directions refer to rows and columns, not to the same line: <i>“exactly one row north of him was a woman”</i> = the person in the row directly above was a woman, in any column; <i>“the northernmost person in her area”</i> = nobody else in her area was in a row further up.","The murderer was <b>alone with the victim</b>: nobody else was in that area. The victim made no statement – his square, too, follows from the others’."],"special":[],"notes":["<i>“She was the only one beside the counter”</i> = nobody else was beside the counter."],"example":{}},"roleNames":{"staff":"member of staff","client":"client","rep":"sales rep","victim":"victim"},"personGroups":[{"id":"staff","name":"The salon","persons":["A","B","C"]},{"id":"visitors","name":"The visitors","persons":["D","E","V"]}],"map":{"groups":[],"gaps":[],"areas":[{"id":"Reception","cells":[[1,1],[1,2],[2,1]],"fill":"#dfe9ee","pattern":"tiles","labelAt":[1,1],"name":"Reception"},{"id":"Salon Floor","cells":[[1,3],[1,4],[1,5],[1,6],[2,3],[2,4],[2,5],[2,6],[3,4]],"fill":"#e6dcc8","pattern":"boards","labelAt":[1,3.5],"name":"Salon Floor"},{"id":"Wash Basins","cells":[[2,2],[3,2],[3,3],[4,2],[4,3]],"fill":"#efd9c9","pattern":"marble","labelAt":[2,2],"name":"Wash Basins"},{"id":"Waiting Area","cells":[[3,1],[4,1],[5,1],[5,2],[6,1],[6,2]],"fill":"#f2e6c8","pattern":"planks","labelAt":[3,1],"name":"Waiting Area"},{"id":"Staff Room","cells":[[3,5],[3,6],[4,5],[4,6],[5,6]],"fill":"#d5e6d8","pattern":"tiles","labelAt":[3,5.5],"name":"Staff Room"},{"id":"Colour Studio","cells":[[4,4],[5,3],[5,4],[5,5],[6,3],[6,4],[6,5],[6,6]],"fill":"#d9d6e0","pattern":"tiles","labelAt":[4,4],"name":"Colour Studio"}],"objectTypes":{"counter":{"occupiable":false,"name":"counter","icon":"<rect x=\"0\" y=\"10\" width=\"46\" height=\"26\" fill=\"#a97c50\" stroke=\"#5e4127\" stroke-width=\"1.5\"/><rect x=\"0\" y=\"10\" width=\"46\" height=\"7\" fill=\"#c9a06f\"/>"},"rack":{"occupiable":false,"name":"coat rack","icon":"<line x1=\"6\" y1=\"10\" x2=\"40\" y2=\"10\" stroke=\"#5b5852\" stroke-width=\"3\"/><line x1=\"9\" y1=\"10\" x2=\"9\" y2=\"40\" stroke=\"#5b5852\" stroke-width=\"2.5\"/><line x1=\"37\" y1=\"10\" x2=\"37\" y2=\"40\" stroke=\"#5b5852\" stroke-width=\"2.5\"/><path d=\"M15 14 v2 h8 v14 h-8 z\" fill=\"#c8536a\"/><path d=\"M25 14 v2 h7 v12 h-7 z\" fill=\"#3a6fb0\"/><line x1=\"19\" y1=\"10\" x2=\"19\" y2=\"14\" stroke=\"#333\"/><line x1=\"28\" y1=\"10\" x2=\"28\" y2=\"14\" stroke=\"#333\"/>"},"barberchair":{"occupiable":true,"name":"barber chair","icon":"<rect x=\"15\" y=\"4\" width=\"16\" height=\"7\" rx=\"3\" fill=\"#5a1f1f\"/><rect x=\"12\" y=\"10\" width=\"22\" height=\"13\" rx=\"3\" fill=\"#8b2b2b\"/><rect x=\"8\" y=\"22\" width=\"30\" height=\"9\" rx=\"3\" fill=\"#a63a3a\"/><rect x=\"5\" y=\"24\" width=\"4\" height=\"7\" rx=\"1\" fill=\"#8a8a8a\"/><rect x=\"37\" y=\"24\" width=\"4\" height=\"7\" rx=\"1\" fill=\"#8a8a8a\"/><rect x=\"20\" y=\"31\" width=\"6\" height=\"7\" fill=\"#9a9a9a\"/><rect x=\"12\" y=\"38\" width=\"22\" height=\"4\" rx=\"2\" fill=\"#666\"/>"},"mirror":{"occupiable":false,"name":"mirror","icon":"<rect x=\"12\" y=\"4\" width=\"22\" height=\"38\" rx=\"9\" fill=\"#c9a03a\" stroke=\"#7a5a12\" stroke-width=\"1.5\"/><rect x=\"15\" y=\"7\" width=\"16\" height=\"32\" rx=\"7\" fill=\"#dfe9ee\"/><path d=\"M19 11 q-3 8 0 20\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2.5\" opacity=\".8\"/>"},"sink":{"occupiable":false,"name":"sink","icon":"<rect x=\"7\" y=\"9\" width=\"32\" height=\"28\" rx=\"4\" fill=\"#dfe6ea\" stroke=\"#6b7680\" stroke-width=\"1.5\"/><ellipse cx=\"23\" cy=\"24\" rx=\"11\" ry=\"7\" fill=\"#ffffff\" stroke=\"#8a949c\"/><circle cx=\"23\" cy=\"24\" r=\"2\" fill=\"#8a949c\"/><rect x=\"21\" y=\"10\" width=\"4\" height=\"6\" fill=\"#8a949c\"/>"},"locker":{"occupiable":false,"name":"locker","icon":"<rect x=\"8\" y=\"4\" width=\"30\" height=\"38\" rx=\"2\" fill=\"#7f95a8\" stroke=\"#3d4f5e\" stroke-width=\"1.5\"/><line x1=\"23\" y1=\"4\" x2=\"23\" y2=\"42\" stroke=\"#3d4f5e\"/><rect x=\"11\" y=\"10\" width=\"9\" height=\"3\" fill=\"#d7e1e8\"/><rect x=\"26\" y=\"10\" width=\"9\" height=\"3\" fill=\"#d7e1e8\"/><rect x=\"11\" y=\"16\" width=\"9\" height=\"3\" fill=\"#d7e1e8\"/><rect x=\"26\" y=\"16\" width=\"9\" height=\"3\" fill=\"#d7e1e8\"/><circle cx=\"19\" cy=\"28\" r=\"1.5\" fill=\"#1f2a33\"/><circle cx=\"34\" cy=\"28\" r=\"1.5\" fill=\"#1f2a33\"/>"},"sofa":{"occupiable":true,"name":"sofa","icon":"<rect x=\"3\" y=\"14\" width=\"40\" height=\"20\" rx=\"6\" fill=\"#7a5a9a\" stroke=\"#4a3560\" stroke-width=\"1.5\"/><rect x=\"7\" y=\"9\" width=\"32\" height=\"10\" rx=\"4\" fill=\"#9a7abd\" stroke=\"#4a3560\" stroke-width=\"1.5\"/><line x1=\"8\" y1=\"34\" x2=\"8\" y2=\"39\" stroke=\"#4a3560\" stroke-width=\"2\"/><line x1=\"38\" y1=\"34\" x2=\"38\" y2=\"39\" stroke=\"#4a3560\" stroke-width=\"2\"/>"},"plant":{"occupiable":false,"name":"potted plant","icon":"<path d=\"M15 28 h16 l-2 12 h-12 z\" fill=\"#c2643a\" stroke=\"#7a3d20\" stroke-width=\"1.2\"/><ellipse cx=\"15\" cy=\"17\" rx=\"7\" ry=\"10\" fill=\"#3f8a4a\" transform=\"rotate(-30 15 17)\"/><ellipse cx=\"31\" cy=\"17\" rx=\"7\" ry=\"10\" fill=\"#3f8a4a\" transform=\"rotate(30 31 17)\"/><ellipse cx=\"23\" cy=\"13\" rx=\"6\" ry=\"11\" fill=\"#57a35e\"/>"},"armchair":{"occupiable":true,"name":"armchair","icon":"<rect x=\"6\" y=\"14\" width=\"34\" height=\"24\" rx=\"6\" fill=\"#b3252f\" stroke=\"#6b1218\" stroke-width=\"1.5\"/><rect x=\"11\" y=\"8\" width=\"24\" height=\"14\" rx=\"5\" fill=\"#d0333f\" stroke=\"#6b1218\" stroke-width=\"1.5\"/><rect x=\"6\" y=\"20\" width=\"7\" height=\"14\" rx=\"3\" fill=\"#8a1a22\"/><rect x=\"33\" y=\"20\" width=\"7\" height=\"14\" rx=\"3\" fill=\"#8a1a22\"/>"},"trolley":{"occupiable":false,"name":"trolley","icon":"<rect x=\"7\" y=\"12\" width=\"32\" height=\"18\" rx=\"3\" fill=\"#9aa1a8\" stroke=\"#3d444b\" stroke-width=\"1.5\"/><rect x=\"11\" y=\"6\" width=\"24\" height=\"10\" rx=\"2\" fill=\"#a15c3e\" stroke=\"#3f2d1d\"/><circle cx=\"13\" cy=\"35\" r=\"4\" fill=\"#2b2f33\"/><circle cx=\"33\" cy=\"35\" r=\"4\" fill=\"#2b2f33\"/><line x1=\"39\" y1=\"12\" x2=\"42\" y2=\"4\" stroke=\"#3d444b\" stroke-width=\"2\"/>"},"dressing_table":{"occupiable":false,"name":"dressing table","icon":"<rect x=\"6\" y=\"24\" width=\"34\" height=\"16\" rx=\"3\" fill=\"#b98a5a\" stroke=\"#6e4d2c\" stroke-width=\"1.5\"/><circle cx=\"23\" cy=\"13\" r=\"10\" fill=\"#dfe9ee\" stroke=\"#8c8a82\" stroke-width=\"1.5\"/><circle cx=\"23\" cy=\"13\" r=\"6\" fill=\"#f4f9fb\"/><rect x=\"10\" y=\"28\" width=\"8\" height=\"4\" fill=\"#e6cfa8\"/><rect x=\"28\" y=\"28\" width=\"8\" height=\"4\" fill=\"#e6cfa8\"/>"},"stool":{"occupiable":true,"name":"stool","icon":"<circle cx=\"23\" cy=\"23\" r=\"11\" fill=\"#fbfaf6\" stroke=\"#8c8a82\" stroke-width=\"1.5\"/><circle cx=\"23\" cy=\"23\" r=\"5\" fill=\"#d9d5cc\"/>"}},"wallTypes":{},"objects":[{"cell":[1,2],"type":"counter"},{"cell":[1,4],"type":"barberchair"},{"cell":[1,5],"type":"mirror"},{"cell":[1,6],"type":"barberchair"},{"cell":[2,2],"type":"sink"},{"cell":[3,1],"type":"rack"},{"cell":[4,2],"type":"sink"},{"cell":[4,6],"type":"locker"},{"cell":[5,2],"type":"plant"},{"cell":[5,4],"type":"trolley"},{"cell":[5,6],"type":"sofa"},{"cell":[6,1],"type":"armchair"},{"cell":[6,4],"type":"stool"},{"cell":[6,6],"type":"dressing_table"}],"wallFeatures":[],"extras":[],"cellSize":46},"persons":[{"id":"A","name":"Alicia","gender":"F","role":"staff","color":"#c62828","avatar":{"bg":"#5b2c6f","skin":"#f0cdb0","hair":"#2a1c14","style":"ponytail","headband":"#ffffff","shirt":"#c62828"},"clue":"She was the <b>only one</b> beside the <b>counter</b>.","job":"salon owner","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Alicia\"><rect width=\"80\" height=\"80\" fill=\"#5b2c6f\"/><path d=\"M50 30 Q64 34 60 62 L54 62 Q56 40 48 36 Z\" fill=\"#2a1c14\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#c62828\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#f0cdb0\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#f0cdb0\"/><path d=\"M26 33 Q26 16 40 16 Q54 16 54 33 Q50 24 40 24 Q30 24 26 33 Z\" fill=\"#2a1c14\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/><rect x=\"26\" y=\"23\" width=\"28\" height=\"5\" rx=\"2\" fill=\"#ffffff\"/></svg>","solverRole":"staff","constraints":[{"type":"only_beside","obj":"counter"}]},{"id":"B","name":"Blanca","gender":"F","role":"staff","color":"#1565c0","avatar":{"bg":"#6e2c4b","skin":"#e7b98f","hair":"#1c1a1a","style":"bun","earrings":true,"shirt":"#1565c0"},"clue":"There was <b>no man</b> in her area.","job":"stylist","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Blanca\"><rect width=\"80\" height=\"80\" fill=\"#6e2c4b\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#1565c0\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#e7b98f\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#e7b98f\"/><circle cx=\"40\" cy=\"15\" r=\"7\" fill=\"#1c1a1a\"/><path d=\"M26 32 Q26 16 40 16 Q54 16 54 32 Q50 24 40 24 Q30 24 26 32 Z\" fill=\"#1c1a1a\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/><circle cx=\"26\" cy=\"41\" r=\"1.8\" fill=\"#f0c95a\"/><circle cx=\"54\" cy=\"41\" r=\"1.8\" fill=\"#f0c95a\"/></svg>","solverRole":"staff","constraints":[{"type":"no_gender_in_area","gender":"M"}]},{"id":"C","name":"Cosme","gender":"M","role":"staff","color":"#2e7d32","avatar":{"bg":"#2f4858","skin":"#c98d62","hair":"#1c1a1a","style":"short","beard":true,"shirt":"#2e7d32"},"clue":"The <b>mirror</b> was somewhere in his <b>column</b>. A <b>sink</b> was somewhere in his <b>row</b>.","job":"colourist","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Cosme\"><rect width=\"80\" height=\"80\" fill=\"#2f4858\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#2e7d32\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#c98d62\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#c98d62\"/><path d=\"M26 32 Q26 15 40 15 Q54 15 54 32 Q50 24 40 24 Q30 24 26 32 Z\" fill=\"#1c1a1a\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/><path d=\"M27 38 Q30 52 40 53 Q50 52 53 38 Q50 47 40 48 Q30 47 27 38 Z\" fill=\"#1c1a1a\"/></svg>","solverRole":"staff","constraints":[{"type":"col_has","obj":"mirror"},{"type":"row_has","obj":"sink"}]},{"id":"D","name":"Domingo","gender":"M","role":"client","color":"#6a1b9a","avatar":{"bg":"#1b2a33","skin":"#f1c8a5","hair":"#5a5a5a","style":"slick","mustache":true,"mustacheColor":"#5a5a5a","shirt":"#6a1b9a"},"clue":"<b>Exactly one row north</b> of him was somebody beside the <b>trolley</b>.","job":"client","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Domingo\"><rect width=\"80\" height=\"80\" fill=\"#1b2a33\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#6a1b9a\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#f1c8a5\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#f1c8a5\"/><path d=\"M26 30 Q27 16 44 15 Q56 15 55 26 Q48 22 40 23 Q30 24 26 30 Z\" fill=\"#5a5a5a\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/><path d=\"M33 41 Q40 37 47 41 Q40 43 33 41 Z\" fill=\"#5a5a5a\"/></svg>","solverRole":"client","constraints":[{"type":"rel_any","dir":"N","exact":1,"beside":"trolley"}]},{"id":"E","name":"Elvira","gender":"F","role":"client","color":"#e65100","avatar":{"bg":"#35607a","skin":"#f3d3b5","hair":"#d9b464","style":"long","necklace":true,"shirt":"#e65100"},"clue":"She was <b>not</b> in a corner of her area. A <b>barber chair</b> was somewhere in her area.","job":"client","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Elvira\"><rect width=\"80\" height=\"80\" fill=\"#35607a\"/><path d=\"M22 42 Q20 14 40 14 Q60 14 58 42 L62 72 L18 72 Z\" fill=\"#d9b464\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#e65100\"/><path d=\"M31 58 Q40 66 49 58\" fill=\"none\" stroke=\"#f3e2b3\" stroke-width=\"2\" stroke-dasharray=\"2 2\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#f3d3b5\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#f3d3b5\"/><path d=\"M26 36 Q26 16 40 16 Q54 16 54 36 Q52 24 40 24 Q28 24 26 36 Z\" fill=\"#d9b464\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/></svg>","solverRole":"client","constraints":[{"type":"not_corner_of_area"},{"type":"area_has","obj":"barberchair"}]},{"id":"V","name":"Valentín","gender":"M","role":"victim","color":"#1b1b1b","avatar":{"bg":"#3d5a6e","skin":"#e9bf9b","hair":"#2a1c14","style":"short","cap":true,"beard":true,"shirt":"#1b1b1b"},"clue":"<b>The victim.</b> He was alone with the murderer.","job":"sales rep","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Valentín\"><rect width=\"80\" height=\"80\" fill=\"#3d5a6e\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#1b1b1b\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#e9bf9b\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#e9bf9b\"/><path d=\"M26 32 Q26 15 40 15 Q54 15 54 32 Q50 24 40 24 Q30 24 26 32 Z\" fill=\"#2a1c14\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/><path d=\"M27 38 Q30 52 40 53 Q50 52 53 38 Q50 47 40 48 Q30 47 27 38 Z\" fill=\"#2a1c14\"/><path d=\"M24 24 Q24 11 40 11 Q56 11 56 24 Z\" fill=\"#22406f\"/><rect x=\"22\" y=\"22\" width=\"36\" height=\"5\" rx=\"2\" fill=\"#12213a\"/><circle cx=\"40\" cy=\"18\" r=\"2.6\" fill=\"#f0b429\"/><path d=\"M12 12 L68 68 M68 12 L12 68\" stroke=\"#e0362e\" stroke-width=\"5\" stroke-linecap=\"round\" opacity=\".9\"/></svg>","solverRole":"rep","constraints":[]}],"victim":"V","solver":{"rules":[],"occupiable":["barberchair","sofa","armchair","stool"]},"score":4.112,"seal":{"board":"679b99d3f54e4e44bf821508e7e8d2ff776d67b23f21868905fddeb3538f2bc4","murderer":"ce7c6099b224206eaf8784ace7bb254b6f660b5e18c9db0511f17aaba52ed012"}}