@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fredoka-latin-500-normal-B0JifZgm.woff2)format("woff2"),url(/assets/fredoka-latin-500-normal-BL692wg7.woff)format("woff")}@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/fredoka-latin-700-normal-BOIZVyIN.woff2)format("woff2"),url(/assets/fredoka-latin-700-normal-C8FeHd3X.woff)format("woff")}@font-face{font-family:Bangers;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bangers-latin-400-normal-DeHY8Ncq.woff2)format("woff2"),url(/assets/bangers-latin-400-normal-BAEm-Pv0.woff)format("woff")}@font-face{font-family:Andika;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/andika-latin-700-normal-Dk95f5lc.woff2)format("woff2"),url(/assets/andika-latin-700-normal-CAUSQC6x.woff)format("woff")}:root{--bg:#1b2140;--card:#262e57;--ink:#f4f6ff;--muted:#b7bfe6;--accent:#ffcd3c;--accent-ink:#2a2200;--ok:#7be0a1;--bad:#ff8d8d;--tap-min:64px;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);color:var(--ink);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{background:var(--bg);overscroll-behavior:none;-webkit-text-size-adjust:100%;height:100%;margin:0}button{font:inherit;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.labs{max-width:1000px;min-height:100%;padding:calc(var(--safe-top) + 24px) calc(var(--safe-right) + 24px) calc(var(--safe-bottom) + 48px) calc(var(--safe-left) + 24px);gap:16px;margin:0 auto;font-family:system-ui,-apple-system,Segoe UI,sans-serif;display:grid}.safe-frame{inset:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);pointer-events:none;z-index:10;border:2px dashed #ffcd3c73;position:fixed}.card{background:var(--card);border-radius:20px;padding:20px}h1{margin:0 0 8px;font-size:24px}h2{color:var(--accent);margin:0 0 12px;font-size:20px}h3{margin:0 0 4px;font-size:17px}p{margin:8px 0;line-height:1.45}.kv{color:var(--muted)}.kv b{color:var(--ink)}.ok{color:var(--ok)}.bad{color:var(--bad)}.row{flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0;display:flex}.big{min-height:var(--tap-min);min-width:140px;color:var(--ink);background:#3a4580;border:0;border-radius:16px;padding:0 22px;font-size:18px;font-weight:600}.big:active{transform:scale(.97)}.big:disabled{opacity:.5}.big.primary{background:var(--accent);color:var(--accent-ink)}.big.danger{background:var(--bad);color:#3a0000}.slider{align-items:center;gap:16px;margin:14px 0;font-size:18px;display:flex}.slider>span{min-width:132px}.slider input[type=range]{min-height:var(--tap-min);accent-color:var(--accent);flex:1}.card h3{color:var(--accent);margin:22px 0 4px;font-size:19px}.card h3:first-of-type{margin-top:8px}.clip{min-height:var(--tap-min);min-width:104px;color:var(--ink);background:#333e70;border:0;border-radius:12px;padding:0 14px;font-size:16px;font-weight:600}.clip:active{transform:scale(.97)}.card summary{min-height:var(--tap-min);cursor:pointer;align-items:center;display:flex}.checklist{gap:18px;margin:0;padding-left:22px;display:grid}.checklist li.pass h3:after{content:" ✓";color:var(--ok)}.checklist li.fail h3:after{content:" ✗";color:var(--bad)}.note{min-height:var(--tap-min);color:var(--ink);font:inherit;background:#1f2649;border:2px solid #3a4580;border-radius:16px;flex:220px;padding:0 16px;font-size:16px}.report{width:100%;color:var(--muted);background:#141934;border:0;border-radius:12px;padding:12px;font:12px/1.4 ui-monospace,Menlo,Consolas,monospace}.prize-input{width:100%;color:var(--ink);resize:vertical;background:#141a38;border:2px solid #3a4580;border-radius:14px;margin:10px 0 2px;padding:12px 14px;font:400 17px/1.5 Andika,sans-serif}[data-theme=ninja]{--display:"Bangers", "Fredoka", system-ui, sans-serif;--display-spacing:.04em;--ink:#fff7e6;--outline:#2a1200;--primary:#ff8a1f;--primary-dark:#b6520a;--primary-ink:#2a1200;--chip-bg:#120d33c7;--chip-ink:#fff7e6;--chip-border:#ffb45a;--tile-bg:linear-gradient(#fff6dc, #f6e2b0);--tile-ink:#2a1a0a;--tile-border:#c48a3a;--tile-shadow:#6e4413;--bubble-bg:#fff3d2;--bubble-ink:#2a1a0a;--bubble-border:#c48a3a;--logo-a:#ffb02e;--logo-b:#ff6a1a;--right:#63d471}[data-theme=kitty]{--display:"Fredoka", system-ui, sans-serif;--display-spacing:0;--ink:#8a2f63;--outline:#fff;--primary:#ff6fa5;--primary-dark:#d2447c;--primary-ink:#fff;--chip-bg:#ffffffe6;--chip-ink:#8a2f63;--chip-border:#ffa6cb;--tile-bg:linear-gradient(#fff, #fff0f7);--tile-ink:#8a2f63;--tile-border:#ffa6cb;--tile-shadow:#ef86b3;--bubble-bg:#fff;--bubble-ink:#8a2f63;--bubble-border:#ffa6cb;--logo-a:#ff6fa5;--logo-b:#a98bf5;--right:#4ccf8e}.world{color:var(--ink);touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;font-family:Fredoka,system-ui,sans-serif;font-weight:500;position:fixed;inset:0;overflow:hidden}.scene{width:100%;height:100%;position:absolute;inset:0}.stage{padding:calc(var(--safe-top) + 18px) calc(var(--safe-right) + 26px) calc(var(--safe-bottom) + 22px) calc(var(--safe-left) + 26px);position:absolute;inset:0}.stage>main{flex-direction:column;align-items:center;gap:clamp(8px,2vmin,20px);height:100%;display:flex}.floaties{pointer-events:none;position:absolute;inset:0}.floaty{top:-8%;left:var(--x);opacity:.85;animation:fall var(--dur) linear var(--delay) infinite;font-size:clamp(22px,3.4vmin,36px);position:absolute}@keyframes fall{0%{transform:translate(0)rotate(0)}25%{transform:translate(40px,30vh)rotate(90deg)}50%{transform:translate(-30px,60vh)rotate(200deg)}to{transform:translate(30px,118vh)rotate(380deg)}}[data-theme=kitty] .drift{animation:9s ease-in-out infinite alternate drift}@keyframes drift{to{translate:40px}}.topbar{flex:none;justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.topbar-right{gap:14px;display:flex}.round-btn{border:4px solid var(--chip-border);background:var(--chip-bg);width:76px;height:76px;color:var(--chip-ink);border-radius:50%;flex:none;place-items:center;padding:0;font-size:36px;line-height:1;transition:transform 80ms;display:grid;box-shadow:0 6px #00000047}.round-btn:active{transform:translateY(4px);box-shadow:0 2px #00000047}.round-btn.switch-world{padding:3px;overflow:hidden}.round-btn.switch-world svg{border-radius:50%;width:100%;height:100%}.hold-btn{opacity:.75;font-size:30px;transition:box-shadow 2s linear,opacity .2s}.hold-btn.holding{opacity:1;box-shadow:0 0 0 10px var(--primary)}.star-count{border:4px solid var(--chip-border);background:var(--chip-bg);min-height:68px;color:var(--chip-ink);border-radius:40px;align-items:center;gap:10px;padding:0 24px 0 16px;font-size:34px;font-weight:700;display:flex;box-shadow:0 6px #00000047}.bubble{border:5px solid var(--bubble-border);background:var(--bubble-bg);max-width:min(560px,60vw);color:var(--bubble-ink);border-radius:28px;padding:18px 26px;font-size:clamp(22px,3.4vmin,34px);font-weight:700;line-height:1.2;position:relative;box-shadow:0 8px #0000002e}.bubble:before{content:"";border:14px solid #0000;border-right-color:var(--bubble-border);border-left-width:0;border-right-width:20px;position:absolute;top:50%;left:-22px;translate:0 -50%}.banner,.logo{font-family:var(--display);letter-spacing:var(--display-spacing);text-align:center;color:var(--logo-a);text-shadow:-3px -3px 0 var(--outline), 3px -3px 0 var(--outline), -3px 3px 0 var(--outline), 3px 3px 0 var(--outline), 0 -4px 0 var(--outline), 0 4px 0 var(--outline), -4px 0 0 var(--outline), 4px 0 0 var(--outline), 0 9px 0 #00000040;margin:0;font-weight:700;line-height:1}.banner{font-size:clamp(44px,8vmin,84px)}.banner.small{font-size:clamp(30px,5vmin,52px)}.chunky{background:var(--primary);min-height:84px;color:var(--primary-ink);font-family:var(--display);letter-spacing:var(--display-spacing);box-shadow:0 9px 0 var(--primary-dark), 0 18px 30px #00000040;border:0;border-radius:44px;padding:0 44px;font-size:34px;font-weight:700}.chunky:active{box-shadow:0 3px 0 var(--primary-dark);transform:translateY(6px)}.mascot{filter:drop-shadow(0 10px 8px #00000040);transform-origin:50% 100%;width:100%;height:100%;animation:3.2s ease-in-out infinite bob;overflow:visible}.mascot-cheer{animation:.62s ease-in-out 3 cheer}.mascot .arm-left,.mascot .arm-right{transform-box:fill-box;transform-origin:50% 10%}.mascot-cheer .arm-left{animation:.31s ease-in-out 6 alternate wave-left}.mascot-cheer .arm-right{animation:.31s ease-in-out 6 alternate wave-right}@keyframes bob{50%{transform:translateY(-6px)scale(1.015,.99)}}@keyframes cheer{0%,to{transform:translateY(0)scale(1)}30%{transform:translateY(-34px)scale(.97,1.05)rotate(-4deg)}60%{transform:translateY(0)scale(1.06,.93)}}@keyframes wave-left{to{transform:rotate(120deg)}}@keyframes wave-right{to{transform:rotate(-120deg)}}.splash{justify-content:center}.logo{font-size:clamp(64px,13vmin,140px);rotate:-3deg}.logo span:last-child{color:var(--logo-b)}.splash-mascot{aspect-ratio:250/270;flex:none;width:clamp(200px,36vmin,340px)}.start-button{background:var(--primary);min-height:108px;color:var(--primary-ink);box-shadow:0 12px 0 var(--primary-dark), 0 26px 44px #00000059;border:0;border-radius:60px;align-items:center;gap:18px;padding:0 56px 0 40px;animation:1.5s ease-in-out infinite pulse;display:flex}.start-button:active{box-shadow:0 4px 0 var(--primary-dark);transform:translateY(8px)}.start-glyph{width:68px;height:68px;color:var(--primary-dark);background:#ffffffeb;border-radius:50%;place-items:center;padding-left:6px;font-size:34px;display:grid}.start-label{font-family:var(--display);letter-spacing:var(--display-spacing);font-size:clamp(34px,5.4vmin,52px);font-weight:700}.version{bottom:calc(var(--safe-bottom) + 6px);right:calc(var(--safe-right) + 14px);opacity:.55;margin:0;font-size:12px;position:absolute}@keyframes pulse{50%{transform:scale(1.05)}}.greeter,.prompt{flex:none;justify-content:center;align-items:center;gap:30px;display:flex}.home .greeter{flex:auto;min-height:0}.home-mascot{aspect-ratio:250/270;flex:none;height:min(100%,320px);min-height:150px}.world-name{font-family:var(--display);letter-spacing:var(--display-spacing);color:var(--logo-a);text-shadow:-3px -3px 0 var(--outline), 3px -3px 0 var(--outline), -3px 3px 0 var(--outline), 3px 3px 0 var(--outline), 0 6px 0 #00000040;margin:0 0 12px;font-size:clamp(34px,6vmin,64px);font-weight:700;line-height:1}.missions{flex:none;grid-template-columns:repeat(3,minmax(0,1fr));justify-items:center;gap:clamp(12px,2.2vmin,24px);width:100%;padding:14px 24px 20px;display:grid}.missions.resting{grid-template-columns:minmax(0,1fr)}.missions.resting .mission{max-width:320px}.mission{width:100%;max-width:270px;min-height:clamp(116px,16.5vmin,165px);color:var(--tile-ink);border:0;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:14px 10px;transition:transform 80ms;display:flex;position:relative}.mission:active{transform:translateY(6px)scale(.98)}.mission-icon{font-size:clamp(64px,11vmin,100px);line-height:1.05}.mission-title{font-family:var(--display);letter-spacing:var(--display-spacing);font-size:clamp(24px,3.8vmin,36px);font-weight:700;line-height:1.05}.mission-tag{background:var(--primary);color:var(--primary-ink);box-shadow:0 4px 0 var(--primary-dark);border-radius:20px;padding:5px 14px;font-size:17px;font-weight:700;position:absolute;top:10px;right:-8px;rotate:7deg}[data-theme=ninja] .mission{background:linear-gradient(90deg,#ecd39a 0,#fff4d6 12% 88%,#ecd39a 100%);border-radius:6px;box-shadow:0 12px #00000059}[data-theme=ninja] .mission:before,[data-theme=ninja] .mission:after{content:"";background:linear-gradient(#8a5523,#4d2a0d);border-radius:12px;height:24px;position:absolute;left:-16px;right:-16px;box-shadow:inset 0 -4px #0000004d,inset 0 3px #ffffff2e}[data-theme=ninja] .mission:before{top:-14px}[data-theme=ninja] .mission:after{bottom:-14px}[data-theme=kitty] .mission{background:linear-gradient(#fff,#fff0f7);border:6px solid #ffa6cb;border-radius:42px;box-shadow:0 12px #ef86b3,inset 0 0 0 6px #fff}[data-theme=kitty] .mission:before{content:"🎀";font-size:52px;line-height:1;position:absolute;top:-34px;left:50%;translate:-50%}[data-theme=kitty] .mission-tag{top:16px;right:-12px}.play{justify-content:space-between}.play.no-board .play-mascot{width:clamp(150px,27vmin,250px)}.play.no-board .tile{width:clamp(150px,27vmin,260px);font-size:clamp(86px,16vmin,150px)}.pips{background:var(--chip-bg);border:4px solid var(--chip-border);border-radius:40px;gap:8px;padding:8px 18px;display:flex}.pip{filter:grayscale()brightness(.8);opacity:.4;font-size:clamp(24px,4vmin,36px);line-height:1;transition:all .3s}.pip.on{filter:none;opacity:1;animation:.4s pop}.play-mascot{aspect-ratio:250/270;flex:none;width:clamp(110px,19vmin,170px)}.board{border:5px solid var(--bubble-border);background:var(--bubble-bg);color:var(--bubble-ink);border-radius:30px;flex:none;padding:14px 26px;box-shadow:0 8px #0000002e}.count-board{justify-content:center;gap:6px 10px;display:grid}.count-object{background:0 0;border:0;border-radius:50%;width:clamp(62px,9.4vmin,88px);height:clamp(62px,9.4vmin,88px);padding:0;font-size:clamp(44px,7.4vmin,68px);line-height:1;position:relative}.count-object.counted{background:#63d47147;animation:.3s pop}.count-badge{background:var(--primary);width:32px;height:32px;color:var(--primary-ink);border-radius:50%;place-items:center;font:700 18px Andika,sans-serif;display:grid;position:absolute;bottom:-4px;right:-4px}.add-board{text-align:center;width:min(100%,760px)}.sum{margin:0;font:700 clamp(44px,8vmin,76px)/1.1 Andika,sans-serif}.sum span{color:var(--primary-dark);padding:0 .12em}.sum em{color:var(--primary);font-style:normal}.number-path{width:100%;height:auto;display:block}.np-line{stroke:var(--bubble-border);stroke-width:8px;stroke-linecap:round}.np-dot{fill:#fff;stroke:var(--bubble-border);stroke-width:5px}.np-start{fill:var(--primary);stroke:var(--primary-dark)}.np-num{fill:var(--bubble-ink);font:700 30px Andika,sans-serif}.np-hop{fill:none;stroke:var(--primary);stroke-width:7px;stroke-linecap:round;stroke-dasharray:2 13;animation:.4s pop}.choices{flex:none;justify-content:center;gap:clamp(16px,4vmin,40px);padding-bottom:14px;display:flex}.tile{aspect-ratio:1;border:6px solid var(--tile-border);background:var(--tile-bg);width:clamp(130px,23vmin,220px);color:var(--tile-ink);box-shadow:0 11px 0 var(--tile-shadow), 0 22px 30px #00000038;border-radius:34px;place-items:center;padding:0;font-size:clamp(74px,13.5vmin,128px);line-height:1;transition:transform .1s,opacity .25s;display:grid}.tile-numeral{font-family:Andika,sans-serif;font-weight:700}.tile:active{box-shadow:0 4px 0 var(--tile-shadow);transform:translateY(7px)}.tile.wrong{opacity:.32;animation:.4s shake;transform:scale(.88)}.tile.right{border-color:var(--right);animation:.5s pop;box-shadow:0 11px #2f9e57,0 0 0 10px #63d47173,0 0 60px #63d471cc}.tile.hint{animation:.9s ease-in-out infinite hint}@keyframes shake{25%{translate:-10px}50%{translate:10px}75%{translate:-6px}}@keyframes pop{0%{scale:.6}60%{scale:1.18}to{scale:1}}@keyframes hint{50%{box-shadow:0 11px 0 var(--tile-shadow), 0 0 0 10px var(--primary);scale:1.08}}.burst{pointer-events:none;z-index:20;position:fixed;top:46%;left:50%}.burst span{font-size:clamp(34px,6vmin,56px);animation:1.1s cubic-bezier(.15,.7,.3,1) forwards fly;position:absolute}@keyframes fly{0%{opacity:1;transform:translate(-50%,-50%)scale(.2)}70%{opacity:1}to{transform:translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) rotate(var(--rot)) scale(1.1);opacity:0}}.pick{justify-content:center}.earned{margin:0;font-size:clamp(34px,6vmin,56px);line-height:1}.earned span{animation:.5s backwards pop;display:inline-block}.sticker-offer{gap:clamp(18px,4vmin,44px);padding:10px 0 20px;display:flex}.sticker{aspect-ratio:1;border-radius:50%;place-items:center;line-height:1;display:grid}.big-sticker,.slot.owned{background:radial-gradient(circle at 35% 30%,#fff,#ffeef6 70%);border:8px solid #fff;box-shadow:0 8px #00000038,0 0 0 3px #0000001a}[data-theme=ninja] .big-sticker,[data-theme=ninja] .slot.owned{background:radial-gradient(circle at 35% 30%,#fffaf0,#ffe3b0 75%)}.big-sticker{width:clamp(140px,24vmin,220px);padding:0;font-size:clamp(76px,13vmin,124px);animation:2.4s ease-in-out infinite bob}.big-sticker:nth-child(2){animation-delay:-.8s}.big-sticker:nth-child(3){animation-delay:-1.6s}.big-sticker:active{scale:.94}.book{justify-content:space-between}.book-page{border:6px solid var(--bubble-border);background:var(--bubble-bg);border-radius:34px;flex:auto;grid-template-columns:repeat(6,1fr);align-content:space-evenly;justify-items:center;gap:clamp(10px,2.4vmin,22px);width:min(100%,940px);min-height:0;padding:clamp(14px,3vmin,30px);display:grid;box-shadow:0 10px #0003}.slot{width:clamp(52px,9.5vmin,104px);font-size:clamp(28px,5.6vmin,58px)}@media (orientation:portrait){.book-page{grid-template-columns:repeat(5,1fr)}}.slot.empty{border:5px dashed var(--bubble-border);color:var(--bubble-border);font-family:var(--display);opacity:.75;font-size:clamp(38px,6vmin,60px)}.slot.fresh{box-shadow:0 8px 0 #00000038, 0 0 0 8px var(--primary), 0 0 50px var(--primary);animation:1s ease-out fresh}@keyframes fresh{0%{opacity:0;rotate:-25deg;scale:2.4}60%{opacity:1;rotate:6deg;scale:.9}to{rotate:0deg;scale:1}}@media (prefers-reduced-motion:reduce){.floaty,.burst{display:none}.world *,.world :before,.world :after{transition:none!important;animation:none!important}}.np-step{cursor:pointer}.np-counted{fill:#ffe9a8;stroke:#d9a521}.np-hit{fill:#0000}.tile-letter{letter-spacing:.02em;color:var(--bubble-ink);font:800 clamp(44px,9vmin,92px) Andika,sans-serif}.picture-board{justify-content:center;align-items:center;display:flex}.picture-big{font-size:clamp(90px,20vmin,190px);line-height:1}.prize-won{border:5px solid var(--bubble-border);background:var(--bubble-bg);color:var(--bubble-ink);text-align:left;border-radius:28px;justify-content:center;align-items:center;gap:clamp(12px,2.5vmin,24px);margin:4px 0 10px;padding:clamp(10px,2vmin,18px) clamp(18px,3vmin,34px);display:flex}.prize-cup{font-size:clamp(38px,7vmin,68px);line-height:1}.prize-title{font:700 clamp(19px, 3vmin, 30px) var(--display);margin:0}.prize-name{opacity:.85;margin:2px 0 0;font:700 clamp(16px,2.4vmin,24px) Andika,sans-serif}.trophies{letter-spacing:2px;margin:0;font-size:clamp(20px,3vmin,30px)}
