Add lobby and pack concept.

This commit is contained in:
Greyson Parrelli
2026-07-23 22:01:54 -04:00
parent 9d9acc4577
commit e74f983470
18 changed files with 665 additions and 111 deletions
+196 -17
View File
@@ -371,15 +371,10 @@ h3 {
gap: 10px;
}
/* The three computer-opponent difficulty buttons share the row evenly. */
.home-bots {
display: flex;
gap: 10px;
}
.home-bots .btn {
flex: 1;
white-space: nowrap;
.home-hint {
text-align: center;
font-size: 0.9rem;
margin: 0;
}
.home-error {
@@ -659,13 +654,17 @@ h3 {
/* ---------- lobby ---------- */
.lobby {
min-height: 60vh;
max-width: 620px;
margin: 0 auto;
padding: 8px 16px 32px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
gap: 22px;
}
.lobby-heading {
text-align: center;
color: var(--gold);
}
.lobby-bounce {
@@ -674,19 +673,199 @@ h3 {
animation: float 2s ease-in-out infinite;
}
.lobby-removed {
gap: 14px;
text-align: center;
}
.lobby-code-row {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
flex-wrap: wrap;
}
.lobby-code {
font-family: var(--font-display);
font-size: 3rem;
letter-spacing: 0.35em;
padding: 14px 30px 14px calc(30px + 0.35em);
font-size: 1.8rem;
letter-spacing: 0.3em;
padding: 6px 16px 6px calc(16px + 0.3em);
color: var(--gold);
background: rgba(0, 0, 0, 0.25);
border: 3px dashed rgba(246, 201, 78, 0.5);
border-radius: 16px;
border-radius: 14px;
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
box-shadow: var(--tray-inset);
}
.lobby-section {
display: flex;
flex-direction: column;
gap: 12px;
}
.lobby-section-title {
font-family: var(--font-display);
font-size: 1.15rem;
color: var(--cream);
}
.lobby-note,
.lobby-waiting {
text-align: center;
}
.lobby-waiting {
font-size: 1.05rem;
}
/* ---------- pack picker ---------- */
.pack-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 12px;
}
.pack-card {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
padding: 16px 10px 12px;
border-radius: var(--card-radius);
border: 3px solid transparent;
background: rgba(0, 0, 0, 0.22);
color: var(--cream);
cursor: pointer;
transition: transform 0.12s ease, border-color 0.12s ease;
}
.pack-card:not(:disabled):hover {
transform: translateY(-2px);
}
.pack-card.is-selected {
border-color: var(--gold);
background: rgba(246, 201, 78, 0.14);
}
.pack-card.is-locked {
opacity: 0.45;
cursor: not-allowed;
filter: grayscale(0.7);
}
.pack-card:disabled {
cursor: not-allowed;
}
.pack-emoji {
font-size: 2.4rem;
line-height: 1;
}
.pack-name {
font-family: var(--font-display);
font-size: 0.95rem;
}
.pack-tag {
font-size: 0.72rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--gold);
}
.pack-card.is-locked .pack-tag {
color: var(--cream);
}
/* ---------- seat list ---------- */
.seat-list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 10px;
}
.seat-row {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 14px;
border-radius: 12px;
background: rgba(0, 0, 0, 0.22);
box-shadow: var(--tray-inset);
}
.seat-open {
border: 2px dashed rgba(251, 241, 215, 0.25);
background: rgba(0, 0, 0, 0.12);
box-shadow: none;
}
.seat-avatar {
font-size: 1.5rem;
line-height: 1;
}
.seat-name {
font-weight: 800;
flex: 1;
}
.seat-you {
color: var(--gold);
font-weight: 700;
}
.seat-badges {
display: flex;
align-items: center;
gap: 8px;
}
.seat-remove {
border: none;
background: rgba(217, 74, 56, 0.2);
color: var(--red-soft);
font-weight: 900;
width: 26px;
height: 26px;
border-radius: 50%;
cursor: pointer;
line-height: 1;
}
.seat-remove:hover {
background: var(--red);
color: #fff;
}
.seat-open-host {
display: flex;
flex-direction: column;
gap: 10px;
width: 100%;
}
.seat-bot-picker {
display: flex;
gap: 8px;
flex-wrap: wrap;
}
.seat-bot-picker .btn {
flex: 1;
white-space: nowrap;
}
/* ---------- cards ---------- */
/* Thick printed stock: a warm parchment face, a soft ink border with an inner
keyline, a physical shadow, and a lit sheen along the top. */