:root{--berry:#ff4f8b;--berry-dark:#c22d64;--ink:#3c2140;--ink-soft:#7a5a80;--mint:#2fc79a;--plum:#5b3a6b;--display:"Fredoka", "Baloo 2", "Trebuchet MS", system-ui, sans-serif;--body:"Nunito", system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%;color:var(--ink);font-family:var(--body);-webkit-user-select:none;user-select:none;background:#ffd9ec;margin:0;overflow:hidden}#game,#game canvas{touch-action:none;display:block;position:fixed;inset:0}#ui{transform-origin:0 0;pointer-events:none;width:540px;height:960px;position:fixed;top:0;left:0}#ui button{pointer-events:auto;font-family:var(--display);cursor:pointer;border:0}#ui button:focus-visible{outline:4px solid var(--ink);outline-offset:3px}.screen{text-align:center;pointer-events:auto;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:120px 40px 60px;animation:.25s ease-out in;display:flex;position:absolute;inset:0}.screen.dim{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:#fff;background:#3c214073}.screen.title,.screen.loading{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#fff0f859}@keyframes in{0%{opacity:0;transform:scale(1.04)}}.logo{font:700 80px/1 var(--display);white-space:nowrap;color:#fff;letter-spacing:.01em;-webkit-text-stroke:10px var(--berry);paint-order:stroke fill;filter:drop-shadow(0 8px 0 var(--berry-dark))}.logo span{color:#ffe17a}.logoimg{filter:drop-shadow(0 10px 18px #a0286440);width:480px;max-width:100%;height:auto;margin:-30px 0 4px;animation:.6s cubic-bezier(.3,1.5,.5,1) both logoin;display:block}.logoimg.small{width:400px;margin:0;animation:none}@keyframes logoin{0%{opacity:0;transform:scale(.6)rotate(-4deg)}}.tag{font:600 20px var(--display);letter-spacing:.3em;text-transform:uppercase;color:var(--ink);background:#fffc;border-radius:999px;margin:-6px 0 10px;padding:6px 16px}h2{font:700 52px/1.05 var(--display);color:#fff;-webkit-text-stroke:8px var(--berry);paint-order:stroke fill;text-wrap:balance;margin:0 0 6px}.big{background:var(--berry);color:#fff;min-width:300px;box-shadow:0 8px 0 var(--berry-dark), 0 18px 30px -10px #c22d6499;border-radius:999px;gap:2px;padding:18px 34px 20px;font-size:36px;font-weight:700;transition:transform 80ms;display:grid}.big small{font:700 16px var(--body);opacity:.9}.big:active,.mid:active{transform:translateY(4px)}.mid{min-width:240px;color:var(--ink);background:#fff;border-radius:999px;padding:14px 26px;font-size:24px;font-weight:600;transition:transform 80ms;box-shadow:0 6px #f1c4dc}.toggles{gap:10px;margin-top:6px;display:flex}.tg{color:var(--ink-soft);background:#ffffffb3;border-radius:999px;padding:10px 16px;font-size:18px;font-weight:600;text-decoration:line-through}.tg.on{background:var(--mint);color:#fff;text-decoration:none;box-shadow:0 4px #1f9a76}.best{font:600 18px var(--body);color:inherit;margin:4px 0 0}.best b{font-family:var(--display)}.hint{font:600 15px var(--body);color:var(--ink-soft);margin:0;position:absolute;bottom:34px;left:40px;right:40px}.sub{font:600 18px var(--body);margin:0}.bar{background:#fff;border-radius:999px;width:300px;height:18px;overflow:hidden;box-shadow:inset 0 2px #f1c4dc}.bar i{background:var(--berry);border-radius:999px;height:100%;transition:width .2s;display:block}.stars{gap:8px;font-size:70px;line-height:1;display:flex}.stars span{color:#ffffff59}.stars span.on{color:#ffd23f;text-shadow:0 4px #d99a00;animation:star .5s var(--d) both cubic-bezier(.3,1.6,.5,1)}@keyframes star{0%{transform:scale(0)rotate(-30deg)}}.score{font:700 56px var(--display);color:#fff;margin:0}.pausebtn{width:44px;height:44px;box-shadow:0 4px 0 var(--berry-dark);border-radius:50%;justify-content:center;align-items:center;gap:5px;display:flex;position:absolute;top:26px;right:26px;background:var(--berry)!important}.pausebtn i{background:#fff;border-radius:2px;width:5px;height:16px}@media (prefers-reduced-motion:reduce){.screen,.stars span.on,.logoimg{animation:none}}.row2{gap:12px;display:flex}.row2 .mid{white-space:nowrap;flex:1;min-width:0;padding-inline:20px;font-size:21px}.mini{width:48px;height:48px;color:var(--berry);background:#fff;border-radius:50%;font-size:34px;font-weight:700;line-height:1;box-shadow:0 4px #f1c4dc}.mapscreen{justify-content:flex-start;gap:0;padding:0}.maphead{z-index:2;font:600 20px var(--display);color:var(--ink);background:linear-gradient(#fff0f8f2,#fff0f8d9);justify-content:space-between;align-items:center;gap:12px;padding:18px 22px;display:flex;position:absolute;top:0;left:0;right:0;box-shadow:0 4px 16px #a03c7826}.maphead b{color:var(--berry)}.mapscroll{overscroll-behavior:contain;scrollbar-width:none;position:absolute;inset:84px 0 0;overflow-y:auto}.mapscroll::-webkit-scrollbar{display:none}.msec{background-position:50%;background-size:cover;border-bottom:4px solid #fff;position:relative}.msec h3{white-space:nowrap;font:700 26px var(--display);color:#fff;-webkit-text-stroke:6px var(--ink);paint-order:stroke fill;margin:0;position:absolute;top:18px;left:50%;transform:translate(-50%)}.path{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.path path{fill:none;stroke:#fff;stroke-width:16px;stroke-linecap:round;stroke-dasharray:2 26;opacity:.9}.node{background:radial-gradient(circle at 35% 30%, #ff9cc0, var(--berry) 60%, var(--berry-dark));width:92px;height:92px;box-shadow:0 6px 0 var(--berry-dark), 0 12px 22px #00000040;color:#fff;border-radius:50%;place-items:center;margin:-46px 0 0 -46px;display:grid;position:absolute}.node .num{font:700 38px var(--display);text-shadow:0 2px 0 var(--berry-dark)}.node.perfect{background:radial-gradient(circle at 35% 30%,#fff1a8,#ffc93a 60%,#d99a00);box-shadow:0 6px #b07c00,0 12px 22px #00000040}.node.perfect .num{text-shadow:0 2px #b07c00}.node.locked{background:radial-gradient(circle at 35% 30%,#f6eef3,#d9c8d3);box-shadow:0 6px #b9a5b2}.node.locked .num{font-size:30px}.node.current{animation:1.2s ease-in-out infinite bob}.node.current:after{content:"";border:5px solid #fff;border-radius:50%;animation:1.2s ease-out infinite ring;position:absolute;inset:-10px}@keyframes bob{50%{transform:translateY(-6px)}}@keyframes ring{0%{opacity:.9;transform:scale(.9)}to{opacity:0;transform:scale(1.25)}}.srow{gap:1px;font-size:18px;line-height:1;display:inline-flex}.srow b{color:#3c214040}.srow b.on{color:#ffd23f;text-shadow:0 2px #d99a00}.srow.onnode{font-size:24px;position:absolute;top:-16px}.srow.onnode b{color:#ffffffbf;-webkit-text-stroke:2px #3c214059}.srow.onnode b.on{color:#ffd23f;-webkit-text-stroke:2px #b07c00}.srow.large{gap:6px;font-size:54px}.pill{color:var(--ink);font:700 15px var(--display);white-space:nowrap;background:#fff;border-radius:999px;padding:3px 10px;position:absolute;bottom:-26px;box-shadow:0 2px #0000001f}.cardwrap{z-index:5;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#3c214073;place-items:center;animation:.2s ease-out in;display:grid;position:absolute;inset:0}.lcard{width:400px;color:var(--ink);background:#fff;border-radius:36px;flex-direction:column;align-items:center;gap:12px;padding:26px 28px 30px;display:flex;box-shadow:0 10px #f1c4dc,0 30px 60px #3c214059}.lcard .world{font:600 18px var(--display);color:var(--ink-soft);margin:0}.lcard h2{margin:0}.lcard .sub b{font-family:var(--display)}.goals{gap:10px;margin:0;display:flex}.goals span{color:#a06d00;font:600 16px var(--display);background:#fff4d6;border-radius:999px;padding:6px 12px}.lcard .big{min-width:260px}.scorescreen{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffecf6d1;justify-content:flex-start;padding-top:60px}.tabs{background:#ffffffb3;border-radius:999px;gap:8px;padding:6px;display:flex}.tabs button{color:var(--ink-soft);background:0 0;border-radius:999px;padding:10px 20px;font-size:19px;font-weight:600}.tabs button.on{background:var(--berry);color:#fff;box-shadow:0 3px 0 var(--berry-dark)}.panel{text-align:left;background:#ffffffeb;border-radius:28px;flex:1;width:100%;min-height:0;padding:10px 16px;overflow-y:auto;box-shadow:0 5px #00000014}.top10,.lvlist{margin:0;padding:0;list-style:none}.top10 li,.lvlist li{border-bottom:2px dashed #f4dbe8;align-items:center;gap:12px;padding:10px 4px;display:flex}.top10 li:last-child,.lvlist li:last-child{border-bottom:0}.rk{width:34px;height:34px;color:var(--berry);font:700 17px var(--display);background:#ffe3ef;border-radius:50%;flex:none;place-items:center;display:grid}.top10 li:first-child .rk{color:#fff;background:#ffd23f}.top10 li:nth-child(2) .rk{color:#fff;background:#c9ccd6}.top10 li:nth-child(3) .rk{color:#fff;background:#e7a33e}.nm{min-width:0;font:600 20px var(--display);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;display:grid;overflow:hidden}.nm small{font:600 13px var(--body);color:var(--ink-soft)}.sc{font:700 22px var(--display);color:var(--ink);font-variant-numeric:tabular-nums}.top10 li.new{background:#fff4d6;border-radius:16px}.lvlist li.locked{opacity:.5}.empty{color:var(--ink-soft);font:600 17px var(--body);text-align:center;margin:0;padding:20px 8px}.totalrow{text-align:center;font:600 18px var(--display);color:var(--ink);margin:10px 0 4px}.totalrow b{color:var(--berry)}.results{gap:12px}.breakdown{width:380px;color:var(--ink);background:#fffffff2;border-radius:26px;margin:0;padding:14px 22px;list-style:none}.breakdown li{font:600 19px var(--display);animation:in .3s var(--d) both;justify-content:space-between;padding:5px 0;display:flex}.breakdown li b{font-variant-numeric:tabular-nums}.breakdown li.sum{color:var(--berry);border-top:2px dashed #f4dbe8;margin-top:4px;padding-top:9px;font-size:24px}.badge{color:#6b4200;font:700 20px var(--display);background:#ffd23f;border-radius:999px;margin:0;padding:6px 16px;animation:.5s cubic-bezier(.3,1.6,.5,1) .8s both star;box-shadow:0 4px #d99a00}.runscore{font:600 17px var(--body);opacity:.9;margin:0}.results .stars{font-size:64px}.namelabel{font:600 20px var(--display)}#name{width:320px;font:700 26px var(--display);color:var(--ink);text-align:center;pointer-events:auto;background:#fffffff2;border:4px solid #fff;border-radius:999px;outline:none;padding:14px 20px}#name:focus{border-color:var(--berry)}@media (prefers-reduced-motion:reduce){.node.current,.node.current:after,.breakdown li,.badge{animation:none}}
