diff --git a/config.js b/config.js index 8b8e6d4..08a9f22 100644 --- a/config.js +++ b/config.js @@ -50,7 +50,8 @@ export const TUNE = { racketSpeed: 2.8, // m/s the racket zombie shambles to chase a ball racketQMax: 0.55, // its return quality is capped here (slower, sloppier than the tennis CPU) racketFlub: 0.2, // chance the racket zombie whiffs a return - missHud: 1, // show the last miss reason on screen (full log: T.G.missLog) + missHud: 0, // show the last miss reason on screen (full log: T.G.missLog) β off; dev-only + killPips: 1, // splatter: show the kills-to-next-point pips on the scoreboard }; export const COURT = { L: 23.77, W: 8.23, dblW: 10.97, netZ: 11.885, netH: 0.914, netW: 10.06 }; diff --git a/index.html b/index.html index f96f26f..c50e27c 100644 --- a/index.html +++ b/index.html @@ -10,15 +10,24 @@ #hint { position: fixed; bottom: 8px; width: 100%; text-align: center; font: 12px monospace; color: #6b7688; } @media (pointer: coarse) { #hint, #intro .kb { display: none; } } - #intro { position: fixed; inset: 0; background: rgba(10, 13, 20, 0.88); display: grid; - place-items: center; z-index: 10; touch-action: none; } - #intro .card { font: 16px monospace; color: #dfe6f2; text-align: left; line-height: 2; - border: 2px solid #5a6a85; background: #141a26; padding: 24px 32px; } - #intro h1 { font-size: 18px; margin: 0 0 12px; color: #f8e048; text-align: center; } - #intro p { margin: 0; } - #intro p span { display: inline-block; width: 32px; } - #intro em { color: #8a96ab; font-style: normal; font-size: 13px; } - #intro .start { margin-top: 16px; text-align: center; color: #f8e048; animation: blink 1.1s step-end infinite; } + #intro { position: fixed; inset: 0; z-index: 10; touch-action: none; display: grid; place-items: center; + background: radial-gradient(circle at 50% 34%, rgba(34,16,20,0.92), rgba(8,10,16,0.96)); } + #intro .card { font: 13px monospace; color: #dfe6f2; text-align: center; line-height: 1.9; + padding: 18px 26px; max-width: 92vw; animation: drop 0.5s ease-out; } + @keyframes drop { from { transform: translateY(-14px); opacity: 0; } } + #intro .logo { line-height: 0.9; margin-bottom: 8px; } + #intro .logo span { display: block; font-weight: 900; } + #intro .l1 { font-size: 46px; letter-spacing: 3px; color: #e0231a; + text-shadow: 0 2px 0 #7a0f0a, 0 4px 0 #550906, 0 6px 1px rgba(0,0,0,0.4), 0 0 20px rgba(224,35,26,0.35); } + #intro .l2 { font-size: 30px; letter-spacing: 9px; color: #eef23a; margin-top: 2px; + text-shadow: 0 2px 0 #59610f, 0 0 14px rgba(238,242,58,0.3); } + #intro .slogan { margin: 8px 0 16px; font-size: 13px; font-style: italic; color: #b6a0a4; letter-spacing: 0.5px; } + #intro .slogan b { color: #e0231a; font-style: normal; } + #intro .how { display: inline-block; text-align: left; color: #cbd4e2; line-height: 2; } + #intro .how p { margin: 0; } + #intro .how span { display: inline-block; width: 30px; } + #intro em { color: #8a96ab; font-style: normal; font-size: 12px; } + #intro .start { margin-top: 18px; color: #f8e048; font-weight: bold; letter-spacing: 1px; animation: blink 1.1s step-end infinite; } @keyframes blink { 50% { opacity: 0.25; } } @@ -27,14 +36,17 @@
π tap β serve & swing
-π flick β aimed shot
-β drag β run (auto-run is on)
-β¨οΈ WASD / arrows + SPACE
+Fifteen. Thirty. Forty. Dead.
+π tap β serve & swing
+π flick β aimed shot
+β drag β run (auto-run is on)
+β¨οΈ WASD / arrows + SPACE
+TAP TO START