:root{--bg:#0b0e14;--bg-raised:#151a24;--bg-sunken:#090c11;--border:#232c3d;--border-strong:#33405a;--text:#eef2fb;--text-muted:#93a0bd;--text-dim:#66718c;--accent:#6ea8ff;--accent-strong:#3d84f5;--accent-contrast:#05080f;--danger:#ff6b6b;--danger-strong:#e64545;--safe:clamp(12px, 4vmin, 54px);--safe-top:calc(var(--safe) + env(safe-area-inset-top,0px));--safe-right:calc(var(--safe) + env(safe-area-inset-right,0px));--safe-bottom:calc(var(--safe) + env(safe-area-inset-bottom,0px));--safe-left:calc(var(--safe) + env(safe-area-inset-left,0px));--dpad-key:clamp(2.6rem, 7vmin, 4.4rem);--dpad-height:calc(3 * var(--dpad-key) + 2 * var(--gap-xs));--gap-xs:clamp(4px, .6vmin, 8px);--gap-sm:clamp(8px, 1.1vmin, 16px);--gap-md:clamp(12px, 1.8vmin, 26px);--gap-lg:clamp(18px, 2.8vmin, 40px);--radius-sm:clamp(8px, 1vmin, 14px);--radius:clamp(12px, 1.6vmin, 22px);--radius-lg:clamp(16px, 2.4vmin, 32px);--fs-xs:clamp(11px, 1.25vmin, 17px);--fs-sm:clamp(13px, 1.55vmin, 21px);--fs-md:clamp(15px, 1.95vmin, 27px);--fs-lg:clamp(19px, 2.5vmin, 35px);--fs-xl:clamp(25px, 3.5vmin, 50px);--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}@supports (height:100dvh){html,body,#root{height:100dvh}}body{font-family:var(--font);font-size:var(--fs-md);color:var(--text);background:radial-gradient(120% 80% at 50% 0%, #182034 0%, #18203400 60%), var(--bg);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;margin:0;line-height:1.35;overflow:hidden}h1,h2,h3,p{margin:0}:focus{outline:none}[data-input=key] [data-focusable]:focus{outline:3px solid var(--accent);outline-offset:3px;transform:scale(1.04);box-shadow:0 0 0 6px #6ea8ff2e}[data-focusable]{transition:transform .12s,background-color .12s,border-color .12s,box-shadow .12s}.tv-button{font:inherit;font-size:var(--fs-sm);color:var(--text);border-radius:var(--radius-sm);padding:var(--gap-sm) var(--gap-md);cursor:pointer;justify-content:center;align-items:center;gap:var(--gap-sm);touch-action:manipulation;background:0 0;border:2px solid #0000;min-height:44px;font-weight:600;display:inline-flex}.tv-button:disabled{opacity:.4;cursor:default}.tv-button--primary{background:var(--accent-strong);color:#fff;border-color:var(--accent-strong)}.tv-button--ghost{border-color:var(--border-strong);background:var(--bg-raised);color:var(--text-muted)}.tv-button--danger{color:var(--danger);border-color:#0000}.screen{height:100%;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);gap:var(--gap-md);flex-direction:column;display:flex;position:relative;overflow:hidden}.screen--centred{text-align:center;justify-content:center;align-items:center}.top-bar{align-items:baseline;gap:var(--gap-md);flex:none;min-width:0;display:flex}.top-bar__title{font-size:var(--fs-lg);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}.top-bar__meta{font-size:var(--fs-sm);color:var(--text-muted);white-space:nowrap;flex:none}.top-bar__meta-stage{text-transform:capitalize}.top-bar__actions{gap:var(--gap-sm);flex:none;align-items:center;margin-left:auto;display:flex}.menu{position:relative}.menu__toggle{min-width:44px;padding:var(--gap-xs) var(--gap-sm);font-size:var(--fs-lg);border-color:var(--border-strong);background:var(--bg-raised);color:var(--text-muted);line-height:1}.menu__scrim{z-index:14;position:fixed;inset:0}.menu__panel{top:calc(100% + var(--gap-sm));z-index:15;align-items:stretch;gap:var(--gap-xs);min-width:max-content;padding:var(--gap-xs);background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius);flex-direction:column;display:flex;position:absolute;right:0;box-shadow:0 clamp(8px,1.6vmin,24px) clamp(24px,4vmin,56px) #0000008c}.menu__panel .tv-button{white-space:nowrap;justify-content:flex-start}.world-view{gap:var(--gap-md);flex:1;grid-template-columns:minmax(0,1fr);min-height:0;display:grid}.world-view--editing{grid-template-columns:minmax(0,1fr) minmax(18rem,.5fr)}@media (orientation:portrait){.world-view--editing{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}.dev-panel{max-height:45vh}}.world-view__stage-area{justify-content:center;align-items:center;gap:var(--gap-sm);flex-direction:column;min-width:0;min-height:0;display:flex}.world-frame{aspect-ratio:4/3;border-radius:var(--radius-lg);outline:none;max-width:100%;min-height:0;max-height:100%;overflow:hidden}.world-stage{border-radius:var(--radius-lg);background:radial-gradient(circle at 50% 35%,#232a3d 0%,#1b2130 60%,#151a26 100%);width:100%;height:100%;overflow:hidden;box-shadow:0 clamp(6px,1.2vmin,18px) clamp(18px,3vmin,44px) #00000073}.world-stage[data-editing=true]{cursor:crosshair}.dpad{gap:var(--gap-xs);flex:none;grid-template-columns:repeat(3,auto);grid-template-areas:".up.""left ok right"".down.";justify-content:center;display:grid}.dpad__key[data-key=up]{grid-area:up}.dpad__key[data-key=left]{grid-area:left}.dpad__key[data-key=right]{grid-area:right}.dpad__key[data-key=down]{grid-area:down}.dpad__key[data-key=ok]{grid-area:ok}.dpad__key{width:var(--dpad-key);height:var(--dpad-key);background:var(--bg-raised);border:2px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:var(--fs-md);touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;display:flex}.dpad__key:not(:disabled):hover{border-color:var(--border-strong)}.dpad__key:not(:disabled):active{border-color:var(--accent);background:var(--accent-strong);color:#fff;transform:scale(.93)}.dpad__key{transition:transform 90ms,background-color 90ms,border-color 90ms}.dpad__key--ok{font-size:var(--fs-xs);letter-spacing:.08em;font-weight:700}.dialog-backdrop{padding:var(--safe);z-index:20;background:#030509b8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:var(--gap-lg);gap:var(--gap-md);flex-direction:column;width:min(100%,46rem);display:flex;box-shadow:0 clamp(10px,2vmin,30px) clamp(30px,5vmin,70px) #0009}.dialog__title{font-size:var(--fs-lg);font-weight:700}.dialog__body{font-size:var(--fs-sm);color:var(--text-muted)}.dialog__buttons{gap:var(--gap-sm);justify-content:flex-end;display:flex}.toast{left:50%;top:var(--safe);background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius);padding:var(--gap-sm) var(--gap-lg);font-size:var(--fs-sm);z-index:30;text-align:center;max-width:min(80vw,40rem);position:fixed;transform:translate(-50%);box-shadow:0 8px 30px #00000080}.dev-panel{gap:var(--gap-md);min-height:0;padding-right:var(--gap-sm);flex-direction:column;display:flex;overflow-y:auto}.dev-panel__head{align-items:center;gap:var(--gap-sm);display:flex}.dev-panel__title{font-size:var(--fs-md);margin-right:auto;font-weight:700}.dev-panel__group{gap:var(--gap-sm);flex-direction:column;display:flex}.dev-panel__group-title{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.12em;color:var(--text-dim);font-weight:700}.dev-panel__buttons{gap:var(--gap-xs);flex-wrap:wrap;display:flex}.dev-panel__buttons .tv-button{font-size:var(--fs-xs);padding:var(--gap-xs) var(--gap-sm)}.dev-panel__buttons .tv-button[aria-pressed=true]{border-color:var(--accent);color:var(--text)}.dev-panel__hint,.dev-panel__readout{font-size:var(--fs-xs);color:var(--text-dim);font-variant-numeric:tabular-nums}.boot__title{font-size:var(--fs-lg);font-weight:700}.boot__detail{font-size:var(--fs-sm);color:var(--text-muted);max-width:44rem;margin-top:var(--gap-sm)}.boot__spinner{border:3px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:clamp(28px,4vmin,56px);height:clamp(28px,4vmin,56px);animation:.9s linear infinite boot-spin}@keyframes boot-spin{to{transform:rotate(360deg)}}@media (width<=560px),(height<=520px){:root{--dpad-key:clamp(3rem, 15vw, 4.25rem)}.screen--editing{--dpad-key:2.5rem}.screen--editing .dev-panel{max-height:42vh}[data-input=key] .screen:not(.screen--editing) .world-frame:focus{outline-offset:-4px;transform:none}.screen:not(.screen--editing) .toast{top:auto;bottom:calc(var(--safe-bottom) + var(--dpad-height) + var(--gap-md));max-width:calc(100% - 2 * var(--safe-left) - 2 * var(--gap-md))}}@media (orientation:portrait) and (width<=560px){.screen:not(.screen--editing) .world-view__stage-area{justify-content:stretch;gap:var(--gap-md)}.screen:not(.screen--editing) .world-frame{aspect-ratio:auto;flex:auto;align-self:stretch;width:auto;max-width:none;max-height:none}}@media (orientation:landscape) and (height<=520px){:root{--dpad-key:clamp(2.75rem, 11vmin, 3.25rem)}.screen:not(.screen--editing) .world-frame{aspect-ratio:auto;border-radius:0;width:auto;max-width:none;max-height:none;position:fixed;inset:0}.screen:not(.screen--editing) .world-stage{box-shadow:none;border-radius:0}.screen:not(.screen--editing) .top-bar{z-index:10;padding:var(--safe-top) var(--safe-right) var(--gap-md) var(--safe-left);text-shadow:0 1px 4px #030509e6;background:linear-gradient(#06080dad 0%,#06080d00 100%);align-items:center;position:fixed;top:0;left:0;right:0}.screen:not(.screen--editing) .top-bar__meta{color:#ffffffd1}.screen:not(.screen--editing) .dpad{z-index:10;bottom:var(--safe-bottom);left:var(--safe-left);right:var(--safe-right);grid-template-columns:auto auto auto 1fr auto;grid-template-areas:".up. . .""left.right.ok"".down. . .";justify-content:stretch;position:fixed}.screen:not(.screen--editing) .dpad__key{background:#0a0e16c7;border-color:#ffffff2e;box-shadow:0 2px 14px #00000073}.screen:not(.screen--editing) .dpad__key--ok{width:auto;min-width:calc(var(--dpad-key) * 1.7)}}@media (prefers-reduced-motion:reduce){[data-focusable],.dpad__key{transition:none}.dpad__key:not(:disabled):active{transform:none}.boot__spinner{animation-duration:3s}}
