Add lobby and pack concept.
This commit is contained in:
+196
-17
@@ -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. */
|
||||
|
||||
Reference in New Issue
Block a user