:root{--navy: #102870;--sky: #78c8f8;--yellow: #fce874;--red: #e40058;--blue: #5c94fc;--green: #40e878;--ink: #181028;--white: #fcfcfc}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden;font-family:Fredoka,system-ui,sans-serif;color:var(--white);user-select:none}.app{height:100%;min-height:0;display:flex;flex-direction:column;gap:8px;padding:max(8px,env(safe-area-inset-top)) 12px max(10px,env(safe-area-inset-bottom));overflow:hidden;background:linear-gradient(180deg,#1028708c,#102870b8),var(--workshop-bg) center / cover no-repeat}button{font-family:inherit;cursor:pointer;border:4px solid var(--ink);border-radius:14px}.top{display:flex;gap:8px}.tiny{min-width:52px;min-height:52px;font-size:28px;background:var(--yellow)}.tiny-img,.tab-img,.cmd-img,.plan-img,.mix-thumb{width:56px;height:56px;object-fit:contain;display:block}.driver-img{width:72px;height:72px;object-fit:contain;display:block}.mix-img{width:64px;height:64px;object-fit:contain}.bot-img{width:100%;height:100%;object-fit:contain}.gallery,.hub{flex:1;display:flex;flex-direction:column;align-items:center;gap:12px}.tabs,.row,.bank,.plan,.grid{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.tab,.chip,.cmd,.driver-card,.go-btn,.swatch{min-width:72px;min-height:72px;font-size:32px;background:var(--white);color:var(--ink)}.tab.is-on,.chip.is-on,.go-btn{background:var(--yellow);box-shadow:0 0 0 4px var(--blue)}.driver-card{width:88px;height:88px}.bot-card{width:140px;height:168px;background:linear-gradient(#fff,#eef4ff);position:relative;padding:8px 8px 32px;box-shadow:0 6px 0 var(--ink)}.bot-card:active{transform:translateY(3px);box-shadow:0 3px 0 var(--ink)}.bot-name{position:absolute;left:8px;bottom:8px;font-size:14px;font-weight:700;color:var(--ink)}.bot-count{position:absolute;right:6px;bottom:6px;min-width:28px;height:28px;padding:0 6px;border-radius:999px;background:var(--yellow);color:var(--ink);font-size:16px;display:grid;place-items:center;border:3px solid var(--ink)}.manual{display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 14px 12px;background:repeating-linear-gradient(90deg,transparent 0 18px,#d7c49a 18px 20px),linear-gradient(#fffdf6,#f3e6c0);border:4px solid var(--ink);border-radius:18px;color:var(--ink);align-self:center;max-width:100%;box-shadow:0 5px #c9b37a,0 8px 0 var(--ink)}.manual-copy{display:flex;flex-direction:column;align-items:center;min-width:52px;gap:2px}.manual-step{width:46px;height:46px;border-radius:50%;background:var(--yellow);border:3px solid var(--ink);font-size:22px;font-weight:700;display:grid;place-items:center}.manual-slot{font-size:13px;font-weight:700;text-align:center;max-width:72px}.manual-of{font-size:12px;opacity:.7}.step-book{width:140px;height:156px;flex-shrink:0}.bag{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;padding:10px 14px 12px;background:linear-gradient(#f6d56b,#e2b13c);border:4px solid var(--ink);border-radius:28px 28px 18px 18px;box-shadow:inset 0 8px #ffffff47,0 4px #b88820}.need{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;padding:6px 12px 8px;background:linear-gradient(#fff,#e8eef8);border:4px solid var(--ink);border-radius:16px;color:var(--ink);align-self:center;box-shadow:0 4px 0 var(--ink)}.need .lego{transform:scale(.88)}.stack{position:absolute;right:10px;bottom:10px;display:flex;flex-direction:column-reverse;align-items:center;gap:2px}.stack.is-fall{animation:fall .6s forwards}.ghost{opacity:.35;font-size:40px;filter:grayscale(.4)}.goal-tag{font-size:22px;margin:0;font-weight:700}.goal-row{display:flex;justify-content:center}.goal-card{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#fcfcfce6;border:4px solid var(--ink);border-radius:16px;color:var(--ink)}.goal-bot{width:56px;height:56px;object-fit:contain;opacity:.95}.bag,.program,.need{flex-shrink:0}.program{display:flex;flex-direction:column;gap:8px}.strip{min-height:80px;padding:8px;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;background:#18102873;border-radius:12px}.cmd.is-placed{background:var(--green)}.cmd.is-slot{background:var(--blue);opacity:.55;min-width:72px}.cmd.is-done{outline:3px solid var(--yellow)}.cmd.is-now{transform:scale(1.08)}.cmd.is-hint{box-shadow:0 0 0 4px var(--yellow);background:var(--yellow)}.cmd.play{background:var(--green);color:var(--ink);font-size:36px}.cmd.play:disabled{opacity:.4}.grid{max-width:440px}.mixer{display:flex;flex-direction:column;align-items:center;gap:10px}.mix-preview{display:flex;gap:8px;padding:12px 20px;border:4px solid var(--ink);border-radius:16px}.swatch{width:48px;min-width:48px;height:48px}.cmd.undo{background:var(--red);color:var(--white)}.plan-step{width:72px;height:72px;display:grid;place-items:center;background:#2868a0;border:4px solid var(--ink);border-radius:12px}.plan-step.is-next{background:var(--yellow);transform:scale(1.08)}.plan-step.is-done{background:var(--green)}.stage{flex:1 1 36%;min-height:140px;max-height:48vh;display:flex;align-items:flex-end;justify-content:center;gap:4px;padding:4px 8px 0;position:relative}.plate{display:grid;width:min(92vw,420px);height:auto;max-height:100%;min-height:160px;gap:5px 6px;padding:16px 14px 20px;align-content:end;background:radial-gradient(circle,rgba(255,255,255,.42) 0 2.4px,transparent 2.8px) 50% 50% / var(--stud-x, 16px) var(--stud-y, 14px),linear-gradient(180deg,#9aadb8,#6d7f8c);border:5px solid var(--ink);border-radius:18px;align-self:center;box-shadow:inset 0 8px #ffffff29,0 8px #3d4a52}.plate.is-mini{width:100%;height:100%;min-height:0;padding:6px 5px 8px;gap:3px 4px;border-radius:12px;box-shadow:inset 0 4px #ffffff2e}.plate.is-win{animation:stroll 1.2s ease-in-out infinite}.plate-cell{display:grid;place-items:stretch;min-height:0;min-width:0;position:relative;overflow:visible}.plate-cell.is-ghost{border:3px dashed var(--yellow);border-radius:8px;opacity:.8;background:#fce8742e}.plate-cell.is-guide .lego{opacity:.5;filter:none;box-shadow:none;outline:2px dashed var(--ink);outline-offset:-2px}.plate-cell.is-guide.is-step .lego{opacity:.78;outline-color:var(--yellow);outline-width:3px}.plate-cell.is-on .lego{opacity:1;filter:none;outline:none}.plate-cell .lego{width:100%;height:100%;min-width:0;min-height:0;align-self:stretch;transform:none}.plate-cell.is-pop .lego{animation:brick-pop .28s ease-out}@keyframes brick-pop{0%{transform:translateY(-10px) scale(1.12)}to{transform:translateY(0) scale(1)}}.plate.is-mini .lego{height:100%;border-width:2px;padding:5px 2px 2px}.plate.is-mini .lego-stud{width:6px;height:5px}.plate.is-mini .lego-studs{top:-5px;gap:2px}.bag-item{background:transparent;min-width:0;min-height:0;padding:4px 6px}.stage.is-fail{background:#e4005847}.kit{display:block;width:56px;height:56px;overflow:hidden;border-radius:8px;position:relative;background:#10287022}.kit img{width:100%;height:100%;object-fit:cover;object-position:var(--kx) var(--ky);transform:scale(var(--kz));transform-origin:var(--kx) var(--ky);pointer-events:none}.cmd-kit{width:56px;height:56px}.cmd.is-decoy{outline:3px dashed #e40058}.stage-grid{width:min(70vw,340px);display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-areas:". head ." "armL torso armR" "legL tail legR";gap:4px;align-items:center;justify-items:center}.slot-head{grid-area:head}.slot-torso{grid-area:torso}.slot-arm_left{grid-area:armL}.slot-arm_right{grid-area:armR}.slot-leg_left{grid-area:legL}.slot-leg_right{grid-area:legR}.slot-tail{grid-area:tail}.stage .kit{width:min(18vw,96px);height:min(18vw,96px)}.fail-face{position:absolute;top:8px;font-size:48px;margin:0}.is-shake{animation:shake .4s}@keyframes shake{25%{transform:translate(-8px)}75%{transform:translate(8px)}}.walk{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.walk-bot{width:min(70vw,320px);height:auto}.walk-bot.is-bounce{animation:stroll 1.2s ease-in-out infinite}.walk-bot.is-pose{animation:pose 1.4s ease-in-out infinite}.walk-bot.is-slash{animation:slash .7s ease-in-out infinite}.walk-bot.is-stomp{animation:stomp .9s ease-in-out infinite}.walk-bot.is-merge{animation:merge 1.6s ease-in-out infinite}.walk-bot.is-heavy{animation:heavy 1.5s ease-in-out infinite}@keyframes stroll{0%,to{transform:translate(-24px) rotate(-3deg)}50%{transform:translate(24px) rotate(3deg)}}@keyframes pose{0%,to{transform:scale(1)}50%{transform:scale(1.08) rotate(-4deg)}}@keyframes slash{0%,to{transform:rotate(0)}50%{transform:rotate(-18deg) translate(12px)}}@keyframes stomp{0%,to{transform:translateY(0)}40%{transform:translateY(-18px)}55%{transform:translateY(8px)}}@keyframes merge{0%,to{filter:hue-rotate(0deg);transform:scale(1)}50%{filter:hue-rotate(40deg);transform:scale(1.06)}}@keyframes heavy{0%,to{transform:translate(-10px)}50%{transform:translate(10px)}}@keyframes fall{to{transform:translateY(48px) rotate(28deg);opacity:.15}}.brick-face{font-size:40px}.lego{--brick: #5c94fc;position:relative;display:inline-flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:44px;height:34px;padding:10px 4px 4px;background:linear-gradient(90deg,rgba(0,0,0,.18) 0 7%,transparent 16%,transparent 84%,rgba(0,0,0,.16) 100%),linear-gradient(180deg,color-mix(in srgb,var(--brick) 72%,white) 0%,var(--brick) 42%,color-mix(in srgb,var(--brick) 72%,black) 100%);border:2px solid var(--ink);border-radius:4px 4px 6px 6px;box-shadow:inset 0 3px #ffffff61,inset 0 -5px #00000038,0 3px #00000047}.lego-w4{min-width:68px}.lego-slope{clip-path:polygon(0 100%,0 46%,100% 0,100% 100%);padding-top:14px}.lego-slope-r{clip-path:polygon(0 100%,0 0,100% 46%,100% 100%)}.lego-round{border-radius:42% 42% 8px 8px}.lego-studs{position:absolute;top:-8px;display:flex;gap:4px}.lego-stud{display:block;width:11px;height:8px;background:linear-gradient(180deg,color-mix(in srgb,var(--brick) 60%,white),var(--brick));border:2px solid var(--ink);border-radius:50%;box-shadow:inset 0 1px #ffffff8c,0 2px #00000040}.lego-qty{position:absolute;right:-8px;bottom:-8px;background:var(--yellow);color:var(--ink);border:2px solid var(--ink);border-radius:999px;font-size:12px;padding:0 5px;font-weight:700}.cmd{box-shadow:0 5px 0 var(--ink)}.cmd:active{transform:translateY(3px);box-shadow:0 2px 0 var(--ink)}.cmd .lego{transform:scale(.92)}
