body{background-color:#87ceeb;margin:0;overflow:hidden}canvas{display:block}#info{text-align:center;color:#fff;text-shadow:1px 1px 2px #00000080;z-index:100;white-space:nowrap;text-overflow:ellipsis;background-color:#00000080;border-radius:5px;width:auto;min-width:200px;max-width:90%;padding:8px 12px;font-family:Arial,sans-serif;position:fixed;top:10px;left:50%;overflow:hidden;transform:translate(-50%)}#controlsContainer{z-index:200;width:270px;max-width:80vw;font-family:Arial,sans-serif;transition:all .3s;position:fixed;top:10px;left:10px}#controlsInfo{color:#fff;background-color:#0009;border-radius:6px;flex-direction:column;width:auto;padding:8px 12px;font-size:14px;transition:all .3s;display:flex;overflow:hidden;box-shadow:0 2px 10px #0003}#controlsContent{touch-action:pan-y;-webkit-overflow-scrolling:touch;flex-direction:column;gap:6px;max-height:max(64px,100vh - 320px);transition:all .3s;display:flex;overflow:hidden auto}#controlsInfo.collapsed{width:auto;max-width:180px}#controlsInfo.collapsed #controlsContent{opacity:0;max-height:0;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0}#controlsHeader{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;border-bottom:1px solid #fff3;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:4px;display:flex;position:relative}#controlsHeader:after{content:"⟷";opacity:.6;color:#ff9;font-size:14px;position:absolute;right:30px}@media (hover:none) and (pointer:coarse){#controlsHeader:after{display:block}}@media (hover:hover) and (pointer:fine){#controlsHeader:after{display:none}}#controlsInfo.collapsed #controlsHeader{border-bottom-color:#0000;margin-bottom:0;padding-bottom:0}#controlsHeader h3{color:#fff;margin:0;font-size:16px}.control-item{align-items:center;margin:4px 0;line-height:1.35;display:flex}.key-badge{color:#fff;text-align:center;background-color:#4a69bd;border-radius:4px;min-width:45px;margin-right:8px;padding:2px 6px;font-family:monospace;font-size:13px}.control-subhead{opacity:.85;border-top:1px solid #ffffff2e;margin:6px 0 3px;padding-top:6px;font-size:13px;font-weight:700}#toggleControls{cursor:pointer;color:#fff;background:0 0;border:none;padding:0;font-size:16px}#gameStatsContainer{color:#fff;z-index:100;background-color:#0009;border-radius:5px;width:auto;max-width:90%;padding:8px 12px;font-family:Arial,sans-serif;font-size:16px;transition:all .3s;position:fixed;top:70px;left:auto;right:10px;overflow:hidden;transform:none;box-shadow:0 2px 6px #0003}#gameStatsHeader{cursor:pointer;-webkit-user-select:none;user-select:none;border-bottom:1px solid #fff3;justify-content:space-between;align-items:center;margin-bottom:6px;padding-bottom:4px;display:flex;position:relative}#gameStatsHeader:after{content:"⟷";opacity:.6;color:#ff9;font-size:14px;position:absolute;right:30px}@media (hover:none) and (pointer:coarse){#gameStatsHeader:after{display:block}}@media (hover:hover) and (pointer:fine){#gameStatsHeader:after{display:none}}#gameStatsHeader h3{color:#fff;margin:0;font-size:16px}#toggleStats{cursor:pointer;color:#fff;background:0 0;border:none;padding:0;font-size:16px}#gameStatsContent{flex-wrap:wrap;gap:10px;max-height:100px;transition:all .3s;display:flex;overflow:hidden}#gameStatsContainer.collapsed{width:auto;max-width:160px}#gameStatsContainer.collapsed #gameStatsContent{opacity:0;max-height:0;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0}#gameStatsContainer.collapsed #gameStatsHeader{border-bottom:none;margin-bottom:0;padding-bottom:0}.stat-item{flex-direction:column;align-items:center;min-width:80px;display:flex}.stat-label{opacity:.7;font-size:12px}.stat-value{font-size:16px;font-weight:700}#authContainer{z-index:999;background-color:#00000080;border-radius:5px;max-width:220px;padding:5px;font-family:Arial,sans-serif;position:absolute;top:10px;right:10px;box-shadow:0 2px 6px #0003}@media (width<=768px){#info{display:none}#controlsInfo{max-width:250px;font-size:13px}#gameStatsContainer{padding:6px 10px;font-size:14px;top:60px}.stat-value{font-size:14px}.stat-label{font-size:11px}}@media (width<=480px){#controlsContainer{width:220px}#controlsInfo.collapsed{max-width:150px}#controlsInfo.collapsed #controlsContent{opacity:0;max-height:0}#controlsHeader h3{font-size:14px}.key-badge{min-width:38px;font-size:12px}#gameStatsContainer{max-width:160px;padding:5px 8px;font-size:12px;top:55px}#gameStatsHeader h3{font-size:14px}.stat-value{font-size:13px}.stat-item{min-width:60px}#authContainer{max-width:160px;padding:3px;top:10px;right:10px}.provider-btn{width:52px;padding:6px 3px;font-size:10px}.provider-icon{width:20px;height:20px}#profileUI{font-size:12px}#profileAvatar{width:24px;height:24px}}@media (height<=400px) and (orientation:landscape){#info{top:40px}#gameStatsContainer{max-width:80%;padding:4px 8px}#controlsInfo.collapsed{max-width:140px}#controlsInfo.collapsed #controlsContent{opacity:0;max-height:0}}@media (orientation:landscape) and (height<=500px){#info{top:50px}#controlsContainer{width:240px}#controlsInfo.collapsed{max-width:160px}#controlsInfo.collapsed #controlsContent{opacity:0;max-height:0}#controlsInfo{max-height:180px}#gameStatsContainer{max-width:85%;padding:5px 8px;font-size:14px}}@media (orientation:portrait){#info{max-width:70%;top:55px}#controlsInfo{max-width:280px}}#resetBtn{color:#fff;cursor:pointer;-webkit-tap-highlight-color:#ffffff80;touch-action:manipulation;-webkit-user-select:none;user-select:none;background-color:#4caf50;border:none;border-radius:8px;padding:15px 20px;font-size:16px;position:absolute;bottom:20px;left:20px}#cameraControls{z-index:100;-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#00000073;border-radius:10px;flex-direction:column;gap:6px;padding:8px;display:flex;position:absolute;bottom:80px;left:20px}#cameraControlsHeader{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;border-bottom:1px solid #fff3;justify-content:space-between;align-items:center;gap:12px;margin-bottom:2px;padding-bottom:4px;display:flex;position:relative}#cameraControlsHeader h3{color:#fff;margin:0;font-size:14px}#toggleCamera{cursor:pointer;color:#fff;background:0 0;border:none;padding:0;font-size:15px;line-height:1}#cameraControlsHeader:after{content:"⟷";opacity:.6;color:#ff9;font-size:13px;display:none;position:absolute;right:28px}@media (hover:none) and (pointer:coarse){#cameraControlsHeader:after{display:block}}#cameraControlsContent{flex-direction:column;gap:6px;transition:all .3s;display:flex;overflow:hidden}#cameraControls.collapsed{max-width:170px}#cameraControls.collapsed #cameraControlsContent{opacity:0;max-height:0;margin:0;padding:0}#cameraControls.collapsed #cameraControlsHeader{border-bottom-color:#0000;margin-bottom:0;padding-bottom:0}#cameraControls .cam-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}#cameraControls button{color:#fff;cursor:pointer;-webkit-tap-highlight-color:#ffffff80;background-color:#4a69bd;border:none;border-radius:6px;min-width:34px;height:30px;padding:0 10px;font-size:14px;line-height:1}#cameraControls button:hover{background-color:#5a79cd}#cameraControls button[aria-pressed=true]{color:#1a1a1a;background-color:#f6b93b;font-weight:700}#cameraControls button:disabled{opacity:.4;cursor:default}#cameraControls .cam-zoom-label{color:#fff;text-align:center;min-width:40px;font-size:13px}#cameraControls input[type=range]{accent-color:#4a69bd;cursor:pointer;width:120px}#cameraControls input[type=range]:disabled{opacity:.4;cursor:default}#authUI{flex-flow:wrap;justify-content:flex-end;gap:6px;display:flex}.provider-btn{color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none;background-color:#ffffff1a;border:1px solid #ffffff2e;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:3px;width:60px;padding:7px 4px;font-size:11px;font-weight:600;line-height:1;transition:transform .1s,background-color .2s,border-color .2s;display:flex}.provider-btn:hover{background-color:#fff3}.provider-btn:active{transform:scale(.96)}.provider-icon{pointer-events:none;width:22px;height:22px;display:block}.provider-label{pointer-events:none}.provider-google{border-bottom:2px solid #4285f4}.provider-github{border-bottom:2px solid #6e5494}.provider-apple{border-bottom:2px solid #ccc}.provider-guest{border-bottom:2px solid #8a8a8a}.provider-btn:disabled{cursor:default}.provider-btn:disabled:not(.signing-in){opacity:.5}.provider-btn.signing-in{animation:1s ease-in-out infinite provider-pulse}@keyframes provider-pulse{0%,to{opacity:.55}50%{opacity:.9}}#profileUI{color:#fff;align-items:center;gap:8px;display:none}#profileChip{color:#fff;cursor:default;-webkit-tap-highlight-color:transparent;background:0 0;border:none;align-items:center;gap:8px;padding:0;display:flex}#profileUI.guest #profileChip{cursor:pointer}#profileUI.guest #profileChip:after{content:"▾";opacity:.85;font-size:10px}#profileUI.guest.expanded #profileChip:after{content:"▴"}#profileAvatar,.avatar{color:#fff;-webkit-user-select:none;user-select:none;background-position:50%;background-size:cover;border-radius:50%;flex:none;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;line-height:1;display:flex;overflow:hidden}#profileName{text-overflow:ellipsis;white-space:nowrap;max-width:90px;font-size:14px;overflow:hidden}#logoutBtn{color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background-color:#0000;border:1px solid #fff;border-radius:4px;padding:4px 8px;font-size:12px}#logoutBtn:hover{background-color:#fff3}#logoutBtn:active{background-color:#ffffff4d;transform:scale(.98)}#leaderboard{color:#fff;text-align:center;max-height:200px;margin-top:20px;overflow-y:auto}#leaderboard table{border-collapse:collapse;width:100%}#leaderboard th,#leaderboard td{text-align:left;padding:5px}#leaderboard th{border-bottom:1px solid #ffffff4d}.mini-avatar{vertical-align:middle;border-radius:50%;width:20px;height:20px;margin-right:5px}.current-user-score{background-color:#4caf5033;font-weight:700}#startGameContainer{box-sizing:border-box;z-index:2000;color:#fff;background-color:#000c;flex-direction:column;justify-content:safe center;align-items:center;width:100%;height:100%;padding:10px 10px 30px;font-family:Arial,sans-serif;display:flex;position:fixed;top:0;left:0;overflow-y:auto}#gameTitle{color:#fff;text-shadow:0 0 10px #87ceeb,0 0 20px #4caf50;letter-spacing:2px;text-align:center;margin-bottom:10px;font-size:42px;animation:2s infinite pulse}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}#gameDescription{text-align:center;max-width:600px;margin-bottom:15px;font-size:16px;line-height:1.4}#controlsGuide{text-align:left;touch-action:pan-y;-webkit-overflow-scrolling:touch;background-color:#ffffff1a;border-radius:10px;max-width:500px;max-height:240px;margin-bottom:15px;padding:10px 20px;overflow-y:auto}#controlsGuide h3{text-align:center;margin-top:0;margin-bottom:8px;font-size:16px}.control-row{justify-content:space-between;margin:6px 0;font-size:14px;display:flex}.key{background-color:#fff3;border-radius:4px;padding:1px 6px;font-family:monospace;font-weight:700}#difficultyPicker{flex-direction:column;gap:8px;width:280px;margin-bottom:14px;display:flex}#difficultyPicker .difficulty-heading{color:#cfd8e3;text-align:center;letter-spacing:.06em;text-transform:uppercase;font-size:12px}.difficulty-option{color:#fff;cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background-color:#ffffff0f;border:2px solid #ffffff24;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 12px;font-family:inherit;transition:background-color .2s,border-color .2s,transform .15s;display:flex}.difficulty-option:hover{background-color:#ffffff1f;transform:scale(1.02)}.difficulty-option.selected{background-color:#4caf5038;border-color:#4caf50}.difficulty-option .difficulty-name{font-size:15px;font-weight:700}.difficulty-option .difficulty-blurb{color:#b9c4d0;font-size:12px}.difficulty-option[data-difficulty=bunny] .difficulty-name{color:#5dd35d}.difficulty-option[data-difficulty=blue] .difficulty-name{color:#5aa9f0}.difficulty-option[data-difficulty=black] .difficulty-name{color:#ccd5e1}.difficulty-option[data-difficulty=bunny].selected{background-color:#4caf5038;border-color:#4caf50}.difficulty-option[data-difficulty=blue].selected{background-color:#3b82f63d;border-color:#3b82f6}.difficulty-option[data-difficulty=black].selected{background-color:#0c101899;border-color:#e6ebf2}#finishDifficultyPicker{flex-direction:column;gap:6px;width:280px;max-width:86vw;margin:2px 0 18px;display:flex}#finishDifficultyPicker .difficulty-heading{color:#cfd8e3;text-align:center;letter-spacing:.06em;text-transform:uppercase;font-size:12px}#finishDifficultyPicker .difficulty-option{padding:6px 12px}#finishDifficultyPicker .difficulty-blurb{display:none}#gameOverOverlay{box-sizing:border-box;overflow-y:auto}#gameOverOverlay button{flex-shrink:0}#startMenu{flex-direction:column;align-items:center;gap:10px;width:280px;margin-bottom:10px;display:flex}.menu-button{color:#fff;cursor:pointer;text-align:center;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background-color:#4caf50;border:none;border-radius:8px;min-width:220px;padding:12px 20px;font-size:16px;transition:background-color .3s,transform .2s;position:relative}.menu-button:after{content:"";opacity:0;background-color:#fff3;border-radius:8px;transition:opacity .1s;position:absolute;inset:0}.menu-button:active:after,.menu-button.touch-active:after{opacity:1}.menu-button.start{background-color:#4caf50}.menu-button.options{background-color:#4a69bd}.menu-button.about{background-color:#ff7979}.menu-button.feedback{background-color:#0984e3}.menu-button:hover{background-color:#45a049;transform:scale(1.05)}.menu-button.options:hover{background-color:#3c58b0}.menu-button.about:hover{background-color:#ff6b6b}.menu-button.feedback:hover{background-color:#0a74c4}.menu-button:active{transform:scale(.98)}.menu-button:disabled{cursor:wait;opacity:.85;transform:none}.touch-note{opacity:.8;text-align:center;max-width:500px;margin:-6px 0 14px;font-size:12px;line-height:1.4}#startLeaderboard{text-align:center;background-color:#ffffff14;border-radius:10px;flex-shrink:0;width:100%;max-width:360px;max-height:200px;margin-bottom:12px;padding:8px 16px;overflow-y:auto}#startLeaderboard h3{margin:0 0 6px;font-size:15px}#startLeaderboard table{border-collapse:collapse;width:100%;font-size:13px}#startLeaderboard th,#startLeaderboard td{text-align:left;padding:3px 6px}#startLeaderboard th{border-bottom:1px solid #ffffff4d;font-weight:600}#startLeaderboard th:last-child,#startLeaderboard td:last-child{text-align:right;font-variant-numeric:tabular-nums}#startLeaderboard .lb-empty{opacity:.8;margin:4px 0;font-size:13px}#startSignInHint{text-align:center;opacity:.85;max-width:420px;margin:0 0 12px;font-size:13px}#buildBadge{letter-spacing:.3px;color:#ffffff73;text-align:center;pointer-events:none;font:500 11px system-ui,sans-serif;position:fixed;bottom:8px;left:0;right:0}.offline-badge{color:#dff4ffe6;letter-spacing:.2px;background:#78aad22e;border:1px solid #b4d7f559;border-radius:999px;align-self:center;margin:8px auto 0;padding:5px 12px;font:500 12px system-ui,sans-serif}.install-prompt{color:#dff4ffeb;background:#78aad229;border:1px solid #b4d7f552;border-radius:999px;align-self:center;align-items:center;gap:10px;margin:10px auto 0;padding:6px 8px 6px 14px;font:500 13px system-ui,sans-serif;display:none}.install-prompt-install{color:#0b1020;cursor:pointer;background:#dff4ff;border:none;border-radius:999px;padding:5px 14px;font:600 13px system-ui,sans-serif}.install-prompt-install:hover{background:#fff}.install-prompt-dismiss{color:#dff4ffb3;cursor:pointer;background:0 0;border:none;border-radius:50%;width:24px;height:24px;padding:0;font-size:18px;line-height:1}.install-prompt-dismiss:hover{color:#fff}.sw-update-banner{color:#fff4d6eb;background:#ffd6782e;border:1px solid #ffe09666;border-radius:999px;align-self:center;align-items:center;gap:10px;margin:10px auto 0;padding:6px 8px 6px 14px;font:500 13px system-ui,sans-serif;display:flex}.sw-update-reload{color:#201a0b;cursor:pointer;background:#ffe08a;border:none;border-radius:999px;padding:5px 14px;font:600 13px system-ui,sans-serif}.sw-update-reload:hover{background:#fff0c0}body.start-screen-active #authContainer{z-index:2001}#aboutGamePanel{text-align:center;background-color:#000000b3;border-radius:10px;max-width:600px;margin-top:10px;margin-bottom:10px;padding:15px;font-size:14px;display:none}#aboutGamePanel h3{color:#ff7979;margin-top:0;margin-bottom:10px;font-size:18px}#aboutGamePanel p{margin-bottom:8px;line-height:1.4}#keyboardHint{opacity:.8;margin-top:8px;font-size:14px;font-style:italic}#gameCanvas{display:none}@media (height<=650px){#gameTitle{margin-bottom:5px;font-size:32px}#gameDescription{max-width:90%;margin-bottom:10px;font-size:14px}#controlsGuide{max-height:120px;margin-bottom:10px}#startLeaderboard{max-height:104px;margin-bottom:8px}.menu-button{padding:8px 16px;font-size:14px}}@media (width<=480px){#gameTitle{font-size:28px}#controlsGuide{max-width:90%;padding:8px 15px}}@media (width<=768px){.menu-button{min-height:44px;padding:12px 24px}}body.intro-active #controlsInfo,body.intro-active #gameStatsContainer,body.intro-active #courseHud,body.intro-active #resetBtn,body.intro-active #cameraToggleBtn,body.intro-active #cameraControls,body.intro-active .touch-control{display:none!important}
