| :root { |
| color: #f7f4e9; |
| background: #111b18; |
| font-family: |
| Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", |
| sans-serif; |
| font-synthesis: none; |
| text-rendering: geometricPrecision; |
| } |
|
|
| * { |
| box-sizing: border-box; |
| } |
|
|
| [hidden] { |
| display: none !important; |
| } |
|
|
| html, |
| body, |
| #game-shell, |
| #game { |
| width: 100%; |
| height: 100%; |
| margin: 0; |
| } |
|
|
| body { |
| overflow: hidden; |
| } |
|
|
| #game-shell { |
| background: #111b18; |
| } |
|
|
| #game { |
| position: relative; |
| overflow: hidden; |
| } |
|
|
| #game > canvas:not(.minimap) { |
| display: block; |
| width: 100%; |
| height: 100%; |
| } |
|
|
| .race-hud { |
| position: absolute; |
| inset: 0 0 auto 0; |
| z-index: 2; |
| display: grid; |
| grid-template-columns: minmax(160px, max-content) repeat(4, max-content) minmax(132px, 190px); |
| gap: 12px; |
| align-items: start; |
| min-height: 74px; |
| padding: 14px 24px; |
| background: |
| linear-gradient(180deg, rgba(3, 8, 13, 0.78), rgba(3, 8, 13, 0.18) 74%, rgba(3, 8, 13, 0)), |
| linear-gradient(90deg, rgba(92, 225, 255, 0.12), rgba(255, 230, 109, 0.08), rgba(255, 79, 104, 0.08)); |
| pointer-events: none; |
| text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); |
| } |
|
|
| .home-button { |
| min-width: 74px; |
| min-height: 48px; |
| padding: 8px 12px; |
| border: 1px solid rgba(255, 244, 202, 0.42); |
| border-radius: 8px; |
| background: |
| linear-gradient(135deg, rgba(255, 240, 106, 0.22), rgba(92, 225, 255, 0.08)), |
| rgba(5, 9, 14, 0.58); |
| color: #fff4ca; |
| cursor: pointer; |
| font: inherit; |
| font-size: 13px; |
| font-weight: 950; |
| pointer-events: auto; |
| text-shadow: inherit; |
| } |
|
|
| .home-button:hover { |
| border-color: rgba(255, 244, 202, 0.76); |
| background: |
| linear-gradient(135deg, rgba(255, 240, 106, 0.34), rgba(92, 225, 255, 0.14)), |
| rgba(5, 9, 14, 0.74); |
| } |
|
|
| .track-ribbon, |
| .hud-stat { |
| display: grid; |
| gap: 2px; |
| min-width: 78px; |
| min-height: 48px; |
| padding: 8px 11px; |
| border: 1px solid rgba(255, 255, 255, 0.14); |
| border-radius: 8px; |
| background: |
| linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.03)), |
| rgba(5, 9, 14, 0.44); |
| box-shadow: 0 8px 20px rgba(0, 0, 0, 0.18); |
| } |
|
|
| .track-ribbon { |
| align-content: center; |
| min-width: 172px; |
| color: #fff4ca; |
| font-size: 13px; |
| font-weight: 950; |
| letter-spacing: 0; |
| text-transform: uppercase; |
| } |
|
|
| .hud-stat span { |
| color: rgba(242, 245, 238, 0.68); |
| font-size: 12px; |
| font-weight: 900; |
| } |
|
|
| .hud-stat strong { |
| color: #fff4ca; |
| font-size: 24px; |
| font-weight: 950; |
| line-height: 1; |
| } |
|
|
| .boost-panel { |
| width: 100%; |
| margin-top: 18px; |
| display: grid; |
| gap: 6px; |
| } |
|
|
| .boost-meter { |
| width: 100%; |
| height: 14px; |
| overflow: hidden; |
| border: 1px solid rgba(255, 255, 255, 0.22); |
| border-radius: 999px; |
| background: rgba(13, 18, 26, 0.7); |
| } |
|
|
| .boost-meter i { |
| display: block; |
| width: 48%; |
| height: 100%; |
| border-radius: inherit; |
| background: linear-gradient(90deg, #5ce1ff, #fff06a); |
| } |
|
|
| .boost-panel.active .boost-meter { |
| border-color: rgba(255, 240, 106, 0.76); |
| box-shadow: 0 0 18px rgba(255, 240, 106, 0.34); |
| } |
|
|
| .boost-slots { |
| display: grid; |
| grid-template-columns: repeat(2, 1fr); |
| gap: 6px; |
| } |
|
|
| .boost-slots b { |
| display: block; |
| height: 12px; |
| border: 1px solid rgba(255, 255, 255, 0.2); |
| border-radius: 999px; |
| background: rgba(13, 18, 26, 0.64); |
| } |
|
|
| .boost-slots b.filled { |
| border-color: rgba(255, 240, 106, 0.82); |
| background: linear-gradient(90deg, #5ce1ff, #fff06a); |
| box-shadow: 0 0 16px rgba(92, 225, 255, 0.28); |
| } |
|
|
| .boost-panel.full .boost-meter i { |
| opacity: 0.36; |
| } |
|
|
| .leaderboard { |
| position: fixed; |
| left: 24px; |
| bottom: 22px; |
| min-width: 168px; |
| padding: 10px 12px; |
| border: 1px solid rgba(255, 255, 255, 0.16); |
| border-radius: 8px; |
| background: rgba(5, 8, 11, 0.5); |
| color: rgba(244, 248, 243, 0.88); |
| font-family: "SFMono-Regular", Consolas, monospace; |
| font-size: 14px; |
| font-weight: 800; |
| line-height: 1.35; |
| white-space: pre; |
| text-align: left; |
| } |
|
|
| .minimap { |
| position: absolute; |
| top: 86px; |
| right: 24px; |
| z-index: 2; |
| width: 300px; |
| height: 220px; |
| border: 1px solid rgba(255, 255, 255, 0.12); |
| border-radius: 8px; |
| opacity: 0.82; |
| pointer-events: none; |
| filter: drop-shadow(0 14px 22px rgba(0, 0, 0, 0.32)); |
| } |
|
|
| .lap-notice { |
| position: absolute; |
| top: 86px; |
| left: 50%; |
| z-index: 2; |
| min-width: 190px; |
| padding: 10px 18px; |
| border: 1px solid rgba(255, 244, 202, 0.28); |
| border-radius: 8px; |
| background: rgba(5, 8, 11, 0.58); |
| color: #fff4ca; |
| font-size: 22px; |
| font-weight: 950; |
| letter-spacing: 0; |
| text-align: center; |
| text-shadow: 0 2px 8px rgba(0, 0, 0, 0.55); |
| opacity: 0; |
| pointer-events: none; |
| transform: translate(-50%, -12px); |
| transition: |
| opacity 180ms ease, |
| transform 180ms ease; |
| } |
|
|
| .lap-notice.active { |
| opacity: 1; |
| transform: translate(-50%, 0); |
| } |
|
|
| .track-select { |
| position: absolute; |
| inset: 0; |
| z-index: 4; |
| display: grid; |
| place-items: center; |
| overflow-y: auto; |
| padding: 16px 0; |
| background: |
| linear-gradient(180deg, rgba(8, 13, 18, 0.28), rgba(8, 13, 18, 0.76)), |
| rgba(7, 13, 15, 0.54); |
| } |
|
|
| .track-select-panel { |
| width: min(1120px, calc(100% - 32px)); |
| } |
|
|
| .track-select-title { |
| margin-bottom: 16px; |
| color: #fff4ca; |
| font-size: 34px; |
| font-weight: 950; |
| text-align: center; |
| text-shadow: 0 4px 16px rgba(0, 0, 0, 0.48); |
| } |
|
|
| .select-section-title { |
| margin: 16px 0 8px; |
| color: rgba(248, 253, 255, 0.72); |
| font-size: 13px; |
| font-weight: 950; |
| } |
|
|
| .car-options, |
| .bot-options, |
| .track-options { |
| display: grid; |
| gap: 14px; |
| } |
|
|
| .car-options { |
| grid-template-columns: repeat(3, minmax(0, 1fr)); |
| } |
|
|
| .bot-options { |
| grid-template-columns: repeat(4, minmax(0, 1fr)); |
| } |
|
|
| .bot-option { |
| min-height: 76px; |
| align-content: center; |
| text-align: center; |
| } |
|
|
| .online-panel { |
| display: grid; |
| grid-template-columns: minmax(130px, 0.85fr) minmax(160px, 1fr) max-content max-content minmax(120px, max-content); |
| gap: 10px; |
| align-items: center; |
| padding: 10px; |
| border: 1px solid rgba(255, 255, 255, 0.16); |
| border-radius: 8px; |
| background: rgba(5, 8, 11, 0.48); |
| } |
|
|
| .name-field { |
| display: grid; |
| grid-template-columns: minmax(0, 1fr) max-content; |
| gap: 6px; |
| } |
|
|
| .name-input, |
| .room-input { |
| min-height: 40px; |
| padding: 8px 10px; |
| border: 1px solid rgba(255, 255, 255, 0.18); |
| border-radius: 8px; |
| background: rgba(6, 12, 18, 0.64); |
| color: #f8fdff; |
| font: inherit; |
| font-size: 15px; |
| font-weight: 900; |
| } |
|
|
| .room-input { |
| text-transform: uppercase; |
| } |
|
|
| .clear-name-button { |
| min-height: 40px; |
| padding: 8px 9px; |
| border: 1px solid rgba(255, 255, 255, 0.16); |
| border-radius: 8px; |
| background: rgba(6, 12, 18, 0.6); |
| color: rgba(248, 253, 255, 0.68); |
| cursor: pointer; |
| font: inherit; |
| font-size: 11px; |
| font-weight: 950; |
| } |
|
|
| .clear-name-button:hover { |
| border-color: rgba(255, 244, 202, 0.48); |
| color: #fff4ca; |
| background: rgba(7, 13, 19, 0.78); |
| } |
|
|
| .online-button { |
| min-height: 40px; |
| padding: 8px 12px; |
| border: 1px solid rgba(255, 244, 202, 0.28); |
| border-radius: 8px; |
| background: rgba(7, 13, 19, 0.72); |
| color: #fff4ca; |
| cursor: pointer; |
| font: inherit; |
| font-size: 13px; |
| font-weight: 950; |
| } |
|
|
| .online-button.active { |
| border-color: rgba(92, 225, 255, 0.72); |
| color: #f8fdff; |
| background: rgba(22, 78, 92, 0.7); |
| } |
|
|
| .online-status { |
| color: rgba(248, 253, 255, 0.68); |
| font-size: 12px; |
| font-weight: 900; |
| text-align: right; |
| } |
|
|
| .peer-list { |
| display: grid; |
| gap: 7px; |
| padding: 9px 10px; |
| border: 1px solid rgba(92, 225, 255, 0.18); |
| border-radius: 8px; |
| background: rgba(5, 8, 11, 0.34); |
| } |
|
|
| .peer-row { |
| display: grid; |
| grid-template-columns: minmax(92px, 1fr) max-content; |
| gap: 10px; |
| align-items: center; |
| color: rgba(248, 253, 255, 0.86); |
| font-size: 12px; |
| font-weight: 900; |
| } |
|
|
| .peer-row em { |
| color: #5ce1ff; |
| font-style: normal; |
| } |
|
|
| .peer-row strong { |
| color: rgba(255, 244, 202, 0.78); |
| font-size: 11px; |
| font-weight: 950; |
| text-align: right; |
| } |
|
|
| .peer-row.off-map strong { |
| color: #ffb0b8; |
| } |
|
|
| .peer-row.empty { |
| display: block; |
| color: rgba(248, 253, 255, 0.52); |
| } |
|
|
| .room-hud { |
| position: fixed; |
| right: 24px; |
| top: 320px; |
| z-index: 2; |
| max-width: 300px; |
| padding: 10px 12px; |
| border: 1px solid rgba(92, 225, 255, 0.18); |
| border-radius: 8px; |
| background: rgba(5, 8, 11, 0.48); |
| color: rgba(248, 253, 255, 0.82); |
| font-family: "SFMono-Regular", Consolas, monospace; |
| font-size: 12px; |
| font-weight: 850; |
| line-height: 1.35; |
| white-space: pre-line; |
| pointer-events: none; |
| } |
|
|
| .track-options { |
| grid-template-columns: repeat(3, minmax(0, 1fr)); |
| } |
|
|
| .track-option { |
| display: grid; |
| align-content: start; |
| gap: 8px; |
| min-height: 112px; |
| padding: 12px; |
| border: 1px solid rgba(255, 255, 255, 0.2); |
| border-radius: 8px; |
| background: |
| linear-gradient(135deg, rgba(92, 225, 255, 0.2), rgba(255, 240, 106, 0.08)), |
| rgba(5, 8, 11, 0.72); |
| color: #f8fdff; |
| cursor: pointer; |
| font: inherit; |
| text-align: left; |
| box-shadow: 0 18px 40px rgba(0, 0, 0, 0.28); |
| } |
|
|
| .select-preview { |
| display: block; |
| width: 100%; |
| border: 1px solid rgba(255, 255, 255, 0.13); |
| border-radius: 8px; |
| background: rgba(5, 8, 11, 0.32); |
| } |
|
|
| .car-preview { |
| height: 86px; |
| } |
|
|
| .map-preview { |
| height: 112px; |
| } |
|
|
| .track-option:hover { |
| border-color: rgba(255, 244, 202, 0.62); |
| background: |
| linear-gradient(135deg, rgba(92, 225, 255, 0.28), rgba(255, 240, 106, 0.16)), |
| rgba(5, 8, 11, 0.78); |
| } |
|
|
| .track-option.active { |
| border-color: rgba(92, 225, 255, 0.8); |
| background: |
| linear-gradient(135deg, rgba(92, 225, 255, 0.34), rgba(255, 240, 106, 0.14)), |
| rgba(5, 8, 11, 0.82); |
| } |
|
|
| .track-option span, |
| .track-option strong { |
| display: block; |
| } |
|
|
| .track-option span { |
| margin-bottom: 0; |
| color: #fff4ca; |
| font-size: 21px; |
| font-weight: 950; |
| } |
|
|
| .track-option strong { |
| color: rgba(248, 253, 255, 0.68); |
| font-size: 14px; |
| font-weight: 850; |
| } |
|
|
| .select-badges { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 5px; |
| } |
|
|
| .select-badges i { |
| display: inline-grid; |
| place-items: center; |
| min-height: 21px; |
| padding: 3px 7px; |
| border: 1px solid rgba(92, 225, 255, 0.24); |
| border-radius: 999px; |
| background: rgba(92, 225, 255, 0.1); |
| color: rgba(248, 253, 255, 0.78); |
| font-size: 10px; |
| font-style: normal; |
| font-weight: 950; |
| } |
|
|
| .finish-overlay { |
| position: absolute; |
| inset: auto 0 46px 0; |
| z-index: 5; |
| display: grid; |
| place-items: center; |
| pointer-events: none; |
| } |
|
|
| .finish-card { |
| display: grid; |
| justify-items: center; |
| gap: 10px; |
| min-width: 230px; |
| padding: 16px 18px; |
| border: 1px solid rgba(255, 244, 202, 0.26); |
| border-radius: 8px; |
| background: |
| linear-gradient(135deg, rgba(92, 225, 255, 0.16), rgba(255, 240, 106, 0.12)), |
| rgba(4, 8, 12, 0.72); |
| box-shadow: 0 18px 48px rgba(0, 0, 0, 0.36); |
| text-shadow: 0 2px 8px rgba(0, 0, 0, 0.48); |
| pointer-events: auto; |
| } |
|
|
| .finish-card span { |
| color: rgba(248, 253, 255, 0.68); |
| font-size: 12px; |
| font-weight: 950; |
| } |
|
|
| .finish-card strong { |
| color: #fff4ca; |
| font-size: 22px; |
| font-weight: 950; |
| } |
|
|
| .finish-card button { |
| min-width: 132px; |
| min-height: 42px; |
| border: 1px solid rgba(255, 244, 202, 0.6); |
| border-radius: 8px; |
| background: #fff06a; |
| color: #111821; |
| cursor: pointer; |
| font: inherit; |
| font-size: 15px; |
| font-weight: 950; |
| } |
|
|
| .finish-card button:hover { |
| background: #ffffff; |
| } |
|
|
| .countdown { |
| position: absolute; |
| inset: 0; |
| z-index: 3; |
| display: grid; |
| place-items: center; |
| color: #fff2b4; |
| font-size: clamp(74px, 12vw, 132px); |
| font-weight: 950; |
| pointer-events: none; |
| text-shadow: |
| 0 7px 0 rgba(35, 22, 8, 0.65), |
| 0 18px 40px rgba(0, 0, 0, 0.55); |
| } |
|
|
| .countdown.go { |
| display: none; |
| } |
|
|
| .countdown.finish { |
| align-items: center; |
| background: rgba(5, 8, 11, 0.42); |
| color: #fff2b4; |
| font-size: clamp(44px, 7vw, 76px); |
| } |
|
|
| @media (max-width: 760px) { |
| .race-hud { |
| grid-template-columns: repeat(2, max-content) minmax(86px, 1fr); |
| gap: 12px 16px; |
| padding: 12px 14px; |
| } |
|
|
| .track-ribbon { |
| grid-column: 1 / 4; |
| min-height: 34px; |
| } |
|
|
| .hud-stat { |
| min-width: 62px; |
| } |
|
|
| .hud-stat strong { |
| font-size: 19px; |
| } |
|
|
| .boost-panel { |
| grid-column: 1 / 4; |
| margin-top: 0; |
| max-width: 220px; |
| } |
|
|
| .leaderboard { |
| left: 12px; |
| bottom: 12px; |
| min-width: 138px; |
| padding: 8px 10px; |
| font-size: 12px; |
| } |
|
|
| .minimap { |
| top: 102px; |
| right: 12px; |
| width: 190px; |
| height: 140px; |
| opacity: 0.74; |
| } |
|
|
| .lap-notice { |
| top: 72px; |
| min-width: 150px; |
| padding: 8px 12px; |
| font-size: 18px; |
| } |
|
|
| .finish-overlay { |
| bottom: 22px; |
| } |
|
|
| .car-options, |
| .bot-options, |
| .online-panel, |
| .track-options { |
| grid-template-columns: 1fr; |
| } |
|
|
| .online-status { |
| text-align: left; |
| } |
|
|
| .track-select-title { |
| font-size: 28px; |
| } |
|
|
| .track-option { |
| min-height: 96px; |
| } |
|
|
| .car-preview { |
| height: 76px; |
| } |
|
|
| .map-preview { |
| height: 90px; |
| } |
| } |
|
|