A quirky, colorful children's picture book about a 3rd grader who can't stop spilling.

Follow Magnus on a journey through his house, filled with unexpected obstacles and surprises as he tries to deliver dinner to the table without making a mess.

(function(){ var css = ` #mmq{display:block;width:100%;margin:0;padding:0;box-sizing:border-box;font-family:"Austral Sans","Helvetica Neue",Helvetica,Arial,sans-serif;} #mmq *{box-sizing:border-box;letter-spacing:normal;text-transform:none;text-indent:0;} #mmq .mmq-row{display:flex;flex-wrap:nowrap;align-items:flex-start;justify-content:space-between;gap:26px;width:100%;margin:0;padding:0;} #mmq .mmq-slot{flex:1 1 0;min-width:0;max-width:230px;display:block;} #mmq .mmq-hold{display:flex;justify-content:flex-start;} #mmq .mmq-slot.right .mmq-hold{justify-content:flex-end;} #mmq .mmq-b{position:relative;display:block;flex:0 0 auto;margin:0;padding:9px 16px 11px 18px;text-align:left;background:none;border:none;cursor:pointer;appearance:none;opacity:1;transform:rotate(var(--t,0deg));transform-origin:top left;transition:opacity var(--fin,1.6s) ease,width .6s cubic-bezier(.32,.72,0,1),padding .6s cubic-bezier(.32,.72,0,1),transform .5s cubic-bezier(.32,.72,0,1);} #mmq .mmq-slot.right .mmq-b{transform-origin:top right;} #mmq .mmq-slot.fading .mmq-b{opacity:0;transform:rotate(var(--t,0deg)) scale(.93);transition:opacity var(--fout,1.6s) ease,transform var(--fout,1.6s) ease;} #mmq .mmq-skin{position:absolute;left:0;top:0;right:0;bottom:0;opacity:.9;pointer-events:none;} #mmq .mmq-body{position:absolute;left:0;top:0;right:0;bottom:0;background:#FFFFFF;border-radius:18px 18px 18px 5px;transition:border-radius .6s cubic-bezier(.32,.72,0,1);} #mmq .mmq-slot.right .mmq-body{border-radius:18px 18px 5px 18px;} #mmq .mmq-tail{position:absolute;left:-12px;bottom:0;width:16px;height:20px;display:block;} #mmq .mmq-slot.right .mmq-tail{left:auto;right:-12px;transform:scaleX(-1);} #mmq .mmq-tail path{fill:#FFFFFF;} #mmq .mmq-txt{position:relative;z-index:1;display:block;} #mmq .mmq-q{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:0;padding:0;font-size:12pt;font-weight:400;line-height:1.3;color:#E57C68;text-align:left;} #mmq .mmq-f{margin:0;padding:0;font-size:14pt;font-weight:400;line-height:1.3;color:#E57C68;text-align:left;white-space:pre-line;} #mmq .mmq-who{display:block;margin:6px 0 0;padding:0;font-size:9pt;font-weight:400;line-height:1.2;color:#E57C68;opacity:.75;text-align:left;white-space:nowrap;} #mmq .mmq-wS,#mmq .mmq-wF{display:grid;transition:grid-template-rows .6s cubic-bezier(.32,.72,0,1),opacity .6s ease;} #mmq .mmq-wS > span,#mmq .mmq-wF > span{display:block;overflow:hidden;min-height:0;} #mmq .mmq-wS{grid-template-rows:1fr;opacity:1;} #mmq .mmq-wF{grid-template-rows:0fr;opacity:0;} #mmq .mmq-slot.open .mmq-b{padding:15px 22px 17px 24px;z-index:10;transform:rotate(0deg);} #mmq .mmq-slot.open .mmq-body{border-radius:22px 22px 22px 6px;} #mmq .mmq-slot.right.open .mmq-body{border-radius:22px 22px 6px 22px;} #mmq .mmq-slot.open .mmq-wS{grid-template-rows:0fr;opacity:0;} #mmq .mmq-slot.open .mmq-wF{grid-template-rows:1fr;opacity:1;} #mmq .mmq-b:focus-visible{outline:2px solid #CB604C;outline-offset:4px;border-radius:18px;} @media (prefers-reduced-motion: reduce){#mmq .mmq-b,#mmq .mmq-body,#mmq .mmq-wS,#mmq .mmq-wF{transition:none;}} `; var st = document.createElement('style'); st.textContent = css; document.head.appendChild(st); var REVIEWS = [ {who:"Mrs. Travis \u2013 Lincolnwood First Grade", tilt:"-1.6deg", short:"My students enjoyed this book! It is such\u2026", text:"My students enjoyed this book! It is such a cute way of delivering such an important message! Magnus is a super relatable character to many of my students and the illustrations really drew them in! My first grade class rated this book a 100/100!"}, {who:"Mr. Brian \u2013 Evanston Library", tilt:"1.3deg", short:"I enjoyed the story quite a bit\u2026", text:"I enjoyed the story quite a bit. I like how whimsical it is, and the use of language is really fun. I never knew where it was going and that's a major plus. And I love the kid-logic twist of a door leading to this little restaurant. It's a unique story. Congratulations!!!\nThe illustrations are delightful too.\nIt's a story I would share with kids from Kindergarten to 2nd grade, and/or older preschoolers."}, {who:"Cosy \u2013 4 years old", tilt:"-0.9deg", short:"Cosy has really enjoyed it. She's been engaged\u2026", text:"Cosy has really enjoyed it. She's been engaged the whole time while we read it and comments a lot on the illustrations. We took it with us our trip to California last week. It was read almost every night. She likes to call out which character from the book she is. She likes the girl with Ice Cream on her head. She finds the drawing of the grandma \u201cpretty silly\u201d"}, {who:"Inez \u2013 4 years old", tilt:"1.1deg", short:"Inez picked Messy Magnus as one of her\u2026", text:"Inez picked Messy Magnus as one of her bedtime books. We had fun reading it again!"}, {who:"Leo \u2013 5 years old", tilt:"-1.2deg", short:"Pasta-Pants!", text:"Pasta-Pants!"}, {who:"Luca \u2013 6 years old", tilt:"0.8deg", short:"I love it?", text:"I love it?"}, {who:"Rowan \u2013 6 years old", tilt:"-1.4deg", short:"Weird.", text:"Weird."}, {who:"Cora \u2013 5 years old", tilt:"1.5deg", short:"I like the whole book, but I really\u2026", text:"I like the whole book, but I really like the pasta parts!\nGimme that pasta!"}, {who:"Nora \u2013 9 years old", tilt:"-0.6deg", short:"Do you spill? Then this book is about you.", text:"Do you spill? Then this book is about you."}, {who:"Casey \u2013 4 years old", tilt:"1.0deg", short:"I like when he spills the spaghetti\u2026", text:"I like when he spills the spaghetti and sauce on his shirt."}, {who:"Titi \u2013 Mom", tilt:"-0.4deg", short:"Awesome story! I was just as shocked\u2026", text:"Awesome story! I was just as shocked when the secret door was found as Magnus!"} ]; var SLOTS = 4, STAGGER_MAX = 4000; var OFFSETS = [0, 16, 6, 22]; var NS = 'http://www.w3.org/2000/svg'; var TAIL = 'M16 20 C11 20 5 18.5 0 14.5 C6.5 15.5 12 13 16 7.5 Z'; var root = document.getElementById('mmq'); var row = document.createElement('div'); row.className = 'mmq-row'; root.appendChild(row); var ptr = 0, slots = [], openIdx = -1; function rand(min, max){ return Math.round(min + Math.random() * (max - min)); } function makeSkin(){ var skin = document.createElement('span'); skin.className = 'mmq-skin'; var body = document.createElement('span'); body.className = 'mmq-body'; var svg = document.createElementNS(NS, 'svg'); svg.setAttribute('class', 'mmq-tail'); svg.setAttribute('viewBox', '0 0 16 20'); svg.setAttribute('aria-hidden', 'true'); var path = document.createElementNS(NS, 'path'); path.setAttribute('d', TAIL); svg.appendChild(path); skin.appendChild(body); skin.appendChild(svg); return skin; } function measure(rec, state){ var slot = rec.slot, b = rec.el; var wasOpen = slot.classList.contains('open'); var isOpen = state === 'open'; var hidden = isOpen ? rec.wS : rec.wF; var cap = isOpen ? Math.min(440, row.clientWidth) : slot.clientWidth; b.style.transition = 'none'; slot.classList.toggle('open', isOpen); hidden.style.display = 'none'; b.style.width = 'max-content'; b.style.maxWidth = cap + 'px'; var w = b.offsetWidth; b.style.width = ''; b.style.maxWidth = ''; hidden.style.display = ''; slot.classList.toggle('open', wasOpen); b.style.transition = ''; return Math.min(w, cap); } function setWidth(rec, state){ rec.el.style.width = measure(rec, state) + 'px'; } function refresh(rec){ setWidth(rec, rec.slot.classList.contains('open') ? 'open' : 'closed'); } function closeAll(){ if (openIdx < 0) return; var rec = slots[openIdx]; openIdx = -1; rec.slot.classList.remove('open'); rec.el.setAttribute('aria-expanded', 'false'); setWidth(rec, 'closed'); } function open(i){ if (openIdx === i) return; closeAll(); openIdx = i; var rec = slots[i]; rec.slot.classList.add('open'); rec.el.setAttribute('aria-expanded', 'true'); setWidth(rec, 'open'); } function fill(s, r){ s.data = r; s.el.style.setProperty('--t', r.tilt); s.who.textContent = r.who; s.q.textContent = '"' + r.short + '"'; s.f.textContent = '"' + r.text + '"'; } function reveal(s){ s.el.style.setProperty('--fin', rand(2600, 3400) + 'ms'); refresh(s); s.slot.classList.remove('fading'); s.timer = setTimeout(function(){ cycle(s); }, rand(3500, 6500)); } function cycle(s){ if (openIdx >= 0){ s.timer = setTimeout(function(){ cycle(s); }, 1200); return; } var fout = rand(1200, 2000); s.el.style.setProperty('--fout', fout + 'ms'); s.slot.classList.add('fading'); s.timer = setTimeout(function(){ fill(s, REVIEWS[ptr % REVIEWS.length]); ptr++; s.el.style.setProperty('--fin', rand(2600, 3400) + 'ms'); refresh(s); s.slot.classList.remove('fading'); s.timer = setTimeout(function(){ cycle(s); }, rand(3500, 6500)); }, fout); } for (var i = 0; i < SLOTS; i++){ var slot = document.createElement('div'); slot.className = 'mmq-slot' + (i === SLOTS - 1 ? ' right' : '') + ' fading'; slot.style.marginTop = OFFSETS[i] + 'px'; var hold = document.createElement('div'); hold.className = 'mmq-hold'; var b = document.createElement('button'); b.type = 'button'; b.className = 'mmq-b'; b.setAttribute('aria-expanded', 'false'); b.style.setProperty('--fin', rand(2600, 3400) + 'ms'); b.appendChild(makeSkin()); var txt = document.createElement('span'); txt.className = 'mmq-txt'; var wS = document.createElement('span'); wS.className = 'mmq-wS'; var iS = document.createElement('span'); var q = document.createElement('span'); q.className = 'mmq-q'; iS.appendChild(q); wS.appendChild(iS); var wF = document.createElement('span'); wF.className = 'mmq-wF'; var iF = document.createElement('span'); var f = document.createElement('span'); f.className = 'mmq-f'; iF.appendChild(f); wF.appendChild(iF); var who = document.createElement('span'); who.className = 'mmq-who'; txt.appendChild(wS); txt.appendChild(wF); txt.appendChild(who); b.appendChild(txt); hold.appendChild(b); slot.appendChild(hold); row.appendChild(slot); var rec = {slot:slot, el:b, wS:wS, wF:wF, who:who, q:q, f:f, data:null, timer:null}; slots.push(rec); fill(rec, REVIEWS[ptr % REVIEWS.length]); ptr++; setWidth(rec, 'closed'); (function(s, idx){ s.el.addEventListener('mouseenter', function(){ open(idx); }); s.el.addEventListener('focus', function(){ open(idx); }); s.el.addEventListener('click', function(e){ e.stopPropagation(); open(idx); }); s.timer = setTimeout(function(){ reveal(s); }, rand(800, STAGGER_MAX) + idx * 500); })(rec, i); } row.addEventListener('mouseleave', function(){ closeAll(); }); document.addEventListener('click', function(e){ if (!root.contains(e.target)) closeAll(); }); document.addEventListener('keydown', function(e){ if (e.key === 'Escape') closeAll(); }); window.addEventListener('resize', function(){ slots.forEach(refresh); }); })();
$0
$0 raised0% of $5,000
var SBAR_GOAL = 5000; var SBAR_URL = 'https://script.google.com/macros/s/AKfycbwChOJroCFnWtC3zVlfXKx_olvq2MuM6r4CfzdLTHC1ICWmqXsa-ccM72C3UdrR9Fh5/exec'; fetch(SBAR_URL) .then(function(r) { return r.json(); }) .then(function(d) { var raised = d.raised || 0; var pct = Math.min(100, Math.round((raised / SBAR_GOAL) * 100)); document.getElementById('sbar-bar').style.width = pct + '%'; document.getElementById('sbar-raised').textContent = '$' + raised.toLocaleString() + ' raised'; document.getElementById('sbar-pct').textContent = pct + '% of $5,000'; document.getElementById('sbar-marker').style.left = pct + '%'; document.getElementById('sbar-marker-label').textContent = '$' + raised.toLocaleString(); }) .catch(function() {});
Thank you for supporting local art!

Pricing

Local Pickup / Drop Off

Evanston, IL

$20

Shipping (within the U.S.)

Delivered to your door

Don't forget to include your shipping address.

$24

Every purchase goes directly to publishing and illustrator fees.

Purchase through Venmo
no fees
Venmo QR code
Venmo

Scan to pay with Venmo

I'm Chris!

Thanks for checking out my book, and supporting local art. I live in Evanston, and truly love our community of artists and weirdos.

The inspiration for Messy Magnus started a long time ago when I was a teenager. The spills and messes stirred up some unexpected attention and anxiety. My friends even called him “Mr. Spill.”Now, as a father of two young kids who make messes of their own, I’m reminded that my own reactions to accidents can make a big difference in how they work through own feelings.

If the supply of books has run out, click below to notify me, and I'll bring more in!