*{margin:0;padding:0;box-sizing:border-box}html,body{overflow:hidden;color:#fff;margin:0;font-family:Bungee,cursive;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none}body *{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none;user-drag:none}img,canvas{pointer-events:none;-webkit-user-drag:none;user-drag:none}canvas{pointer-events:auto}.webgl{position:fixed;top:0;left:0;outline:none}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:100;display:flex;align-items:center;justify-content:center}.overlay.hidden{display:none;pointer-events:none}.finish-panel{text-align:center}.finish-title{font-size:2rem;margin-bottom:1.5rem}.race-again-btn{padding:12px 24px;border:2px solid #000000;border-radius:24px;box-shadow:0 4px #000;font-size:1.1rem;font-weight:400;font-family:Bungee,Arial Black,sans-serif;color:#fff;background-color:#b34a42;cursor:pointer}.race-again-btn:hover{background-color:#e77575}#start-game{position:absolute;top:50%;left:50%;padding:12px 24px;border:2px solid #000000;border-radius:24px;box-shadow:0 4px #000;font-size:1.2rem;font-weight:400;font-family:Bungee,Arial Black,sans-serif;color:#fff;background-color:#b34a42;transform:translate(-50%,-50%);z-index:100;cursor:pointer}#start-game:hover{background-color:#e77575;color:#fff}.bottom-bar{position:fixed;bottom:0;left:0;right:0;z-index:100;display:none;align-items:flex-end;justify-content:space-between;padding:12px 8px;gap:8px;pointer-events:none;box-sizing:border-box}.bottom-bar>*{pointer-events:auto;box-sizing:border-box}.mobile-controls{flex-shrink:0;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.mobile-controls--left{width:22vw;max-width:22vw;justify-content:end;align-items:center}.mobile-controls--right{width:22vw;max-width:22vw;flex-direction:row;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center}@media(min-width:769px){.mobile-controls--left,.mobile-controls--right{display:none!important}.bottom-bar{width:100%;justify-content:center}.bottom-bar #dashboard{width:auto;max-width:none;flex:0 0 auto;margin:0}}.joystick-zone{--js: min(22vw, 130px);position:relative;width:var(--js);height:var(--js);min-width:72px;min-height:72px;max-width:130px;max-height:130px;flex-shrink:0;touch-action:none}.joystick-zone .nipple{z-index:10}.joystick-zone .nipple .back{background:linear-gradient(180deg,#5c2a26,#3d1c1a 40%,#2a1513)!important;border:3px solid #000000!important;box-shadow:0 5px #000,inset 0 2px 4px #ffffff1a,inset 0 -2px 8px #00000080!important}.joystick-zone .nipple .front{background:radial-gradient(ellipse 60% 50% at 50% 30%,#e77575,#b34a42)!important;border:2px solid #000000!important;box-shadow:0 3px #000,inset 0 2px 2px #ffffff4d!important}.mobile-btn{flex:1;min-width:0;width:auto;height:18vw;min-height:52px;max-height:80px;padding:0;border:2px solid #000000;border-radius:24px;box-shadow:0 4px #000;font-family:Bungee,Arial Black,sans-serif;font-size:clamp(.75rem,3.5vw,.95rem);font-weight:400;color:#fff;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;transition:background .05s ease,box-shadow .05s ease}.mobile-btn:active{box-shadow:0 0 #000;transform:translateY(2px)}.mobile-btn--gas{background:#b34a42}.mobile-btn--gas:active,.mobile-btn--gas.active{background:#e77575}.mobile-btn--brake{background:#5c2a26}.mobile-btn--brake:active,.mobile-btn--brake.active{background:#8b3a35}#dashboard{width:50vw;max-width:50vw;flex:0 0 50vw;margin:0 4px;display:flex;justify-content:center;align-items:center;gap:12px;padding:12px 16px;font-family:Bungee,Arial Black,sans-serif;box-sizing:border-box}#dashboard #revmeter,#dashboard #speedmeter{border-radius:16px;padding:8px;box-sizing:border-box}#dashboard .gauge{border:2px solid #000000;border-radius:100%;box-shadow:inset 0 0 .25rem .25rem #0000004d,inset 0 0 2rem #0006;background-color:#2a1513}#dashboard .gauge .pointer:before{box-shadow:inset 0 0 1rem 1px #b44a4266,0 0 .5rem .1rem #b34a42}#dashboard .gauge .pointer .hand:after{background:#fff;border-color:#fff}#dashboard .gauge .digit,#dashboard .gauge .digit.highlighted{border-left-color:#e77575}#dashboard .gauge .digit .line{border-left-color:#fff}#dashboard .gauge .digit .line.highlighted{border-left-color:#e77575}#dashboard .gauge .digit .label{color:#fff}.gauge{--start-angle: -30deg;--digits-angle: 30deg;--lines-count: 10;--digits-count: 8;--gauge-value: 0;position:relative;border:.2rem solid #137;border-radius:100%;box-shadow:inset 0 0 .25rem .25rem #137,inset 0 0 7.5rem #2865e080;width:100%;height:100%;background-color:#040b10;overflow:hidden}.gauge:before{padding-top:100%;content:"";display:block}.gauge:after{font-size:.5rem;font-weight:700;display:block;content:"";position:absolute;top:25%;width:100%;text-align:center}.gauge .pointer{z-index:4;position:absolute;inset:0}.gauge .pointer:before{content:"";display:block;box-sizing:border-box;position:absolute;width:22%;height:22%;left:39%;top:39%;border-radius:100%;box-shadow:inset 0 0 1rem 1px #3399ff80,0 0 5rem .1rem #137}.gauge .pointer .hand{position:absolute;inset:0;transform-origin:center center;transform:rotate(calc(var(--start-angle) + ((var(--gauge-value)) * var(--digits-angle))));transition:transform ease .2s}.gauge .pointer .hand:after{content:"";display:block;box-sizing:border-box;position:absolute;width:39%;height:2%;top:49%;right:56%;background:#fff;border:1px solid #fff;border-right:0;border-bottom-left-radius:1.7rem .25rem;border-top-left-radius:1.7rem .25rem;box-shadow:inset 0 0 1px #000;z-index:1}.gauge .pointer .hand:before{content:"";display:block;border:1px solid #fff;position:absolute;width:12%;height:5.5%;left:44%;top:47.25%;box-sizing:border-box;border-radius:20%;background:#e6e7e8;box-shadow:inset 0 0 1px 1px #00000040;z-index:0}.gauge .digit{position:absolute;top:49.375%;right:50%;width:50%;height:1.25%;border-left:1.1rem solid white;transform-origin:center right;box-sizing:border-box;z-index:1;--digit-rotation: calc(var(--start-angle) + var(--digit-order) * var(--digits-angle));transform:rotate(var(--digit-rotation))}.gauge .digit .label{transform:rotate(calc(-1 * var(--digit-rotation)))}.gauge .digit .label:not(:root:root){transform:rotate(calc(-1 * (var(--start-angle) + var(--digit-order) * var(--digits-angle))))}.gauge .digit:nth-of-type(1){--digit-order: 0}.gauge .digit:nth-of-type(2){--digit-order: 1}.gauge .digit:nth-of-type(3){--digit-order: 2}.gauge .digit:nth-of-type(4){--digit-order: 3}.gauge .digit:nth-of-type(5){--digit-order: 4}.gauge .digit:nth-of-type(6){--digit-order: 5}.gauge .digit:nth-of-type(7){--digit-order: 6}.gauge .digit:nth-of-type(8){--digit-order: 7}.gauge .digit:nth-of-type(9){--digit-order: 8}.gauge .digit:nth-of-type(10){--digit-order: 9}.gauge .digit:nth-of-type(11){--digit-order: 10}.gauge .digit .label{position:absolute;font-style:italic;font-size:1rem;bottom:-.5rem;left:7%;text-shadow:.1rem .1rem .1rem black,.1rem -.1rem .1rem black,-.1rem .1rem .1rem black,-.1rem -.1rem .1rem black;box-shadow:0 0 1rem 1rem #c3e1ff0d;background:#ffffff0d}.gauge .digit.highlighted{border-left-color:red}.gauge .digit .line{position:absolute;display:block;width:100%;height:50%;border-left:.5rem solid white;border-right:.5rem solid transparent;left:-1rem;top:25%;transform:rotate(calc(var(--digits-angle) / var(--lines-count) * var(--line-order)));transform-origin:center right}.gauge .digit .line.highlighted{border-left-color:red}.gauge .digit .line.separating{top:12.5%;height:75%}.gauge .digit .line.separating:after{content:"";display:block;border-left:2.5rem solid rgba(255,255,255,.15);border-top:.075rem solid transparent;border-bottom:.075rem solid transparent;width:0;height:0;position:absolute;left:.25rem}.gauge .digit .line:nth-child(1){--line-order: 1}.gauge .digit .line:nth-child(2){--line-order: 2}.gauge .digit .line:nth-child(3){--line-order: 3}.gauge .digit .line:nth-child(4){--line-order: 4}.gauge .digit .line:nth-child(5){--line-order: 5}.gauge .digit .line:nth-child(6){--line-order: 6}.gauge .digit .line:nth-child(7){--line-order: 7}.gauge .digit .line:nth-child(8){--line-order: 8}.gauge .digit .line:nth-child(9){--line-order: 9}.gauge .digit .line:nth-child(10){--line-order: 10}.gauge .digit .line:nth-child(11){--line-order: 11}.gauge .digit .line:nth-child(12){--line-order: 12}.gauge .digit .line:nth-child(13){--line-order: 13}.gauge .digit .line:nth-child(14){--line-order: 14}.gauge .limiter{width:100%;height:50%;position:absolute;top:0;left:0;transform-origin:bottom center;transform:rotate(calc(var(--start-angle) + var(--digits-count) * var(--digits-angle) - 180deg));overflow:hidden;z-index:0}.gauge .limiter:after{content:"";width:99.5%;height:199%;border:.6rem solid;border-color:transparent red red transparent;border-radius:100%;display:block;box-sizing:border-box;transform:rotate(calc(45deg + var(--digits-angle) * (var(--limiter) / 1000 - var(--digits-count))))}#speedmeter{margin:1rem 2rem;width:15rem;display:inline-block}#speedmeter .gauge:after{content:"km/h"}#speedmeter .gauge .pointer:after{counter-reset:kmh var(--kmh);content:counter(kmh) " km/h";color:#fff;top:65%;left:0;right:0;text-align:center;display:block;position:absolute;font-size:.5rem}#revmeter{margin:1rem 2rem;width:15rem;display:inline-block}#revmeter .gauge:after{content:"x1000r/min"}#revmeter .gauge .label{font-size:1.4rem;bottom:-.7rem;left:10%}#revmeter .gauge .pointer:after{font-style:italic;counter-reset:gear var(--gear);content:counter(gear);color:#99c459;top:70%;left:0;right:0;text-align:center;display:block;position:absolute;font-size:1rem}#controls{position:fixed;right:0;top:0;width:7rem;font-size:16px}#controls input[type=range]{transform:rotate(180deg)}h3{text-align:center}.loading-screen{position:fixed;top:0;left:0;width:100%;height:100%;background:#000;display:flex;justify-content:center;align-items:center;z-index:300;transition:opacity .3s ease-out}.loading-screen.hidden{opacity:0;pointer-events:none}.loading-panel{width:220px;max-width:90%;background:#b34a42;border-radius:24px;border:2px solid #000000;box-shadow:0 4px #000;font-family:Bungee,Arial Black,sans-serif;color:#fff;display:flex;flex-direction:column;overflow:hidden}.loading-label{font-size:1rem;font-weight:400;text-transform:uppercase;letter-spacing:2px;padding:14px 16px;text-align:center;background:#e77575}.loading-content{padding:20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}.loading-content p{font-size:.8rem;margin:0}.loading-spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.score-display{position:fixed;top:20px;left:20px;width:100px;max-width:100px;background:#b34a42;padding:0;border-radius:24px;border:2px solid #000000;box-shadow:0 4px #000;font-family:Bungee,Arial Black,sans-serif;color:#fff;z-index:100;display:flex;flex-direction:column;justify-content:stretch;align-items:stretch;gap:0;box-sizing:border-box;overflow:hidden;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;touch-action:manipulation;-webkit-touch-callout:none}.score-display--right{left:auto;right:20px}.score-label{font-size:.6rem;font-weight:400;text-transform:uppercase;letter-spacing:1px;padding:6px 12px;text-align:center;background:#e77575}.score-value{font-size:1.4rem;font-weight:400;line-height:1;padding:6px 12px;text-align:center;display:block}.score-display.hidden{display:none}@keyframes scorePulse{0%{transform:scale(1)}50%{transform:scale(1.15)}to{transform:scale(1)}}.score-display.pulse .score-value{animation:scorePulse .4s ease-out}@media(orientation:landscape)and (max-height:600px){.bottom-bar{padding:8px 10px;gap:8px}.joystick{min-height:64px;max-height:100px}.joystick-track{min-height:56px}.mobile-btn{min-height:44px;height:16vw}#dashboard{padding:10px 14px}#dashboard #revmeter,#dashboard #speedmeter{width:11rem;margin:.25rem .5rem;padding:4px}#dashboard .gauge .digit .label{font-size:.75rem}#dashboard .gauge:after{font-size:.4rem}#speedmeter .gauge .pointer:after{font-size:.4rem}#revmeter .gauge .pointer:after{font-size:.7rem}#revmeter .gauge .label{font-size:1rem}.gauge .digit{border-left-width:.8rem}.gauge .digit .line{border-left-width:.35rem}}@media(orientation:landscape)and (max-height:450px){.bottom-bar{padding:6px 8px;gap:6px}.joystick{min-height:52px;max-height:80px}.joystick-track{min-height:48px}.mobile-btn{min-height:36px;height:14vw}#dashboard{padding:6px 10px}#dashboard #revmeter,#dashboard #speedmeter{width:8rem;margin:.15rem .35rem;padding:3px}#dashboard .gauge .digit .label{font-size:.55rem}#dashboard .gauge:after{font-size:.32rem}#speedmeter .gauge .pointer:after{font-size:.32rem}#revmeter .gauge .pointer:after{font-size:.5rem}#revmeter .gauge .label{font-size:.75rem}.gauge .digit{border-left-width:.6rem}.gauge .digit .line{border-left-width:.25rem}.gauge .digit .line.separating:after{border-left-width:1.5rem}.gauge .pointer:before{width:20%;height:20%;left:40%;top:40%}.gauge .pointer .hand:after{width:36%}}
