/* Keep the footer in layout during combat so it never covers action buttons. */ body.player-app .app-footer #sound-toggle { margin-right: auto; white-space: nowrap; } body.player-app .app > footer.app-footer { display: flex; flex: 0 0 auto; width: 100vw; align-self: center; flex-direction: row; align-items: center; justify-content: flex-end; gap: 4px; padding: 8px max(24px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left)); background: transparent; color: var(--muted); } body.player-app .app-footer nav { display: flex; align-items: center; gap: 4px; } body.player-app .app-footer :is(.footer-divider, nav > span) { font-size: 12px; } body.player-app .app-footer #connection { min-height: 16px; font-size: 10px; color: var(--muted); } body.player-app .app-footer #connection::before { background: #9ca3af; } body.player-app .app-footer #connection.connected { color: #15803d; } body.player-app .app-footer #connection.connected::before { background: #15803d; } body.player-app .app-footer #connection.disconnected { color: #dc2626; } body.player-app .app-footer #connection.disconnected::before { background: #dc2626; } body.player-app .app-footer button.quiet { min-height: 44px; padding: 8px; border: 0; background: transparent; color: #454545; box-shadow: none; font-size: 12px; transform: none; } body.player-app .app-footer button.quiet:hover { background: #fff0df; color: var(--ink); } body.player-app .app-footer button.quiet:active { background: #ffe2bd; transform: none; } body.player-app:is([data-screen=home], [data-screen=join]) .app-footer { position: absolute; right: 0; bottom: 0; background: transparent; } body.player-app:is([data-screen=match], [data-screen=result]) .app > footer.app-footer { display: flex; } @media (max-width: 760px) { body.player-app:is([data-screen=home], [data-screen=join]) .app > footer.app-footer { position: static; margin-top: auto; } }