/* A tactile little playground, made entirely from type and CSS. */
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&display=swap');
:root{--paper:#fff8e9;--ink:#30294c;--muted:#706680;--line:#d9cee2;--accent:#7950db;--green:#d5f27b;--spring:cubic-bezier(.2,.9,.25,1.35)}
body{background-color:var(--paper);background-image:radial-gradient(#bfb1cc66 .8px,transparent .8px);background-size:21px 21px;isolation:isolate;overflow-x:hidden}
body::before,body::after{content:'';position:fixed;pointer-events:none;z-index:-1;border-radius:50%;filter:blur(65px);opacity:.27;width:400px;height:400px}body::before{background:#dbb9ff;top:10%;left:-210px}body::after{background:#ffbc9b;bottom:-220px;right:-150px}
header{border-bottom:2px solid var(--ink);max-width:1180px;padding-top:18px;padding-bottom:18px}.brand{font-family:'Space Grotesk',sans-serif;font-size:43px;letter-spacing:-3px;transform:rotate(-4deg);display:inline-block}.brand>span:first-child{color:#ef7a59;display:inline-block}.brand-dot{color:var(--accent)}nav{gap:12px;align-items:center}nav button{font-weight:700;padding:9px 13px;border-radius:30px;border:1.5px solid transparent}nav button:hover{background:#ede1ff;border-color:var(--ink)}nav #motion{font-size:10px;border:1.5px solid var(--ink);background:#fffdf5;white-space:nowrap}
main{max-width:1140px;column-gap:72px;margin-top:44px;position:relative}.intro{position:relative;padding-top:35px}.intro>.eyebrow{font-size:9px;background:#efe4ff;display:inline-block;padding:9px 12px;border:1.5px solid var(--ink);border-radius:30px;box-shadow:2px 2px 0 var(--ink);letter-spacing:1.3px}.live-dot{background:#8a5bde}h1{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(47px,4.5vw,64px);line-height:1.04;letter-spacing:-3.7px;margin-top:28px}h1 em{font-family:Georgia,serif;color:var(--accent);position:relative;display:inline-block;z-index:0}h1 em::after{content:'';position:absolute;left:0;right:-10px;bottom:0;height:12px;border-radius:40% 60%;background:#e2f59a;z-index:-1;transform:rotate(-3deg)}.intro>p{font-size:15px;line-height:1.8;max-width:330px}.aha-sticker{position:absolute;top:6px;right:0;background:#ffd36d;border:2px solid var(--ink);color:var(--ink);border-radius:50%;width:76px;height:76px;display:grid;place-content:center;text-align:center;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:17px;line-height:1.05;transform:rotate(13deg);box-shadow:3px 3px 0 var(--ink)}.aha-sticker span{font-size:10px;letter-spacing:1px}.link-doodle{margin:30px 0 0;display:flex;align-items:center;gap:0;width:max-content;transform:rotate(-6deg);position:relative}.doodle-tile{border:2px solid var(--ink);border-radius:15px;box-shadow:4px 5px 0 var(--ink);height:69px;width:69px;display:grid;place-content:center;font-size:26px;font-family:'Space Grotesk',sans-serif;font-weight:700;background:#ffc4ae;transform:rotate(-7deg)}.doodle-tile:nth-of-type(2){background:#ddcbff;transform:rotate(7deg)}.doodle-tile:last-of-type{background:#d7ef91;transform:rotate(-5deg)}.doodle-link{width:24px;height:13px;border-top:3px solid var(--ink);border-bottom:3px solid var(--ink);margin:0 -1px;z-index:1}.doodle-spark{font-size:32px;position:absolute;right:-41px;top:-24px;color:#ef7a59}
.game{background:#fffdf8;border:2px solid var(--ink);border-radius:23px;padding:26px;box-shadow:8px 9px 0 #d7c7ed;position:relative}.game::before{content:'';position:absolute;width:84px;height:23px;background:#e1d3f8c9;top:-12px;left:calc(50% - 42px);transform:rotate(-4deg);border-left:1px dashed #b9a5d2;border-right:1px dashed #b9a5d2;pointer-events:none}.game-top .eyebrow{color:var(--accent);letter-spacing:1.8px}h2{font-family:'Space Grotesk',sans-serif;font-size:18px;font-weight:600}.edition{background:#f0e8fa;color:#675080;border:0;font-weight:700;transform:rotate(5deg);padding:9px 12px}.progress{gap:7px;margin:23px 0}.progress span{height:7px;background:#eee5f6;border-radius:20px;border:1px solid #d5c6e6}.progress .done{background:#b2d747;border-color:#739426;box-shadow:0 0 0 2px #d8f39066}.row-caption{font-size:8px;font-weight:700;letter-spacing:1.4px}.puzzle-row{position:relative;border:1.5px solid #e1d8eb;border-bottom-width:3px;min-height:58px;margin:9px 0;padding:0 8px;background:#f3edf9;border-radius:10px;font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:13px;letter-spacing:.6px;transform-origin:center}.middle{border-color:#d6c7e6;color:#9c8ab6;font-size:17px;letter-spacing:3px;padding:8px 0}.puzzle-row.active{background:#e8d9ff;border:2px solid var(--accent);border-bottom-width:4px;box-shadow:0 0 0 3px #7b50db12}.puzzle-row.active .middle{color:var(--accent)}.puzzle-row.active::before{content:'✦';position:absolute;color:var(--accent);left:-15px;top:calc(50% - 8px);font-size:14px;background:#fffdf8;border-radius:50%}.puzzle-row:not(:disabled):hover{background:#ede0ff;transform:translateY(-3px) rotate(-.5deg);box-shadow:0 5px 0 #dfd0f1}.puzzle-row:active:not(:disabled){transform:translateY(1px);box-shadow:none}.puzzle-row.solved{background:#e1f3b2;border-color:#a7bf69;opacity:1}.puzzle-row.solved .middle{color:#465e24;border-color:#bed58a;letter-spacing:1px}.puzzle-row.solved::after{content:'✓';position:absolute;right:-8px;top:-7px;width:20px;height:20px;display:grid;place-content:center;background:#698c30;border:2px solid #fffdf8;border-radius:50%;color:white;font-size:10px}.puzzle-row.revealed{background:#ffe2d5;border-color:#e3b39c;opacity:1}.entry{border:2px solid var(--ink);border-radius:12px;background:#fffdf8;box-shadow:3px 4px 0 #e9dff1;padding:5px;margin-top:21px}.entry:focus-within{border-color:var(--accent);box-shadow:3px 4px 0 #d7c0fc}input{font-weight:600;font-size:13px;padding:10px 8px}input::placeholder{color:#95869e;font-weight:400}.entry button{background:var(--accent);border:1.5px solid var(--ink);border-radius:8px;box-shadow:0 3px 0 var(--ink);font-weight:700;padding:10px 16px;transform:translateY(-2px)}.entry button:hover{background:#9167eb}.entry button:active{transform:translateY(1px);box-shadow:none}.entry button span{color:#e5d3ff}#message{min-height:39px;margin-top:13px;color:#786588;font-size:11px}.game-bottom{border-top:1.5px dashed #d5c6e2;padding-top:12px}#lives{font-size:10px;display:flex;align-items:center;gap:7px}.life-pips{display:inline-flex;gap:3px}.life-pips i{width:6px;height:9px;border-radius:3px;background:#ae87e6}.life-pips i.used{background:#ece4f1}#hint{background:#fff0bd;border:1px solid #e4c874;border-radius:20px;padding:7px 9px;font-size:10px;font-weight:700}#hint:hover{background:#ffe28a}#finish{border-top:1.5px dashed var(--line);margin-top:17px;padding-top:20px}#finish h3{font-family:'Space Grotesk',sans-serif;font-size:23px;letter-spacing:-.8px}#finish button{background:var(--accent);border:1.5px solid var(--ink);box-shadow:2px 3px 0 var(--ink);border-radius:8px}#finish button:hover{transform:translateY(-2px)}#finish button:last-child{background:#f0e8ff;color:var(--ink)}.example{margin-top:-102px}.example .eyebrow{color:#8b7699;font-size:9px}.example strong{background:#d8ed9f;border:1.5px solid var(--ink);box-shadow:2px 2px 0 var(--ink);transform:rotate(-6deg);border-radius:7px}.example small{font-size:10px}.example p{gap:13px}footer{border-top:1.5px dashed #c9b9d6;margin-top:43px}footer>span::before{content:'✳';color:var(--accent);font-size:17px;vertical-align:middle;margin-right:9px}footer button{font-weight:700}footer button:hover{color:var(--accent)}dialog{background:#fff9ed;border:2px solid var(--ink);box-shadow:8px 9px 0 #30294c55;border-radius:22px;padding:34px}dialog::backdrop{background:#30294c66;backdrop-filter:blur(8px)}dialog h2{font-family:'Space Grotesk',sans-serif;letter-spacing:-1px;font-weight:700}dialog .stat-grid{gap:10px}.stat-grid>div{background:#eee1ff;border:1px solid #d7c3ec;border-radius:12px;flex:1;padding:15px 4px}.stat-grid>div:nth-child(2){background:#e4f1bb}.stat-grid>div:nth-child(3){background:#ffe0ca}dialog small{font-size:10px}.confetti-stage{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:20}.confetti-piece{position:absolute;top:-25px;left:var(--x);width:var(--size);height:calc(var(--size)*1.7);background:var(--color);border-radius:2px;animation:confetti-drop var(--duration) var(--delay) cubic-bezier(.18,.7,.5,1) forwards}.confetti-piece:nth-child(3n){border-radius:50%;height:var(--size)}.confetti-piece:nth-child(5n){clip-path:polygon(50% 0,62% 35%,100% 50%,62% 64%,50% 100%,36% 64%,0 50%,36% 35%);border-radius:0;width:18px;height:18px}.click-spark{position:fixed;pointer-events:none;z-index:19;font-size:22px;color:var(--color);animation:spark-out .75s ease-out forwards}
@keyframes confetti-drop{0%{transform:translate3d(0,-5vh,0) rotate(0);opacity:1}85%{opacity:1}100%{transform:translate3d(var(--drift),105vh,0) rotate(var(--spin));opacity:0}}@keyframes spark-out{to{transform:translate(var(--dx),var(--dy)) rotate(100deg) scale(.2);opacity:0}}@keyframes float-sticker{0%,100%{transform:rotate(13deg) translateY(0)}50%{transform:rotate(8deg) translateY(-6px)}}@keyframes tile-wiggle{0%,100%{rotate:0deg}50%{rotate:7deg}}@keyframes entrance{from{opacity:0;transform:translateY(20px) rotate(1deg)}to{opacity:1;transform:translateY(0) rotate(0)}}@keyframes hint-light{50%{box-shadow:0 0 0 7px #ffd36d55}}@keyframes dot-bob{50%{transform:translateY(-4px)}}
@media(prefers-reduced-motion:no-preference){html:not(.still) .intro,html:not(.still) .game{animation:entrance .7s var(--spring) both}html:not(.still) .game{animation-delay:.1s}html:not(.still) .aha-sticker{animation:float-sticker 5s ease-in-out 3}html:not(.still) .doodle-tile{animation:tile-wiggle 4s ease-in-out 3}html:not(.still) .doodle-tile:nth-of-type(2){animation-delay:.5s}html:not(.still) .brand:hover>span:first-child{animation:dot-bob .4s ease 2}.puzzle-row{transition:transform .2s var(--spring),background .2s,box-shadow .2s}.puzzle-row.solved{animation:none}button{transition:transform .18s var(--spring),background .18s,box-shadow .18s}html:not(.still) #hint:hover{animation:hint-light 1s ease 2}dialog[open]{animation:entrance .3s var(--spring)}}
html.still *,html.still *::before,html.still *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}html.still .confetti-stage,html.still .click-spark{display:none}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti-stage,.click-spark{display:none}}
@media(max-width:1000px) and (min-width:801px){main{column-gap:34px}.aha-sticker{right:-8px;width:62px;height:62px;font-size:14px}.link-doodle{margin-top:23px}}
@media(max-width:800px){header{padding:14px 20px}.brand{font-size:35px}nav{gap:2px}nav button{font-size:10px;padding:8px}nav #motion{font-size:9px;padding:7px}main{gap:28px;margin-top:24px}.intro{padding:4px 0}.intro>.eyebrow{font-size:8px;padding:7px 10px}.intro h1{font-size:48px;letter-spacing:-3px;line-height:1.02;margin-top:23px;max-width:360px}.intro>p{font-size:13px;max-width:290px}.aha-sticker{right:3px;top:63px;width:62px;height:62px;font-size:14px}.link-doodle{position:absolute;right:7px;bottom:9px;transform:rotate(-8deg) scale(.6);transform-origin:right bottom;margin:0}.doodle-spark{right:-20px}.doodle-tile{width:43px;height:43px;font-size:20px;border-radius:9px}.doodle-link{width:13px}.game{padding:22px 18px;box-shadow:5px 6px 0 #d7c7ed}.example{margin:0;padding:0 5px}.example p{margin:14px 0}.puzzle-row{min-height:56px}footer{margin-top:0;margin-bottom:24px;font-size:10px}footer button{font-size:10px}.game-bottom{gap:8px}}
@media(max-width:380px){nav button{padding:7px 5px;font-size:9px}.brand{font-size:30px}.intro h1{font-size:43px}.aha-sticker,.link-doodle{display:none}.game{padding:22px 12px}#lives{gap:4px;font-size:9px}.life-pips{gap:2px}.entry button{padding:10px}.puzzle-row{font-size:12px}.middle{font-size:15px}}
