.lab-hello{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);flex-wrap:wrap;align-items:center;gap:16px;margin:8px 0 28px;padding:16px 20px;display:flex}.lab-hello .numo-av{flex:none;width:64px;height:64px}.lab-hello>div{flex:240px;gap:2px;display:grid}.lab-world{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);margin:0 0 26px;padding:20px}.lab-world header{align-items:flex-start;gap:14px;margin-bottom:14px;display:flex}.lab-world header>div{flex:1;min-width:0}.lab-world h2{margin:2px 0 4px;font-size:1.35rem}.lab-world header p{color:var(--ink-2);margin:0}.lab-world small{color:var(--accent-ink);letter-spacing:.02em;font-weight:700}.lab-world-emoji{background:var(--accent-t);border-radius:18px;flex:none;place-items:center;width:56px;height:56px;font-size:1.8rem;display:grid}.lab-world.w1 .lab-world-emoji{background:#e3f2ff}.lab-world.w2 .lab-world-emoji{background:#fff1d6}.lab-world.w3 .lab-world-emoji{background:#ffe4f0}.lab-world.w4 .lab-world-emoji{background:#e5f8ea}.lab-world.w5 .lab-world-emoji{background:#eee8ff}.lab-world-stars{background:var(--bee-t);color:var(--bee-ink);border-radius:999px;flex:none;padding:4px 10px;font-size:.9rem;font-weight:700}.lab-levels{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.lab-levels a,.lab-levels li>span{border:2px solid var(--border);background:var(--surface-2);color:var(--ink);border-radius:16px;grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:center;gap:2px 10px;padding:12px;text-decoration:none;transition:transform .2s,border-color .2s,box-shadow .2s;display:grid}.lab-levels a:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-3px)}.lab-levels li.done a{background:var(--accent-t);border-color:#0000}.lab-levels li.locked>span{opacity:.55;cursor:not-allowed}.lab-level-n{background:var(--accent-grad);color:#fff;border-radius:12px;grid-row:span 2;place-items:center;width:36px;height:36px;font-weight:800;display:grid}.lab-level-name{font-size:.95rem;font-weight:700;line-height:1.2}.lab-level-stars i,.lab-best i{color:var(--muted);font-style:normal}.lab-level-stars i.on,.lab-best i.on{color:var(--sun)}.lab-page{padding-top:16px}.lab-top{align-items:center;gap:12px;margin-bottom:12px;display:flex}.lab-title{flex:1;min-width:0}.lab-title small{color:var(--accent-ink);font-weight:700}.lab-title h1{margin:0;font-size:clamp(1.3rem,4vw,1.9rem)}.lab-best{letter-spacing:2px;white-space:nowrap;font-size:1.4rem}.lab-goal{align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.lab-goal .numo-av{flex:none;width:58px;height:58px}.lab-bubble{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:18px;flex:1;padding:12px 16px;position:relative}.lab-bubble:before{content:"";background:inherit;border-left:1px solid var(--border);border-bottom:1px solid var(--border);width:14px;height:14px;position:absolute;top:20px;left:-8px;transform:rotate(45deg)}.lab-bubble p{margin:0;font-weight:600}.lab-bubble .lab-hint{color:var(--ink-2);margin-top:8px;font-weight:500}.link-btn{color:var(--accent-ink);font:inherit;cursor:pointer;background:0 0;border:0;margin-top:6px;padding:0;font-weight:700}.lab-grid{grid-template-columns:1fr;gap:16px;display:grid}@media (min-width:900px){.lab-grid{grid-template-columns:minmax(300px,1fr) 210px minmax(280px,1.1fr);align-items:start}}.lab-grid>section{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--border);min-width:0;box-shadow:var(--shadow-sm);padding:14px}.lab-grid h2{margin:0 0 4px;font-size:1.05rem}.small{font-size:.85rem}.lab-board{grid-template-columns:repeat(var(--cols), minmax(0, 1fr));grid-template-rows:repeat(var(--rows), minmax(0, 1fr));width:100%;max-width:min(100%, calc(var(--cols) * 76px));aspect-ratio:var(--cols) / var(--rows);background:#8fd16a;border-radius:16px;margin:0 auto;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 0 3px #00000014}.lab-cell{place-items:center;font-size:clamp(1rem,5vw,1.9rem);display:grid;position:relative}.lab-cell.is-path{background:#f4e3b5;box-shadow:inset 0 0 0 1px #a0783224}.lab-cell.is-tree{background:#8fd16a}.lab-cell.is-tree:nth-child(odd){background:#86c962}.lab-cell.is-water{background:linear-gradient(135deg,#5ec8f2,#3aa6e0)}.lab-cell.is-water:after{content:"〰";color:#ffffffb3;font-size:.8em}.lab-star{transition:transform .35s,opacity .35s;animation:1.6s ease-in-out infinite lab-twinkle}.lab-star.got{opacity:0;transform:scale(1.8)translateY(-30%)}@keyframes lab-twinkle{50%{transform:scale(1.12)rotate(8deg)}}.lab-flag-cell{transform-origin:20% 90%;animation:1.2s ease-in-out infinite lab-wave}@keyframes lab-wave{50%{transform:rotate(-8deg)}}.lab-numo{z-index:2;place-items:center;transition:left .3s ease-in-out,top .3s ease-in-out;display:grid;position:absolute}.lab-numo .numo-av{width:82%;height:82%;transition:transform .3s}.lab-numo.dir3 .numo-av{transform:scaleX(-1)}.lab-numo .lab-arrow{z-index:3;background:var(--accent);color:#fff;border-radius:50%;place-items:center;width:34%;height:34%;font-size:clamp(.55rem,2.2vw,.85rem);transition:transform .3s,left .3s,top .3s;display:grid;position:absolute;box-shadow:0 2px 6px #00000040}.lab-numo.dir0 .lab-arrow{top:-6%;left:33%;transform:rotate(-90deg)}.lab-numo.dir1 .lab-arrow{top:33%;left:72%;transform:rotate(0)}.lab-numo.dir2 .lab-arrow{top:72%;left:33%;transform:rotate(90deg)}.lab-numo.dir3 .lab-arrow{top:33%;left:-6%;transform:rotate(180deg)}.lab-numo.bump{animation:.45s ease-in-out 2 lab-bump}@keyframes lab-bump{25%{transform:translate(-8%)rotate(-6deg)}75%{transform:translate(8%)rotate(6deg)}}.lab-numo.win .numo-av{animation:.5s ease-in-out infinite alternate lab-hop}@keyframes lab-hop{to{transform:translateY(-18%)scale(1.08)}}.lab-stage-info{flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:10px;font-size:.9rem;font-weight:700;display:flex}.lab-stage-info .over{color:var(--accent-ink)}.lab-palette-list{flex-direction:column;align-items:flex-start;gap:12px;margin-top:10px;display:flex}@media (max-width:899px){.lab-palette-list{flex-flow:wrap}}.lab-pal{cursor:grab;text-align:left;background:0 0;border:0;padding:0;font:500 .86rem/1 Helvetica Neue,Helvetica,Arial,sans-serif;transition:transform .15s}.lab-pal:hover:not(:disabled){transform:translate(3px)scale(1.03)}.lab-pal:active{cursor:grabbing}.lab-pal .sb{display:inline-block}.lab-pal .sb:after{display:none}.lab-pal-c{border-radius:5px}.lab-b{-webkit-user-select:none;user-select:none;cursor:pointer}.lab-b.selected{outline:3px solid var(--ink);outline-offset:2px;z-index:2}.lab-b.running{filter:brightness(1.12)drop-shadow(0 0 6px #ffd54ff2);z-index:3}.lab-b.bumped{outline:3px solid var(--no);outline-offset:2px;animation:.45s 2 lab-bump}.lab-turn{font-size:1.2em}.lab-flag{color:#3cb371;font-size:1.2em}.lab-count{align-items:center;gap:4px;display:inline-flex}.lab-count button,.lab-remove{color:#fff;cursor:pointer;background:#0000002e;border:0;border-radius:50%;place-items:center;width:24px;height:24px;padding:0;font-weight:800;display:grid}.lab-count button:disabled{opacity:.35;cursor:default}.lab-remove{background:var(--no);margin-left:auto}.sb .sb-line>.lab-remove{margin-left:8px}button.sb-drop{font:inherit;cursor:pointer}.lab-canvas{white-space:normal;min-height:220px;display:block;overflow:auto}.lab-canvas .sb-line{min-height:40px}.lab-code-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.lab-empty{margin:6px 0 0}.lab-slot{cursor:pointer;z-index:2;width:150px;height:8px;margin:0;position:relative}.lab-slot.here,.lab-slot.over{border:2px dashed var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);border-radius:6px;height:30px;margin:4px 0 6px}.lab-slot.over{background:color-mix(in srgb, var(--accent) 22%, transparent);border-style:solid}.lab-slot span{height:100%;color:var(--accent-ink);font:700 .75rem/1 var(--font-body), sans-serif;white-space:nowrap;place-items:center;display:grid}.is-running .lab-slot.here{display:none}.lab-controls{z-index:5;background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);box-shadow:var(--shadow-md);border-radius:20px;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;padding:10px;display:flex;position:sticky;bottom:10px}.lab-go{min-width:140px;font-size:1.15rem;color:#fff!important;background:linear-gradient(135deg,#3cc864,#1fa34a)!important}.lab-go span{font-size:1.3em}.lab-stop{min-width:140px;background:var(--no)!important;color:#fff!important}.lab-speed{margin-left:auto}.lab-speed button{min-width:0;padding:4px 10px}.lab-result{background:var(--bee-t);border:1px solid #a6530033;border-radius:18px;flex-wrap:wrap;align-items:center;gap:12px;margin-top:14px;padding:14px 16px;display:flex}.lab-result span{font-size:1.8rem}.lab-result p{flex:220px;margin:0;font-weight:600}.lab-win{z-index:50;background:#0d0b2273;place-items:center;padding:16px;animation:.25s lab-fade;display:grid;position:fixed;inset:0}@keyframes lab-fade{0%{opacity:0}}.lab-win-card{background:var(--surface);text-align:center;width:min(440px,100%);max-height:calc(100dvh - 32px);box-shadow:var(--shadow-lg);border-radius:28px;padding:26px 22px;animation:.4s cubic-bezier(.2,1.4,.4,1) lab-pop;position:relative;overflow:hidden auto}@keyframes lab-pop{0%{opacity:0;transform:scale(.7)}}.lab-win-card h2{margin:6px 0;font-size:1.7rem}.lab-win-card .numo-av.big{width:110px;height:110px}.lab-confetti{pointer-events:none;position:absolute;inset:0}.lab-confetti i{top:-10px;left:calc(var(--k) * 5.6%);background:hsl(calc(var(--k) * 47deg) 90% 60%);width:8px;height:14px;animation:lab-fall 2.4s calc(var(--k) * -.13s) linear infinite;border-radius:2px;position:absolute}@keyframes lab-fall{to{transform:translateY(560px)rotate(720deg)}}@media (prefers-reduced-motion:reduce){.lab-confetti,.lab-star,.lab-flag-cell{animation:none!important}.lab-confetti{display:none}}.lab-locked{text-align:center;max-width:520px;margin:40px auto}.lab-locked .numo-av{width:90px;height:90px}
