:root{color:#24314f;background:#ede7d2;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--panel: #f7f0dc;--panel-strong: #ebe1c7;--line: #b8aa88;--accent: #cf3346;--accent-strong: #e0485a;--red: #cf3346;--blue: #245aa7;--screen: #7f9360;--screen-dark: #2d3a25;--text-muted: #245aa7}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0;overscroll-behavior-y:none}body{min-width:320px;background:linear-gradient(180deg,#ffffffb8,#ede7d21a 20rem),radial-gradient(circle at 18% 8%,rgba(36,90,167,.08),transparent 18rem),#ede7d2;overflow-x:hidden;overscroll-behavior-y:none}button{color:inherit;font:inherit}.app-shell{width:min(1120px,100%);min-height:100vh;margin:0 auto;padding:24px;display:grid;grid-template-rows:auto auto 1fr auto;gap:18px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px}.eyebrow{margin:0 0 4px;color:var(--blue);font-size:.78rem;font-weight:700;letter-spacing:0;text-transform:uppercase}h1{margin:0;font-size:clamp(1.35rem,2.4vw,2rem);line-height:1.08}.toolbar{display:flex;align-items:center;gap:10px}.icon-button{min-height:42px;border:1px solid var(--line);border-radius:8px;background:#f7f0dceb;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;cursor:pointer}.icon-button:hover,.icon-button:focus-visible{border-color:var(--blue);outline:none}.icon-button svg{width:18px;height:18px}.launcher-panel{display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-radius:8px;background:#f7f0dce6;box-shadow:inset 0 1px #ffffffb8}.launcher-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.primary-button{min-height:34px;border:1px solid var(--line);border-radius:8px;background:var(--panel-strong);display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 10px;font-size:.86rem;font-weight:800;cursor:pointer}.primary-button:hover:not(:disabled),.primary-button:focus-visible{border-color:var(--blue);outline:none}.primary-button:disabled{cursor:not-allowed;opacity:.46}.primary-button svg{width:15px;height:15px}.start-launch{background:var(--red);color:#fff7e3}.archive-summary{display:flex;flex-wrap:wrap;gap:8px;flex:1 1 520px;min-width:0;color:var(--text-muted);font-size:.78rem}.archive-summary span{min-height:24px;border:1px solid rgba(36,90,167,.18);border-radius:999px;display:inline-flex;align-items:center;padding:0 10px;background:#ffffff6b}.log-panel,.info-panel{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:calc(max(16px,env(safe-area-inset-bottom)) + 58px);z-index:20;width:min(620px,calc(100vw - 32px));display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-radius:8px;background:#f7f0dcd1;box-shadow:0 16px 34px #483a2038;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.log-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.log-header h2{margin:0;font-size:.95rem}.log-actions{display:flex;align-items:center;gap:8px}.text-button{border:1px solid var(--line);border-radius:8px;background:transparent;min-height:32px;padding:0 10px;cursor:pointer}.icon-only-button,.floating-toggle-button{border:1px solid var(--line);border-radius:8px;background:var(--panel-strong);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.icon-only-button{width:32px;height:32px}.icon-only-button svg{width:16px;height:16px}.floating-actions{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:21;display:flex;gap:8px}.floating-toggle-button{position:relative;width:46px;height:46px;color:var(--blue);box-shadow:0 10px 24px #483a2038}.floating-toggle-button svg{width:20px;height:20px}.icon-only-button:hover,.icon-only-button:focus-visible,.floating-toggle-button:hover,.floating-toggle-button:focus-visible,.floating-toggle-button[aria-expanded=true]{border-color:var(--red);color:var(--red);outline:none}.log-panel pre,.info-panel p{max-height:140px;margin:0;color:#24314f;font-size:.78rem;line-height:1.45}.log-panel pre{overflow:auto;white-space:pre-wrap;word-break:break-word}.info-panel a{color:var(--blue);font-weight:800;text-decoration-thickness:1px;text-underline-offset:2px}.player-layout{min-height:0;display:block}.player-frame{width:calc(100% - 24px);margin:0 auto;display:grid;grid-template-rows:auto auto;gap:20px}.canvas-frame{position:relative;min-height:240px;aspect-ratio:4 / 3;width:100%;margin:0 auto;border:1px solid var(--line);border-radius:8px;background:#000;overflow:hidden;box-shadow:0 0 0 10px #d9ceb2,0 0 0 12px #9f9274,0 18px 40px #483a2038}.player-frame.is-fit-width .canvas-frame{width:calc(100% - 24px)}.player-frame.is-fit-width{max-width:none}.player-frame.is-fit-width .game-canvas{width:100%!important;height:100%!important;object-fit:fill}.player-frame:fullscreen{position:relative;width:100vw;height:100vh;max-width:none;padding:clamp(10px,2vh,20px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(10px,2vh,18px);background:#000}.player-frame.is-fullscreen{position:fixed;inset:0;z-index:15;width:100vw;height:100vh;max-width:none;background:#000}.player-frame:fullscreen .canvas-frame{width:min(100vw - 24px,calc((100vh - 220px) * 4 / 3));height:auto;max-height:none;min-height:0;flex:0 1 auto;aspect-ratio:4 / 3;border-radius:0;box-shadow:none}.player-frame.is-fullscreen .canvas-frame{height:auto;max-height:none;min-height:0;aspect-ratio:4 / 3;border-radius:0;box-shadow:none}.player-frame.is-fullscreen .fit-width-button{background:transparent;color:#ffffffe0;border-color:#ffffffb3;box-shadow:none}.player-frame.is-fullscreen .fit-width-button:hover,.player-frame.is-fullscreen .fit-width-button:focus-visible,.player-frame.is-fullscreen .fit-width-button[aria-pressed=true]{color:#fff;border-color:#fff}.player-frame:fullscreen .virtual-gamepad{width:min(100%,820px);min-height:0;flex:0 0 auto}.player-frame.is-landscape-layout{padding:max(10px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));display:flex;flex-direction:row;align-items:center;justify-content:center;gap:0}.player-frame.is-landscape-layout .canvas-frame{width:min(calc(100vw - 320px),calc((100vh - 24px) * 4 / 3));max-width:calc((100vh - 24px) * 4 / 3);flex:0 1 auto;z-index:1}.player-frame.is-landscape-layout.is-fit-width .canvas-frame{width:calc(100vw - 24px);max-width:none}.player-frame.is-landscape-layout .virtual-gamepad{position:absolute;inset:0;z-index:3;width:100%;height:100%;min-height:0;padding:max(12px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));display:grid;grid-template-columns:minmax(112px,20vw) 1fr minmax(140px,24vw);align-items:end;gap:0;pointer-events:none}.player-frame.is-landscape-layout .dpad{grid-column:1;width:clamp(112px,18vw,170px);align-self:end;justify-self:center;pointer-events:auto;background:transparent;border-color:#ffffff9e;box-shadow:none}.player-frame.is-landscape-layout .action-cluster{grid-column:3;grid-template-columns:repeat(2,clamp(56px,9vw,78px));gap:clamp(8px,2vw,14px);align-self:end;justify-self:center;pointer-events:auto}.player-frame.is-landscape-layout .pad-button-b{margin-top:clamp(22px,6vh,38px)}.player-frame.is-landscape-layout .start-button{min-width:clamp(96px,16vw,124px)}.player-frame.is-landscape-layout .dpad-arm,.player-frame.is-landscape-layout .dpad-thumb{background:transparent;border-color:#ffffffb8;box-shadow:none}.player-frame.is-landscape-layout .pad-button,.player-frame.is-landscape-layout .start-button{background:transparent;color:#ffffffdb;border-color:#ffffffad;box-shadow:none}.player-frame.is-landscape-layout .pad-button.is-active,.player-frame.is-landscape-layout .start-button.is-active{background:#ffffff24;color:#fff;transform:none;box-shadow:none}.game-canvas{display:block;position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-width:100%!important;min-height:100%!important;max-width:100%!important;max-height:100%!important;margin:0!important;object-fit:contain;image-rendering:pixelated;outline:none}.native-status{position:absolute;left:12px;top:10px;z-index:2;color:var(--text-muted);font-size:.82rem;pointer-events:none}.status-overlay{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:10px;padding:24px;text-align:center;background:linear-gradient(180deg,#7f9360d1,#2d3a25eb),repeating-linear-gradient(0deg,rgba(243,239,205,.08) 0,rgba(243,239,205,.08) 1px,transparent 1px,transparent 4px)}.status-overlay svg{width:42px;height:42px;color:#f7f0dc}.status-overlay strong{font-size:clamp(1.3rem,3.8vw,2.15rem);color:#fff}.status-overlay span{max-width:36rem;color:#e9edcf;line-height:1.6}.overlay-zip-button{min-height:42px;padding:0 16px;background:var(--red);color:#fff7e3;box-shadow:0 10px 24px #00000052}.overlay-zip-button svg{width:17px;height:17px;color:#fff7e3;stroke-width:2.5}.runtime-event-button{position:absolute;right:16px;bottom:16px;z-index:6;min-width:112px;min-height:44px;border:1px solid rgba(255,255,255,.28);border-radius:8px;background:var(--red);color:#fff7e3;font-size:.9rem;font-weight:900;box-shadow:0 10px 24px #00000061;cursor:pointer}.runtime-event-button:hover,.runtime-event-button:focus-visible{outline:none;filter:brightness(1.08)}.fit-width-button,.fullscreen-exit-button{position:fixed;top:max(10px,env(safe-area-inset-top));z-index:7;min-height:32px;border:1px solid rgba(255,255,255,.42);border-radius:8px;background:#f7f0dce6;color:var(--blue);display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 9px;font-size:.76rem;font-weight:800;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.fit-width-button{right:max(10px,env(safe-area-inset-right))}.fullscreen-exit-button{left:max(10px,env(safe-area-inset-left));background:transparent;color:#ffffffe0;border-color:#ffffffb3;box-shadow:none}.fit-width-button svg,.fullscreen-exit-button svg{width:15px;height:15px}.fit-width-button:hover,.fit-width-button:focus-visible,.fit-width-button[aria-pressed=true],.fullscreen-exit-button:hover,.fullscreen-exit-button:focus-visible{border-color:var(--red);color:var(--red);outline:none}.virtual-gamepad{width:min(100%,820px);min-height:190px;margin:0 auto;display:grid;grid-template-columns:minmax(150px,220px) 1fr;align-items:center;gap:clamp(24px,7vw,96px);touch-action:none;-webkit-user-select:none;user-select:none}.dpad{position:relative;width:clamp(150px,28vw,210px);aspect-ratio:1;justify-self:center;border-radius:50%;background:#ebe1c7f0;border:1px solid var(--line);cursor:grab;touch-action:none}.dpad:active{cursor:grabbing}.dpad-arm,.dpad-thumb{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#24314f;border:1px solid #6d7690}.dpad-arm{width:34%;height:78%;border-radius:8px}.dpad-right,.dpad-left{width:78%;height:34%}.dpad-thumb{width:33%;aspect-ratio:1;border-radius:50%;background:var(--red);box-shadow:0 6px 18px #00000057;transition:transform .12s ease}.dpad.is-left .dpad-thumb{transform:translate(-88%,-50%)}.dpad.is-right .dpad-thumb{transform:translate(-12%,-50%)}.dpad.is-up .dpad-thumb{transform:translate(-50%,-88%)}.dpad.is-down .dpad-thumb{transform:translate(-50%,-12%)}.dpad.is-left.is-up .dpad-thumb{transform:translate(-82%,-82%)}.dpad.is-right.is-up .dpad-thumb{transform:translate(-18%,-82%)}.dpad.is-left.is-down .dpad-thumb{transform:translate(-82%,-18%)}.dpad.is-right.is-down .dpad-thumb{transform:translate(-18%,-18%)}.action-cluster{justify-self:end;display:grid;grid-template-columns:repeat(2,clamp(68px,12vw,88px));grid-template-rows:repeat(2,auto);gap:14px;align-items:center}.pad-button,.start-button{border:1px solid rgba(36,49,79,.18);box-shadow:0 8px #00000040;cursor:pointer;touch-action:none}.pad-button{aspect-ratio:1;border-radius:50%;font-size:1.35rem;font-weight:800}.pad-button-a{background:var(--red)}.pad-button-b{margin-top:40px;background:var(--blue)}.start-button{grid-column:1 / 3;justify-self:center;min-width:124px;min-height:38px;border-radius:999px;background:var(--panel-strong);color:var(--blue);font-size:.78rem;font-weight:800}.pad-button.is-active,.start-button.is-active{transform:translateY(5px);box-shadow:0 3px #00000047;filter:brightness(1.08)}@media(max-width:700px){.app-shell{padding:16px;gap:14px}.topbar{align-items:flex-start;flex-direction:column}.toolbar{width:100%}.launcher-panel{padding:12px}.launcher-actions{align-items:stretch}.archive-summary{flex-basis:100%}.primary-button{width:100%;padding:0 10px}.icon-button{flex:1}.canvas-frame{max-height:none;width:calc(100% - 24px)}.virtual-gamepad{grid-template-columns:1fr 1fr;min-height:170px;gap:14px}.player-frame:fullscreen .canvas-frame{width:min(100vw - 20px,calc((100vh - 190px) * 4 / 3))}.player-frame.is-landscape-layout .canvas-frame{width:min(calc(100vw - 260px),calc((100vh - 18px) * 4 / 3))}.player-frame.is-landscape-layout.is-fit-width .canvas-frame{width:calc(100vw - 20px);max-width:none}.player-frame:fullscreen .virtual-gamepad{width:min(100%,620px)}.player-frame.is-landscape-layout .virtual-gamepad{grid-template-columns:minmax(96px,20vw) 1fr minmax(120px,25vw);width:100%}.dpad{width:min(42vw,168px)}.action-cluster{grid-template-columns:repeat(2,minmax(60px,76px));justify-self:center}.status-overlay{gap:7px;padding:12px}.status-overlay svg{width:28px;height:28px}.status-overlay strong{max-width:100%;font-size:clamp(1rem,5vw,1.45rem);line-height:1.15}.status-overlay span{max-width:min(30rem,92%);font-size:.72rem;line-height:1.35}.overlay-zip-button{width:auto;max-width:100%;min-height:36px;padding:0 12px;white-space:nowrap}.floating-actions{top:calc(max(10px,env(safe-area-inset-top)) + 44px);right:max(10px,env(safe-area-inset-right));bottom:auto}.floating-toggle-button{width:40px;height:40px}.log-panel,.info-panel{top:calc(max(10px,env(safe-area-inset-top)) + 90px);right:max(10px,env(safe-area-inset-right));bottom:auto;width:min(520px,calc(100vw - 20px))}.log-panel pre{max-height:min(38vh,220px)}}@media(max-width:700px)and (orientation:portrait){.fit-width-button{display:none}.player-frame.is-fullscreen.is-landscape-layout{inset:50% auto auto 50%;width:100vh;height:100vw;transform:translate(-50%,-50%) rotate(90deg);transform-origin:center;justify-content:center}.player-frame.is-fullscreen.is-landscape-layout .canvas-frame,.player-frame.is-fullscreen.is-landscape-layout.is-fit-width .canvas-frame{width:min(calc(100vh - 260px),calc((100vw - 18px) * 4 / 3));max-width:calc((100vw - 18px) * 4 / 3);max-height:calc(100vw - 18px)}.player-frame.is-fullscreen.is-landscape-layout .game-canvas{object-fit:contain}.floating-actions{top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right))}.log-panel,.info-panel{top:calc(max(10px,env(safe-area-inset-top)) + 50px)}}@media(orientation:landscape){.player-frame:fullscreen{padding:max(10px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));flex-direction:row;gap:0}.player-frame:fullscreen .canvas-frame{width:min(calc(100vw - 320px),calc((100vh - 24px) * 4 / 3));max-width:calc((100vh - 24px) * 4 / 3);flex:0 1 auto;z-index:1}.player-frame:fullscreen .virtual-gamepad{position:absolute;inset:0;z-index:3;width:100%;height:100%;min-height:0;padding:max(12px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));display:grid;grid-template-columns:minmax(112px,20vw) 1fr minmax(140px,24vw);align-items:end;gap:0;pointer-events:none}.player-frame:fullscreen .dpad{grid-column:1;width:clamp(112px,18vw,170px);align-self:end;justify-self:center;pointer-events:auto}.player-frame:fullscreen .action-cluster{grid-column:3;grid-template-columns:repeat(2,clamp(56px,9vw,78px));gap:clamp(8px,2vw,14px);align-self:end;justify-self:center;pointer-events:auto}.player-frame:fullscreen .pad-button-b{margin-top:clamp(22px,6vh,38px)}.player-frame:fullscreen .start-button{min-width:clamp(96px,16vw,124px)}}@media(orientation:landscape)and (max-height:430px){.player-frame:fullscreen .canvas-frame{width:min(calc(100vw - 260px),calc((100vh - 18px) * 4 / 3))}.player-frame.is-landscape-layout .canvas-frame{width:min(calc(100vw - 260px),calc((100vh - 18px) * 4 / 3))}.player-frame.is-landscape-layout.is-fit-width .canvas-frame{width:calc(100vw - 20px);max-width:none}.player-frame:fullscreen .virtual-gamepad{grid-template-columns:minmax(96px,19vw) 1fr minmax(120px,23vw);padding:10px 12px}.player-frame.is-landscape-layout .virtual-gamepad{grid-template-columns:minmax(96px,19vw) 1fr minmax(120px,23vw);padding:10px 12px}.player-frame:fullscreen .dpad{width:clamp(96px,17vw,138px)}.player-frame.is-landscape-layout .dpad{width:clamp(96px,17vw,138px)}.player-frame:fullscreen .action-cluster{grid-template-columns:repeat(2,clamp(50px,8vw,66px))}.player-frame.is-landscape-layout .action-cluster{grid-template-columns:repeat(2,clamp(50px,8vw,66px))}.player-frame:fullscreen .start-button{min-height:34px}.player-frame.is-landscape-layout .start-button{min-height:34px}}.player-frame.is-fullscreen.is-fit-width .canvas-frame,.player-frame.is-landscape-layout.is-fit-width .canvas-frame{width:calc(100vw - 24px);max-width:none}@media(max-width:700px)and (orientation:portrait){.player-frame.is-fullscreen.is-landscape-layout .canvas-frame,.player-frame.is-fullscreen.is-landscape-layout.is-fit-width .canvas-frame{width:min(calc(100vh - 260px),calc((100vw - 18px) * 4 / 3));max-width:calc((100vw - 18px) * 4 / 3);max-height:calc(100vw - 18px)}}
