.RunGame_root__lrswv{width:100%;height:100%;display:flex;flex-direction:column;background:var(--app-bg-base);color:var(--app-text);overflow:hidden}.RunGame_statusItem__vKzfW{display:inline-flex;align-items:center;gap:6px}.RunGame_stage__n_5PR{flex:1 1 auto;position:relative;background:#000;overflow:hidden;min-height:0}.RunGame_iframe__jKWTu{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#000}.RunGame_focusCatcher__5AwQb{position:absolute;inset:0;background:transparent;cursor:default;z-index:1}.RunGame_overlay__yhHjZ{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:rgba(10,10,18,.85);text-align:center;padding:24px}.RunGame_overlay__yhHjZ h2{margin:0;font-size:16px;font-weight:600;color:#fff}.RunGame_overlay__yhHjZ p{margin:0;color:var(--app-text-muted);max-width:36em}.RunGame_overlay__yhHjZ code{background:var(--app-bg-input);padding:1px 5px;border-radius:3px;border:1px solid var(--app-border)}.RunGame_consolePanel__bpjJF{flex:0 0 220px;display:flex;flex-direction:column;border-top:1px solid var(--app-border);background:var(--app-bg-base);min-height:0}.RunGame_consoleHeader__odYCO{display:flex;align-items:center;justify-content:space-between;padding:4px 10px;background:var(--app-panel-inactive);border-bottom:1px solid var(--app-border);color:var(--app-text-muted);font-size:var(--app-font-size-xs);text-transform:uppercase;letter-spacing:.05em;flex:0 0 auto}.RunGame_consoleBody__RwWVm{flex:1 1 auto;overflow-y:auto;padding:4px 0;font-family:SF Mono,JetBrains Mono,Menlo,monospace;font-size:var(--app-font-size-xs)}.RunGame_consoleEmpty__xjSjh{padding:10px;color:var(--app-text-muted);font-style:italic}.RunGame_consoleEntry__cVwQT{display:flex;align-items:flex-start;gap:8px;padding:3px 10px;border-bottom:1px solid var(--app-row-separator)}.RunGame_consoleEntry__cVwQT[data-level=warn]{background:rgba(240,180,41,.08)}.RunGame_consoleEntry__cVwQT[data-level=error],.RunGame_consoleEntry__cVwQT[data-level=fatal]{background:rgba(248,81,73,.1)}.RunGame_consoleGlyph__CGFUk{flex:0 0 14px;display:inline-flex;align-items:center;justify-content:center;color:var(--app-text-dim);padding-top:2px}.RunGame_consoleEntry__cVwQT[data-level=warn] .RunGame_consoleGlyph__CGFUk{color:#f0b429}.RunGame_consoleEntry__cVwQT[data-level=error] .RunGame_consoleGlyph__CGFUk,.RunGame_consoleEntry__cVwQT[data-level=fatal] .RunGame_consoleGlyph__CGFUk{color:#f85149}.RunGame_consoleMessage__qZl8r{margin:0;white-space:pre-wrap;word-break:break-word;color:var(--app-text);flex:1 1 auto;font-family:inherit}.RunGame_consoleSource__brGWn{flex:0 0 auto;margin-left:8px;color:var(--app-text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40%}.RunGame_titleBarActions__s0tkV{display:flex;align-items:center;gap:6px}.RunGame_titleBarBtn___i3SF{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:0;color:var(--app-text);border-radius:4px;cursor:pointer;padding:0;transition:color var(--app-transition),background var(--app-transition)}.RunGame_titleBarBtn___i3SF:hover:not(:disabled){color:var(--app-text);background:var(--app-bg-hover)}.RunGame_titleBarBtn___i3SF:active:not(:disabled){background:var(--app-bg-selected);color:var(--app-text)}.RunGame_titleBarBtn___i3SF:disabled{color:var(--app-text-dim);opacity:.4;cursor:default}.RunGame_titleBarBtnOn__es6pk{color:var(--app-text)}.RunGame_titleBarBtnOn__es6pk,.RunGame_titleBarBtnOn__es6pk:hover:not(:disabled){background:var(--app-bg-selected)}.TilemapEditor_canvasArea__5TULq{position:relative;width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.TilemapEditor_canvasViewport__B0Lqp{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}.TilemapEditor_layerToast__5jR1l{position:absolute;top:12px;left:50%;transform:translateX(-50%);padding:6px 12px;display:inline-flex;align-items:center;gap:6px;background:var(--app-bg-raised);border:1px solid var(--app-border);border-left:3px solid var(--app-accent);border-radius:4px;font-size:var(--app-font-size-s);color:var(--app-text);box-shadow:0 4px 12px rgba(0,0,0,.35);pointer-events:none;user-select:none;z-index:5;animation:TilemapEditor_layerToastIn__t1_au .18s ease-out,TilemapEditor_layerToastOut__WcAjk .28s ease-in 1.18s forwards}.TilemapEditor_layerToastLabel__cxvKJ{color:var(--app-text-muted);text-transform:uppercase;font-size:var(--app-font-size-xs);letter-spacing:.04em}.TilemapEditor_layerToastName__fEbgA{font-weight:600}@keyframes TilemapEditor_layerToastIn__t1_au{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}@keyframes TilemapEditor_layerToastOut__WcAjk{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-8px)}}.TilemapEditor_canvasMount___G8Bp{position:absolute;inset:0}.TilemapEditor_canvasOverlay__YTtNd{position:absolute;inset:0;pointer-events:none}.TilemapEditor_placeholder__Um7aT{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;color:var(--app-text-muted)}.TilemapEditor_placeholder__Um7aT h2{margin:0;font-size:var(--app-font-size-l);font-weight:600;color:var(--app-text)}.TilemapEditor_placeholder__Um7aT p{margin:0;max-width:32em;font-size:var(--app-font-size-s);line-height:1.6}.TilemapEditor_placeholderActions__dD2QO{display:flex;gap:8px;margin-top:8px}.TilemapEditor_statusItem__V1P_B{display:inline-flex;align-items:center;gap:6px}.TilemapEditor_rightStack__46y9_,.TilemapEditor_sidePanel__HM4o5{display:flex;flex-direction:column;height:100%;min-height:0}.TilemapEditor_rightStackTilesets__gM49U{flex:0 1 auto;max-height:45%;min-height:0;display:flex;flex-direction:column;border-bottom:1px solid var(--app-border)}.TilemapEditor_rightStackPalette__EyV2j{flex:1 1 auto;min-height:220px;display:flex;flex-direction:column}.TilemapEditor_sidePanelHeader__cOMKb{display:flex;align-items:center;justify-content:space-between;gap:4px;padding:6px 8px;border-bottom:1px solid var(--app-border)}.TilemapEditor_sidePanelTitle__7owq3{flex:1;font-size:var(--app-font-size-s);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--app-text-muted)}.TilemapEditor_sidePanelBody__vPGgw{flex:1 1 auto;min-height:0;overflow:auto}.TilemapEditor_layerRow__8XCGq{display:flex;align-items:center;gap:6px;padding:4px 8px;cursor:pointer;user-select:none;border-left:2px solid transparent}.TilemapEditor_layerRow__8XCGq:hover{background:var(--app-bg-hover)}.TilemapEditor_layerRowActive__0IoFK{background:var(--app-bg-selected);border-left-color:var(--app-accent)}.TilemapEditor_layerRowName__C07Hv{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--app-font-size-s)}.TilemapEditor_layerRowLocked__3C2w7{opacity:.55}.TilemapEditor_layerRowControls__rheX5{display:inline-flex;align-items:center;gap:2px}.TilemapEditor_iconBtn__JORLT{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:0;background:transparent;color:inherit;opacity:.55;cursor:pointer;border-radius:3px}.TilemapEditor_iconBtn__JORLT:hover{opacity:1;background:var(--app-bg-hover)}.TilemapEditor_iconBtnActive__0AoHt{opacity:1}.TilemapEditor_tilesetsList__SOgYD{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.TilemapEditor_tilesetRow__Igr7i{display:flex;align-items:center;gap:8px;padding:6px 8px;cursor:pointer;user-select:none;border-left:2px solid transparent}.TilemapEditor_tilesetRow__Igr7i:hover{background:var(--app-bg-hover)}.TilemapEditor_tilesetRowActive__9Hv94{background:var(--app-bg-selected);border-left-color:var(--app-accent)}.TilemapEditor_tilesetThumb__w8Mh0{width:28px;height:28px;flex-shrink:0;background-color:var(--app-bg-sunken);background-repeat:no-repeat;background-position:50%;background-size:contain;image-rendering:pixelated;border-radius:3px;border:1px solid var(--app-border)}.TilemapEditor_tilesetMeta__y_xqW{flex:1;min-width:0}.TilemapEditor_tilesetName__tdlPk{font-size:var(--app-font-size-s);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TilemapEditor_tilesetSub__UKLqt{color:var(--app-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TilemapEditor_dropHint__arga2{color:var(--app-text-muted);padding:8px;text-align:center}.TilemapEditor_dropHover__1XOIV{outline:2px dashed var(--app-accent);outline-offset:-4px;background:color-mix(in srgb,var(--app-accent) 8%,transparent)}.TilemapEditor_paletteWrap__WrJdp{position:relative;flex:1 1 auto;min-height:120px;overflow:hidden;background:var(--app-bg-sunken)}.TilemapEditor_paletteCanvas__uAeZh{display:block;image-rendering:pixelated}.TilemapEditor_paletteEmpty__z_6Jt{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:12px;text-align:center;color:var(--app-text-muted);font-size:var(--app-font-size-s)}.TilemapEditor_toolStrip__MWARx{display:flex;align-items:center;gap:4px;padding:4px 8px;flex:1 1 auto;border-bottom:1px solid var(--app-border)}.TilemapEditor_toolBtn__LojOG{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid transparent;background:transparent;color:inherit;opacity:.7;cursor:pointer;border-radius:3px}.TilemapEditor_toolBtn__LojOG:hover{background:var(--app-bg-hover);opacity:1}.TilemapEditor_toolBtnActive__dWIMb{background:var(--app-bg-selected);border-color:var(--app-accent);opacity:1}.TilemapEditor_fullWidthBtn__MCa_N{width:100%;justify-content:center}.TilemapEditor_modalForm__t3SJD{display:flex;flex-direction:column;gap:12px;padding:4px 0;min-width:320px}.TilemapEditor_modalRow__04u9G{display:grid;grid-template-columns:140px 1fr;align-items:center;gap:8px}.TilemapEditor_modalRowFull___Ykan{display:flex;flex-direction:column;gap:4px}.TilemapEditor_modalLabel__VHCvb{font-size:var(--app-font-size-s);color:var(--app-text-muted)}.TilemapEditor_modalAlert__Rkx4p{padding:8px 10px;border-radius:4px;background:color-mix(in srgb,var(--app-danger) 18%,transparent);color:var(--app-danger);font-size:var(--app-font-size-s)}.TilemapEditor_exportSummary__otu_M{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-radius:4px;background:var(--app-bg-raised);border:1px solid var(--app-border);font-size:var(--app-font-size-s)}.TilemapEditor_exportSummary__otu_M strong{font-weight:600;color:var(--app-text)}.TilemapEditor_attrsModal__io53k{display:flex;flex-direction:column;gap:16px;height:100%;min-width:540px}.TilemapEditor_attrsHeader__iNu4f{display:flex;align-items:center;gap:12px}.TilemapEditor_attrsPreview__1s39B{width:64px;height:64px;flex-shrink:0;border:1px solid var(--app-border);border-radius:3px;background:var(--app-bg-sunken);image-rendering:pixelated}.TilemapEditor_attrsHeaderMeta__FdOfb{display:flex;flex-direction:column;gap:2px;min-width:0}.TilemapEditor_attrsTileTitle__10YAE{font-size:var(--app-font-size-l);font-weight:600;color:var(--app-text)}.TilemapEditor_attrsTileSub__keV3q{color:var(--app-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TilemapEditor_attrsSection__angUe{display:flex;flex-direction:column;gap:8px}.TilemapEditor_attrsSectionTitle__upsyl{font-size:var(--app-font-size-xs);color:var(--app-text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.TilemapEditor_attrsTextarea__NMa3m{width:100%;min-height:90px;padding:8px 10px;border:1px solid var(--app-border);border-radius:3px;background:var(--app-bg-sunken);color:var(--app-text);font-family:inherit;font-size:var(--app-font-size-s);line-height:1.5;resize:vertical;box-sizing:border-box}.TilemapEditor_attrsTextarea__NMa3m:focus-visible{outline:none;border-color:var(--app-accent);box-shadow:var(--app-glow-focus)}.TilemapEditor_attrsEmpty__Z1Ey0{padding:12px;border:1px dashed var(--app-border);border-radius:3px;color:var(--app-text-muted);font-size:var(--app-font-size-s);line-height:1.5}.TilemapEditor_attrsEmpty__Z1Ey0 code{padding:1px 5px;border-radius:2px;background:var(--app-bg-raised);font-size:90%}.TilemapEditor_attrsList__PPywM{display:flex;flex-direction:column;gap:4px}.TilemapEditor_attrsListHeader__SwQQp,.TilemapEditor_attrsRow___eiCZ{display:grid;grid-template-columns:1fr 90px 1fr 26px;align-items:center;gap:8px}.TilemapEditor_attrsListHeader__SwQQp{padding:0 4px;font-size:var(--app-font-size-xs);color:var(--app-text-muted);text-transform:uppercase;letter-spacing:.04em}.TilemapEditor_animLayout__Tb2Jg{display:flex;align-items:stretch;gap:12px}.TilemapEditor_animationPreview__AYbfV{flex-shrink:0;align-self:flex-start;width:64px;height:64px;border:1px solid var(--app-border);border-radius:3px;background:var(--app-bg-sunken);image-rendering:pixelated}.TilemapEditor_frameStrip__qTjkB{flex:1 1 auto;display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start;min-width:0}.TilemapEditor_frameCard__BdPq1{display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px;border:1px solid var(--app-border);border-radius:3px;background:var(--app-bg-raised);cursor:grab}.TilemapEditor_frameCardDragOver__Vpc0y{border-color:#ff3399;background:color-mix(in srgb,#ff3399 18%,transparent)}.TilemapEditor_frameThumb__YxA_m{display:block;border-radius:2px;background:var(--app-bg-sunken);image-rendering:pixelated}.TilemapEditor_frameDuration__YyxVT{display:flex;align-items:center;gap:4px;color:var(--app-text-muted)}.TilemapEditor_frameDurationUnit__daG5u{user-select:none}.TilemapEditor_framePickerWrap__z_BIL{max-height:220px;overflow:auto;border:1px solid var(--app-border);border-radius:3px;background:var(--app-bg-sunken)}.TilemapEditor_framePicker__tkhqc{display:block;cursor:pointer;image-rendering:pixelated}.TilemapEditor_animModal__icLUD{display:flex;flex-direction:row;gap:16px;padding:12px 16px;height:100%;min-height:0}.TilemapEditor_animModalLeft__JqdOW{flex:0 0 auto;width:200px;display:flex;flex-direction:column;gap:12px;padding:8px;border:1px solid var(--app-border);border-radius:4px;background:var(--app-bg-sunken)}.TilemapEditor_animModalRight__1Th_X{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:16px;overflow:hidden}.TilemapEditor_animModalPreview__jTvKQ{align-self:center;border:1px solid var(--app-border);border-radius:3px;background:var(--app-bg-raised);image-rendering:pixelated}.TilemapEditor_animModalKeyInfo__ODuSH{display:flex;flex-direction:column;gap:4px;color:var(--app-text-muted)}.TilemapEditor_animSubsection__tH_z2{display:flex;flex-direction:column;gap:8px;min-height:0}.TilemapEditor_animModalRight__1Th_X .TilemapEditor_framePickerWrap__z_BIL{max-height:360px}.TilemapEditor_modalHint__CnoQg{color:var(--app-text-muted);line-height:1.5}.TilemapEditor_mapPropsBody__1JYoG{display:flex;flex-direction:column;gap:16px;padding:16px}.TilemapEditor_mapPropsSection__RwjF0{display:flex;flex-direction:column;gap:8px}.TilemapEditor_mapPropsSectionTitle__asEcP{font-size:var(--app-font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--app-text-muted)}.TilemapEditor_mapPropsRow__AHkSh{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:8px;align-items:center}.TilemapEditor_mapPropsCheckbox__0905_,.TilemapEditor_mapPropsLabel__1SKDu{font-size:var(--app-font-size-s);color:var(--app-text);user-select:none}.TilemapEditor_mapPropsCheckbox__0905_{display:flex;align-items:center;gap:6px;cursor:pointer}.TilemapEditor_mapPropsWarn__Nykce{display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:3px;background:color-mix(in srgb,var(--app-danger,#f04444) 16%,transparent);color:var(--app-danger,#f04444);font-size:var(--app-font-size-xs);line-height:1.4}.TilemapEditor_mapPropsHint__ANCk7{color:var(--app-text-muted);line-height:1.45}.XKCD_root__lPE3z{height:100%;background:var(--app-bg);overflow:hidden}.XKCD_viewport__Cbmsw{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:8px;box-sizing:border-box;background:#ffffff;color:#1a1a1a;overflow:hidden}.XKCD_comic__fV4QO{display:block;width:100%;height:100%;object-fit:contain;user-select:none;opacity:0;transition:opacity .18s ease}.XKCD_comicReady__8AAWV{opacity:1}.XKCD_status__hukm2{display:flex;flex-direction:column;align-items:center;gap:6px;padding:24px;color:#6c6c6c;font-size:14px;text-align:center;max-width:32em}.XKCD_status__hukm2 strong{color:#1a1a1a}.XKCD_spinner__DYYMF{position:absolute;width:28px;height:28px;border-radius:50%;border:3px solid color-mix(in srgb,#1a1a1a 14%,transparent);border-top-color:#1a1a1a;animation:XKCD_xkcd-spin__Gk60y .8s linear infinite;pointer-events:none}@keyframes XKCD_xkcd-spin__Gk60y{to{transform:rotate(1turn)}}.XKCD_navButton__YSPPW{position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:44px;height:64px;border:none;border-radius:6px;background:rgba(20,20,20,.45);color:#ffffff;cursor:pointer;opacity:0;transition:opacity .14s ease}.XKCD_navPrev__lL3ac{left:8px}.XKCD_navNext__pvqJp{right:8px}.XKCD_viewport__Cbmsw:hover .XKCD_navButton__YSPPW:not(:disabled){opacity:.9}.XKCD_navButton__YSPPW:hover:not(:disabled){opacity:1;background:rgba(20,20,20,.7)}.XKCD_navButton__YSPPW:disabled{cursor:default}.XKCD_permalink__eiqTx{position:absolute;bottom:8px;right:10px;padding:2px 8px;border-radius:4px;color:#6c6c6c;font-size:11px;font-family:var(--app-font-mono,monospace);text-decoration:none;background:rgba(255,255,255,.7);opacity:0;transition:opacity .14s ease}.XKCD_viewport__Cbmsw:hover .XKCD_permalink__eiqTx{opacity:1}.XKCD_permalink__eiqTx:hover{color:#1a1a1a;background:#ffffff}