*{margin:0;padding:0}html,body{background-color:#111;overflow:hidden;height:100dvh;height:100vh;width:100vw;max-width:100vw;max-height:100dvh;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;position:fixed;top:0;left:0}@supports (height: 100dvh){body{height:100dvh}}#app{width:100%;height:100%;position:fixed;top:0;left:0;overflow:hidden}#app canvas{display:block;max-width:100vw!important;max-height:100vh!important;max-height:100dvh!important}#controls{position:fixed;top:10px;right:10px;display:none;flex-direction:column;gap:8px;z-index:1000}#controls.visible{display:flex}#left-controls{position:fixed;top:10px;left:10px;display:none;flex-direction:column;gap:8px;z-index:1000}#left-controls.visible{display:flex}.ctrl-btn{width:clamp(32px,5vw,44px);height:clamp(32px,5vw,44px);background:#0009;border:2px solid rgba(255,255,255,.3);border-radius:8px;color:#fff;font-size:clamp(14px,2.5vw,20px);cursor:pointer;display:flex;justify-content:center;align-items:center;transition:all .2s ease;text-decoration:none;box-sizing:border-box;padding:0;margin:0;flex-shrink:0}.ctrl-btn:hover{background:#000c;border-color:#fff9}.ctrl-btn:active{transform:scale(.95)}.ctrl-btn.muted{background:#f449;border-color:#f44c}#suicide-btn{background:#501e1e99;border-color:#b4505080}#suicide-btn:hover{background:#782828cc;border-color:#ff6464cc}.popup-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;display:none;justify-content:center;align-items:center;z-index:10000;opacity:0;transition:opacity .3s ease;pointer-events:none}.popup-overlay.visible{display:flex;opacity:1;pointer-events:auto}.popup-overlay.visible *{pointer-events:auto}.popup-content{background:linear-gradient(135deg,#1e1e32f2,#141423fa);border:2px solid rgba(100,100,255,.4);border-radius:16px;padding:24px 24px 32px;max-width:90vw;max-height:80vh;overflow:visible;position:relative;box-shadow:0 0 30px #6464ff4d;display:flex;flex-direction:column;align-items:center}.popup-content h2{color:#fff;margin:0 0 16px;font-size:clamp(18px,4vw,24px);text-align:center;display:flex;align-items:center;gap:8px}.popup-content h2 i{color:#fc0}.popup-body{color:#ffffffe6;font-size:clamp(14px,3vw,16px);line-height:1.6;text-align:left;width:100%}.popup-body .coming-soon{text-align:center;font-size:clamp(20px,5vw,28px);color:#fc0;margin:20px 0 8px}.popup-body .coming-soon-sub{text-align:center;color:#fff9;margin:0 0 20px}.help-section{margin-bottom:16px}.help-section h3{color:#8af;margin:0 0 8px;font-size:clamp(14px,3vw,18px);border-bottom:1px solid rgba(136,170,255,.3);padding-bottom:4px}.help-section ul{margin:0;padding-left:20px}.help-section li{margin:4px 0}.help-section b{color:#fc0}.popup-close{width:48px;height:48px;border-radius:50%;background:#ff4444e6;border:3px solid rgba(255,150,150,.8);color:#fff;font-size:20px;cursor:pointer;display:flex;justify-content:center;align-items:center;margin-top:0;transition:all .2s ease;box-shadow:0 4px 12px #0006}.popup-close:hover{background:#f44;transform:scale(1.1)}.popup-close:active{transform:scale(.95)}.popup-footer{position:absolute;bottom:0;left:50%;transform:translate(-50%,50%);display:flex;align-items:center;justify-content:center;gap:12px}.leaderboard-content{width:min(520px,calc(100vw - 40px));height:calc(100vh - 80px);max-height:calc(100vh - 80px);overflow:visible;box-sizing:border-box;position:relative}.lb-difficulty-tabs{position:absolute;right:calc(100% - 2px);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:4px;z-index:-1}.lb-diff-tab{writing-mode:vertical-rl;text-orientation:mixed;padding:12px 8px;background:#28283cf2;border:2px solid rgba(100,100,150,.4);border-right:none;border-radius:8px 0 0 8px;color:#fff9;font-size:14px;font-weight:700;cursor:pointer;transition:all .2s ease}.lb-diff-tab:hover{background:#3c3c5af2;color:#ffffffe6}.lb-diff-tab.active{background:#505078f2;border-color:#9696c899;color:#fff}.lb-diff-tab[data-difficulty=daily].active{border-color:#4caf50;color:#4caf50}.lb-diff-tab[data-difficulty=nightmare].active{border-color:#9c27b0;color:#9c27b0}.lb-diff-tab[data-difficulty=inferno].active{border-color:#f44336;color:#f44336}.lb-tabs{display:flex;gap:8px;margin-bottom:16px;width:100%;box-sizing:border-box;flex-shrink:0}.lb-tab{flex:1;background:#32325099;border:2px solid rgba(100,100,200,.3);border-radius:8px;padding:8px 4px;color:#ffffffb3;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;transition:all .2s ease}.lb-tab i{font-size:clamp(16px,4vw,20px)}.lb-tab span{font-size:clamp(10px,2.5vw,12px);font-weight:700}.lb-tab small{font-size:clamp(8px,2vw,10px);opacity:.6}.lb-tab:hover{background:#464678b3;border-color:#6464c880}.lb-tab.active{background:#6464c880;border-color:#9696ffb3;color:#fff}.lb-tab.active i{color:#fc0}.lb-list{width:100%;background:#141428cc;border-radius:8px;padding:8px;flex:1;min-height:0;box-sizing:border-box;overflow-y:auto;display:flex;flex-direction:column}.lb-header{display:flex;padding:8px 12px;color:#ffffff80;font-size:clamp(10px,2.5vw,12px);border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:4px;flex-shrink:0}.lb-rank{width:36px;text-align:center}.lb-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-school{width:130px;text-align:center;color:#fff9;font-size:clamp(10px,2.5vw,12px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-score{width:70px;text-align:right}.lb-entry{display:flex;padding:8px 12px;color:#ffffffe6;font-size:clamp(12px,3vw,14px);border-radius:4px;transition:background .15s ease}.lb-entry:nth-child(odd){background:#ffffff08}.lb-entry:hover{background:#6464c833}.lb-entry .lb-rank{font-weight:700}.lb-entry.rank-1 .lb-rank{color:gold}.lb-entry.rank-2 .lb-rank{color:silver}.lb-entry.rank-3 .lb-rank{color:#cd7f32}.lb-empty{text-align:center;color:#fff6;padding:40px 0;font-size:clamp(14px,3vw,16px)}.lb-loading{text-align:center;color:#ffffffb3;padding:60px 0;font-size:clamp(14px,3vw,16px)}.lb-loading i{margin-right:8px;color:#fc0}#lb-entries{flex:1;overflow-y:auto}#lb-entries:not(:empty)+.lb-empty{display:none}.lb-list::-webkit-scrollbar,#lb-entries::-webkit-scrollbar,.popup-body::-webkit-scrollbar{width:8px}.lb-list::-webkit-scrollbar-track,#lb-entries::-webkit-scrollbar-track,.popup-body::-webkit-scrollbar-track{background:#14142899;border-radius:4px}.lb-list::-webkit-scrollbar-thumb,#lb-entries::-webkit-scrollbar-thumb,.popup-body::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#6464ff99,#9664c899);border-radius:4px;border:1px solid rgba(150,150,255,.3)}.lb-list::-webkit-scrollbar-thumb:hover,#lb-entries::-webkit-scrollbar-thumb:hover,.popup-body::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#7878ffcc,#b478dccc)}.lb-list,#lb-entries,.popup-body{scrollbar-width:thin;scrollbar-color:rgba(100,100,255,.6) rgba(20,20,40,.6)}.lb-footer{display:flex;align-items:center;justify-content:center;gap:12px;position:absolute;bottom:0;left:50%;transform:translate(-50%,50%)}.lb-page-btn{width:40px;height:40px;border-radius:50%;background:#50508cf2;border:3px solid rgba(150,150,220,.8);color:#fff;font-size:16px;cursor:pointer;display:flex;justify-content:center;align-items:center;box-shadow:0 4px 12px #0006;transition:all .2s ease}.lb-page-btn:hover:not(:disabled){background:#646496;transform:scale(1.1)}.lb-page-btn:disabled{opacity:.3;cursor:not-allowed}.lb-page-info{text-align:center;color:#ffffff80;font-size:clamp(10px,2.5vw,12px);margin-top:8px;flex-shrink:0}.death-content{width:min(380px,90vw)}.death-content h2 i{color:#f44}.death-stats{display:flex;gap:16px;margin-bottom:20px;width:100%}.death-stat{flex:1;background:#ffffff0d;border-radius:8px;padding:12px 8px;text-align:center}.stat-label{display:block;font-size:clamp(10px,2.5vw,12px);color:#ffffff80;margin-bottom:4px}.stat-value{display:block;font-size:clamp(16px,4vw,20px);font-weight:700;color:#fc0}.death-form{width:100%;margin-bottom:16px}.form-group{margin-bottom:12px}.form-group label{display:block;font-size:clamp(12px,3vw,14px);color:#ffffffb3;margin-bottom:6px}.form-group input[type=text]{width:100%;padding:10px 12px;font-size:clamp(14px,3.5vw,16px);background:#0006;border:2px solid rgba(100,100,200,.3);border-radius:8px;color:#fff;outline:none;box-sizing:border-box;transition:border-color .2s ease}.form-group input[type=text]:focus{border-color:#6464ffb3}.form-group input[type=text]::placeholder{color:#ffffff4d}.death-actions{display:flex;gap:12px;position:absolute;bottom:0;left:50%;transform:translate(-50%,50%)}.death-btn{padding:12px 20px;font-size:clamp(14px,3.5vw,16px);font-weight:700;border:3px solid rgba(150,150,220,.8);border-radius:24px;box-shadow:0 4px 12px #0006;background:#32325099;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s ease}.death-btn:hover{background:#46466ecc;transform:translateY(-2px)}.death-btn.primary{background:#64b46499;border-color:#64c86499}.death-btn.primary:hover{background:#64c864cc}.death-btn.primary i{color:#fc0}.death-success{width:100%;text-align:center}.success-message{font-size:clamp(18px,4vw,24px);color:#4caf50;margin-bottom:20px;display:flex;align-items:center;justify-content:center;gap:8px}.success-message i{font-size:clamp(24px,5vw,32px)}.control-group{display:flex;flex-direction:column;align-items:center;background:#0009;border:2px solid rgba(255,255,255,.3);border-radius:8px;width:clamp(32px,5vw,44px);box-sizing:border-box;padding:6px 0;gap:2px}.control-btn{width:clamp(22px,3.5vw,30px);height:clamp(20px,3vw,26px);background:transparent;border:none;color:#fff;font-size:clamp(12px,2vw,16px);font-weight:700;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:all .15s ease;border-radius:4px}.control-btn:hover{background:#fff3}.control-btn:active{transform:scale(.9)}.control-value{font-family:monospace;font-size:clamp(10px,1.5vw,14px);color:#fff;padding:2px 0}#volume-bars{display:flex;flex-direction:column-reverse;gap:2px;padding:2px 0}.volume-bar{width:clamp(16px,2.5vw,22px);height:clamp(3px,.5vw,5px);background:#ffffff40;border-radius:2px;transition:background .1s ease}.volume-bar.active{background:#fff}.volume-bar.muted{background:#ffffff1a}body.is-fullscreen #fullscreen-btn .expand-icon{display:none}body.is-fullscreen #fullscreen-btn .compress-icon{display:block}body:not(.is-fullscreen) #fullscreen-btn .expand-icon{display:block}body:not(.is-fullscreen) #fullscreen-btn .compress-icon{display:none}@media screen and (max-width: 1024px) and (pointer: coarse){#fullscreen-btn{display:none}}#rotate-notice{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:#111;z-index:9999;justify-content:center;align-items:center;flex-direction:column;color:#fff;font-family:Arial,sans-serif}#rotate-notice .icon{font-size:clamp(48px,15vw,80px);margin-bottom:20px;animation:rotate-phone 1.5s ease-in-out infinite}#rotate-notice .text{font-size:clamp(14px,4vw,24px)}@keyframes rotate-phone{0%,to{transform:rotate(0)}50%{transform:rotate(-90deg)}}#install-prompt{display:none;position:fixed;bottom:0;left:0;right:0;background:linear-gradient(135deg,#1e1e28fa,#14141efa);z-index:9998;padding:12px 16px;box-shadow:0 -4px 20px #00000080;border-top:1px solid rgba(255,255,255,.1);font-family:Noto Sans TC,Arial,sans-serif;animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}#install-prompt .prompt-content{display:flex;align-items:center;gap:12px;max-width:600px;margin:0 auto}#install-prompt .prompt-icon{font-size:28px;flex-shrink:0}#install-prompt .prompt-text{flex:1;color:#fff}#install-prompt .prompt-title{font-size:13px;font-weight:600;margin-bottom:2px;color:#4fc3f7}#install-prompt .prompt-desc{font-size:11px;color:#ffffffb3;line-height:1.4}#install-prompt .prompt-actions{display:flex;gap:8px;flex-shrink:0}#install-prompt .prompt-btn{padding:8px 14px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;border:none;transition:all .2s}#install-prompt .prompt-btn.primary{background:linear-gradient(135deg,#4fc3f7,#29b6f6);color:#000}#install-prompt .prompt-btn.primary:hover{background:linear-gradient(135deg,#81d4fa,#4fc3f7)}#install-prompt .prompt-btn.secondary{background:#ffffff1a;color:#ffffffb3}#install-prompt .prompt-btn.secondary:hover{background:#fff3;color:#fff}#install-guide{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:10000;justify-content:center;align-items:center;font-family:Noto Sans TC,Arial,sans-serif}#install-guide .guide-content{background:linear-gradient(135deg,#1e1e28,#14141e);border-radius:16px;padding:24px;max-width:320px;width:90%;text-align:center;border:1px solid rgba(255,255,255,.1);box-shadow:0 20px 60px #00000080}#install-guide .guide-title{font-size:18px;font-weight:600;color:#4fc3f7;margin-bottom:16px}#install-guide .guide-steps{text-align:left;color:#ffffffe6;font-size:14px;line-height:1.8;margin-bottom:20px}#install-guide .guide-steps .step{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px}#install-guide .guide-steps .step-num{background:#4fc3f7;color:#000;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}#install-guide .guide-close{background:linear-gradient(135deg,#4fc3f7,#29b6f6);color:#000;border:none;padding:10px 32px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}#install-guide .guide-close:hover{background:linear-gradient(135deg,#81d4fa,#4fc3f7)}@media screen and (max-width: 900px) and (orientation: portrait){#rotate-notice{display:flex}#app,#controls,#left-controls,#version-info{display:none}}@media screen and (max-height: 450px){.popup-content{height:85vh;max-height:85vh;padding:10px 14px 24px;box-sizing:border-box}.popup-content h2{margin:0 0 6px;font-size:14px;flex-shrink:0}.popup-close{width:30px;height:30px;font-size:12px}.lb-footer,.popup-footer,.death-actions{gap:6px}.lb-page-btn{width:28px;height:28px;font-size:11px}.death-btn{padding:6px 12px;font-size:11px;border-radius:16px}.leaderboard-content{width:min(420px,96vw);height:85vh}.lb-tabs{margin-bottom:6px;gap:3px;flex-shrink:0}.lb-tab{padding:4px 3px;font-size:10px}.lb-tab i{font-size:12px}.lb-tab span{font-size:9px}.lb-tab small{font-size:8px}.lb-list{flex:1;min-height:0;max-height:none;height:calc(85vh - 100px);overflow-y:auto;padding:3px}.lb-header{padding:3px 6px;font-size:9px}.lb-entry{padding:3px 6px;font-size:10px}.lb-school{width:80px;font-size:9px}.lb-rank{width:24px}.lb-score{width:65px}.lb-empty,.lb-loading{padding:15px 0;font-size:11px}.lb-page-info{font-size:9px;margin-top:4px}.popup-body{flex:1;min-height:0;font-size:11px;line-height:1.3;overflow-y:auto}.help-section{margin-bottom:6px}.help-section h3{font-size:12px;margin-bottom:3px}.help-section ul{padding-left:16px}.help-section li{margin:2px 0}.death-content{height:85vh;padding:10px 14px 24px}.death-stats{font-size:11px;gap:6px;margin-bottom:6px;flex-shrink:0}.death-stat{padding:6px 10px}.leaderboard-submit{flex:1;min-height:0;overflow-y:auto}.leaderboard-submit h4{font-size:11px;margin-bottom:4px}.leaderboard-submit input{padding:5px 8px;font-size:11px}}#version-info{position:fixed;bottom:10px;right:10px;font-family:monospace;font-size:clamp(10px,1.5vw,14px);color:#ffffff4d;z-index:1000;pointer-events:none;-webkit-user-select:none;user-select:none}.custom-dialog-content{max-width:420px;width:min(90vw,420px);padding:28px 24px 20px;text-align:center;background:linear-gradient(135deg,#1e1e32fa,#141423fc);border:2px solid rgba(100,100,200,.5);border-radius:12px;box-shadow:0 8px 40px #0009,0 0 60px #6464ff33}.custom-dialog-title{font-size:clamp(16px,2.4vw,20px);color:#b4b4fff2;margin:0 0 12px;font-weight:700;letter-spacing:1px}.custom-dialog-message{font-size:clamp(13px,2vw,16px);color:#ffffffe6;margin:0 0 20px;line-height:1.6;word-break:break-word;white-space:pre-wrap}.custom-dialog-input{width:100%;padding:8px 12px;margin:0 0 16px;background:#141428cc;border:1px solid rgba(100,100,200,.5);border-radius:6px;color:#fffffff2;font-size:clamp(12px,2vw,14px);font-family:monospace;outline:none;box-sizing:border-box}.custom-dialog-input:focus{border-color:#9696ffcc;box-shadow:0 0 0 2px #6464ff33}.custom-dialog-actions{display:flex;gap:12px;justify-content:center}.custom-dialog-actions .death-btn{min-width:80px}.custom-dialog-content.alert-only #custom-dialog-cancel{display:none}.custom-dialog-content.prompt-mode #custom-dialog-input{display:block}
