:root{color-scheme:dark;font-family:SFMono-Regular,Cascadia Mono,Roboto Mono,ui-monospace,monospace;--ink: #d5d1c3;--muted: #969a91;--accent: #8d998b}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden;background:#414341;overscroll-behavior:none;touch-action:none;user-select:none;-webkit-user-select:none}body{position:fixed;inset:0;color:var(--ink)}#game-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;image-rendering:pixelated}.vignette{position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(180deg,rgba(30,34,35,.18),transparent 31%,transparent 74%,rgba(27,28,27,.24)),radial-gradient(ellipse at center,transparent 54%,rgba(24,27,28,.2) 118%)}.prototype-label{position:absolute;z-index:4;left:max(18px,calc(env(safe-area-inset-left) + 12px));top:max(15px,calc(env(safe-area-inset-top) + 8px));display:grid;gap:3px;text-shadow:0 1px 5px rgba(22,25,25,.72);pointer-events:auto;touch-action:none}.prototype-label strong{font-size:.75rem;letter-spacing:.22em}.prototype-label span{color:#d3d3c7b3;font-size:.43rem;letter-spacing:.13em}.game-hud{position:absolute;inset:0;z-index:5;pointer-events:none}.joystick{position:absolute;left:max(26px,calc(env(safe-area-inset-left) + 18px));bottom:max(20px,calc(env(safe-area-inset-bottom) + 13px));width:clamp(100px,14vw,126px);aspect-ratio:1;border:1px solid rgba(237,222,190,.32);border-radius:50%;background:radial-gradient(circle,#ebdcba09 0 37%,#251f1a47 39% 68%,#e6d6b314 69% 70%,#251f1a30 71%);box-shadow:0 4px 22px #221c1726;touch-action:none;pointer-events:auto}.joystick-ring{position:absolute;inset:14%;border:1px dashed rgba(236,221,190,.17);border-radius:50%}.joystick-knob{position:absolute;left:50%;top:50%;width:44%;aspect-ratio:1;margin:-22%;border:1px solid rgba(239,225,194,.58);border-radius:50%;background:#362d26b8;box-shadow:0 4px 12px #1f19154d;will-change:transform}.joystick-knob i{position:absolute;inset:32%;border:1px solid var(--accent);transform:rotate(45deg)}.connection-status{position:absolute;right:max(18px,calc(env(safe-area-inset-right) + 12px));top:max(15px,calc(env(safe-area-inset-top) + 8px));display:flex;align-items:center;gap:.4rem;padding:.32rem .5rem;background:#1f23236b;color:#dadacfb8;font-size:.47rem;letter-spacing:.1em}.connection-status i{width:6px;height:6px;background:#996c59;transform:rotate(45deg)}.connection-status[data-state=online] i{background:#a6b186}.connection-status[data-state=connecting] i,.connection-status[data-state=reconnecting] i{background:var(--accent);animation:blink .8s steps(2,end) infinite}.interaction-hud{position:absolute;z-index:7;right:max(24px,calc(env(safe-area-inset-right) + 18px));bottom:max(24px,calc(env(safe-area-inset-bottom) + 16px));width:min(176px,28vw);display:grid;justify-items:stretch;gap:.34rem;pointer-events:none;filter:drop-shadow(0 2px 8px rgba(20,23,22,.52))}.interaction-name{color:#dedccfc7;font-size:.5rem;font-weight:500;letter-spacing:.13em;text-align:center}.interaction-action{min-height:56px;padding:.55rem .8rem;border:1px solid rgba(188,195,179,.5);background:#232826c2;color:#dddacf;font:inherit;font-size:.64rem;letter-spacing:.14em;pointer-events:auto;touch-action:none}.interaction-action:focus-visible{outline:2px solid rgba(199,208,188,.72);outline-offset:3px}.interaction-hud[data-state=starting] .interaction-action,.interaction-hud[data-state=active] .interaction-action{border-color:#cdc6a5ad}.interaction-key{display:none;margin-right:.45rem;color:#c8cabeb8}.interaction-progress{height:3px;overflow:hidden;border:1px solid rgba(187,192,177,.28);background:#181d1cad}.interaction-progress i{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left;background:#c3c6b1d6;will-change:transform}.interaction-feedback{position:absolute;z-index:7;left:50%;bottom:max(18%,calc(env(safe-area-inset-bottom) + 76px));transform:translate(-50%);padding:.42rem .62rem;background:#1f2422a8;color:#dad8cad6;font-size:.52rem;letter-spacing:.15em;pointer-events:none}.interaction-target-indicator{position:absolute;z-index:6;left:0;top:0;width:24px;height:24px;margin:-12px 0 0 -12px;border:1px solid rgba(194,196,179,.52);pointer-events:none;will-change:transform}.interaction-target-indicator:before,.interaction-target-indicator:after{content:"";position:absolute;background:#cdcdbb94}.interaction-target-indicator:before{left:50%;top:4px;width:1px;height:14px}.interaction-target-indicator:after{left:4px;top:50%;width:14px;height:1px}.interaction-target-indicator[data-blocked=true]{opacity:.35}@media(hover:hover)and (pointer:fine){.interaction-hud{right:auto;left:50%;bottom:max(34px,calc(env(safe-area-inset-bottom) + 24px));width:168px;transform:translate(-50%)}.interaction-action{min-height:38px;padding:.45rem .65rem;pointer-events:none}.interaction-key{display:inline}}.debug-overlay{position:absolute;z-index:30;left:max(12px,env(safe-area-inset-left));top:max(48px,calc(env(safe-area-inset-top) + 42px));padding:.5rem .62rem;white-space:pre;background:#1d2121d1;border:1px solid rgba(157,164,151,.34);color:#d4d1c3;font-size:10px;line-height:1.45;pointer-events:none}.developer-auth,.developer-panel{position:absolute;z-index:42;right:max(12px,calc(env(safe-area-inset-right) + 8px));top:max(48px,calc(env(safe-area-inset-top) + 42px));width:min(360px,calc(100vw - 24px));border:1px solid rgba(166,177,160,.42);background:#191e1df0;box-shadow:0 10px 36px #0c0f0e61;color:var(--ink);pointer-events:auto}.developer-auth[hidden],.developer-panel[hidden],.developer-panel-open[hidden],.developer-biome-map[hidden],.developer-map-legend[hidden]{display:none}.developer-auth form{display:grid;gap:.5rem;padding:.8rem}.developer-auth strong,.developer-panel strong{font-size:.6rem;letter-spacing:.13em}.developer-auth label,.developer-auth span{color:var(--muted);font-size:.48rem}.developer-auth form>div{display:flex;gap:.4rem}.developer-auth input{min-width:0;flex:1}.developer-auth input,.developer-auth button,.developer-panel button,.developer-panel input,.developer-panel select,.developer-panel-open{min-height:30px;border:1px solid rgba(166,177,160,.4);background:#3d4641cc;color:var(--ink);font:inherit;font-size:.48rem;letter-spacing:.06em}.developer-panel{max-height:calc(100vh - 62px);overflow:auto;padding-bottom:.65rem}.developer-panel header{position:sticky;z-index:1;top:0;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.58rem .65rem;background:#202624fa}.developer-panel header span{margin-left:auto;color:#efba5f;font-size:8px;letter-spacing:.1em}.developer-panel header button{width:30px;padding:0}.developer-panel pre{margin:0;padding:.55rem .65rem;white-space:pre-wrap;color:#c8cbbf;font-size:9px;line-height:1.42}.developer-panel details{border-top:1px solid rgba(166,177,160,.17)}.developer-panel summary{position:sticky;top:47px;padding:.5rem .65rem;background:#1b211ff7;color:#b9beb3;font-size:9px;letter-spacing:.1em;cursor:pointer}.developer-panel button[data-active=true],.developer-panel button[data-active=true]:active{border-color:#c1e2abcc;background:#5c7c50c2;color:#efffdf}.developer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.34rem;padding:.45rem .65rem}.developer-speed-buttons{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.25rem;padding:0 .65rem .55rem}.developer-speed-buttons button{min-width:0;padding:.2rem}.developer-coordinate-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:.35rem;padding:.45rem .65rem}.developer-coordinate-form label{display:grid;gap:.2rem;color:var(--muted);font-size:8px}.developer-coordinate-form input{width:100%;min-width:0;padding:.3rem}.developer-status{display:block;min-height:18px;padding:0 .65rem .35rem;color:#d3ad68;font-size:8px}.developer-teleports{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.32rem;padding:0 .65rem}.developer-teleports button{padding:.35rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.developer-bookmarks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem;padding:.4rem .65rem .6rem}.developer-bookmarks div{display:grid;gap:.22rem}.developer-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.2rem .5rem;padding:.5rem .65rem}.developer-checks label{display:flex;align-items:center;gap:.35rem;min-height:28px;color:#bfc4b8;font-size:8px}.developer-frame-graph{display:block;width:calc(100% - 1.3rem);height:54px;margin:0 .65rem .6rem;border:1px solid rgba(166,177,160,.25);background:#0c100fa3}.developer-panel[data-map-open=true]{width:min(560px,calc(100vw - 24px))}.developer-biome-map{display:block;width:min(calc(100% - 1.3rem),calc(100vh - 138px));height:auto;margin:.2rem auto .3rem;border:1px solid rgba(221,224,205,.58);image-rendering:pixelated;background:#1f2422}.developer-map-legend{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.24rem .45rem;margin:0 .65rem .65rem;color:#d9d8ca;font-size:8px;line-height:1.25}.developer-map-legend span{display:flex;min-width:0;align-items:center;gap:.25rem;white-space:nowrap}.developer-map-legend i{width:9px;height:9px;flex:0 0 9px;border:1px solid rgba(255,255,255,.42)}.developer-map-legend i[data-map-color=ashlands]{background:#be602e}.developer-map-legend i[data-map-color=ground-zero]{background:#473b56}.developer-map-legend i[data-map-color=fertile]{background:#68b146}.developer-map-legend i[data-map-color=nuclear]{background:#145b3b}.developer-map-legend i[data-map-color=ruined]{background:#b5aa8f}.developer-map-legend i[data-map-color=industrial]{background:#856366}.developer-map-legend i[data-map-color=highway]{background:#f9cd3e}.developer-map-legend i[data-map-color=road]{background:#e1dbbe}.developer-map-legend i[data-map-color=river]{background:#2797cc}.developer-map-legend i[data-map-color=poi]{background:#ff9129;transform:rotate(45deg) scale(.72)}.developer-map-legend i[data-map-color=player]{border-radius:50%;background:#fff;box-shadow:0 0 0 1px #111}.developer-panel-open{position:absolute;z-index:41;right:max(12px,calc(env(safe-area-inset-right) + 8px));top:max(48px,calc(env(safe-area-inset-top) + 42px));padding:0 .55rem;pointer-events:auto}.developer-world-overlay{position:absolute;z-index:3;inset:0;pointer-events:none}.developer-vertical-controls{position:absolute;z-index:39;right:max(18px,calc(env(safe-area-inset-right) + 12px));bottom:max(24px,calc(env(safe-area-inset-bottom) + 16px));display:grid;gap:.45rem;pointer-events:auto}.developer-vertical-controls button{width:64px;min-height:46px;border:1px solid rgba(199,211,190,.5);background:#232b28c7;color:var(--ink);font:inherit;font-size:9px;touch-action:none}.developer-vertical-controls[hidden]{display:none}body.screenshot-mode .prototype-label,body.screenshot-mode .game-hud,body.screenshot-mode .interaction-hud,body.screenshot-mode .interaction-feedback,body.screenshot-mode .interaction-target-indicator,body.screenshot-mode .developer-panel,body.screenshot-mode .developer-panel-open,body.screenshot-mode .developer-vertical-controls,body.screenshot-mode .developer-world-overlay,body.screenshot-mode .debug-overlay,body.screenshot-mode .update-notice,body.screenshot-mode .vignette{display:none!important}@media(max-height:430px){.developer-panel{top:max(8px,env(safe-area-inset-top));max-height:calc(100vh - 16px);width:min(430px,55vw)}.developer-panel[data-map-open=true]{width:min(560px,64vw)}.developer-panel pre{font-size:8px}.developer-panel summary{top:43px}.developer-panel button,.developer-panel input{min-height:34px}}.update-notice{position:absolute;z-index:40;right:max(18px,calc(env(safe-area-inset-right) + 12px));bottom:max(18px,calc(env(safe-area-inset-bottom) + 12px));display:grid;min-width:218px;gap:.68rem;padding:.72rem;border:1px solid rgba(174,181,163,.38);background:#1d2121e6;box-shadow:0 8px 30px #12151552}.update-notice[hidden]{display:none}.update-notice>div:first-child{display:grid;gap:.18rem}.update-notice strong{font-size:.63rem;letter-spacing:.15em}.update-notice span{color:var(--muted);font-size:.45rem;letter-spacing:.1em}.update-actions{display:flex;gap:.45rem}.update-actions button{min-height:34px;padding:.48rem .65rem;border:1px solid rgba(174,181,163,.42);background:#404642b8;color:var(--ink);font:inherit;font-size:.5rem;letter-spacing:.09em;cursor:pointer;pointer-events:auto}.update-actions button:last-child{background:transparent;color:var(--muted)}.update-actions button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.update-actions button:disabled{cursor:wait;opacity:.52}.update-notice[data-state=activating] span{animation:blink .8s steps(2,end) infinite}.update-notice[data-state=blocked]{border-color:#aa7d659e}.rotate-device,.context-error,.fatal-error{display:none;position:absolute;inset:0;z-index:50;align-items:center;justify-content:center;flex-direction:column;gap:.55rem;text-align:center;background:#383c3b}.rotate-device div{font-size:2rem;color:var(--accent)}.rotate-device strong,.context-error strong,.fatal-error strong{letter-spacing:.14em}.rotate-device span,.context-error span,.fatal-error span{color:var(--muted);font-size:.66rem}.context-lost .context-error{display:flex}.fatal-error:not([hidden]){display:flex}.fatal-error button{margin-top:.5rem;padding:.6rem 1rem;border:1px solid var(--accent);background:transparent;color:var(--ink)}@keyframes blink{50%{opacity:.38}}@media(orientation:portrait)and (max-width:700px){.rotate-device{display:flex}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important}}
