summaryrefslogtreecommitdiffstats
path: root/web/play/style.css
diff options
context:
space:
mode:
Diffstat (limited to 'web/play/style.css')
-rw-r--r--web/play/style.css188
1 files changed, 120 insertions, 68 deletions
diff --git a/web/play/style.css b/web/play/style.css
index e05f551..a0e4cca 100644
--- a/web/play/style.css
+++ b/web/play/style.css
@@ -78,9 +78,21 @@ button:disabled { cursor: not-allowed; opacity: 0.45; }
78 letter-spacing: 0.12em; 78 letter-spacing: 0.12em;
79} 79}
80.spacer { flex: 1; } 80.spacer { flex: 1; }
81.session { display: flex; align-items: center; gap: 12px; } 81.pill {
82.session .who { color: var(--dim); font-family: var(--mono); font-size: 12px; } 82 padding: 3px 7px;
83.session .who strong { color: var(--text); font-weight: 600; } 83 border: 1px solid var(--line);
84 border-radius: var(--radius-sm);
85 background: var(--surface);
86 color: var(--dim);
87 font-family: var(--mono);
88 font-size: 10px;
89 letter-spacing: 0.08em;
90}
91.session { display: flex; align-items: center; gap: 18px; }
92.session .who, .balance-block { display: grid; gap: 1px; justify-items: end; }
93.session .who .label, .balance-block .label { font-size: 9px; }
94.session .who strong { color: var(--text); font-family: var(--mono); font-size: 12px; font-weight: 600; }
95.balance-block .balance { font-size: 16px; }
84.balance { 96.balance {
85 color: var(--win); 97 color: var(--win);
86 font-family: var(--mono); 98 font-family: var(--mono);
@@ -92,7 +104,7 @@ button:disabled { cursor: not-allowed; opacity: 0.45; }
92 white-space: nowrap; 104 white-space: nowrap;
93} 105}
94 106
95main { width: min(1240px, 100%); margin: 0 auto; padding: 28px 24px 64px; flex: 1; } 107main { width: 100%; margin: 0 auto; padding: 28px 24px 48px; flex: none; }
96 108
97h1, h2, h3 { margin: 0; font-weight: 600; } 109h1, h2, h3 { margin: 0; font-weight: 600; }
98h1 { font-size: 26px; letter-spacing: -0.01em; } 110h1 { font-size: 26px; letter-spacing: -0.01em; }
@@ -175,87 +187,108 @@ h2 { font-size: 18px; }
175.auth-foot { margin-top: 16px; font-size: 12px; color: var(--faint); } 187.auth-foot { margin-top: 16px; font-size: 12px; color: var(--faint); }
176 188
177/* Lobby */ 189/* Lobby */
178.lobby-head { display: flex; align-items: end; gap: 18px; margin-bottom: 22px; flex-wrap: wrap; } 190.lobby-head { display: flex; align-items: center; gap: 10px; margin-bottom: 22px; flex-wrap: wrap; }
179.lobby-head .spacer { flex: 1; } 191.lobby-head .spacer { flex: 1; }
180.game-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; } 192.lobby-head h1 { display: flex; align-items: baseline; gap: 12px; }
193.count { color: var(--faint); font-family: var(--mono); font-size: 11px; font-weight: 400; letter-spacing: 0.08em; }
194.game-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
181.game-card { 195.game-card {
182 background: var(--surface); 196 background: var(--surface);
183 border: 1px solid var(--line); 197 border: 1px solid var(--line);
184 border-radius: var(--radius-lg); 198 border-radius: var(--radius-lg);
185 padding: 18px; 199 padding: 22px;
186 display: flex; 200 display: flex;
187 flex-direction: column; 201 flex-direction: column;
188 gap: 12px; 202 gap: 10px;
189 min-height: 178px; 203 min-height: 150px;
190 position: relative; 204 position: relative;
191 overflow: hidden; 205 overflow: hidden;
192} 206}
193.game-card::before { 207.game-card h3 { font-size: 22px; font-weight: 500; }
194 content: ""; 208.game-card p { margin: 0 0 10px; color: var(--dim); font-size: 13px; flex: 1; }
195 position: absolute; 209.game-card .btn { text-transform: uppercase; letter-spacing: 0.08em; font-size: 12px; padding: 9px 12px; }
196 inset: 0 auto 0 0;
197 width: 3px;
198 background: var(--accent);
199 opacity: 0.7;
200}
201.game-card.crash::before { background: var(--gold); }
202.game-card.roulette::before { background: var(--felt-line); }
203.game-card.blackjack::before { background: var(--loss); }
204.game-card h3 { font-size: 17px; }
205.game-card p { margin: 0; color: var(--dim); font-size: 13px; flex: 1; }
206.game-card .row { justify-content: space-between; }
207.bet-input { width: 92px; } 210.bet-input { width: 92px; }
208 211
209/* Game shell */ 212/* Game shell */
210.game-head { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; } 213#game-screen { min-height: calc(100vh - 64px - 72px); }
211.game-head .spacer { flex: 1; }
212.game-body { 214.game-body {
213 display: grid; 215 display: grid;
214 grid-template-columns: minmax(0, 1fr) 320px; 216 grid-template-columns: minmax(0, 1fr) 340px;
215 gap: 16px; 217 min-height: calc(100vh - 64px - 72px);
216 align-items: start; 218 align-items: stretch;
217} 219}
218.board { 220.board {
219 background: var(--surface); 221 background: var(--bg);
220 border: 1px solid var(--line); 222 border: 0;
221 border-radius: var(--radius-lg); 223 border-radius: 0;
222 padding: 18px; 224 padding: 24px 26px;
223 min-height: 560px; 225 min-height: 0;
224 overflow: hidden; 226 overflow: hidden;
227 display: flex;
228 flex-direction: column;
225} 229}
226.sidebar { 230.sidebar {
227 background: var(--surface); 231 background: var(--surface);
228 border: 1px solid var(--line); 232 border-left: 1px solid var(--line);
229 border-radius: var(--radius-lg); 233 border-radius: 0;
230 padding: 18px; 234 padding: 24px 26px;
231 display: flex; 235 display: flex;
232 flex-direction: column; 236 flex-direction: column;
233 gap: 14px; 237 gap: 12px;
238 min-height: 0;
239 overflow-y: auto;
240}
241.sidebar h2 { font-size: 22px; font-weight: 500; margin: 0 0 2px; }
242.sidebar .actions {
243 margin-top: auto;
244 display: grid;
245 gap: 8px;
246 padding-top: 16px;
234 position: sticky; 247 position: sticky;
235 top: 84px; 248 bottom: 0;
249 background: var(--surface);
236} 250}
237.sidebar .actions { margin-top: auto; display: grid; gap: 8px; }
238.sidebar .stat { display: flex; justify-content: space-between; gap: 12px; font-size: 13px; } 251.sidebar .stat { display: flex; justify-content: space-between; gap: 12px; font-size: 13px; }
239.sidebar .stat strong { font-family: var(--mono); font-weight: 600; } 252.sidebar .stat strong { font-family: var(--mono); font-weight: 600; }
240.note { color: var(--dim); font-size: 12px; } 253.note { color: var(--dim); font-size: 12px; }
241.chip-row { display: flex; flex-wrap: wrap; gap: 6px; } 254.chip-row { display: flex; flex-wrap: wrap; gap: 8px; }
242.chip-btn { 255.chip-btn {
256 width: 36px;
257 height: 36px;
258 padding: 0;
243 font-family: var(--mono); 259 font-family: var(--mono);
244 font-size: 12px; 260 font-size: 11px;
261 font-weight: 700;
245 border-radius: 999px; 262 border-radius: 999px;
246 border: 1px solid var(--line); 263 border: 3px solid var(--line);
247 background: var(--raised); 264 background: var(--raised);
248 padding: 5px 10px; 265 color: var(--text);
249} 266}
250.chip-btn.active { border-color: var(--gold); color: var(--gold); background: rgba(224, 182, 74, 0.1); } 267.chip-btn[data-chip="10"] { border-color: #e8edf2; }
268.chip-btn[data-chip="25"] { border-color: #4fb8c9; }
269.chip-btn[data-chip="50"] { border-color: #e05a5a; }
270.chip-btn[data-chip="100"] { border-color: #4ec27b; }
271.chip-btn.active { box-shadow: 0 0 0 2px var(--gold); }
272.board-foot {
273 margin-top: auto;
274 padding-top: 16px;
275 display: flex;
276 align-items: baseline;
277 gap: 10px;
278 color: var(--dim);
279 font-size: 12px;
280}
281.board-foot.tight { margin-top: 14px; }
282.board-foot .label { color: var(--faint); }
251 283
252/* Slots */ 284/* Slots */
253.reels { 285.reels {
254 display: grid; 286 display: grid;
255 grid-template-columns: repeat(5, minmax(60px, 1fr)); 287 grid-template-columns: repeat(5, minmax(60px, 1fr));
256 gap: 10px; 288 gap: 12px;
257 max-width: 760px; 289 width: 100%;
258 margin: 24px auto 0; 290 max-width: 1060px;
291 margin: 90px auto 0;
259} 292}
260.reel { display: grid; gap: 8px; } 293.reel { display: grid; gap: 8px; }
261.tile { 294.tile {
@@ -271,23 +304,28 @@ h2 { font-size: 18px; }
271 color: var(--dim); 304 color: var(--dim);
272 transition: color 90ms ease, border-color 90ms ease, background 90ms ease; 305 transition: color 90ms ease, border-color 90ms ease, background 90ms ease;
273} 306}
274.tile.sym-C { color: #c8d1da; } 307.tile.sym-C { color: #e05a5a; }
275.tile.sym-L { color: #7cc4d4; } 308.tile.sym-L { color: #e0b64a; }
276.tile.sym-O { color: #d8c27a; } 309.tile.sym-O { color: #e08a3c; }
277.tile.sym-G { color: #83d09a; } 310.tile.sym-G { color: #b57edc; }
278.tile.sym-D { color: #d48d8d; } 311.tile.sym-D { color: #4fb8c9; }
279.tile.sym-S { color: #e0b64a; } 312.tile.sym-S { color: #4ec27b; }
280.tile.win { border-color: var(--win); background: rgba(78, 194, 123, 0.12); color: var(--win); } 313.tile.win { border-color: var(--gold); background: rgba(224, 182, 74, 0.14); }
281.tile.spinning { color: var(--faint); } 314.tile.spinning { opacity: 0.35; }
282.win-lines { text-align: center; margin-top: 18px; color: var(--dim); font-size: 12px; min-height: 18px; } 315.win-lines { text-align: center; margin-top: 18px; color: var(--dim); font-size: 12px; min-height: 18px; }
283 316
284/* Cards */ 317/* Cards */
285.hand { margin: 16px 0; } 318.bj-table { flex: 0 0 500px; display: flex; flex-direction: column; justify-content: space-around; min-height: 400px; max-height: 500px; }
286.hand .label { margin-bottom: 8px; } 319.bj-divider { height: 1px; background: var(--line); margin: 10px 0; }
287.cards { display: flex; gap: 8px; flex-wrap: wrap; min-height: 116px; } 320.hand { margin: 8px 0; }
321.hand-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 8px; }
322.hand-head .label { color: var(--dim); }
323.hand-head .total { color: var(--text); font-size: 14px; }
324.empty-table { flex: 1; display: grid; place-items: center; color: var(--dim); font-size: 14px; }
325.cards { display: flex; gap: 10px; flex-wrap: wrap; min-height: 116px; justify-content: center; }
288.card { 326.card {
289 width: 76px; 327 width: 88px;
290 height: 108px; 328 height: 128px;
291 border-radius: 9px; 329 border-radius: 9px;
292 background: #f2f5f7; 330 background: #f2f5f7;
293 color: #121820; 331 color: #121820;
@@ -310,7 +348,8 @@ h2 { font-size: 18px; }
310.outcome { margin-top: 20px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--bg); } 348.outcome { margin-top: 20px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--bg); }
311 349
312/* Crash */ 350/* Crash */
313.crash-wrap { position: relative; } 351.crash-wrap { position: relative; flex: 1; display: flex; flex-direction: column; min-height: 0; padding-top: 40px; }
352.crash-wrap > .label { margin-top: 2px; color: var(--dim); }
314.crash-number { 353.crash-number {
315 font-family: var(--mono); 354 font-family: var(--mono);
316 font-size: clamp(44px, 9vw, 86px); 355 font-size: clamp(44px, 9vw, 86px);
@@ -328,8 +367,19 @@ h2 { font-size: 18px; }
328/* Roulette */ 367/* Roulette */
329.roulette-wrap { position: relative; } 368.roulette-wrap { position: relative; }
330canvas { display: block; width: 100%; } 369canvas { display: block; width: 100%; }
331.roulette-canvas { height: 540px; } 370.roulette-canvas { height: 500px; margin: 80px 0 0; }
332.crash-canvas { height: 360px; } 371.crash-canvas {
372 height: 500px;
373 margin-top: 14px;
374 background: var(--surface);
375 border: 1px solid var(--line);
376 border-radius: var(--radius-md);
377}
378.wheel-canvas {
379 display: block;
380 margin: 6px auto 2px;
381 flex: 0 0 auto;
382}
333.wheel-result { 383.wheel-result {
334 position: absolute; 384 position: absolute;
335 top: 16px; 385 top: 16px;
@@ -357,7 +407,7 @@ td.neg { color: var(--loss); }
357 407
358/* Toasts and overlays */ 408/* Toasts and overlays */
359.site-foot { 409.site-foot {
360 width: min(1240px, 100%); 410 width: 100%;
361 margin: 0 auto; 411 margin: 0 auto;
362 padding: 0 24px 28px; 412 padding: 0 24px 28px;
363 color: var(--faint); 413 color: var(--faint);
@@ -366,7 +416,7 @@ td.neg { color: var(--loss); }
366} 416}
367.site-foot a { color: var(--dim); } 417.site-foot a { color: var(--dim); }
368 418
369#toasts { position: fixed; right: 18px; bottom: 18px; display: grid; gap: 8px; z-index: 50; width: min(380px, calc(100vw - 36px)); } 419#toasts { position: fixed; left: 18px; bottom: 18px; display: grid; gap: 8px; z-index: 50; width: min(340px, calc(100vw - 36px)); }
370.toast { 420.toast {
371 background: var(--surface); 421 background: var(--surface);
372 border: 1px solid var(--line); 422 border: 1px solid var(--line);
@@ -400,9 +450,11 @@ td.neg { color: var(--loss); }
400.modal p { color: var(--dim); } 450.modal p { color: var(--dim); }
401 451
402@media (max-width: 900px) { 452@media (max-width: 900px) {
403 .game-body { grid-template-columns: 1fr; } 453 .game-body { grid-template-columns: 1fr; min-height: 0; }
404 .sidebar { position: static; } 454 .sidebar { border-left: 0; border-top: 1px solid var(--line); position: static; }
455 .board { padding: 18px 14px; }
405 .tagline { display: none; } 456 .tagline { display: none; }
457 .game-grid { grid-template-columns: 1fr; }
406} 458}
407@media (max-width: 620px) { 459@media (max-width: 620px) {
408 main { padding: 18px 14px 54px; } 460 main { padding: 18px 14px 54px; }
@@ -413,5 +465,5 @@ td.neg { color: var(--loss); }
413 .tile { font-size: clamp(18px, 7vw, 34px); } 465 .tile { font-size: clamp(18px, 7vw, 34px); }
414 .card { width: 58px; height: 84px; } 466 .card { width: 58px; height: 84px; }
415 .crash-canvas { height: 260px; } 467 .crash-canvas { height: 260px; }
416 .roulette-canvas { height: 400px; } 468 .roulette-canvas { height: 400px; margin-top: 30px; }
417} 469}