:root{--bg: #0e0f11;--panel: #16181c;--border: #2a2d35;--accent: #f5820a;--accent2: #ffcc00;--muted: #4a4f5e;--text: #e8eaf0;--text-dim: #7a8098;--hit: #f5820a;--hit-bg: rgba(245, 130, 10, .15);--win: #00e5a0}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:IBM Plex Sans,sans-serif;min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:32px 16px;background-image:repeating-linear-gradient(0deg,transparent,transparent 40px,rgba(255,255,255,.012) 40px,rgba(255,255,255,.012) 41px),repeating-linear-gradient(90deg,transparent,transparent 40px,rgba(255,255,255,.012) 40px,rgba(255,255,255,.012) 41px)}header{text-align:center;margin-bottom:28px;width:100%;max-width:720px}.header-top{display:flex;align-items:center;justify-content:center;position:relative;margin-bottom:12px}.header-user-menu{position:absolute;right:0;top:50%;transform:translateY(-50%)}.header-signin-btn{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:2px;text-transform:uppercase;padding:6px 14px;border:1px solid var(--border);background:var(--panel);color:var(--text-dim);cursor:pointer;transition:all .15s}.header-signin-btn:hover{border-color:var(--accent);color:var(--accent)}.header-user-btn{display:flex;align-items:center;gap:8px;padding:4px 10px;border:1px solid var(--border);background:var(--panel);cursor:pointer;transition:all .15s;text-transform:none}.header-user-btn:hover{border-color:var(--accent)}.header-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover}.header-avatar-placeholder{display:flex;align-items:center;justify-content:center;background:var(--muted);color:var(--bg);font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:700}.header-username{font-family:IBM Plex Sans,sans-serif;font-size:13px;color:var(--text);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-caret{font-size:10px;color:var(--text-dim)}.header-dropdown{position:absolute;right:0;top:100%;margin-top:4px;background:var(--panel);border:1px solid var(--border);min-width:160px;z-index:100}.header-dropdown-item{display:block;width:100%;text-align:left;font-family:IBM Plex Sans,sans-serif;font-size:13px;padding:10px 16px;border:none;background:transparent;color:var(--text-dim);cursor:pointer;transition:all .15s;text-transform:none;letter-spacing:0}.header-dropdown-item:hover{background:var(--hit-bg);color:var(--text);border:none}.header-dropdown-signout:hover{color:#f44}.badge{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:3px;color:var(--accent);text-transform:uppercase;border:1px solid var(--accent);padding:3px 10px;display:inline-block}h1{font-family:Bebas Neue,sans-serif;font-size:clamp(42px,8vw,76px);letter-spacing:4px;line-height:1;color:var(--text)}h1 span{color:var(--accent)}.subtitle{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--text-dim);margin-top:8px;letter-spacing:1px}.controls{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap;justify-content:center}button{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:2px;text-transform:uppercase;padding:10px 20px;border:1px solid var(--border);background:var(--panel);color:var(--text-dim);cursor:pointer;transition:all .15s}button:hover,button.primary{border-color:var(--accent);color:var(--accent)}button.primary:hover{background:var(--accent);color:#000}.board-status{font-family:IBM Plex Mono,monospace;font-size:14px;letter-spacing:1px;text-align:center;padding:12px;min-height:0}.board-status:empty{display:none}.board-status.loading{color:var(--text-dim)}.board-status.error{color:#f44}.board{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;max-width:720px;width:100%;margin-bottom:24px}.cell{background:var(--panel);border:1px solid var(--border);padding:12px 8px;text-align:center;cursor:pointer;transition:all .18s;min-height:90px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.cell:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--hit-bg);opacity:0;transition:opacity .2s}.cell:hover{border-color:var(--muted)}.cell:hover .cell-text{color:var(--text)}.cell.marked{border-color:var(--accent)}.cell.marked:before{opacity:1}.cell.marked .cell-text{color:var(--accent)}.cell.marked .check{opacity:1;transform:scale(1)}.cell.free{border-color:var(--accent2);background:rgba(255,204,0,.06);cursor:default}.cell.free .cell-text{color:var(--accent2);font-weight:700}.cell.bingo-line{border-color:var(--win)!important;animation:pulse .6s ease-out}.cell.bingo-line:before{background:rgba(0,229,160,.15)!important;opacity:1!important}.cell.bingo-line .cell-text{color:var(--win)!important}.board.locked .cell:not(.bingo-line):not(.free){cursor:default;opacity:.5}.board.locked .cell:not(.bingo-line):not(.free):hover{border-color:var(--border)}.board.locked .cell:not(.bingo-line):not(.free):hover .cell-text{color:var(--text-dim)}.board.locked .cell.bingo-line{cursor:default}.board.locked .cell.free{opacity:.5}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}.cell-text{font-family:IBM Plex Mono,monospace;font-size:11px;line-height:1.4;color:var(--text-dim);transition:color .18s;position:relative;z-index:1;-webkit-user-select:none;user-select:none;white-space:pre-line}.check{position:absolute;top:4px;right:6px;font-size:14px;opacity:0;transform:scale(.5);transition:all .2s;z-index:2}.counter{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--text-dim);letter-spacing:2px;margin-bottom:8px}.counter span{color:var(--accent);font-weight:600}.bingo-banner{display:none;font-family:Bebas Neue,sans-serif;font-size:48px;letter-spacing:6px;color:var(--win);text-align:center;margin-bottom:16px;animation:bannerPop .4s cubic-bezier(.175,.885,.32,1.275)}.bingo-banner.visible{display:block}@keyframes bannerPop{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.bingo-sub{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--text-dim);letter-spacing:2px;display:none;text-align:center;margin-bottom:20px}.bingo-sub.visible{display:block}.hidden{display:none!important}.group-selector-title{font-family:IBM Plex Mono,monospace;font-size:14px;letter-spacing:2px;text-transform:uppercase;color:var(--text-dim);text-align:center;margin-bottom:20px}.group-selector-status{font-family:IBM Plex Mono,monospace;font-size:14px;letter-spacing:1px;text-align:center;padding:24px;color:var(--text-dim)}.group-selector-status.error{color:#f44}.group-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;max-width:720px;width:100%;margin:0 auto 24px}.group-card{background:var(--panel);border:1px solid var(--border);padding:20px;transition:all .18s}.group-card:hover{border-color:var(--accent)}.group-card-name{font-family:Bebas Neue,sans-serif;font-size:24px;letter-spacing:2px;color:var(--text);margin-bottom:8px;transition:color .18s}.group-card:hover .group-card-name{color:var(--accent)}.group-card-desc{font-family:IBM Plex Sans,sans-serif;font-size:13px;color:var(--text-dim);line-height:1.5;margin-bottom:12px}.group-card-count{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:1px;color:var(--muted);text-transform:uppercase}.group-card-meta{display:flex;justify-content:space-between;font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:1px;color:var(--muted);text-transform:uppercase}.group-list-header{display:flex;align-items:center;justify-content:space-between;max-width:720px;width:100%;margin:0 auto 20px}.group-list-header .group-selector-title{margin-bottom:0}.group-create-btn{font-size:11px;padding:8px 16px}.group-section-title{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--muted);max-width:720px;width:100%;margin:8px auto 12px;padding-bottom:6px;border-bottom:1px solid var(--border)}.group-card-actions{display:flex;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.group-action-btn{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:1px;text-transform:uppercase;padding:6px 10px;border:1px solid var(--border);background:transparent;color:var(--text-dim);cursor:pointer;transition:all .15s;flex:1}.group-action-play:hover{border-color:var(--win);color:var(--win)}.group-action-edit:hover{border-color:var(--accent);color:var(--accent)}.group-action-delete:hover{border-color:#f44;color:#f44}.group-action-star{flex:0 0 auto}.group-action-star:hover{border-color:#ffc107;color:#ffc107}.group-action-star.starred{color:#ffc107;border-color:#ffc107}.group-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.group-card-header .group-card-name{flex:1}.group-card-star-count{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--muted);white-space:nowrap;padding-top:4px;background:none;border:none}button.group-card-star-count{cursor:pointer}button.group-card-star-count:hover,button.group-card-star-count.starred{color:#ffc107}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dialog{background:var(--panel);border:1px solid var(--border);padding:28px;max-width:420px;width:90%}.dialog-title{font-family:Bebas Neue,sans-serif;font-size:28px;letter-spacing:2px;color:var(--text);margin-bottom:12px}.dialog-message{font-family:IBM Plex Sans,sans-serif;font-size:14px;color:var(--text-dim);line-height:1.6;margin-bottom:24px}.dialog-message strong{color:var(--text)}.dialog-actions{display:flex;gap:12px;justify-content:flex-end}.dialog-btn-cancel{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:2px;text-transform:uppercase;padding:10px 20px;border:1px solid var(--border);background:transparent;color:var(--text-dim);cursor:pointer;transition:all .15s}.dialog-btn-cancel:hover{border-color:var(--text-dim);color:var(--text)}.dialog-btn-confirm{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:2px;text-transform:uppercase;padding:10px 20px;border:1px solid #ff4444;background:transparent;color:#f44;cursor:pointer;transition:all .15s}.dialog-btn-confirm:hover{background:#ff4444;color:#000}.form-container{max-width:720px;width:100%;margin:0 auto}.form-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.form-header .group-selector-title{margin-bottom:0}.form-cancel-btn{font-size:11px;padding:8px 16px}.form-field{margin-bottom:20px}.form-label{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--text-dim);display:block;margin-bottom:8px}.form-input{font-family:IBM Plex Sans,sans-serif;font-size:14px;padding:10px 14px;background:var(--bg);border:1px solid var(--border);color:var(--text);width:100%;transition:border-color .15s}.form-input::placeholder{color:var(--muted)}.form-input:focus{outline:none;border-color:var(--accent)}.form-error{font-family:IBM Plex Mono,monospace;font-size:12px;color:#f44;margin-top:6px}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:28px;padding-top:20px;border-top:1px solid var(--border)}.word-add-btn{font-size:11px;padding:10px 16px;white-space:nowrap}.bulk-input-row{display:flex;flex-direction:column;gap:8px;margin-top:8px}.bulk-input-row .bulk-input{width:100%;resize:vertical;font-family:IBM Plex Mono,monospace;font-size:12px}.bulk-input-row .word-add-btn{align-self:flex-end}.word-count{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:1px;color:var(--text-dim);margin-bottom:12px}.word-count.warning{color:var(--accent)}.word-list{display:flex;flex-wrap:wrap;gap:6px;min-height:40px}.word-chip{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--border);padding:5px 8px 5px 12px;font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--text-dim);cursor:grab;transition:all .15s;-webkit-user-select:none;user-select:none}.word-chip:hover{border-color:var(--accent);color:var(--text)}.word-chip.dragging{opacity:.4}.word-chip.drag-over{border-color:var(--accent);background:var(--hit-bg)}.word-chip-text{pointer-events:none}.word-chip-remove{font-size:10px;padding:2px 4px;border:none;background:transparent;color:var(--muted);cursor:pointer;transition:color .15s;line-height:1}.word-chip-remove:hover{color:#f44;border:none}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(20px);font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:1px;color:var(--bg);background:var(--win);padding:12px 24px;border:1px solid var(--win);z-index:1100;opacity:0;transition:opacity .3s,transform .3s;pointer-events:none}.toast.visible{opacity:1;transform:translate(-50%) translateY(0)}footer{font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--muted);letter-spacing:1px;margin-top:16px;text-align:center;line-height:1.8}.footer-links{margin-top:10px;display:flex;align-items:center;justify-content:center;gap:8px}.footer-links a{color:var(--muted);text-decoration:none;transition:color .15s}.footer-links a:hover{color:var(--accent)}.footer-sep{color:var(--muted);opacity:.5}.github-badge img{vertical-align:middle;height:16px}.static-page{max-width:640px;margin:0 auto;padding:24px;color:var(--text);font-family:IBM Plex Sans,sans-serif;font-size:14px;line-height:1.7}.static-page h2{font-family:Bebas Neue,sans-serif;font-size:36px;letter-spacing:2px;color:var(--accent);margin-bottom:20px}.static-page p{margin-bottom:12px;color:var(--text-dim)}.static-page strong{color:var(--text)}.back-link{background:none;border:none;color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:12px;cursor:pointer;padding:0;margin-bottom:16px;transition:color .15s}.back-link:hover{color:var(--accent)}.login-page{max-width:420px;margin:0 auto;padding:24px;text-align:center}.login-title{font-family:Bebas Neue,sans-serif;font-size:36px;letter-spacing:2px;color:var(--text);margin-bottom:12px}.login-subtitle{font-family:IBM Plex Sans,sans-serif;font-size:14px;color:var(--text-dim);line-height:1.6;margin-bottom:32px}.login-buttons{display:flex;flex-direction:column;gap:12px}.login-btn{display:flex;align-items:center;justify-content:center;gap:12px;font-family:IBM Plex Sans,sans-serif;font-size:14px;font-weight:500;letter-spacing:.5px;padding:14px 24px;border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer;transition:all .18s;text-transform:none}.login-btn:hover{border-color:var(--accent)}.login-icon{flex-shrink:0}.login-btn-github:hover{border-color:var(--text);color:var(--text)}.login-btn-google:hover{border-color:#4285f4;color:var(--text)}.login-page .back-link{display:block;text-align:left;margin-bottom:24px}.visibility-toggle{display:flex;gap:0;border:1px solid var(--border);border-radius:6px;overflow:hidden;width:fit-content}.visibility-option{padding:6px 16px;background:transparent;color:var(--text-dim);border:none;cursor:pointer;font-size:.85rem;transition:background .15s,color .15s}.visibility-option:not(:last-child){border-right:1px solid var(--border)}.visibility-option.active{background:var(--accent);color:#000;font-weight:600}.visibility-option:hover:not(.active){background:rgba(255,255,255,.05)}.visibility-badge{font-size:.65rem;padding:1px 6px;border-radius:3px;vertical-align:middle;margin-left:6px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.visibility-private{background:rgba(245,130,10,.2);color:var(--accent);border:1px solid rgba(245,130,10,.3)}.group-action-share{color:var(--accent2)!important;border-color:var(--accent2)!important}.group-action-share:hover{background:rgba(255,204,0,.15)!important}.group-card-shared{font-size:.75rem;color:var(--text-dim);margin-top:6px;padding-top:6px;border-top:1px solid var(--border)}.invite-page{max-width:480px;margin:0 auto;padding:2rem 1rem;text-align:center}.invite-page .back-link{display:block;text-align:left;margin-bottom:1.5rem;color:var(--text-dim);background:none;border:none;cursor:pointer;font-size:.9rem}.invite-title{font-size:1.5rem;font-weight:700;color:var(--accent);margin-bottom:1rem}.invite-info{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:1.5rem;margin-bottom:1.5rem}.invite-group-name{font-size:1.2rem;font-weight:600;color:var(--text);margin-bottom:.5rem}.invite-group-desc{color:var(--text-dim);margin-bottom:.5rem}.invite-group-count{color:var(--muted);font-size:.85rem}.invite-accept-btn{width:100%;padding:.75rem;font-size:1rem}.invite-login-hint{color:var(--text-dim);padding:1rem;background:var(--panel);border:1px solid var(--border);border-radius:8px}.invite-url-container{display:flex;gap:8px;margin:1rem 0}.invite-url-input{flex:1;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:.5rem .75rem;border-radius:4px;font-size:.85rem;font-family:monospace}.invite-copy-btn{background:var(--accent);color:#000;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-weight:600;white-space:nowrap}.invite-copy-btn:hover{background:var(--accent2)}.invite-copied{color:var(--accent2);font-size:.85rem;margin-bottom:.5rem}.lobby-waiting-room{max-width:480px;margin:0 auto;padding:24px;text-align:center}.lobby-waiting-room .back-link{display:block;text-align:left;margin-bottom:24px}.lobby-waiting-title{font-family:Bebas Neue,sans-serif;font-size:36px;letter-spacing:2px;color:var(--text);margin-bottom:8px}.lobby-waiting-subtitle{font-family:IBM Plex Sans,sans-serif;font-size:14px;color:var(--text-dim);margin-bottom:28px}.lobby-code-card{background:var(--panel);border:1px solid var(--border);padding:28px;margin-bottom:20px}.lobby-code-label{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--muted);margin-bottom:12px}.lobby-code-value{font-family:IBM Plex Mono,monospace;font-size:48px;font-weight:700;letter-spacing:12px;color:var(--accent);margin-bottom:20px;-webkit-user-select:all;user-select:all}.lobby-code-actions{display:flex;gap:10px;justify-content:center}.lobby-copy-btn{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:1px;text-transform:uppercase;padding:8px 16px;border:1px solid var(--accent);background:transparent;color:var(--accent);cursor:pointer;transition:all .15s}.lobby-copy-btn:hover{background:var(--accent);color:#000}.lobby-copied{color:var(--win);font-family:IBM Plex Mono,monospace;font-size:12px;margin-top:12px}.lobby-waiting-hint{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--text-dim);letter-spacing:1px;line-height:1.6}.lobby-player-section{margin-bottom:20px}.lobby-player-label{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--muted);margin-bottom:12px}.lobby-player-list{display:flex;flex-direction:column;gap:8px}.lobby-player-empty{font-family:IBM Plex Mono,monospace;font-size:13px;color:var(--muted);padding:12px}.lobby-player-item{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--panel);border:1px solid var(--border)}img.lobby-player-avatar{object-fit:cover}.lobby-player-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);color:#000;display:flex;align-items:center;justify-content:center;font-family:IBM Plex Mono,monospace;font-size:14px;font-weight:700;flex-shrink:0}.lobby-player-name{font-family:IBM Plex Sans,sans-serif;font-size:14px;color:var(--text);flex:1;text-align:left}.lobby-player-host-badge{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:1px;text-transform:uppercase;padding:3px 8px;border:1px solid var(--accent);color:var(--accent)}.lobby-settings-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px 16px;margin-bottom:16px}.lobby-settings-title{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);margin-bottom:10px}.lobby-settings-option{display:flex;align-items:center;gap:10px;padding:6px 0;font-family:IBM Plex Sans,sans-serif;font-size:14px;color:var(--text);cursor:pointer}.lobby-settings-option input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.lobby-host-controls{margin-bottom:20px}.lobby-start-btn{font-family:IBM Plex Mono,monospace;font-size:13px;letter-spacing:1px;text-transform:uppercase;padding:12px 28px;width:100%}.lobby-waiting-for-host{font-family:IBM Plex Mono,monospace;font-size:13px;color:var(--muted);letter-spacing:1px;padding:12px 0}.lobby-join-card{background:var(--panel);border:1px solid var(--border);padding:20px;margin-bottom:24px}.lobby-join-title{font-family:IBM Plex Mono,monospace;font-size:13px;letter-spacing:2px;text-transform:uppercase;color:var(--text-dim);margin-bottom:14px}.lobby-join-form{display:flex;gap:10px;align-items:stretch}.lobby-join-input{font-family:IBM Plex Mono,monospace;font-size:14px;padding:10px 14px;background:var(--bg);border:1px solid var(--border);color:var(--text);flex:1;min-width:0}.lobby-join-input::placeholder{color:var(--muted)}.lobby-join-input:focus{outline:none;border-color:var(--accent)}#lobby-join-code{text-transform:uppercase;letter-spacing:3px;max-width:180px}.lobby-join-btn{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:1px;text-transform:uppercase;padding:10px 20px;border:1px solid var(--accent);background:transparent;color:var(--accent);cursor:pointer;transition:all .15s;white-space:nowrap}.lobby-join-btn:hover{background:var(--accent);color:#000}.lobby-join-error{font-family:IBM Plex Mono,monospace;font-size:12px;color:#f44;margin-top:10px}@media (max-width: 600px){.lobby-join-form{flex-direction:column}#lobby-join-code{max-width:none}}.group-action-multiplayer:hover{border-color:#7c3aed;color:#7c3aed}.mp-game{max-width:960px;width:100%;margin:0 auto}.mp-game-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.spectator-notice{background:var(--panel);border:1px solid var(--accent);border-radius:8px;padding:12px 16px;margin-bottom:20px;font-family:IBM Plex Sans,sans-serif;font-size:14px;color:var(--accent);text-align:center}.mp-lobby-code{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:1px;color:var(--text-dim)}.mp-lobby-code-value{color:var(--accent);font-weight:700;letter-spacing:3px}.mp-layout{display:grid;grid-template-columns:1fr 240px;gap:24px;align-items:start}.mp-board-area{min-width:0}.mp-board-area .board{max-width:100%}.board.disabled{pointer-events:none;opacity:.6}.mp-host-controls{margin-top:16px;text-align:center}.mp-host-controls button{padding:10px 24px}.mp-sidebar{background:var(--panel);border:1px solid var(--border);padding:16px}.mp-sidebar-title{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--muted);margin-bottom:14px}.mp-player-list{display:flex;flex-direction:column;gap:10px}.mp-player-card{padding:10px;border:1px solid var(--border);background:var(--bg)}.mp-player-card.mp-player-self{border-color:var(--accent)}.mp-player-info{display:flex;align-items:center;gap:10px;margin-bottom:8px}img.mp-player-avatar{object-fit:cover}.mp-player-avatar{width:28px;height:28px;border-radius:50%;background:var(--accent);color:#000;display:flex;align-items:center;justify-content:center;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:700;flex-shrink:0}.mp-player-details{flex:1;min-width:0}.mp-player-name{font-family:IBM Plex Sans,sans-serif;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mp-player-name .lobby-player-host-badge{font-size:9px;padding:1px 5px;vertical-align:middle}.mp-player-progress-text{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--text-dim);letter-spacing:1px}.mp-player-bingo-count{color:var(--win);font-weight:600;margin-left:4px}.mp-player-bar{height:4px;background:var(--border);overflow:hidden}.mp-player-bar-fill{height:100%;background:var(--accent);transition:width .3s ease}.mp-player-bar-fill.mp-player-bar-bingo{background:var(--win)}.mp-bingo-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.6);z-index:1200;opacity:1;transition:opacity .5s;cursor:pointer}.mp-bingo-overlay.mp-bingo-fade{opacity:0}.mp-bingo-notification{text-align:center;animation:bannerPop .4s cubic-bezier(.175,.885,.32,1.275)}.mp-bingo-icon{font-family:Bebas Neue,sans-serif;font-size:72px;letter-spacing:8px;color:var(--win);margin-bottom:12px}.mp-bingo-winner{font-family:IBM Plex Sans,sans-serif;font-size:28px;color:var(--text);font-weight:700;margin-bottom:8px}.mp-bingo-message{font-family:IBM Plex Mono,monospace;font-size:14px;color:var(--text-dim);letter-spacing:1px}.mark-history-panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;margin-top:16px;overflow:hidden}.mark-history-title{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);padding:10px 12px 6px}.mark-history-list{max-height:180px;overflow-y:auto;padding:4px 10px 8px;display:flex;flex-direction:column;gap:4px}.mark-history-empty{font-family:IBM Plex Sans,sans-serif;font-size:13px;color:var(--text-dim);padding:4px 0}.mark-history-item{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid var(--border)}.mark-history-item:last-child{border-bottom:none}.mark-history-latest{background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:4px;padding:6px 8px;border-bottom:none}.mark-history-latest .mark-history-word{font-size:14px;color:var(--accent)}.mark-history-latest .mark-history-player{font-size:12px}.mark-history-word{font-family:IBM Plex Sans,sans-serif;font-size:13px;color:var(--text);font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mark-history-player{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--text-dim);white-space:nowrap;flex-shrink:0}.chat-panel{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:8px;margin-top:16px;overflow:hidden}.chat-title{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);padding:10px 12px 6px}.chat-messages{flex:1;min-height:120px;max-height:240px;overflow-y:auto;padding:4px 10px 8px;display:flex;flex-direction:column;gap:6px}.chat-msg{display:flex;gap:8px;align-items:flex-start}.chat-msg-self .chat-msg-name{color:var(--accent)}.chat-avatar{width:24px;height:24px;border-radius:50%;flex-shrink:0;object-fit:cover}.chat-avatar-letter{background:var(--accent);color:#000;display:flex;align-items:center;justify-content:center;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:700}.chat-msg-body{min-width:0}.chat-msg-name{font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:700;color:var(--text-dim);margin-bottom:1px}.chat-msg-text{font-family:IBM Plex Sans,sans-serif;font-size:13px;color:var(--text);word-break:break-word}.chat-input-row{display:flex;gap:6px;padding:8px 10px;border-top:1px solid var(--border)}.chat-input{flex:1;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:6px 10px;color:var(--text);font-family:IBM Plex Sans,sans-serif;font-size:13px;outline:none}.chat-input:focus{border-color:var(--accent)}.chat-send-btn{background:var(--accent);color:#000;border:none;border-radius:6px;padding:6px 12px;font-size:14px;cursor:pointer;font-weight:700}.chat-send-btn:hover{filter:brightness(1.1)}@media (max-width: 720px){.mp-layout{grid-template-columns:1fr}.mp-sidebar{order:-1}}
