:root{font-family:Noto Sans TC,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#5c4033;background:#fff4ee;font-synthesis:none;--cream: #fff8f3;--peach: #ffe1d6;--peach-deep: #ffccb6;--pink: #f8a5a5;--pink-deep: #f28482;--brown: #8f5a48;--brown-deep: #6f4335;--mint: #b8ddd5;--mint-deep: #84a59d;--line: #e8cabf}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}button{font:inherit}button:focus-visible{outline:3px solid rgba(242,132,130,.35);outline-offset:2px}.app-shell{height:var(--app-viewport-height, 100dvh);min-height:600px;display:grid;grid-template-rows:58px minmax(0,1fr) 90px;background:linear-gradient(180deg,#fff8f2,#ffece2);border:6px solid #f2c8b7;position:relative}.topbar{display:grid;grid-template-columns:minmax(160px,.7fr) minmax(130px,.55fr) minmax(145px,.5fr) minmax(460px,1.35fr);align-items:center;gap:8px;padding:6px 8px;background:linear-gradient(180deg,#ffe7dc,#ffd8ca);border-bottom:2px solid #f2beaa}.brand-button,.lesson-title,.top-actions>button,.progress-pill{border:1px solid rgba(255,255,255,.35);box-shadow:inset 0 1px #ffffff61,0 2px 4px #784c361a}.brand-button{height:43px;border-radius:14px;background:linear-gradient(180deg,#ffb482,#f68b67);color:#fff;display:flex;align-items:center;justify-content:center;gap:9px;font-weight:800;letter-spacing:.03em;cursor:pointer}.lesson-title{height:43px;border-radius:14px;color:#7a4b3e;background:linear-gradient(180deg,#fffaf7,#ffe9de);display:flex;align-items:center;justify-content:center;gap:12px}.lesson-title small{opacity:.7;font-size:11px}.lesson-title strong{font-size:15px}.visitor-stats{height:43px;min-width:0;border-radius:14px;color:#7a4b3e;background:linear-gradient(180deg,#fffaf7,#ffe5d7);border:1px solid rgba(255,255,255,.35);box-shadow:inset 0 1px #ffffff61,0 2px 4px #784c361a;display:grid;grid-template-columns:26px minmax(58px,1fr) 1px minmax(70px,1fr);align-items:center;gap:7px;padding:5px 10px;overflow:hidden}.visitor-stats>svg{color:#f18b6b}.visitor-stats span{min-width:0;display:grid;gap:1px;line-height:1.05}.visitor-stats small{font-size:10px;font-weight:800;opacity:.68;white-space:nowrap}.visitor-stats b{font-size:16px;font-weight:950;color:#8f5a48;font-variant-numeric:tabular-nums}.visitor-stats i{display:block;height:25px;background:#efc4b5;opacity:.75}.top-actions{display:flex;justify-content:flex-end;gap:5px;min-width:0}.top-actions>button,.progress-pill{min-height:42px;border:0;border-radius:12px;color:#7a4b3e;background:linear-gradient(180deg,#fffaf6,#ffe9de);display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 11px;font-weight:700;font-size:12px}.top-actions>button{cursor:pointer}.progress-pill{background:linear-gradient(180deg,#ffe7c6,#ffd28b)}.progress-pill svg{color:#eb9c17}.progress-pill span{opacity:.6}.main-grid{min-height:0;display:grid;grid-template-columns:43% 57%;gap:4px;padding:4px 4px 0}.stage-panel,.workspace-panel{min-width:0;min-height:0;border:2px solid #efc4b5;border-radius:14px 14px 0 0;overflow:hidden}.game-stage{width:100%;height:100%;min-height:340px;position:relative;overflow:hidden;background:radial-gradient(circle at 18% 18%,rgba(255,255,255,.85),transparent 18%),radial-gradient(circle at 82% 18%,rgba(255,227,215,.75),transparent 22%),radial-gradient(circle at 14% 82%,rgba(255,205,182,.52),transparent 18%),linear-gradient(180deg,#fff6f0,#ffe8da 52%,#ffd8c5);isolation:isolate}.starfield,.starfield:before,.starfield:after{position:absolute;inset:0;content:"";background-image:radial-gradient(circle at 18px 16px,rgba(246,139,103,.12) 0 6px,transparent 7px),radial-gradient(circle at 56px 34px,rgba(242,132,130,.1) 0 5px,transparent 6px),radial-gradient(circle at 88px 70px,rgba(132,165,157,.12) 0 4px,transparent 5px);background-size:120px 120px,140px 140px,160px 160px;opacity:.7;z-index:-1}.starfield:before{transform:rotate(8deg) scale(1.05);opacity:.42}.starfield:after{background-image:radial-gradient(circle at 15px 16px,rgba(255,255,255,.75) 0 2px,transparent 3px),radial-gradient(circle at 42px 58px,rgba(255,255,255,.5) 0 2px,transparent 3px);background-size:110px 110px,150px 150px;opacity:.3}.stage-hud{position:absolute;z-index:20;top:10px;left:10px;right:10px;display:flex;justify-content:space-between}.energy-bar,.gem-count{height:34px;border:2px solid #e8b59f;border-radius:999px;background:#fffaf7eb;color:#8f5a48;display:flex;align-items:center;gap:7px;padding:4px 10px;font-size:12px;box-shadow:inset 0 0 0 1px #fff5ef}.energy-bar svg{color:#f18b6b}.energy-bar span{width:110px;height:10px;border:1px solid #e1b29d;background:#fff6f1;overflow:hidden;border-radius:999px}.energy-bar i{display:block;height:100%;background:linear-gradient(90deg,#f6a04d,#f7c46a);transition:width .25s;border-radius:inherit}.hud-can-icon{width:8px;height:8px;object-fit:contain;display:block}.stage-label{position:absolute;left:50%;top:56px;transform:translate(-50%);z-index:10;color:#8f5a48;font-weight:900;font-size:18px;letter-spacing:.06em;text-shadow:0 1px 0 rgba(255,255,255,.65)}.story-bubble{position:absolute;left:12px;bottom:12px;z-index:24;width:min(320px,calc(100% - 68px));padding:11px 12px 12px;border:2px solid rgba(240,189,164,.95);border-radius:18px;background:#fff8f2e6;box-shadow:0 10px 24px #8f5a481f;backdrop-filter:blur(10px);color:#7a4a40}.story-bubble:before{content:"";position:absolute;left:18px;top:-8px;width:18px;height:18px;background:#fff8f2f0;border-left:2px solid rgba(240,189,164,.95);border-top:2px solid rgba(240,189,164,.95);transform:rotate(45deg)}.story-bubble-label{position:relative;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:linear-gradient(180deg,#ffe6c8,#ffd59a);color:#8a563f;font-size:11px;font-weight:900;letter-spacing:.03em;margin-bottom:8px}.story-bubble-header{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.story-bubble-header .story-bubble-label{margin-bottom:0}.story-read-btn{min-height:28px;border:1px solid #eab9a3;border-radius:999px;padding:4px 9px;display:inline-flex;align-items:center;justify-content:center;gap:5px;color:#8f5a48;background:#ffffffc7;font-size:10.5px;font-weight:800;cursor:pointer;transition:transform .16s ease,background .16s ease,color .16s ease}.story-read-btn:hover{transform:translateY(-1px);background:#fff}.story-read-btn.speaking{color:#fff;border-color:#f28482;background:linear-gradient(180deg,#f8a07b,#f28482);animation:narrationPulse 1s ease-in-out infinite}@keyframes narrationPulse{50%{box-shadow:0 0 0 5px #f2848224}}.story-bubble p{position:relative;margin:0;font-size:12.5px;line-height:1.65;text-wrap:pretty}.iso-stage-center{position:absolute;left:50%;top:52%;width:0;height:0;z-index:2;pointer-events:none}.iso-zoom-layer{position:absolute;left:0;top:0;width:0;height:0;transform:scale(var(--stage-zoom, 1));transform-origin:0 0;transition:transform .18s ease}.iso-world{position:absolute;left:0;top:0;width:0;height:0}.map-grid-cell,.iso-cell,.crystal,.goal-portal,.robot-token{--tile-w: clamp(45px, 4.5vw, 66px);--tile-h: calc(var(--tile-w) * .54);position:absolute;left:var(--iso-left);top:var(--iso-top);transform:translate(-50%,-50%)}.map-grid-cell{width:var(--tile-w);height:var(--tile-h);z-index:1;pointer-events:none;opacity:.72}.map-grid-cell svg{display:block;width:100%;height:100%;overflow:visible}.map-grid-cell polygon{fill:#ffe1d64d;stroke:#ce886cb8;stroke-width:1.6;vector-effect:non-scaling-stroke}.iso-cell{width:var(--tile-w);height:var(--tile-h);z-index:calc(3 + var(--gx) + var(--gy))}.tile-top{position:absolute;inset:0;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);background:radial-gradient(circle at 30% 28%,rgba(255,255,255,.6) 0 10%,transparent 11%),radial-gradient(circle at 60% 32%,rgba(255,255,255,.55) 0 7%,transparent 8%),linear-gradient(135deg,#ffe7cf,#ffcaa6 72%,#ffbd93);border:1px solid #d89779;filter:drop-shadow(0 2px 2px rgba(128,79,58,.14))}.tile-top:after{content:"";position:absolute;inset:6px 10px;clip-path:inherit;border:1px dashed rgba(173,113,91,.28)}.tile-top:before{content:"🐾";position:absolute;left:50%;top:50%;transform:translate(-50%,-52%);font-size:13px;opacity:.45}.tile-side{position:absolute;top:50%;height:17px;background:linear-gradient(#db9a7e,#c78062)}.tile-side-a{left:50%;width:50%;clip-path:polygon(0 0,100% 0,0 100%)}.tile-side-b{right:50%;width:50%;clip-path:polygon(0 0,100% 0,100% 100%)}.obstacle-cell .tile-top{filter:brightness(.96) saturate(.92)}.obstacle{position:absolute;left:50%;top:-20px;transform:translate(-50%);font-size:24px;filter:drop-shadow(0 5px 4px rgba(0,0,0,.2));z-index:4}.crystal{z-index:calc(20 + var(--gx) + var(--gy));margin-top:-22px;animation:gemFloat 1.5s ease-in-out infinite}.crystal img{display:block;width:22px;height:22px;object-fit:contain;filter:drop-shadow(0 6px 6px rgba(115,63,42,.18))}.crystal:after{content:"";position:absolute;width:22px;height:7px;border-radius:50%;background:#d48c683d;filter:blur(4px);left:50%;top:19px;transform:translate(-50%)}@keyframes gemFloat{50%{transform:translate(-50%,-64%)}}.goal-portal{width:44px;height:24px;margin-top:-9px;border:4px solid #ffd18f;border-radius:50%;color:#fffef9;display:grid;place-items:center;z-index:19;box-shadow:0 0 10px #fcbe60cc,inset 0 0 10px #f68b67a6;background:radial-gradient(circle at 50% 50%,#ffffff73,#ffc48940);animation:portalPulse 1.4s infinite}.goal-portal svg{transform:translateY(-18px);filter:drop-shadow(0 0 4px rgba(255,186,0,.55))}@keyframes portalPulse{50%{box-shadow:0 0 18px #ffc960f2,inset 0 0 12px #f68b67cc}}.robot-token{z-index:50;margin-top:-28px;transition:left var(--move-duration, .32s) ease,top var(--move-duration, .32s) ease,transform calc(var(--move-duration, .32s) * .78) ease}.robot-token.running .robot-body{animation:robotBob var(--move-duration, .32s) infinite alternate}.robot-token.crashed .robot-body{animation:crash .25s 3;filter:grayscale(.6)}.robot-body{font-size:31px;filter:drop-shadow(0 8px 8px rgba(113,67,45,.2))}.robot-avatar{display:block;width:58px;height:58px;object-fit:contain;transform:translateY(-4px)}.direction-arrow{position:absolute;left:50%;top:45px;width:22px;height:22px;transform:translate(-50%) rotate(var(--dir));transform-origin:center}.direction-arrow:before{content:"➤";position:absolute;color:#3b82f6;font-size:18px;text-shadow:0 0 7px rgba(59,130,246,.45)}@keyframes robotBob{to{transform:translateY(-5px)}}@keyframes crash{50%{transform:rotate(15deg) translate(4px)}}.stage-tools{position:absolute;z-index:25;right:10px;top:54px;display:flex;flex-direction:column;align-items:flex-end;gap:6px}.stage-tools button{width:34px;min-width:34px;height:34px;padding:0;border-radius:999px;border:1px solid #ebb59f;color:#8f5a48;background:#fffaf7eb;cursor:pointer;font-weight:800;box-shadow:0 2px 8px #8f5a4824;display:grid;place-items:center;transition:background .16s ease,border-color .16s ease,transform .16s ease,box-shadow .16s ease}.stage-tools button:hover{background:#fff4ecfa;transform:translateY(-1px)}.stage-tools button:active{transform:translateY(0)}.stage-tools button:disabled{opacity:.42;cursor:not-allowed;transform:none}.stage-tools .speed-btn{font-size:12px}.stage-tools .speed-btn.active{background:linear-gradient(180deg,#ffbc8f,#f59870);color:#fff;border-color:#f59870;box-shadow:0 0 12px #f5987059}.stage-tools .map-grid-btn.active{color:#fff7df;border-color:#f0b967;background:linear-gradient(180deg,#f4c16d,#e39d42);box-shadow:0 0 12px #f0b96766}.workspace-panel{position:relative;background:#fff8f3;display:grid;grid-template-rows:38px minmax(0,1fr)}.workspace-toolbar{background:linear-gradient(#fffdfc,#ffece3);border-bottom:1px solid #efd1c6;padding:0 10px;display:flex;align-items:center;justify-content:space-between;color:#7a4a40;font-size:12px;font-weight:700}.workspace-toolbar>span,.workspace-toolbar div{display:flex;align-items:center;gap:7px}.workspace-toolbar button{border:1px solid #f2d3c7;border-radius:9px;background:#fff;color:#7a4a40;display:flex;align-items:center;gap:4px;padding:4px 8px;cursor:pointer;font-size:11px}.blockly-host{width:100%;height:100%;min-height:0}.blocklyToolboxDiv{border-right:1px solid #f0d7cd!important}.blocklyTreeRow{height:38px!important;line-height:38px!important;margin-bottom:4px!important;border-radius:0 18px 18px 0}.blocklyTreeLabel{font-family:Noto Sans TC,sans-serif!important;font-size:13px!important;font-weight:700!important}.blocklyFlyout{filter:drop-shadow(4px 0 5px rgba(120,76,54,.08))}.blocklyMainBackground{stroke:none!important}.blocklyScrollbarHandle{rx:5px}.hint-popover{position:absolute;z-index:80;right:20px;top:52px;width:min(360px,calc(100% - 40px));padding:14px;border-radius:14px;background:#fff8e6;border:1px solid #f2d48a;box-shadow:0 12px 28px #784c362e;display:flex;gap:10px;color:#7a6033}.hint-popover>svg{flex:0 0 auto;color:#e3a600}.hint-popover p{margin:0;font-size:13px;line-height:1.6}.hint-popover p strong{display:block;font-size:14px}.hint-popover button{margin-left:auto;align-self:flex-start;border:0;background:transparent;color:#7b6b3a;cursor:pointer}.mission-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;gap:12px;padding:7px 8px;background:linear-gradient(180deg,#ffe3d5,#ffd5c3);border-top:2px solid #efc4b5}.mission-copy{min-width:0;border-radius:14px;border:2px solid #f0b59d;background:linear-gradient(180deg,#fff6f1,#ffe6db);color:#8f5a48;display:flex;align-items:center;padding:8px 15px;box-shadow:inset 0 1px #ffffff59}.mission-icon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;margin-right:12px;background:#f598701f;color:#f18b6b}.mission-copy small{opacity:.78;font-weight:700}.mission-copy p{margin:2px 0 0;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.run-console{border:2px solid #efc4b5;border-radius:14px;padding:5px;background:linear-gradient(#fff6f1,#ffe7dc);display:grid;grid-template-columns:minmax(98px,auto) minmax(132px,auto);gap:5px;box-shadow:inset 0 0 0 2px #fff5ee}.run-console button{border:1px solid #efc4b5;border-radius:10px;cursor:pointer}.run-btn{color:#fff;background:linear-gradient(#f8a07b,#f28482);font-weight:900;letter-spacing:.08em;display:flex;align-items:center;justify-content:center;gap:7px;font-size:16px;box-shadow:inset 0 0 12px #ffffff3d}.run-btn span{color:#fff6dd;letter-spacing:-.25em;padding-right:4px}.run-btn.stop{color:#fff7f8;background:linear-gradient(#f59ca1,#eb7280)}.feedback-btn{color:#8f5a48;background:linear-gradient(#fffaf7,#ffe7dc);font-weight:900;display:flex;align-items:center;justify-content:center;gap:6px;padding:0 10px;white-space:nowrap;box-shadow:inset 0 0 10px #ffffff47}.feedback-btn svg{color:#f18b6b;flex:0 0 auto}.feedback-backdrop{z-index:5200}.feedback-card{position:relative;width:min(460px,92vw);border-radius:22px;padding:22px;background:linear-gradient(180deg,#fffaf7,#ffece3);border:4px solid #f1c1ad;box-shadow:0 24px 80px #784c363d,inset 0 0 0 3px #fff7f2;color:#7a4a40}.feedback-header{display:flex;gap:12px;align-items:center;margin-bottom:16px;padding-right:34px}.feedback-icon{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,#f9b58f,#f28482);box-shadow:0 8px 18px #f284823d}.feedback-header h2{margin:0;font-size:22px;line-height:1.2}.feedback-header p{margin:4px 0 0;color:#9a7a6d;font-size:13px}.feedback-field{display:grid;gap:6px;margin-top:12px;text-align:left}.feedback-field span{font-weight:900;font-size:13px;color:#7a4a40}.feedback-field input,.feedback-field textarea{width:100%;border:1px solid #efc4b5;border-radius:12px;background:#fffdfb;color:#5c4033;padding:10px 12px;font:inherit;font-size:14px;outline:none;box-shadow:inset 0 1px 2px #784c360a}.feedback-field textarea{resize:vertical;min-height:118px}.feedback-field input:focus,.feedback-field textarea:focus{border-color:#f28482;box-shadow:0 0 0 3px #f2848229}.feedback-status{margin-top:12px;border-radius:12px;padding:9px 11px;font-size:13px;font-weight:800}.feedback-status.success{color:#2f6f54;background:#e5f7ed;border:1px solid #bfe8cf}.feedback-status.error{color:#9d3c35;background:#ffe9e5;border:1px solid #f3b7ae}.feedback-actions{display:grid;grid-template-columns:1fr 1.2fr;gap:10px;margin-top:16px}.feedback-actions button{min-height:44px;border-radius:12px;font-weight:900;cursor:pointer}.feedback-actions button:disabled{opacity:.62;cursor:wait}.feedback-cancel{border:1px solid #efc4b5;color:#8f5a48;background:#fffaf7}.feedback-send{border:0;color:#fff;background:linear-gradient(#f8a07b,#f28482);box-shadow:0 4px #e47f60}.mobile-tabs{display:none}.drawer-backdrop,.modal-backdrop{position:fixed;z-index:5000;inset:0;background:#5e392952;backdrop-filter:blur(4px)}.level-drawer{width:min(390px,90vw);height:100%;min-height:0;background:#fff8f3;box-shadow:12px 0 40px #0003;animation:drawerIn .22s ease-out;display:flex;flex-direction:column;overflow:hidden}@keyframes drawerIn{0%{transform:translate(-100%)}}.level-drawer header{height:70px;min-height:70px;flex:0 0 70px;padding:0 16px;background:linear-gradient(135deg,#f5a97a,#f38b6d);color:#fff;display:flex;align-items:center;justify-content:space-between}.level-drawer header div{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px}.level-drawer header button{border:0;background:transparent;color:#fff;cursor:pointer}.level-list{flex:1 1 auto;min-height:0;padding:14px;display:grid;align-content:start;gap:10px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#efa98d #fff1ea}.level-list::-webkit-scrollbar{width:10px}.level-list::-webkit-scrollbar-track{background:#fff1ea;border-radius:999px}.level-list::-webkit-scrollbar-thumb{background:linear-gradient(#f6b091,#ef8f73);border:2px solid #fff1ea;border-radius:999px}.level-list::-webkit-scrollbar-thumb:hover{background:linear-gradient(#f39d7d,#e97f65)}.level-item{width:100%;min-height:70px;border:1px solid #f0d6ca;background:#fff;border-radius:14px;display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px;text-align:left;cursor:pointer;color:#7a4a40;box-shadow:0 3px 10px #784c360f}.level-item.active{border-color:#f59e84;box-shadow:0 0 0 3px #f59e8429}.level-item:disabled{opacity:.48;cursor:not-allowed}.level-number{width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,#f9bc8a,#f48d72);color:#fff;display:grid;place-items:center;font-weight:900}.level-copy strong,.level-copy small{display:block}.level-copy small{color:#9a7a6d;margin-top:2px}.mini-stars{display:flex;color:#ffc43b}.modal-backdrop{display:grid;place-items:center}.success-card{position:relative;width:min(420px,92vw);border-radius:24px;padding:74px 28px 24px;text-align:center;background:linear-gradient(180deg,#fffaf6,#ffece1);border:5px solid #f1c1ad;box-shadow:0 24px 80px #784c3633,inset 0 0 0 3px #fff7f2;overflow:visible;animation:cardIn .32s cubic-bezier(.2,.9,.3,1.25)}@keyframes cardIn{0%{transform:scale(.65);opacity:0}}.ribbon{position:absolute;left:50%;top:-22px;transform:translate(-50%);min-width:250px;padding:13px 35px;color:#fff;font-weight:900;font-size:24px;background:linear-gradient(#f59d7b,#f07f74);border-radius:10px 10px 20px 20px;box-shadow:0 7px #e06f69,0 10px 18px #0000002e}.modal-close{position:absolute;right:10px;top:12px;width:34px;height:34px;border:0;border-radius:50%;color:#8f5a48;background:#ffffffbf;cursor:pointer}.hero-bot{display:flex;justify-content:center;margin-top:-4px}.success-cat{width:96px;height:96px;object-fit:contain;filter:drop-shadow(0 10px 8px rgba(143,90,72,.12))}.stars-row{display:flex;justify-content:center;gap:5px;color:#d7c8c0;margin-top:-4px}.stars-row svg{width:42px;height:42px}.stars-row svg:nth-child(2){transform:translateY(-9px) scale(1.15)}.stars-row .earned{color:#ffbf22;filter:drop-shadow(0 2px 2px #cb9a00)}.success-card h2{margin:7px 0 4px;color:#7a4a40}.success-card p{margin:0 auto 15px;color:#8f756a;font-size:13px;max-width:320px}.reward-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.reward-grid span{background:#fff;border:1px solid #f0d6ca;border-radius:12px;padding:9px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:3px 7px;font-size:11px;color:#987b70;text-align:left}.reward-grid svg,.reward-icon{grid-row:1/3}.reward-grid svg{color:#f0a700}.reward-icon{width:12px;height:12px;object-fit:contain}.reward-grid strong{color:#7a4a40;font-size:15px}.next-level-btn{margin-top:16px;width:100%;min-height:48px;border:0;border-radius:12px;background:linear-gradient(#f9b58f,#f38d6f);color:#fff;font-weight:900;font-size:16px;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;box-shadow:0 5px #e47f60}.celebration-layer{position:absolute;inset:-70px -50px -45px;z-index:0;overflow:hidden;pointer-events:none}.success-card>:not(.celebration-layer):not(.ribbon):not(.modal-close){position:relative;z-index:2}.success-card .ribbon,.success-card .modal-close{z-index:3}.confetti,.flying-paw,.flying-can{position:absolute;opacity:0;pointer-events:none}.confetti{top:-10%;width:10px;height:18px;border-radius:3px;animation:confettiFall 2.4s ease-in-out infinite}.confetti-0{left:5%;background:#f28482;animation-delay:.05s;transform:rotate(12deg)}.confetti-1{left:14%;background:#ffd166;animation-delay:.38s}.confetti-2{left:23%;background:#84a59d;animation-delay:.16s}.confetti-3{left:33%;background:#ff9f68;animation-delay:.58s}.confetti-4{left:43%;background:#b8a1ff;animation-delay:.25s}.confetti-5{left:52%;background:#f7b267;animation-delay:.7s}.confetti-6{left:61%;background:#70d6ff;animation-delay:.1s}.confetti-7{left:70%;background:#ff70a6;animation-delay:.46s}.confetti-8{left:78%;background:#ffd670;animation-delay:.3s}.confetti-9{left:87%;background:#88d498;animation-delay:.62s}.confetti-10{left:94%;background:#ff9770;animation-delay:.2s}.confetti-11{left:38%;background:#f28482;animation-delay:.85s}@keyframes confettiFall{0%{opacity:0;transform:translateY(-20px) rotate(0)}12%{opacity:1}to{opacity:0;transform:translateY(520px) rotate(620deg)}}.flying-paw{font-size:25px;filter:drop-shadow(0 3px 3px rgba(120,76,54,.13));animation:pawBurst 1.65s cubic-bezier(.2,.8,.2,1) infinite}.flying-paw-0{left:12%;bottom:18%;animation-delay:.05s}.flying-paw-1{left:25%;bottom:8%;animation-delay:.35s}.flying-paw-2{left:42%;bottom:14%;animation-delay:.18s}.flying-paw-3{right:40%;bottom:9%;animation-delay:.55s}.flying-paw-4{right:23%;bottom:16%;animation-delay:.28s}.flying-paw-5{right:10%;bottom:7%;animation-delay:.7s}@keyframes pawBurst{0%{opacity:0;transform:translateY(10px) scale(.45) rotate(-16deg)}25%{opacity:.9}to{opacity:0;transform:translateY(-330px) translate(24px) scale(1.18) rotate(18deg)}}.flying-can{width:30px;height:30px;object-fit:contain;animation:canPop 2s ease-in-out infinite}.flying-can-0{left:5%;top:38%;animation-delay:.12s}.flying-can-1{right:6%;top:30%;animation-delay:.55s}.flying-can-2{right:15%;bottom:10%;animation-delay:.92s}@keyframes canPop{0%{opacity:0;transform:scale(.25) rotate(-18deg)}18%{opacity:1}55%{opacity:1;transform:translateY(-42px) scale(1) rotate(10deg)}to{opacity:0;transform:translateY(-85px) scale(.6) rotate(28deg)}}.success-card.celebrating .success-cat{animation:successCatBounce .8s ease-in-out infinite alternate}@keyframes successCatBounce{to{transform:translateY(-8px) rotate(1deg)}}.success-card.celebrating .stars-row svg{animation:starPop .7s cubic-bezier(.2,.9,.3,1.35) both}.success-card.celebrating .stars-row svg:nth-child(2){animation-delay:.15s}.success-card.celebrating .stars-row svg:nth-child(3){animation-delay:.3s}@keyframes starPop{0%{opacity:0;transform:scale(.2) rotate(-25deg)}to{opacity:1}}@media(max-width:980px){.topbar{grid-template-columns:52px minmax(132px,.85fr) minmax(178px,1fr) auto}.brand-button span,.top-actions button span,.progress-pill span{display:none}.main-grid{grid-template-columns:46% 54%}.map-grid-cell,.iso-cell,.crystal,.goal-portal,.robot-token{--tile-w: clamp(43px, 6vw, 58px)}.crystal img{width:20px;height:20px}.robot-avatar{width:51px;height:51px}}@media(max-width:720px),(orientation:portrait){html,body,#root{overflow:auto}.app-shell{min-height:0;height:var(--app-viewport-height, 100dvh);grid-template-rows:54px 42px minmax(0,1fr) 86px;border-width:3px}.topbar{grid-template-columns:42px minmax(96px,.9fr) minmax(132px,1fr) auto;padding:4px}.brand-button,.lesson-title{height:39px}.lesson-title small{display:none}.top-actions>button{padding:0 8px;min-height:39px}.visitor-stats{height:39px;grid-template-columns:18px 1fr 1px 1fr;gap:4px;padding:4px 6px}.visitor-stats small{font-size:9px}.visitor-stats b{font-size:13px}.visitor-stats>svg{width:15px;height:15px}.top-actions>button:nth-of-type(2),.progress-pill{display:none}.mobile-tabs{display:grid;grid-template-columns:1fr 1fr;background:#ffe5d7;padding:4px 8px;gap:5px}.mobile-tabs button{border:1px solid #efc4b5;border-radius:10px;background:#fff7f2;color:#7a4a40;display:flex;align-items:center;justify-content:center;gap:6px;font-weight:700}.mobile-tabs button.active{color:#fff;background:#f29a79}.mobile-tabs svg{width:17px}.main-grid{display:block;padding:3px}.stage-panel,.workspace-panel{display:none;height:100%;border-radius:12px}.stage-panel.mobile-active,.workspace-panel.mobile-active{display:block}.workspace-panel.mobile-active{display:grid}.game-stage{min-height:0}.mission-bar{grid-template-columns:minmax(0,1fr) auto;gap:5px;padding:5px}.mission-icon{display:none}.mission-copy{padding:6px 9px}.mission-copy p{font-size:12px;white-space:normal;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.run-console{grid-template-columns:minmax(82px,auto) minmax(108px,auto)}.run-btn{font-size:14px}.stage-label{top:52px;font-size:16px}.story-bubble{left:8px;right:8px;width:auto;bottom:8px;padding:10px 10px 11px}.story-bubble p{font-size:12px;line-height:1.5}.story-read-btn span{display:none}.story-read-btn{width:28px;padding:0}}@media(max-width:470px){.top-actions>button:nth-of-type(1){display:none}.visitor-stats small{display:none}.visitor-stats{grid-template-columns:16px 1fr 1px 1fr}.lesson-title strong{font-size:13px}.mission-bar{grid-template-columns:minmax(0,1fr) 108px}.run-console{grid-template-columns:1fr}}.axis-widget{display:none!important;visibility:hidden!important;pointer-events:none!important}.topbar:not(:has(.visitor-stats)){grid-template-columns:minmax(190px,.82fr) minmax(150px,.68fr) minmax(340px,1fr)}@media(max-width:980px){.topbar:not(:has(.visitor-stats)){grid-template-columns:52px minmax(132px,.85fr) auto}}@media(max-width:720px),(orientation:portrait){.topbar:not(:has(.visitor-stats)){grid-template-columns:42px minmax(96px,.9fr) auto}}@media(pointer:coarse)and (orientation:landscape)and (max-height:540px){html.web-browser,html.web-browser body,html.web-browser #root{height:var(--app-viewport-height, 100svh);overflow:hidden}html.web-browser .app-shell{height:var(--app-viewport-height, 100svh);min-height:0;border-width:3px;grid-template-rows:48px minmax(0,1fr) 62px;padding-bottom:calc(env(safe-area-inset-bottom,0px) + min(var(--browser-bottom-inset, 0px),72px))}html.web-browser .mobile-tabs{display:none}html.web-browser .main-grid{padding:3px 3px 0;gap:3px}html.web-browser .mission-bar{min-height:0;height:62px;padding:4px 6px;grid-template-columns:minmax(0,1fr) minmax(112px,auto)}html.web-browser .mission-copy{padding:5px 9px}html.web-browser .mission-icon{width:32px;height:32px;margin-right:8px}html.web-browser .mission-copy small{font-size:10px}html.web-browser .mission-copy p{font-size:12px;line-height:1.35;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}html.web-browser .run-console{min-width:112px;padding:4px}html.web-browser .run-btn{min-height:46px;font-size:14px}html.web-browser .topbar{min-height:0;padding:4px}html.web-browser .brand-button,html.web-browser .lesson-title,html.web-browser .visitor-stats,html.web-browser .top-actions>button,html.web-browser .progress-pill{height:39px;min-height:39px}}@media(max-width:720px),(orientation:portrait){.feedback-btn{font-size:12px;padding:0 8px}}@media(pointer:coarse)and (orientation:landscape)and (max-height:540px){html.web-browser .run-console{grid-template-columns:minmax(78px,auto) minmax(108px,auto);min-width:196px}html.web-browser .feedback-btn{min-height:46px;font-size:12px;padding:0 7px}html.web-browser .feedback-btn span{display:inline}html.web-browser .feedback-card{width:min(430px,92vw);max-height:calc(var(--app-viewport-height, 100svh) - 24px);overflow:auto;padding:16px}}.robot-token .robot-sprite{animation:none!important;transform:translateY(-8px)}.timer-pill{height:43px;min-width:78px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 9px;color:#8f5a48;background:linear-gradient(180deg,#fffaf7,#ffe5d7);font-weight:950;font-variant-numeric:tabular-nums;box-shadow:inset 0 1px #ffffff61,0 2px 4px #784c361a}.leaderboard-nav-btn{background:linear-gradient(#fff6d7,#ffd989)!important;color:#8b5b14!important;box-shadow:inset 0 1px #ffffff75,0 3px #e7b74f!important}.visitor-stats{grid-template-columns:20px minmax(46px,.8fr) 1px minmax(54px,.9fr);gap:5px;padding:5px 7px}.visitor-stats small{font-size:9px}.visitor-stats b{font-size:14px}.traveler-backdrop,.leaderboard-backdrop{z-index:5600}.traveler-card,.leaderboard-card{position:relative;width:min(520px,92vw);border-radius:24px;padding:24px;background:linear-gradient(180deg,#fffaf7,#ffece3);border:4px solid #f1c1ad;box-shadow:0 24px 80px #784c363d,inset 0 0 0 3px #fff7f2;color:#7a4a40}.traveler-card{text-align:center}.traveler-icon,.leaderboard-icon{width:58px;height:58px;border-radius:20px;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,#f9b58f,#f28482);box-shadow:0 10px 22px #f2848242}.traveler-icon{margin:0 auto 12px}.traveler-card h2,.leaderboard-card h2{margin:0;font-size:24px;color:#7a4a40}.traveler-card p,.leaderboard-header p{margin:8px 0 0;color:#9a7a6d;line-height:1.55;font-size:14px}.traveler-field{display:grid;gap:8px;margin:18px 0 12px;text-align:left}.traveler-field span{font-weight:950;font-size:14px}.traveler-field input{width:100%;border:1px solid #efc4b5;border-radius:14px;background:#fffdfb;color:#5c4033;padding:12px 14px;font:inherit;font-size:16px;outline:none}.traveler-field input:focus{border-color:#f28482;box-shadow:0 0 0 3px #f2848229}.traveler-error{color:#9d3c35;background:#ffe9e5;border:1px solid #f3b7ae;border-radius:12px;padding:8px 10px;font-size:13px;font-weight:800;margin-bottom:10px}.traveler-start,.leaderboard-close{min-height:46px;border-radius:14px;border:0;color:#fff;background:linear-gradient(#f8a07b,#f28482);box-shadow:0 4px #e47f60;font-weight:950;padding:0 18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}.leaderboard-header{display:flex;align-items:center;gap:14px;padding-right:40px;margin-bottom:16px}.leaderboard-table{display:grid;gap:6px;margin:14px 0 18px}.leaderboard-row{display:grid;grid-template-columns:48px minmax(92px,1fr) 56px 64px 62px 70px 124px;align-items:center;gap:8px;min-height:42px;padding:7px 10px;border-radius:14px;background:#fffaf7;border:1px solid #f2d1c6;font-size:13px;font-weight:850}.leaderboard-row.head{color:#fff;background:linear-gradient(135deg,#4d94ff,#2f7df0);border:0;font-size:12px}.rank-badge{width:30px;height:30px;display:grid;place-items:center;border-radius:999px;background:#ffe8a4;color:#8b5b14;font-weight:950}.leader-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.leader-stars{display:inline-flex;align-items:center;gap:4px;color:#d49100}.leaderboard-empty{padding:22px;text-align:center;border-radius:18px;background:#fffaf7;border:1px dashed #efc4b5;color:#8f5a48;font-weight:850;margin:12px 0 18px}@media(max-width:980px){.timer-pill{height:39px;min-width:70px;font-size:12px;padding:0 7px}.leaderboard-nav-btn{padding:0 8px!important}.visitor-stats{grid-template-columns:16px 1fr 1px 1fr;padding:4px 5px}}@media(max-width:720px),(orientation:portrait){.timer-pill,.leaderboard-nav-btn span{display:none}.leaderboard-card,.traveler-card{padding:18px;max-height:calc(var(--app-viewport-height, 100dvh) - 22px);overflow:auto}.leaderboard-row{grid-template-columns:34px minmax(62px,1fr) 42px 48px 48px 50px 104px;gap:5px;padding:6px 7px;font-size:12px}}.leader-cleared{font-weight:950;color:#3b82f6;white-space:nowrap}.traveler-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.traveler-guest{min-height:46px;border-radius:14px;border:0;color:#6f4a2f;background:linear-gradient(#fff6d7,#ffd989);box-shadow:0 4px #e7b74f;font-weight:950;padding:0 18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}.traveler-guest:active{transform:translateY(2px);box-shadow:0 2px #e7b74f}@media(max-width:520px){.traveler-actions{grid-template-columns:1fr}}.steam-score-panel{margin:14px auto 4px;width:min(520px,92%);border-radius:18px;padding:12px;background:linear-gradient(180deg,#fffffff5,#fff4ebeb);border:1px solid rgba(229,179,149,.75);box-shadow:inset 0 1px #ffffffa6}.steam-score-title{font-weight:950;color:#7a4a40;margin-bottom:8px;display:flex;align-items:center;justify-content:center}.steam-score-list{display:grid;gap:6px}.steam-score-row{display:grid;grid-template-columns:96px 1fr 56px;align-items:center;gap:8px;font-size:12px;font-weight:850;color:#785044}.steam-score-row i{height:8px;border-radius:999px;overflow:hidden;background:#f1d8ce}.steam-score-row i b{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#70c1ff,#f28482)}.leader-steam{display:inline-grid;place-items:center;min-width:38px;min-height:26px;border-radius:999px;background:#e8f4ff;color:#1d6fd1;font-weight:950}@media(max-width:720px),(orientation:portrait){.steam-score-row{grid-template-columns:82px 1fr 48px;font-size:11px}}.leaderboard-wide{width:min(920px,96vw)}.certificate-open-btn{min-height:34px;border:0;border-radius:999px;background:linear-gradient(135deg,#4d94ff,#7a9cff);color:#fff;font-weight:900;font-size:12px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;box-shadow:0 3px #2f7df0;white-space:nowrap}.certificate-open-btn:active{transform:translateY(2px);box-shadow:0 1px #2f7df0}.certificate-backdrop{align-items:flex-start;padding:16px;overflow:auto}.certificate-modal{position:relative;width:min(1100px,96vw);border-radius:28px;padding:22px;background:linear-gradient(180deg,#fffaf7,#ffece3);border:4px solid #f1c1ad;box-shadow:0 24px 80px #784c363d,inset 0 0 0 3px #fff7f2;color:#7a4a40}.certificate-scroll{margin-top:10px}.certificate-svg{width:100%;height:auto;display:block;border-radius:26px;box-shadow:0 12px 28px #784c361a;background:#fff}.certificate-actions{display:flex;justify-content:center;gap:10px;margin-top:16px;flex-wrap:wrap}.certificate-actions .leaderboard-close,.certificate-actions .traveler-guest{min-width:180px}.certificate-mobile-card{display:none;border-radius:22px;background:linear-gradient(180deg,#fffdfb,#fff4ef);border:1px solid #efcdbd;padding:18px}.certificate-mobile-title{text-align:center;font-size:22px;font-weight:950;color:#7a4a40}.certificate-mobile-subtitle{text-align:center;margin-top:6px;color:#9a7a6d;font-size:13px;font-weight:700}.certificate-mobile-name{text-align:center;margin-top:14px;font-size:26px;font-weight:950;color:#5d4038}.certificate-mobile-meta{display:grid;gap:8px;margin:16px 0 18px;padding:14px;border-radius:18px;background:#fffaf7;border:1px solid #efdbcf;color:#7a4a40;font-size:14px;font-weight:800}.certificate-mobile-meta strong{color:#2f4050}.certificate-radar{width:100%;height:auto;display:block}@media(max-width:1100px){.leaderboard-wide{width:min(840px,96vw)}}@media(max-width:720px),(orientation:portrait){.leaderboard-wide{width:min(98vw,98vw)}.leaderboard-row{grid-template-columns:32px minmax(56px,1fr) 38px 44px 46px 48px 88px;gap:4px;font-size:11px}.certificate-open-btn{min-height:30px;font-size:11px;padding:0 7px}.certificate-modal{width:min(98vw,98vw);padding:16px}.certificate-svg{display:none}.certificate-mobile-card{display:block}}.certificate-backdrop{z-index:2147483000!important;position:fixed;inset:0;align-items:flex-start;padding:12px;overflow:auto;background:#46281c85}.certificate-modal{z-index:2147483001!important;width:min(1180px,98vw);max-height:calc(var(--app-viewport-height, 100dvh) - 24px);overflow:auto}.certificate-svg{aspect-ratio:297 / 210;width:100%;max-height:calc(var(--app-viewport-height, 100dvh) - 132px);object-fit:contain;background:#fffaf7}.certificate-actions{position:sticky;bottom:0;z-index:5;padding:10px 0 0;background:linear-gradient(180deg,#ffece300,#ffece3 45%)}.certificate-modal .modal-close{z-index:12}@media(min-width:721px)and (orientation:landscape){.certificate-svg{display:block!important}.certificate-mobile-card{display:none!important}}.certificate-svg text{paint-order:stroke}
