:root{--ink: #eaf0f4;--bg: #0d1117cc}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#0b0f14;color:var(--ink);font:14px/1.5 system-ui,Segoe UI,sans-serif;-webkit-user-select:none;user-select:none;overscroll-behavior:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}#game{display:block;width:100vw;height:100vh;height:100dvh;touch-action:none}#hud{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}#crosshair{position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#fff;box-shadow:0 0 0 1.5px #0008;opacity:.85}#stats{position:absolute;top:10px;left:12px;padding:8px 10px;background:var(--bg);border-radius:8px;font-variant-numeric:tabular-nums;white-space:pre;font-size:12px;opacity:.9}#prompt{position:absolute;left:50%;top:calc(50% + 34px);transform:translate(-50%);padding:5px 12px;background:var(--bg);border-radius:6px;font-size:13px;white-space:nowrap;display:none}#prompt.show{display:block}body.touch #prompt b{display:none}#prompt i{font-style:normal;opacity:.7}#prompt b{display:inline-block;min-width:18px;margin-right:6px;padding:0 4px;text-align:center;color:#06202e;background:#6cf;border-radius:4px}#toast{position:absolute;bottom:96px;left:50%;transform:translate(-50%);padding:6px 12px;background:var(--bg);border-radius:6px;opacity:0;transition:opacity .25s}#toast.show{opacity:1}#hint{position:absolute;left:50%;bottom:96px;transform:translate(-50%);padding:7px 14px;background:var(--bg);border-radius:8px;opacity:0;transition:opacity .2s}#hint.show{opacity:1}#login{position:fixed;top:0;right:0;bottom:0;left:0;display:none;place-items:center;background:radial-gradient(circle at 50% 40%,#16222e,#080b0f);z-index:20}#login.show{display:grid}#login .tabs{display:flex;gap:6px;margin:0 0 14px}#login .tabs button{flex:1;padding:8px 6px;font:600 12px system-ui,sans-serif;color:var(--ink);background:#16202b;border:1px solid #ffffff1a;border-radius:8px;cursor:pointer}#login .tabs button.on{color:#06202e;background:#6cf;border-color:#cdefff}#login form{display:flex;flex-direction:column;gap:8px;margin:4px 0 6px}#login form[hidden],#shop .pay[hidden],#login form[data-tab=recover] [name=recover-code],#login form[data-tab=recover] [name=recover-pass]{display:none}#login form[data-tab=recover].sent [name=recover-code],#login form[data-tab=recover].sent [name=recover-pass]{display:block}#login .mail{margin:4px 0 10px;padding:10px 12px;background:#101a24;border:1px solid #6cf4;border-left:3px solid #6cf;border-radius:8px}#login .mail .tag{display:block;margin-bottom:6px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#9fe3ff;opacity:.8}#login .mail .body{margin:6px 0 0;font:12px/1.5 ui-monospace,Consolas,monospace;white-space:pre-wrap;opacity:.8;-webkit-user-select:text;user-select:text}#login input{flex:1;padding:9px 12px;font:15px system-ui,sans-serif;color:var(--ink);background:#16202b;border:1px solid #ffffff26;border-radius:8px}#login input:focus{outline:2px solid #6cf}#login button[type=submit]{padding:9px 20px;font:600 15px system-ui,sans-serif;color:#06202e;background:#6cf;border:0;border-radius:8px;cursor:pointer}#login button[type=submit]:hover{background:#8fdcff}#login .error{min-height:18px;margin:2px 0 6px;font-size:13px;color:#ff9b9b}#login .sub.small{font-size:12px}#login .link{padding:0;margin-top:10px;font:13px system-ui,sans-serif;color:#8fdcff;background:none;border:0;text-decoration:underline;cursor:pointer}#note-editor{position:fixed;left:50%;top:30%;transform:translate(-50%,-50%);display:none;width:320px;padding:14px 16px;background:#0b1017f2;border:1px solid #ffffff24;border-radius:12px;z-index:12}#note-editor.show{display:block}#note-editor label{display:block;margin-bottom:6px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.55}#note-editor textarea{width:100%;padding:8px 10px;font:14px/1.4 system-ui,sans-serif;color:#2b2b22;background:#f5e27a;border:0;border-radius:6px;resize:none}#note-editor textarea:focus{outline:2px solid #6cf}#note-editor .tip{display:block;margin-top:7px;font-size:11px;opacity:.5}#note-editor .actions{display:none;gap:8px;margin-top:10px}#note-editor .actions button{flex:1;padding:10px;font:600 14px system-ui,sans-serif;color:#06202e;background:#6cf;border:0;border-radius:8px}#note-editor .actions .cancel{color:var(--ink);background:#22303d}body.touch #note-editor .actions{display:flex}body.touch #note-editor .tip{display:none}#place{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);display:none;width:min(340px,calc(100vw - 24px));padding:16px 18px;background:#0b1017f2;border:1px solid #ffffff24;border-radius:12px;z-index:12}#place.show{display:block}#place label{display:block;margin:0 0 6px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.55}#place .code{display:flex;align-items:center;gap:8px}#place .code b{flex:1;padding:9px 10px;font:700 20px/1 ui-monospace,Cascadia Mono,Consolas,monospace;font-variant-numeric:tabular-nums;letter-spacing:.06em;text-align:center;background:#16202b;border:1px solid #ffffff1f;border-radius:8px;-webkit-user-select:text;user-select:text}#place .tip{display:block;margin:7px 0 14px;font-size:11px;opacity:.5}#place .code.invite{margin-top:4px}#place .code.invite b{font-size:12px;letter-spacing:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#place form{display:flex;gap:8px}#place input{flex:1;min-width:0;padding:9px 10px;font:15px ui-monospace,Consolas,monospace;letter-spacing:.06em;color:var(--ink);background:#16202b;border:1px solid #ffffff26;border-radius:8px}#place input:focus{outline:2px solid #6cf}#place button{padding:9px 14px;font:600 14px system-ui,sans-serif;color:#06202e;background:#6cf;border:0;border-radius:8px;cursor:pointer}#place button:hover{background:#8fdcff}#place button:disabled{color:var(--ink);background:#22303d;cursor:default}#place .close{width:100%;margin-top:12px;color:var(--ink);background:#22303d}#place .close:hover{background:#2d4152}#place .error{min-height:16px;margin:8px 0 0;font-size:12px;color:#9fe3ff}#map{position:absolute;top:calc(52px + env(safe-area-inset-top));right:calc(14px + env(safe-area-inset-right))}#minimap{display:none;width:180px;height:180px;background:#0d1117cc;border:1px solid #ffffff24;border-radius:10px}#minimap.show{display:block}#map .north,#map .scale{position:absolute;font-size:10px;letter-spacing:.06em;color:var(--ink);opacity:.55;text-shadow:0 1px 2px #000a}#map .north{top:4px;left:50%;transform:translate(-50%)}#map .scale{bottom:4px;right:6px}#minimap:not(.show)~.north,#minimap:not(.show)~.scale{display:none}@media (max-width: 820px),(pointer: coarse){#map{top:calc(62px + env(safe-area-inset-top))}#minimap{width:120px;height:120px}}#nearby{position:absolute;top:96px;left:12px;display:none;padding:6px 10px;background:var(--bg);border-radius:8px;font-size:12px}#nearby.show{display:block}#nearby div{display:flex;gap:8px;align-items:baseline;opacity:.9}#nearby .dir{width:14px;text-align:center;opacity:.75}#nearby .far{font-variant-numeric:tabular-nums;opacity:.6}#logros{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);display:none;width:min(420px,calc(100vw - 24px));max-height:84dvh;padding:16px 18px;background:#0b1017f2;border:1px solid #ffffff24;border-radius:12px;z-index:12}#logros.show{display:flex;flex-direction:column}#logros label{display:block;margin:0 0 4px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.55}#logros .summary{margin:0 0 12px;font-size:12px;opacity:.7}#logros .list{overflow-y:auto;overscroll-behavior:contain}#logros .logro{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:8px 0;border-top:1px solid #ffffff12}#logros .logro b{font-weight:600}#logros .logro .desc{grid-column:1 / -1;font-size:12px;opacity:.55}#logros .logro .num{font-size:11px;font-variant-numeric:tabular-nums;opacity:.6}#logros .logro .bar{grid-column:1 / 2;height:5px;margin-top:4px;background:#16202b;border-radius:999px;overflow:hidden}#logros .logro .bar i{display:block;height:100%;background:#6cf}#logros .logro.done b{color:#ffd9a0}#logros .logro.done .bar i{background:#ffd9a0}#logros .close{width:100%;margin-top:12px;padding:8px 12px;font:600 13px system-ui,sans-serif;color:var(--ink);background:#22303d;border:0;border-radius:8px;cursor:pointer}#shop,#admin{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);display:none;padding:16px 18px;background:#0b1017f2;border:1px solid #ffffff24;border-radius:12px;z-index:12}#shop{width:min(380px,calc(100vw - 24px))}#admin{width:min(900px,calc(100vw - 24px));max-height:86dvh;overflow:hidden}#shop.show,#admin.show{display:block}#shop label,#admin label{display:block;margin:0 0 10px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.55}#shop .item{display:flex;align-items:center;gap:12px;padding:8px 10px;background:#16202b;border:1px solid #ffffff14;border-radius:8px}#shop .item+.item{margin-top:6px}#shop .item b{flex:1;font-weight:600}#shop .item .price{min-width:66px;padding:4px 8px;font-weight:600;font-variant-numeric:tabular-nums;text-align:center;color:#ffd9a0;background:#ffffff12;border-radius:6px}#shop .item.mine .price{color:var(--ink);background:none;opacity:.55}#shop .item button{min-width:84px}#shop .pay{display:flex;flex-direction:column;gap:8px}#shop .pay .row{display:flex;gap:8px}#shop .pay .row input{flex:1;min-width:0}#shop .tag{padding:6px 8px;font-size:11px;letter-spacing:.04em;color:#ffd9a0;background:#3a2a12;border-radius:6px}#shop .tip{font-size:11px;opacity:.5}#shop input{padding:9px 10px;font:14px system-ui,sans-serif;color:var(--ink);background:#16202b;border:1px solid #ffffff26;border-radius:8px}#shop .actions{display:flex;gap:8px}#shop .actions button{flex:1}#shop button,#admin button{padding:8px 12px;font:600 13px system-ui,sans-serif;color:#06202e;background:#6cf;border:0;border-radius:8px;cursor:pointer}#shop button:hover,#admin button:hover{background:#8fdcff}#shop button:disabled{color:var(--ink);background:#22303d;cursor:default}#shop .cancel,#shop .close,#admin .close{color:var(--ink);background:#22303d}#shop .close{width:100%;margin-top:12px}#shop .msg,#admin .msg{min-height:16px;margin:10px 0 0;font-size:12px;color:#9fe3ff}#admin .stats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}#admin .stats span{display:flex;flex-direction:column;padding:6px 12px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;opacity:.75;background:#16202b;border-radius:8px}#admin .stats b{font-size:16px;letter-spacing:0;text-transform:none;opacity:1}#admin .scroll{max-height:52dvh;overflow:auto;overscroll-behavior:contain}#admin table{width:100%;border-collapse:collapse;font-size:12px}#admin th{position:sticky;top:0;padding:6px 8px;text-align:left;font-size:10px;letter-spacing:.08em;text-transform:uppercase;background:#0b1017;opacity:.6}#admin td{padding:6px 8px;border-top:1px solid #ffffff12;vertical-align:top}#admin td.mail{opacity:.6}#admin td i{font-style:normal;color:#ffd9a0}#admin td em{font-style:normal;color:#7ce39b}#admin .acts{display:flex;flex-wrap:wrap;gap:4px}#admin .acts button{padding:4px 8px;font-size:11px}#admin .actions{display:flex;gap:8px;margin-top:12px}#piece-menu{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) scale(.96);display:none;gap:14px;width:min(880px,92vw);max-height:80dvh;overflow-y:auto;overscroll-behavior:contain;padding:16px 18px;background:#0b1017e8;border:1px solid #ffffff1f;border-radius:14px;z-index:8}#piece-menu.show{display:block;animation:pop .12s ease-out forwards}@keyframes pop{to{transform:translate(-50%,-50%) scale(1)}}#piece-menu h2{margin:2px 0 8px;font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;opacity:.5}#piece-menu .group+.group{margin-top:14px}#piece-menu .tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}#piece-menu .tile{padding:6px 4px 5px;text-align:center;background:#16202b;border:2px solid #ffffff1a;border-radius:10px}#piece-menu .tile img{width:62px;height:62px;display:block;margin:0 auto}#piece-menu .tile .name{display:block;font-size:11px;opacity:.9}#piece-menu .tile.on{border-color:#6cf}#piece-menu .tile.locked{position:relative;border-color:#ffd9a04d}#piece-menu .tile.locked img{opacity:.45}#piece-menu .tile.locked:after{content:"🔒";position:absolute;right:6px;top:4px;font-size:13px}#piece-menu .tile.hover{background:#22384a;border-color:#9fe3ff}#vcursor{position:fixed;left:0;top:0;width:14px;height:14px;margin:-7px 0 0 -7px;border:2px solid #ffffffcc;border-radius:50%;background:#6cf9;box-shadow:0 0 0 1px #0008;pointer-events:none;display:none;z-index:9}#vcursor.show{display:block}#corner{position:fixed;top:calc(12px + env(safe-area-inset-top));right:calc(14px + env(safe-area-inset-right));display:flex;gap:8px;z-index:11}#corner button{width:30px;height:30px;padding:0;font:600 15px/1 system-ui,sans-serif;color:var(--ink);background:#0d1117cc;border:1px solid #ffffff22;border-radius:50%;cursor:pointer}#corner button:hover{background:#1b3a52dd}#corner button.on{color:#06202e;background:#6cfd;border-color:#cdefff}body.touch #corner button{width:40px;height:40px;font-size:18px}#overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#05080bd0;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:10}#overlay.hidden{display:none}.panel{max-width:520px;padding:28px 32px;background:#0f1620ee;border:1px solid #ffffff18;border-radius:14px}.panel h1{margin:0 0 4px;font-size:26px;letter-spacing:.5px}.panel .sub{margin:0 0 16px;opacity:.65}.panel ul{margin:0 0 20px;padding-left:18px;opacity:.9}.panel li{margin:3px 0}.panel li.note{list-style:none;margin-top:8px;opacity:.55;font-size:13px}#close-help{padding:10px 22px;font:inherit;font-weight:600;color:#06202e;background:#6cf;border:0;border-radius:8px;cursor:pointer}#close-help:hover{background:#8fdcff}.panel .touch-only,body.touch .panel .keyboard{display:none}body.touch .panel .touch-only{display:block}#lost{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#05080be6;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50}#lost.hidden{display:none}#lost .panel{width:min(420px,calc(100vw - 24px));text-align:center}#lost h1{margin:0 0 8px;font-size:22px}#lost .why{margin:0 0 10px}#lost .note{margin:0 0 20px;font-size:13px;opacity:.6}#lost .actions{display:flex;gap:10px;justify-content:center}#lost button{padding:10px 18px;font:600 14px system-ui,sans-serif;color:#06202e;background:#6cf;border:0;border-radius:8px;cursor:pointer}#lost button:hover{background:#8fdcff}#lost .leave{color:var(--ink);background:#22303d}#lost .leave:hover{background:#2d4152}#touch-ui{position:fixed;inset:0 calc(14px + env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) calc(14px + env(safe-area-inset-left));display:none;pointer-events:none;z-index:7;touch-action:none}#touch-ui.on{display:block}#touch-ui.menu #tc-stick,#touch-ui.menu #tc-pad,#touch-ui.menu .tc-run,#touch-ui.menu .tc-fly{display:none}#tc-stick{position:absolute;left:8px;bottom:8px;width:120px;height:120px;border:2px solid #ffffff2e;border-radius:50%;background:#0d111766;pointer-events:auto}#tc-stick i{position:absolute;left:50%;top:50%;width:52px;height:52px;margin:-26px 0 0 -26px;border-radius:50%;background:#9fe3ffcc;box-shadow:0 0 0 1px #0006}.tc-btn{display:block;padding:0;font:600 12px/1 system-ui,sans-serif;color:var(--ink);background:#0d1117bb;border:1px solid #ffffff2e;border-radius:50%;pointer-events:auto;touch-action:none}.tc-btn.on{color:#06202e;background:#6cfd;border-color:#cdefff}#tc-pad{position:absolute;right:4px;bottom:4px;display:grid;grid-template-columns:repeat(3,64px);grid-template-rows:repeat(2,64px);gap:6px}#tc-pad .tc-btn{width:64px;height:64px}.tc-build{grid-area:2 / 3;font-size:13px!important;background:#1c4a66cc!important}.tc-break{grid-area:2 / 2}.tc-jump{grid-area:1 / 3}.tc-use{grid-area:1 / 2}.tc-turn{grid-area:2 / 1}#tc-side{position:absolute;right:4px;top:calc(60px + env(safe-area-inset-top));display:flex;flex-direction:row-reverse;gap:8px}#tc-side .tc-btn{width:58px;height:58px}.tc-menu{background:#1c4a66cc!important}.tc-laser{background:#5a1f18cc!important}@media (max-width: 820px),(pointer: coarse){#stats{font-size:10px;opacity:.75}#piece-menu{width:calc(100vw - 24px);max-height:78dvh;-webkit-overflow-scrolling:touch;touch-action:pan-y}#piece-menu .tiles{grid-template-columns:repeat(auto-fill,minmax(76px,1fr))}#piece-menu .tile img{width:48px;height:48px}.panel{max-width:calc(100vw - 24px);max-height:84dvh;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:20px 18px}#note-editor{width:min(320px,calc(100vw - 24px));top:26%}}
