:root{font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;color:#44433c;background:#f4f0e8;font-synthesis:none;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 70%,#fffaf0,transparent 75%),#f4f0e8;min-height:100dvh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.38;cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #207c81;outline-offset:3px}button{border:1px solid #c9c0af;background:#f8f5ee;border-radius:9px;min-height:44px;padding:9px 15px;box-shadow:0 2px 2px #534b3420}.app{max-width:710px;padding:22px 30px 24px;margin:auto}header{display:flex;align-items:center;justify-content:space-between;gap:12px}.wordmark{font-size:20px;letter-spacing:3px;font-weight:550;text-decoration:none;color:inherit}.wordmark span{display:block;font-size:11px;letter-spacing:1px;margin-top:7px;color:#8a8475}.icon-button{font-size:11px;box-shadow:none;padding:7px;min-width:50px}.level-tabs{display:flex;gap:7px;margin-top:23px}.level-tabs button{flex:1;font-size:12px;min-height:40px;border-color:transparent;box-shadow:none;background:#e9e4d9;color:#827b6d}.level-tabs button[aria-current=true]{background:#474841;color:#fff8e7}.level-info{display:flex;justify-content:space-between;align-items:center;margin-top:23px}.eyebrow{font-size:10px;letter-spacing:2px;color:#8c8167;margin:0 0 6px}h1{font-size:21px;line-height:1.35;letter-spacing:.2px;margin:0;font-weight:550}.counter{display:flex;gap:6px;align-items:baseline;margin-left:12px}.counter strong{font-size:30px;font-weight:450;color:#ad802e;font-variant-numeric:tabular-nums}.counter span{font-size:10px;color:#888170}.instruction{font-size:12px;line-height:1.8;margin:12px 0 13px;color:#7b7467;min-height:43px}.stage{position:relative;padding-left:24px;padding-top:29px;--progress:0}.board-shell{border:1px solid #bfb6a4;border-radius:12px;padding:6px;background:linear-gradient(135deg,#e1dcd1,#f7f2e7);box-shadow:inset 0 1px 3px #81735c40,0 3px 7px #75654814}.board-viewport{overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;border-radius:7px;touch-action:pan-x pan-y;max-height:none}.board{position:relative;width:100%;aspect-ratio:1;isolation:isolate;background:#dfdbd1;border-radius:6px;transition:background .4s}.board[data-zoom=true]{width:max(100%,var(--zoom-size))}.slot{position:absolute;border-radius:6px;background:linear-gradient(145deg,#ded9cd,#eae6db);box-shadow:inset 1px 2px 3px #756b5828;border:1px solid #bfb6a332}.slot.empty{background:linear-gradient(135deg,#fff9e9,#f5e9c9);box-shadow:inset 0 1px 3px #a48c5430;border-color:#cfbb892b}.tile{position:absolute;display:flex;align-items:center;justify-content:center;min-height:0;min-width:0;padding:0;border:1px solid #b8b3a7;border-radius:8px;background:linear-gradient(145deg,#f8f5ee,#e7e4dc 60%,#d5d2c9);box-shadow:inset 0 1px 2px #fff,0 3px #9c9d93,0 4px 3px #4d4e4933;z-index:2;touch-action:pan-x pan-y;user-select:none;-webkit-user-select:none;transition:box-shadow .15s,filter .15s;overflow:visible}.tile:hover{filter:brightness(1.04)}.tile:active{box-shadow:inset 0 1px 2px #fff,0 1px #92958c;filter:brightness(1.08)}.tile svg{width:45%;height:45%;max-width:49px;max-height:49px;fill:#424640;filter:drop-shadow(0 1px 0 #fff9);pointer-events:none}.tile.long svg{width:34%;height:45%}.tile.vertical svg{width:45%;height:34%}.tile.hub{background:linear-gradient(145deg,#e9d8a5,#c4a464);border-color:#a17f3a;box-shadow:inset 0 1px 2px #fff3c2,0 3px #8e7540,0 4px 5px #68531c40;font-size:clamp(24px,6vw,47px);color:#6b562c}.tile.hint{outline:3px solid #c5932e;outline-offset:1px;animation:breathe 1s ease-in-out infinite alternate}.tile.affected{outline:2px solid #c49843;outline-offset:-3px}.tile.blocked{outline:2px solid #a26750;outline-offset:-2px}.tile.link-preview{outline:2px solid #388687;outline-offset:-2px}.badge{position:absolute;right:1px;top:1px;border-radius:5px;background:#387e80;color:#fff;font-size:9px;line-height:15px;padding:0 3px;letter-spacing:.1px;pointer-events:none;border:1px solid #ffffff80}.barrier{position:absolute;background:linear-gradient(140deg,#535952,#343933);border:1px solid #33392e;box-shadow:inset 1px 2px 4px #0007;border-radius:7px;display:grid;place-items:center}.barrier:after{content:"";width:44%;height:5px;background:#2b302b;box-shadow:0 1px #727869}.hub-range{position:absolute;border:2px dashed #b28a40;border-radius:8px;pointer-events:none;z-index:3;opacity:.75}.board-caption{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#938773;margin:9px 0 0;gap:8px}.board-caption button{min-height:44px;font-size:11px;box-shadow:none;border:0;background:none;padding:5px 0 5px 8px}.route{position:absolute;left:7px;top:10px;bottom:92px;width:2px;background:#dbd4c2}.route-fill{height:calc(var(--progress)*100%);background:#c49d4c;width:100%;transition:height .5s}.milestone{position:absolute;left:-3px;width:8px;height:8px;border-radius:50%;background:#e7dfca;border:1px solid #c9b784}.m1{top:25%}.m2{top:50%}.m3{top:75%}.worker{position:absolute;width:27px;height:57px;left:-13px;top:0;transform:translateY(-21px);transition:top .5s cubic-bezier(.25,.8,.25,1),opacity .4s;z-index:4;pointer-events:none}.worker-art{display:block;width:100%;height:100%;mix-blend-mode:multiply}.escape{display:flex;align-items:center;justify-content:space-between;padding:9px 5px 0;gap:18px}.escape-copy{display:flex;flex-direction:column;gap:5px;flex:1;font-size:10px;color:#8b816d}.escape-copy strong{font-size:23px;font-weight:400;color:#ad8438;font-variant-numeric:tabular-nums}.progress-track{display:block;max-width:220px;height:3px;background:#e1d8c5;border-radius:4px;overflow:hidden}.progress-track i{display:block;background:#c2a059;height:100%;width:0;transition:width .4s}.elevator{width:94px;flex-shrink:0;position:relative;padding:5px 9px 0;background:linear-gradient(120deg,#c6c1b5,#eeebe3 48%,#b7b1a3);border:1px solid #aaa18f;box-shadow:0 3px #a59b87,0 5px 9px #76624120}.floor{width:43px;margin:0 auto 4px;text-align:center;background:#3d3c36;font-size:12px;color:#d9ae57;line-height:18px;box-shadow:inset 0 1px 2px #000}.floor span{font-size:8px}.door-frame{height:77px;background:#78623a;border:3px solid #8f8b7f;position:relative;overflow:hidden}.door-leaf{position:absolute;top:0;bottom:0;width:50%;background:linear-gradient(100deg,#c7c8c0,#aeafa6 85%,#dbd9cb);transition:transform .65s ease-in-out;border:1px solid #918f82;z-index:1}.door-leaf.left{left:0}.door-leaf.right{right:0}.door-light{position:absolute;inset:0;background:linear-gradient(#fff9d4,#eec774);opacity:0;transition:opacity .5s}.elevator.warm .door-light{opacity:1}.elevator.warm{box-shadow:0 0 25px #e8bb5850}.elevator.warm .door-leaf.left{transform:translate(-6%)}.elevator.warm .door-leaf.right{transform:translate(6%)}.elevator.open .door-leaf.left{transform:translate(-100%)}.elevator.open .door-leaf.right{transform:translate(100%)}.status{min-height:42px;font-size:12px;line-height:1.7;color:#827252;margin:15px 0 8px;padding-left:24px}.status.combo{color:#277779;font-weight:600}.actions{display:flex;gap:9px;position:sticky;bottom:0;background:#f5f0e8ed;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:9px 0 12px;z-index:5}.actions button{flex:1;min-height:49px;background:linear-gradient(#fcf9f2,#eae2d2);box-shadow:inset 0 1px 1px #fff,0 3px #c1b6a2;font-size:13px}.actions b{font-size:23px;margin-right:9px;vertical-align:-2px;font-weight:400}.rules{margin-top:9px;border-top:1px solid #ded5c4;padding:12px 4px;color:#8b816d;font-size:11px;line-height:1.9}.rules summary{cursor:pointer;min-height:35px}.rules p{margin:7px 0}footer{text-align:center;font-size:9px;color:#aaa18e;letter-spacing:1px;margin-top:18px}dialog{border:1px solid #c8ba9c;border-radius:16px;background:#faf5e8;padding:32px 25px;width:min(360px,90vw);text-align:center;box-shadow:0 15px 80px #3f382b30;color:#575042}dialog::backdrop{background:#3f3a3160;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog h2{letter-spacing:3px;font-size:23px;font-weight:500}dialog p{font-size:13px}dialog button{display:block;width:100%;margin-top:10px}dialog .primary{background:#4e5449;color:#fff8e9;border-color:#4e5449}dialog .text-button{border:0;box-shadow:none;background:none;font-size:11px}.flight{position:fixed!important;margin:0!important;z-index:100;pointer-events:none!important;transition:none!important}.paper{position:fixed;width:6px;height:3px;background:#c9aa60;z-index:99;pointer-events:none}@keyframes breathe{to{outline-color:#e9c97e;filter:brightness(1.08)}}@media(max-width:600px){.app{padding:16px 12px 18px}.wordmark{font-size:17px;letter-spacing:2px}.level-tabs{margin-top:17px}.level-info{margin-top:18px}h1{font-size:18px}.instruction{font-size:11px;margin-bottom:6px}.stage{padding-top:20px;padding-left:20px}.board-shell{padding:4px;border-radius:9px}.tile{border-radius:6px}.slot{border-radius:5px}.badge{font-size:8px;line-height:12px;right:0;top:0;padding:0 2px}.board-viewport.zoomed{max-height:58dvh}.counter strong{font-size:27px}.route{left:5px;bottom:96px}.worker{width:23px;height:49px;left:-11px}.status{padding-left:20px}.escape{padding-top:3px}.elevator{width:79px}.door-frame{height:65px}.floor{line-height:16px}.actions{padding-bottom:max(12px,env(safe-area-inset-bottom))}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.board{background:linear-gradient(130deg,#f7f4eb,#eee9db);transition:background .4s;overflow:visible}.board-shell{background:#e9e3d5;padding:5px}.snake-canvas{width:100%;height:100%;display:block;overflow:hidden;touch-action:pan-x pan-y}.grid-dot{fill:#9e9780;opacity:.17}.snake{color:#414b45;cursor:pointer;outline:none;touch-action:pan-x pan-y}.snake-body,.snake-shadow,.snake-hit{fill:none;stroke-linecap:round;stroke-linejoin:round}.snake-body{stroke:currentColor;stroke-width:.19}.snake-shadow{stroke:#b0a48955;stroke-width:.24;transform:translate(.02px,.035px)}.snake-head{fill:currentColor;stroke:none}.snake-hit{stroke:transparent;stroke-width:.74;pointer-events:stroke}.snake.hover,.snake.selected,.snake:focus-visible{color:#327f7d}.snake.hint{color:#b58a33;animation:none}.snake.hint .snake-body,.snake.selected .snake-body,.snake:focus-visible .snake-body{stroke-width:.25}.snake.blocked{color:#aa6650}.snake-flight{position:fixed;inset:0;width:100vw;height:100vh;z-index:100;pointer-events:none;overflow:visible}.snake-flight .snake-body{stroke-linejoin:round;stroke-linecap:round}.board-caption{flex-wrap:wrap}.board-viewport.zoomed{max-height:62dvh}.level-tabs button{font-size:11px}.instruction{max-width:570px}.actions button{min-height:49px}.status{min-height:44px}body{background:radial-gradient(ellipse at 50% 65%,#fffaed,transparent 75%),#f4f0e8}@media(max-width:600px){.app{padding-left:10px;padding-right:10px}.stage{padding-left:16px}.board-shell{padding:3px}.route{left:3px}.worker{width:21px;height:45px;left:-10px}.wordmark{font-size:16px}.wordmark span{font-size:10px}.level-tabs button{padding-left:3px;padding-right:3px;font-size:10px}.instruction{font-size:11px;line-height:1.6}.status{font-size:11px}.board-viewport.zoomed{max-height:57dvh}.snake-hit{stroke-width:.8}}.board{background:linear-gradient(130deg,#dcd5c6,#eee4cf)}.empty-cell{fill:#f4ebd6;stroke:#bdaf9540;stroke-width:.025}.cell-depth{fill:#9d9b8d;pointer-events:all}.cell-face{stroke:#b4afa1;pointer-events:all}.cell-rim{fill:none;stroke:#fffcf0;pointer-events:none;opacity:.85}.snake-body{stroke-width:.14}.snake-shadow{stroke-width:.17;transform:translate(.015px,.023px);stroke:#918b7759}.snake-head,.snake-tail{fill:currentColor;pointer-events:none}.snake-body,.snake-shadow{pointer-events:none}.snake{color:#444940}.snake.hover,.snake:focus-visible{color:#303932}.snake.hover .cell-face,.snake:focus-visible .cell-face,.snake.hint .cell-face{stroke:#7d735b;stroke-width:.05}.snake.hint{color:#363e36}.snake.hint .snake-body{stroke-width:.17}.snake.blocked .cell-face{stroke:#9b6e59;stroke-width:.05}.snake-flight{color:#444940}.snake-flight .cell-depth{pointer-events:none}.snake-canvas{border-radius:5px}.board-shell{padding:4px;background:linear-gradient(135deg,#d0c8b8,#ece7db);border-color:#aca391;box-shadow:inset 0 1px 2px #fff8,0 4px 1px #b5a992,0 7px 12px #77633c20}.board-viewport{border-radius:4px}.board-viewport.zoomed{max-height:65dvh}.board-caption{margin-top:11px}.instruction{min-height:0}@media(max-width:600px){.board-shell{padding:3px}.board-viewport.zoomed{max-height:57dvh}}.snake-canvas{height:auto;aspect-ratio:1}.snake-flight{inset:0 auto auto 0}.zoom-controls{display:flex;align-items:center;gap:4px;margin-left:auto}.board-caption .zoom-controls button{min-width:44px;min-height:44px;padding:6px;border:1px solid #c9c0af;background:#f8f5ee;font-size:22px}.board-caption .zoom-controls #zoom-fit{font-size:12px;padding:6px 10px}#zoom-value{min-width:42px;text-align:center;font-variant-numeric:tabular-nums;font-size:11px}.cell-target{pointer-events:all}.selection-layer,.selection-layer *,.selection-cell{pointer-events:none}.selection-cell{fill:#ba964819;stroke:#937028;stroke-width:.045;stroke-linejoin:round}.selection-blocked{fill:#a0604219;stroke:#a06042}.snake.is-selected{color:#5d4a28}.snake.hover .cell-face,.snake:focus-visible .cell-face,.snake.hint .cell-face,.snake.blocked .cell-face{stroke:#b4afa1;stroke-width:.019}.snake.hint .snake-body,.snake.selected .snake-body,.snake:focus-visible .snake-body{stroke-width:.14}.snake:focus,.snake:focus-visible{outline:none}.board-viewport,.snake-canvas,.snake,.cell-target{touch-action:none}.board-viewport{overflow-anchor:none;user-select:none;-webkit-user-select:none}.snake-flight{position:absolute;inset:0;width:100%;height:100%;z-index:2;overflow:hidden;border-radius:5px;pointer-events:none}.snake-flight *{pointer-events:none!important}.game-tools{border:0;padding:0;margin:8px 0 0;font-size:12px;line-height:1.5}.game-tools summary{min-height:44px;min-width:64px;width:max-content;margin-left:auto;padding:12px 10px;cursor:pointer;color:#626957;border-radius:8px}.game-tools summary:focus-visible{outline:2px solid #a87b32;outline-offset:2px}.tool-actions{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0 8px}.tool-actions button{flex:1;min-height:44px;font-size:12px;box-shadow:none}.tool-actions b{font-weight:400;margin-right:6px}
