:root{--bg: #2b2f42;--panel: rgba(20, 22, 34, .82);--panel-border: rgba(255, 255, 255, .1);--text: #eef0f7;--muted: #a7abc0;--accent: #f4d35e;--accent-2: #9b7cd4;--danger: #e0655b;--fill: rgba(255, 255, 255, .06);--fill-hover: rgba(255, 255, 255, .14);--fill-active: rgba(244, 211, 94, .16);--ease: cubic-bezier(.2, .7, .3, 1);--radius: 12px;--shadow: 0 8px 28px rgba(0, 0, 0, .35);font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);-webkit-user-select:none;user-select:none}#app{position:fixed;top:0;right:0;bottom:0;left:0}#scene{display:block;width:100%;height:100%;touch-action:none}#ui{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}#ui button,#ui .edit-dock,#ui .controls,#ui .hud-info{pointer-events:auto}.hud-info{position:absolute;top:max(12px,env(safe-area-inset-top));left:50%;transform:translate(-50%);display:flex;align-items:baseline;flex-wrap:nowrap;white-space:nowrap;gap:8px;max-width:min(94vw,640px);padding:6px 16px;background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hud-info b{font-size:15px;flex:0 0 auto}.hud-info span{font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis}.hud-intro{position:absolute;top:calc(max(12px,env(safe-area-inset-top)) + 44px);left:50%;transform:translate(-50%);max-width:min(92vw,640px);padding:10px 16px;background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;font-size:14px;line-height:1.4;text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hud-banner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:22px 34px;border-radius:18px;text-align:center;background:var(--panel);border:2px solid var(--panel-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 12px 40px #0006;animation:banner-pop .32s var(--ease)}@keyframes banner-pop{0%{opacity:0;transform:translate(-50%,-46%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.hud-banner.win{border-color:var(--accent)}.hud-banner.lose{border-color:var(--danger)}.banner-title{font-size:26px;font-weight:700}.banner-sub{margin-top:6px;font-size:14px;color:var(--muted)}.edit-dock{position:absolute;left:max(12px,env(safe-area-inset-left));top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:10px;max-height:calc(100vh - 120px)}.toolbar{display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.toolbar.disabled{opacity:.4}.edit-actions{display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.tool-btn{position:relative;min-width:64px;min-height:52px;padding:6px 10px;display:flex;flex-direction:column;align-items:center;gap:2px;border:1px solid var(--panel-border);border-radius:10px;background:var(--fill);color:var(--text);font-size:13px;cursor:pointer;transition:transform .08s var(--ease),border-color .12s,background .12s}.tool-btn:hover{background:var(--fill-hover)}.tool-btn:active{transform:scale(.96)}.tool-btn.selected{border-color:var(--accent);background:var(--fill-active)}.tool-btn.depleted{opacity:.4}.tool-count{font-size:12px;font-weight:700;color:var(--accent)}.controls{position:absolute;bottom:max(14px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:10px 14px;background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:min(96vw,520px);min-height:72px}.ctrl-btn{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;border:1px solid var(--panel-border);border-radius:10px;background:var(--fill);color:var(--text);font-size:15px;cursor:pointer;transition:transform .08s var(--ease),background .12s,border-color .12s}.ctrl-btn:hover{background:var(--fill-hover)}.ctrl-btn:active{transform:scale(.96)}.ctrl-btn:disabled,.ctrl-btn.disabled{opacity:.35;cursor:default}.ctrl-btn:disabled:hover,.ctrl-btn.disabled:hover{background:var(--fill)}.ctrl-btn.primary{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1;min-height:50px;padding:0 22px;background:var(--accent);color:#1a1c2c;font-size:16px;font-weight:700;border-color:transparent;box-shadow:0 6px 18px #f4d35e47,0 0 0 6px var(--bg)}.ctrl-btn.primary:hover{background:#f7dc78}.ctrl-btn.primary:active{transform:translate(-50%,-50%) scale(.96)}.controls .ctrl-btn.restart{order:-1;margin-right:auto}.ctrl-btn.subtle{min-height:36px;padding:0 10px;font-size:12px;color:var(--muted);background:transparent;border-color:transparent;opacity:.7}.ctrl-btn.subtle:hover{background:var(--fill);opacity:1}.ctrl-btn.active{border-color:var(--accent);background:var(--fill-active);color:var(--accent)}.ctrl-btn.danger:hover,.ls-reset:hover,.st-reset:hover{background:#e0655b29;border-color:var(--danger);color:var(--text);opacity:1}.ctrl-kbd{font-size:11px;font-weight:600;line-height:1;padding:3px 5px;color:var(--muted);background:#ffffff14;border:1px solid var(--panel-border);border-radius:5px;font-family:inherit}.ctrl-btn.primary .ctrl-kbd{color:#3a2f10;background:#00000024;border-color:#0000002e}@media(hover:none),(pointer:coarse){.ctrl-kbd{display:none}}.level-select{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:center;justify-content:center;background:#0a0b1299;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:auto}.ls-panel{width:min(92vw,560px);max-height:84vh;display:flex;flex-direction:column;padding:16px 18px;background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;box-shadow:0 16px 48px #00000080}.ls-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:18px}.ls-close{width:32px;height:32px;border:none;border-radius:8px;background:#ffffff14;color:var(--text);font-size:16px;cursor:pointer}.ls-close:hover{background:#ffffff29}.ls-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;overflow-y:auto;padding:2px}.ls-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px;min-height:72px;border:1px solid var(--panel-border);border-radius:12px;background:#ffffff0f;color:var(--text);text-align:left;cursor:pointer;transition:transform .08s,background .12s,border-color .12s}.ls-card:hover:not(:disabled){background:#ffffff24;transform:translateY(-1px)}.ls-card .ls-num{font-size:13px;font-weight:700}.ls-card .ls-name{font-size:12px;color:var(--muted)}.ls-card .ls-status{align-self:flex-end;margin-top:auto;font-size:14px}.ls-card.cleared{border-color:#5ab0a880}.ls-card.current{border-color:var(--accent);background:#f4d35e24}.ls-card.locked{opacity:.4;cursor:default}.ls-footer{margin-top:14px;display:flex;justify-content:center}.ls-reset{padding:6px 14px;border:1px solid var(--panel-border);border-radius:8px;background:transparent;color:var(--muted);font-size:12px;cursor:pointer;opacity:.7}.settings{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:center;justify-content:center;background:#0a0b1299;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:auto}.st-panel{width:min(92vw,380px);display:flex;flex-direction:column;padding:16px 18px;background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;box-shadow:0 16px 48px #00000080}.st-panel:focus,.ls-panel:focus{outline:none}.st-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:18px}.st-close{width:32px;height:32px;border:none;border-radius:8px;background:#ffffff14;color:var(--text);font-size:16px;cursor:pointer}.st-close:hover{background:#ffffff29}.st-row{display:flex;align-items:center;justify-content:space-between;padding:12px 4px;font-size:15px;cursor:pointer}.st-check{width:20px;height:20px;accent-color:var(--accent);cursor:pointer}.st-footer{margin-top:14px;display:flex;justify-content:center}.st-reset{padding:6px 14px;border:1px solid var(--panel-border);border-radius:8px;background:transparent;color:var(--muted);font-size:12px;cursor:pointer;opacity:.7}@media(max-width:900px){.edit-dock{left:8px;right:8px;top:auto;bottom:calc(72px + env(safe-area-inset-bottom));transform:none;max-height:none;flex-direction:row;align-items:stretch;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.edit-dock::-webkit-scrollbar{display:none}.toolbar,.edit-actions{flex:0 0 auto;flex-direction:row;align-items:center}.tool-btn{min-width:56px;min-height:48px;font-size:12px}.edit-actions .ctrl-btn{min-height:48px}.controls{bottom:max(8px,env(safe-area-inset-bottom));left:8px;right:8px;transform:none;width:auto;overflow:visible;gap:8px;padding:8px 10px;min-height:64px}.ctrl-btn{flex:0 0 auto;padding:0 12px;font-size:14px}.ctrl-btn.primary{min-height:48px}.hud-info{top:max(8px,env(safe-area-inset-top));padding:6px 16px;max-width:calc(100vw - 20px)}.hud-info b{font-size:14px}.hud-info span{font-size:12px}.hud-intro{font-size:13px;top:calc(max(8px,env(safe-area-inset-top)) + 40px);max-width:calc(100vw - 24px)}.ls-grid{grid-template-columns:repeat(2,1fr);gap:8px}.ls-panel{width:calc(100vw - 24px);max-height:80vh;padding:14px}}@media(max-width:420px){.tool-btn{min-width:48px;min-height:44px;font-size:11px;padding:4px 6px}.edit-actions .ctrl-btn,.ctrl-btn{padding:0 10px;font-size:13px}.ls-grid{grid-template-columns:1fr}}.compass{position:absolute;top:14px;right:14px;width:68px;height:68px;border-radius:50%;background:var(--panel);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:5;pointer-events:none;font-size:13px;font-weight:700;color:var(--muted)}.compass span{position:absolute;transform:translate(-50%,-50%)}.compass .cp-accent{color:var(--accent)}.compass .cp-dot{left:50%;top:50%;width:6px;height:6px;background:var(--accent);border-radius:50%}@media(max-width:900px){.compass{width:54px;height:54px;top:14px;right:10px;font-size:11px}}@media(prefers-reduced-motion:reduce){.hud-banner{animation:none}.tool-btn,.ctrl-btn,.ls-card{transition:none}}.fatal-error{position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;width:min(90vw,420px);height:fit-content;padding:24px 28px;background:#1e2234f5;color:#e8ebf5;border-radius:12px;box-shadow:0 8px 32px #0006;font-family:system-ui,sans-serif;line-height:1.5;text-align:center}.fatal-error h2{margin:0 0 12px;font-size:18px}.fatal-error p{margin:8px 0;font-size:14px;opacity:.9}
