*{box-sizing:border-box}html,body{background:#0a1117;width:100%;height:100%;margin:0;overflow:hidden}.stage{--radar-width:260px;--controls-top:20px;background:radial-gradient(at 50% 35%,#34424c,#0c1821 80%);width:100%;height:100dvh;position:relative;overflow:hidden}#viewport{touch-action:none;outline:none;position:absolute;inset:0}#viewport canvas{touch-action:none;width:100%;height:100%;display:block}.camera-views{z-index:4;text-align:center;max-width:calc(100vw - 24px);font-family:system-ui,sans-serif;position:absolute;top:0;left:50%;transform:translate(-50%)}.camera-view-tabs{background:#101b24ed;border:1px solid #415c6670;border-radius:0 0 7px 7px;gap:2px;padding:2px;display:flex;box-shadow:0 6px 20px #0005}.camera-view-tabs button{color:#93adb7;cursor:pointer;background:0 0;border:0;border-radius:5px;min-width:58px;min-height:30px;padding:0 10px;font:600 12px system-ui,sans-serif}.camera-view-tabs button:hover{color:#e5f3ee;background:#263d48}.camera-view-tabs button[aria-pressed=true]{color:#10251b;background:#a6dbbe}.camera-view-tabs button:focus-visible{outline-offset:2px;outline:2px solid #d7f3e1}.camera-view-tabs .fullscreen-toggle,.camera-view-tabs .sound-toggle{border-left:1px solid #415c6670;min-width:32px;margin-left:2px;padding:0 7px}.fullscreen-toggle svg,.sound-toggle svg,.radar-collapse svg{vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.fullscreen-toggle .fullscreen-exit,.fullscreen-toggle[aria-pressed=true] .fullscreen-enter{display:none}.fullscreen-toggle[aria-pressed=true] .fullscreen-exit{display:initial}.sound-toggle .sound-off,.sound-toggle[aria-pressed=false] .sound-on{display:none}.sound-toggle[aria-pressed=false] .sound-off{display:initial}.stage:fullscreen{width:100vw;height:100dvh}.stage[data-fullscreen=true]>:not(#viewport):not(.camera-views),.stage[data-fullscreen=true] .camera-view-status{display:none}.camera-view-status{color:#c1d8cf;text-shadow:0 1px 4px #000;pointer-events:none;margin-top:3px;font-size:10px;display:block}.creator-credit{z-index:2;color:#8da4af;white-space:nowrap;font:10px/12px system-ui,sans-serif;position:absolute;bottom:3px;left:20px}.creator-credit a{color:#a6dbbe;text-underline-offset:2px;text-decoration:underline}.creator-credit a:hover{color:#d9ffe9}.creator-credit a:focus-visible{outline-offset:2px;outline:2px solid #d7f3e1}.orientation{bottom:24px;right:calc(var(--radar-width) + 36px);text-align:center;opacity:.72;pointer-events:none;width:49px;position:absolute}.orientation-n{color:#a6dbbe;font:8px IBM Plex Mono,monospace}.orientation svg{fill:none;stroke:#91a8b3;stroke-width:.7px;width:49px;height:49px}.orientation .compass-fill{fill:#b4d5c7;stroke:none}.scene-controls{top:var(--controls-top);width:min(280px,100vw - 24px);max-height:max(64px, calc(100dvh - var(--radar-panel-height,326px) - var(--controls-top) - 40px));z-index:3;border-radius:6px;position:absolute;right:20px;overflow:auto;box-shadow:0 8px 28px #0006}.scene-controls-status{color:#a6dbbe;overflow-wrap:anywhere;background:#101b24;padding:9px 12px;font:11px system-ui,sans-serif;display:block}.scene-controls-status.controls-error{color:#ff9e8f}.radar-widget{width:var(--radar-width);z-index:2;color:#9ad6b9;background:#081917f2;border:1px solid #679d8366;border-radius:12px;gap:6px;padding:12px;font:10px Consolas,Liberation Mono,monospace;display:grid;position:absolute;bottom:20px;right:20px;box-shadow:0 12px 36px #0007,inset 0 0 22px #58d6a00a}.radar-header,.radar-footer{justify-content:space-between;align-items:center;gap:8px;display:flex}.radar-header{min-height:20px}.radar-header h2{color:#d9ffe9;letter-spacing:1.5px;align-items:center;gap:7px;margin:0 auto 0 0;font:600 11px system-ui,sans-serif;display:flex}.radar-collapse{color:#9ad6b9;cursor:pointer;background:0 0;border:1px solid #679d8344;border-radius:4px;flex-shrink:0;width:24px;height:24px;padding:0}.radar-collapse:hover{color:#d9ffe9;background:#234b3e}.radar-collapse:focus-visible{outline-offset:2px;outline:2px solid #d7f3e1}.radar-widget[data-collapsed=true] .radar-collapse svg{transform:rotate(180deg)}.radar-body{gap:6px;min-width:0;display:grid}.radar-body[hidden]{display:none}.radar-live-dot{background:#89ffc0;border-radius:50%;width:5px;height:5px;box-shadow:0 0 8px #89ffc099}#radar-count{color:#80b59c;text-align:right;font-size:9px}.radar-screen{aspect-ratio:1;border:1px solid #84daa82a;border-radius:50%;min-width:0;position:relative;overflow:hidden}.radar-screen:after{content:"";pointer-events:none;background:repeating-linear-gradient(0deg,#0000 0 2px,#00100f33 2px 3px);position:absolute;inset:0}#radar-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.radar-footer{color:#60977f;letter-spacing:.4px;min-height:12px;font-size:8px}#radar-range{color:#a5e8c6}.radar-detail{color:#76ac93;text-align:center;min-height:13px;font-size:9px}.radar-kills{color:#ffc477;text-align:center;font-size:11px;font-weight:600}.script-panel{--panel-inset:20px;--panel-right-inset:360px;--panel-top-inset:100px;left:var(--panel-inset);bottom:var(--panel-inset);width:var(--editor-width,min(480px, calc(100vw - 120px)));height:var(--editor-height,min(420px, 60dvh));min-width:min(320px, calc(100vw - var(--panel-inset) - var(--panel-right-inset)));max-width:calc(100vw - var(--panel-inset) - var(--panel-right-inset));min-height:min(260px, calc(100dvh - var(--panel-inset) - var(--panel-top-inset)));max-height:calc(100dvh - var(--panel-inset) - var(--panel-top-inset));z-index:2;color:#dbe8e4;background:#101b24f5;border:1px solid #364953;border-radius:10px;flex-direction:column;font-family:system-ui,sans-serif;display:flex;position:absolute;overflow:hidden;box-shadow:0 12px 40px #0006}.script-panel[data-collapsed=true]{height:auto;min-height:0}.script-panel[data-resizing=true]{-webkit-user-select:none;user-select:none}.script-header{border-bottom:1px solid #293c47;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.script-panel[data-collapsed=true] .script-header{border-bottom:0}.script-header h1{margin:0;font-size:14px;font-weight:600}.script-header p{color:#8da4af;margin:4px 0 0;font-size:11px}.script-actions{gap:8px;display:flex}.script-actions button{color:#dbe8e4;cursor:pointer;background:#20323d;border:1px solid #415c66;border-radius:5px;min-height:34px;padding:0 14px;font:600 12px system-ui,sans-serif}.script-actions #toggle-script{color:#10251b;background:#a6dbbe;border-color:#a6dbbe}.script-panel[data-running=true] #toggle-script{color:#fff2ee;background:#793e3c;border-color:#b77570}.script-actions .script-collapse{width:34px;padding:0}.script-collapse svg,.script-resize svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.script-panel[data-collapsed=true] .script-collapse svg{transform:rotate(180deg)}.script-resize{color:#8da4af;cursor:nesw-resize;touch-action:none;z-index:1;background:0 0;border:0;width:20px;height:20px;padding:2px;position:absolute;top:0;right:0}.script-resize:hover,.script-resize:focus-visible{color:#d7f3e1}.script-resize:focus-visible{outline-offset:-3px;outline:2px solid #d7f3e1}.script-actions button:hover:not(:disabled){filter:brightness(1.12)}.script-actions button:disabled{opacity:.4;cursor:default}.script-actions button:focus-visible{outline-offset:3px;outline:2px solid #d7f3e1}#code-editor{flex:1;min-height:0;overflow:hidden}.script-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.script-body[hidden],.script-resize[hidden]{display:none}.script-reference{color:#93adb7;border-top:1px solid #293c47;flex-direction:column;flex-shrink:0;gap:5px;padding:10px 16px;font-size:10px;display:flex}.script-reference code{font:10px Consolas,Liberation Mono,monospace}.script-status{overflow-wrap:anywhere;color:#93adb7;border-top:1px solid #293c47;flex-shrink:0;max-height:88px;padding:10px 16px;font-size:11px;display:block;overflow:auto}.script-panel[data-running=true] .script-status{color:#a6dbbe}.script-status.script-error{color:#ff9e8f}@media (width<=900px){.stage{--radar-width:clamp(140px, calc(100dvh - var(--editor-panel-height,min(420px, 60dvh)) - 210px), 200px);--controls-top:80px}.radar-widget{bottom:calc(var(--editor-panel-height,min(420px, 60dvh)) + 26px);padding:9px}.radar-header{grid-template-columns:minmax(0,1fr) auto;gap:3px;display:grid}.radar-header h2{letter-spacing:.5px;min-width:0;font-size:10px}.radar-collapse{touch-action:manipulation;width:44px;height:44px}#radar-count{text-align:left;order:1;grid-column:1/-1}.scene-controls{max-height:max(64px, calc(100dvh - var(--editor-panel-height,min(420px, 60dvh)) - var(--radar-panel-height,230px) - var(--controls-top) - 40px))}.script-panel{--panel-right-inset:20px;--panel-top-inset:320px}.script-actions{flex-shrink:0;order:-1}.orientation{bottom:calc(var(--editor-panel-height,min(420px, 60dvh)) + 26px);width:39px}.orientation svg{width:39px;height:39px}}@media (width<=600px){.stage{--controls-top:76px}.creator-credit{bottom:0;left:12px}.scene-controls{max-height:max(64px, calc(100dvh - var(--editor-panel-height,min(350px, 48dvh)) - var(--radar-panel-height,230px) - var(--controls-top) - 40px));right:12px}.script-panel{--panel-inset:12px;--panel-right-inset:12px;--panel-top-inset:320px;width:var(--editor-width,calc(100vw - 24px));height:var(--editor-height,min(350px, 48dvh))}.script-panel[data-collapsed=true]{height:auto}.script-header{padding:10px 12px}.script-reference,.script-status{padding-left:12px;padding-right:12px}.orientation{bottom:calc(var(--editor-panel-height,min(350px, 48dvh)) + 26px);right:calc(var(--radar-width) + 28px)}.radar-widget{right:12px}}@media (width<=600px) and (height<=850px){.stage{--radar-width:120px}.script-panel{--panel-top-inset:240px}.scene-controls{width:min(280px, calc(100vw - var(--radar-width) - 44px));max-height:max(64px, calc(100dvh - var(--editor-panel-height,260px) - var(--controls-top) - 102px));left:12px;right:auto}}@media (width>=601px) and (width<=900px) and (height<=930px){.stage{--radar-width:140px}.radar-widget,.orientation{bottom:20px}.script-panel{--panel-right-inset:240px;--panel-top-inset:100px}.scene-controls{max-height:max(64px, calc(100dvh - var(--radar-panel-height,210px) - var(--controls-top) - 40px))}}
