*,:before,:after{box-sizing:border-box;-webkit-user-select:none;user-select:none;margin:0;padding:0}input,textarea{-webkit-user-select:text;user-select:text}html,body{overscroll-behavior:none;touch-action:none;background:#1a1a2e;height:100%;overflow:hidden}#app{width:100%;height:100%}#app canvas{width:100%;height:100%;display:block}.menu-overlay{color:#e8eefc;z-index:10;--slot:48px;--panel:#c6c6c6;--slot-bg:#8b8b8b;--slot-hi:#fff;--slot-lo:#373737;--ink:#3a3a3a;background:#080812d1;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;font-family:monospace;display:flex;position:fixed;inset:0}.menu-overlay.hidden{display:none}.menu-panels{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:16px;width:min(980px,96vw);max-height:80vh;display:flex}.menu-col{background:var(--panel);color:var(--ink);border:2px solid #2b2b2b;padding:12px;overflow:auto;box-shadow:inset 2px 2px #fff,inset -2px -2px #555}.menu-col.hidden{display:none}.menu-col h2{color:#2b2b2b;letter-spacing:.02em;margin-bottom:10px;font-size:15px;font-weight:700}.menu-craft-toggle{font:inherit;color:#2b2b2b;background:var(--panel);cursor:pointer;border:2px solid #2b2b2b;align-self:center;padding:8px 18px;font-weight:700;box-shadow:inset 2px 2px #fff,inset -2px -2px #555}.menu-craft-toggle:active,.menu-craft-toggle.active{box-shadow:inset -2px -2px #fff,inset 2px 2px #555}.menu-list{flex-direction:column;gap:4px;min-width:240px;list-style:none;display:flex}.menu-row{color:#2b2b2b;border:2px solid #0000;align-items:center;gap:8px;padding:5px 7px;font-size:13px;display:flex}.menu-row-icon{background:var(--slot-bg);width:26px;height:26px;box-shadow:inset 1px 1px 0 var(--slot-lo), inset -1px -1px 0 var(--slot-hi);flex:none}.menu-row-label{flex:1}.menu-row.craftable{color:#1d4d1d}.menu-row.locked{color:#6b6b6b}.menu-row.focused{background:#ffffff73;border-color:#fff}.menu-grid{gap:3px;display:grid}.menu-cell{width:var(--slot);height:var(--slot);background:var(--slot-bg);box-shadow:inset 2px 2px 0 var(--slot-lo), inset -2px -2px 0 var(--slot-hi);cursor:pointer;touch-action:none;position:relative}.menu-cell-icon{position:absolute;inset:4px}.menu-cell-count{color:#fff;text-shadow:1px 1px #000;pointer-events:none;font-size:12px;font-weight:700;position:absolute;bottom:0;right:2px}.menu-cell.hotbar{box-shadow:inset 2px 2px 0 var(--slot-lo), inset -2px -2px 0 var(--slot-hi), 0 0 0 2px #5a5a5a}.menu-cell.focused{outline-offset:-1px;outline:3px solid #fff}.menu-cell.grabbed{outline-offset:-1px;outline:3px solid #8ad0ff}.menu-equip{flex-direction:column;gap:6px;display:flex}.menu-equip-cell .menu-cell-count{color:#4a4a4a;text-shadow:none;justify-content:center;align-items:center;font-size:10px;font-weight:400;display:flex;position:absolute;inset:0 auto auto 0}.menu-cell.empty .menu-cell-icon,.menu-cell.hidden{display:none}.menu-sort{background:var(--panel);color:#2b2b2b;cursor:pointer;border:2px solid #2b2b2b;width:100%;margin-top:10px;padding:7px 12px;font-family:inherit;font-size:13px;font-weight:700;box-shadow:inset 2px 2px #fff,inset -2px -2px #555}.menu-sort.focused{outline-offset:-2px;outline:3px solid #fff}.menu-name{color:#ffe9a8;text-shadow:1px 1px #000;min-height:1.2em;font-size:15px;font-weight:700}.menu-hint{color:#c9d2e8;text-align:center;font-size:12px}.menu-drag-ghost{width:var(--slot);height:var(--slot);pointer-events:none;z-index:11;opacity:.92;filter:drop-shadow(2px 2px 2px #0009);position:fixed;transform:translate(-50%,-50%)}.menu-drag-ghost.hidden{display:none}@media (max-width:560px){.menu-overlay{--slot:38px}.menu-list{min-width:0}}.chest-overlay{color:#e8eefc;z-index:10;background:#080812d1;flex-direction:column;justify-content:center;align-items:center;gap:18px;padding:24px;font-family:monospace;display:flex;position:fixed;inset:0}.chest-overlay.hidden{display:none}.chest-panels{gap:24px;width:min(960px,96vw);max-height:80vh;display:flex}.chest-col{background:#141426eb;border:1px solid #2f2f4e;border-radius:10px;flex:1;padding:16px;overflow:auto}.chest-col h2{color:#ffe9a8;margin-bottom:12px;font-size:18px;font-weight:400}.chest-grid{gap:6px;display:grid}.chest-cell{aspect-ratio:1;color:#fff;text-shadow:0 1px 2px #000;background:#0a0a16b3;border:2px solid #2f2f4e;border-radius:6px;justify-content:flex-end;align-items:flex-end;padding:3px;font-size:11px;display:flex}.chest-cell.focused{border-color:#ffe9a8;box-shadow:0 0 0 2px #ffe9a866}.chest-held{color:#ffe9a8;min-height:1.2em;font-size:14px}.chest-held--empty{visibility:hidden}.chest-hint{color:#9aa6c4;font-size:13px}.touch-overlay{z-index:20;pointer-events:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);-webkit-user-select:none;user-select:none;--btn:56px;--primary:78px;--edge:12px;--cluster-lift:54px;--stick-base:112px;--stick-nub:48px;--zone-top:30%;--zone-width:44%;font-family:monospace;position:fixed;inset:0}.touch-overlay--hidden{display:none}@media (max-width:379px){.touch-overlay{--btn:50px;--primary:68px;--edge:10px}}@media (max-height:420px){.touch-overlay{--zone-top:12%;--primary:64px;--btn:48px}}.touch-zone{top:var(--zone-top);width:var(--zone-width);z-index:1;pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;position:absolute}.touch-zone--move{bottom:0;left:0}.touch-zone--aim{width:50%;top:0;bottom:0;right:0}.touch-stick{z-index:2;width:var(--stick-base);height:var(--stick-base);pointer-events:none;background:#14142640;border:2px solid #ffffff47;border-radius:50%;display:none;position:fixed;transform:translate(-50%,-50%)}.touch-stick--active{display:block}.touch-stick-nub{width:var(--stick-nub);height:var(--stick-nub);background:#e8eefc59;border:2px solid #ffffff80;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.touch-btn{z-index:3;color:#e8eefc;pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;background:#14142673;border:2px solid #ffffff59;border-radius:50%;justify-content:center;align-items:center;font-family:monospace;display:flex;position:absolute}.touch-btn:active{background:#ffe9a873;border-color:#ffe9a8}.touch-btn--hidden{display:none}.touch-btn--disabled{opacity:.45}.touch-btn--primary{width:var(--primary);height:var(--primary);right:var(--edge);bottom:calc(var(--edge) + var(--cluster-lift));flex-direction:column;gap:1px}.touch-btn-verb{letter-spacing:.02em;font-size:15px;font-weight:700}.touch-btn-sub{opacity:.75;font-size:10px}.touch-btn-sub--hidden{display:none}.touch-btn--use{width:var(--btn);height:var(--btn);right:calc(var(--edge) + (var(--primary) - var(--btn)) / 2);bottom:calc(var(--edge) + var(--cluster-lift) + var(--primary) + 12px);font-size:12px}.touch-btn--activate{width:var(--btn);height:var(--btn);right:calc(var(--edge) + (var(--primary) - var(--btn)) / 2);bottom:calc(var(--edge) + var(--cluster-lift) + var(--primary) + 12px + var(--btn) + 12px);font-size:12px}.touch-btn--mount{width:var(--btn);height:var(--btn);right:calc(var(--edge) + (var(--primary) - var(--btn)) / 2);bottom:calc(var(--edge) + var(--cluster-lift) + var(--primary) + 12px + (var(--btn) + 12px) * 2);font-size:11px}.touch-btn--back{width:var(--btn);height:var(--btn);right:calc(var(--edge) + var(--primary) + 12px);bottom:calc(var(--edge) + var(--cluster-lift) + (var(--primary) - var(--btn)) / 2);font-size:12px;display:none}.touch-btn--menu{height:var(--btn);border-radius:calc(var(--btn) / 2);letter-spacing:.06em;min-width:76px;right:var(--edge);bottom:calc(var(--edge) + var(--cluster-lift) + var(--primary) + 12px + (var(--btn) + 12px) * 3);padding:0 14px;font-size:12px}.touch-overlay--cluster-bottom{--cluster-lift:0px}.touch-cell{z-index:3;pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;background:0 0;border:none;position:fixed}.touch-overlay--menu .touch-zone,.touch-overlay--menu .touch-stick,.touch-overlay--menu .touch-cell,.touch-overlay--menu .touch-btn--menu,.touch-overlay--menu .touch-btn--use,.touch-overlay--menu .touch-btn--mount,.touch-overlay--menu .touch-btn--activate,.touch-overlay--dead .touch-zone,.touch-overlay--dead .touch-stick,.touch-overlay--dead .touch-cell,.touch-overlay--dead .touch-btn--menu,.touch-overlay--dead .touch-btn--use,.touch-overlay--dead .touch-btn--mount,.touch-overlay--dead .touch-btn--activate,.touch-overlay--dead .touch-btn--back{display:none}.touch-overlay--menu .touch-btn--back{display:flex}.debug-panel{z-index:30;color:#cfe8ff;-webkit-user-select:none;user-select:none;background:#0a0c14d1;border:1px solid #2a3550;border-radius:6px;min-width:150px;font:12px/1.4 ui-monospace,monospace;position:fixed;top:54px;right:8px}.debug-panel__header{letter-spacing:.04em;cursor:pointer;border-bottom:1px solid #2a3550;justify-content:space-between;align-items:center;padding:6px 10px;font-weight:700;display:flex}.debug-panel__header:after{content:"▾";opacity:.7}.debug-panel--collapsed{min-width:0}.debug-panel--collapsed .debug-panel__header{border-bottom:none;padding:2px 7px;font-size:10px;font-weight:400}.debug-panel--collapsed .debug-panel__header:after{content:"▸"}.debug-panel--collapsed .debug-panel__body{display:none}.debug-panel__body{padding:6px 10px 8px}.debug-panel__fps{color:#9fe0a0;border-bottom:1px solid #2a3550;margin-bottom:8px;padding-bottom:6px;font-weight:700}.debug-panel__section-title{opacity:.6;text-transform:uppercase;letter-spacing:.06em;margin-top:8px;margin-bottom:4px;font-size:11px}.debug-panel__section-title:first-of-type{margin-top:0}.debug-panel__row{align-items:center;gap:12px;padding:2px 0;display:flex}.debug-panel__row--wrap{flex-wrap:wrap;gap:6px}.debug-panel__btn{font:inherit;color:#cfe8ff;cursor:pointer;background:#1a2236;border:1px solid #2a3550;border-radius:4px;padding:3px 8px}.debug-panel__btn:hover{background:#243049}.debug-panel__btn:active{background:#2e3c5c}.debug-panel__toggle{cursor:pointer;align-items:center;gap:6px;display:flex}.debug-panel__toggle--blur,.debug-panel__toggle--mask{opacity:.75;font-size:11px}.debug-panel__toggle--blur{margin-left:auto}.debug-panel__toggle--placeholder{visibility:hidden;pointer-events:none}.debug-panel__row input{cursor:pointer}.debug-panel__select{cursor:pointer;align-items:center;gap:6px;padding:2px 0;display:flex}.debug-panel__select select{font:inherit;color:#cfe8ff;cursor:pointer;background:#1a2236;border:1px solid #2a3550;border-radius:4px;padding:2px 4px}:root{--font-display:"VT323", "Ubuntu Mono", "Roboto Mono", monospace;--fe-bg:#1a1a2e;--fe-panel:#232342;--fe-ink:#e8eefc;--fe-ink-dim:#9aa3c7;--fe-accent:#e94f37;--fe-line:#3a3a5e}.fe-screen{padding:max(24px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));background:var(--fe-bg);color:var(--fe-ink);flex-direction:column;justify-content:center;align-items:center;gap:14px;font-family:Ubuntu Mono,Roboto Mono,monospace;display:flex;position:fixed;inset:0;overflow-y:auto}.fe-title{font-family:var(--font-display);letter-spacing:2px;color:var(--fe-ink);text-shadow:0 3px #000,0 0 18px #e94f3759;font-size:clamp(64px,16vw,132px);line-height:.95}.fe-subtitle{font-family:var(--font-display);color:var(--fe-ink-dim);margin-bottom:18px;font-size:clamp(18px,3.4vw,26px)}.fe-heading{font-family:var(--font-display);color:var(--fe-ink);text-shadow:0 2px #000;margin-bottom:8px;font-size:clamp(36px,8vw,56px)}.fe-btn{font-family:var(--font-display);min-width:min(320px,80vw);min-height:52px;color:var(--fe-ink);background:var(--fe-panel);border:2px solid var(--fe-line);cursor:pointer;text-align:center;border-radius:8px;padding:8px 28px;font-size:clamp(22px,4vw,30px);transition:transform 60ms,background .12s,color .12s}.fe-btn:hover{background:#2c2c52}.fe-btn.focused,.fe-btn:focus-visible{background:var(--fe-accent);color:#1a1a2e;border-color:#fff;outline:none;transform:translateY(-1px);box-shadow:0 0 0 3px #ffffffa6}.fe-btn.disabled,.fe-btn[aria-disabled=true]{color:#5a5f80;cursor:not-allowed;background:#20203a;border-color:#2a2a46}.fe-field{flex-direction:column;gap:4px;width:min(420px,86vw);display:flex}.fe-label{font-family:var(--font-display);color:var(--fe-ink-dim);flex-direction:column;gap:4px;font-size:clamp(18px,3.4vw,24px);display:flex}.fe-input{min-height:48px;color:var(--fe-ink);border:2px solid var(--fe-line);background:#12122a;border-radius:6px;padding:8px 12px;font-family:Ubuntu Mono,monospace;font-size:18px}.fe-input.focused,.fe-input:focus-visible{border-color:#fff;outline:none;box-shadow:0 0 0 3px #e94f378c}input.fe-input[type=range]{box-sizing:border-box;width:100%;min-height:36px;accent-color:var(--fe-accent);cursor:pointer;padding:0}.fe-list{flex-direction:column;gap:10px;width:min(560px,94vw);max-height:56vh;padding:4px;display:flex;overflow-y:auto}.fe-row{background:var(--fe-panel);border:2px solid var(--fe-line);border-radius:8px;align-items:center;gap:12px;padding:12px 14px;display:flex}.fe-row-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.fe-row-name{font-family:var(--font-display);color:var(--fe-ink);white-space:nowrap;text-overflow:ellipsis;font-size:clamp(22px,4vw,28px);overflow:hidden}.fe-row-meta{color:var(--fe-ink-dim);font-size:13px}.fe-row-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.fe-row-actions .fe-btn{min-width:0;min-height:44px;padding:6px 14px;font-size:18px}.fe-empty{font-family:var(--font-display);color:var(--fe-ink-dim);text-align:center;padding:32px 12px;font-size:clamp(20px,4vw,26px)}.fe-modal-backdrop{z-index:20;background:#080812c7;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.fe-modal{width:min(420px,92vw);color:var(--fe-ink);background:var(--fe-bg);border:2px solid var(--fe-line);border-radius:12px;flex-direction:column;gap:14px;padding:24px;display:flex;box-shadow:0 12px 40px #00000080}.fe-modal-title{font-family:var(--font-display);color:var(--fe-ink);text-align:center;font-size:clamp(30px,7vw,42px)}.fe-modal-actions{flex-direction:column;gap:10px;display:flex}.fe-modal-actions .fe-btn{width:100%;min-width:0}.fe-modal .fe-field{width:100%}.fe-zoom-row{justify-content:center;align-items:center;gap:18px;display:flex}.fe-zoom-row .fe-btn{min-width:60px;padding:2px 16px;font-size:28px}.fe-zoom-value{font-family:var(--font-display);text-align:center;min-width:64px;font-size:clamp(24px,5vw,30px)}.fe-btn.at-limit{opacity:.4}.fe-screen .hidden{display:none}.fe-error{color:#ff9b8a;text-align:center;max-width:min(420px,86vw);font-family:Ubuntu Mono,monospace;font-size:15px}
