*{box-sizing:border-box}
body{margin:0;overflow:hidden;background:#12141a;color:#f4efe6;font:14px "Hiragino Kaku Gothic ProN","Hiragino Sans",system-ui,sans-serif;user-select:none;-webkit-user-select:none}
canvas{display:block;touch-action:none;image-rendering:pixelated}
.px{font-family:"DotGothic16","Hiragino Kaku Gothic ProN",monospace;letter-spacing:.04em}
a{color:#9cc8ff}
.panel{background:#1a1e28e6;border:2px solid #8a7348;box-shadow:0 0 0 2px #0006,inset 0 0 0 1px #3a3228;border-radius:4px}
#hud{position:fixed;left:10px;top:10px;pointer-events:none;max-width:min(360px,calc(100vw - 20px));padding:6px 10px;line-height:1.45;font-size:12px}
#hud .row{display:flex;gap:10px;flex-wrap:wrap;font-variant-numeric:tabular-nums}
#hud .tag{font-size:10px;color:#e8c878}
#hud b{color:#ffe08a;font-size:13px}
#status{font-size:11px;color:#a8f0c8;margin-top:2px}
#status.off{color:#ff9a7a}
#status.practice{color:#ffd27a}
body.title #hud .row{display:none}
#topR{position:fixed;right:10px;top:10px;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
#sndBtn.off{color:#8a7f6c;border-color:#3a3224}
button{font:inherit;color:#ece4d2;background:#231d14;border:2px solid #6b5a3a;border-radius:4px;padding:4px 10px;cursor:pointer}
button:hover{background:#4a3a20;border-color:#d8b35a}
#banner{position:fixed;left:50%;top:38%;transform:translate(-50%,-50%);padding:12px 28px;font-size:42px;display:none;pointer-events:none;text-shadow:0 4px 0 #000,0 0 24px #ff8a2a88}
#banner.show{display:block;animation:pop .35s ease-out}
@keyframes pop{from{transform:translate(-50%,-50%) scale(.7);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}
#lobby{position:fixed;left:50%;bottom:52px;transform:translateX(-50%);padding:4px 12px;display:none;text-align:center;font-size:12px;max-width:calc(100vw - 16px);background:#1a1e28c8}
#lobby.show{display:block}
#lobby small{color:#c9b89a;margin-left:6px}
#result{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:#000c;pointer-events:auto}
#result.show{display:flex}
#result .box{width:min(420px,calc(100vw - 24px));padding:20px;text-align:center;line-height:1.65}
#result h2{margin:0 0 8px;color:#ffd27a;font-size:28px}
#result ul{list-style:none;padding:0;margin:12px 0;text-align:left}
#result li{padding:4px 0;border-bottom:1px solid #333}
#title{position:fixed;left:0;right:0;bottom:0;padding:0 8px 10px;pointer-events:none;background:linear-gradient(transparent,rgba(0,0,0,.35))}
#title.hide{display:none}
#titleBar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;padding:6px 10px;pointer-events:auto;background:#1a1e28b8;border-color:#6b5a3a88}
#titleBar .logo{color:#ffd27a;font-size:15px;white-space:nowrap}
#titleBar .nameLbl{font-size:12px;color:#c9b89a;display:flex;align-items:center;gap:4px}
#titleBar input{width:min(120px,28vw);padding:4px 8px;font:inherit;background:#111;border:1px solid #6b5a3a;border-radius:3px;color:#eee}
#playBtn{font-weight:bold;padding:5px 14px}
#helpBtn{min-width:28px;padding:4px 6px}
#titleHelp{margin-top:6px;padding:8px 10px;font-size:11px;line-height:1.5;pointer-events:auto;background:#1a1e28cc;max-width:520px;margin-left:auto;margin-right:auto}
#titleHelp summary{cursor:pointer;color:#e8c878}
#titleHelp p{margin:6px 0 0}
#titleHelp kbd{display:inline-block;min-width:1.4em;padding:0 3px;border:1px solid #6b5a3a;border-radius:2px;background:#231d14;font:11px ui-monospace,monospace}
#touch{display:none}
body.touch.play #touch{display:block}
#joy{position:fixed;left:22px;bottom:22px;width:118px;height:118px;border-radius:50%;background:#ffffff14;border:2px solid #ffffff30;pointer-events:auto;touch-action:none}
#joyK{position:absolute;left:39px;top:39px;width:40px;height:40px;border-radius:50%;background:#ffffff55;pointer-events:none}
#tbtn{position:fixed;right:16px;bottom:22px;display:flex;gap:10px}
#tbtn button{pointer-events:auto;width:72px;height:72px;border-radius:50%;font-size:15px;background:#231d14cc}
