.online-lobby { display: grid; gap: 10px; }
.lobby-copy { min-width: 0; }
.eyebrow { display: none; }
.online-lobby h2 { margin: 0 0 5px; font-size: 15px; letter-spacing: -.03em; }
#online-status { margin: 0; color: var(--muted); font-size: 11px; }
.lobby-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.online-error { margin: 0; color: var(--danger); font-size: 11px; }
.lobby-actions .btn { flex: 1 1 100px; font-size: 11px; padding: 8px; }
.lobby-actions:not(:has(> :not([hidden]))) { display: none; }
.is-home .online-lobby { gap: 20px; }
.is-home .lobby-copy { text-align: center; }
.is-home .online-lobby h2 { font-size: 17px; margin-bottom: 9px; }
.is-home #online-status { font-size: 12px; line-height: 1.65; }
.is-home .is-searching .lobby-copy::before { content: ''; display: block; width: 26px; height: 26px; margin: 0 auto 18px; border: 2px solid var(--line); border-top-color: var(--accent); border-radius: 50%; animation: searching 1s linear infinite; }
@keyframes searching { to { transform: rotate(360deg); } }
.friend-invitation { display: grid; gap: 10px; min-width: 0; }
.friend-invitation label { font-size: 18px; color: var(--muted); }
#invitation-link { width: 100%; min-width: 0; padding: 12px; border: 1px solid var(--line); border-radius: 9px; color: var(--ink); background: var(--surface-2); font: 18px/1.4 var(--body); user-select: text; -webkit-user-select: text; }
.invitation-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.invitation-actions .btn { min-width: 0; font-size: 20px; line-height: 1.15; padding: 12px 10px 15px; }
#invitation-status { min-height: 3.9em; margin: 0; color: var(--muted); font-size: 18px; line-height: 1.3; }
.is-inviting .rating-summary { display: none; }
.loading-dots { display: none; width: .85em; white-space: nowrap; text-align: left; }
.is-loading .loading-dots { display: inline-block; }
.loading-dots>span { animation: loading-dot 1.6s steps(1, end) infinite; }
.loading-dots>span:nth-child(2) { animation-name: loading-dot-two; }
.loading-dots>span:nth-child(3) { animation-name: loading-dot-three; }
@keyframes loading-dot { 0% { opacity: 0; } 25%, 100% { opacity: 1; } }
@keyframes loading-dot-two { 0%, 25% { opacity: 0; } 50%, 100% { opacity: 1; } }
@keyframes loading-dot-three { 0%, 50% { opacity: 0; } 75%, 100% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .loading-dots>span { animation: none; } }
