:root{color:#e8edf5;background:#0b1220;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--theme-ink: #e8edf5;--theme-muted: #91a2ba;--theme-surface: #111c2e;--theme-warm-surface: #111c2e;--theme-warm-muted: #17253a;--theme-tournament-panel: #111c2e;--theme-tournament-player: #182941;--theme-tournament-button: #17253a;--theme-warning: #4b3b19;--theme-red: #ff7272;--player-blue: #15f2fd;--player-red: #fc1f15;--invincible-blue: #51ff00;--invincible-red: #ff0ff3;--grid-line-width: .8;--segment-line-width: 3;--invincible-line-width: 5;--preview-line-width: 4}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#0b1220}button,input,select{font:inherit}button{cursor:pointer}.app-shell{width:min(1100px,calc(100% - 28px));margin:0 auto;padding:26px 0 40px}header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(2rem,5vw,3.5rem);letter-spacing:-.045em}.eyebrow{margin-bottom:3px;color:#91a2ba;font-size:.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.identity{display:flex;align-items:center;gap:8px;color:#bdc9d9}.status{width:9px;height:9px;border-radius:50%;background:#e45d5d;box-shadow:0 0 10px #e45d5d}.status.online{background:#54d38a;box-shadow:0 0 10px #54d38a}.score-cluster{max-width:100%;margin:0 auto 14px}.score-progress-wrap{margin-bottom:9px}.score-progress-bar{position:relative;display:flex;height:34px;overflow:hidden;border:1px solid #435671;border-radius:9px;background:#17253a}.score-progress-blue{background:var(--player-blue)}.score-progress-red{background:var(--player-red)}.score-progress-projection{position:absolute;inset-block:0;z-index:1}.score-progress-projection.blue{background:#15f2fd85}.score-progress-projection.red{background:#fc1f1585}.score-progress-current,.score-progress-projected-line{position:absolute;z-index:2;top:-1px;bottom:-1px;width:0;transform:translate(-1px)}.score-progress-current{border-left:2px solid #f8fbff;box-shadow:0 0 3px #000000b3}.score-progress-projected-line{z-index:3;transform:translate(-2px)}.score-progress-projected-line.blue{border-left:3px dotted var(--player-blue)}.score-progress-projected-line.red{border-left:3px dotted var(--player-red)}.score-progress-value{position:absolute;z-index:4;top:50%;display:flex;align-items:baseline;gap:6px;transform:translateY(-50%);color:#fff;font-size:1rem;font-variant-numeric:tabular-nums;text-shadow:0 1px 3px rgba(0,0,0,.8)}.score-progress-value.blue{left:12px}.score-progress-value.red{right:12px}.score-progress-value small{color:#ffffffc7;font-size:.7rem}.scorebar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:12px}.score{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px;border:1px solid #2a3b55;border-radius:10px;background:#111c2e;padding:10px 15px;opacity:.72}.score.active{opacity:1;box-shadow:0 0 0 2px currentColor}.score.blue{color:var(--player-blue)}.score.red{color:var(--player-red)}.score strong{color:#fff;font-size:1.65rem}.score-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-values{display:flex;flex:none;align-items:baseline;gap:5px;white-space:nowrap}.score-values em{min-width:5ch;color:#dbe6f5;font-size:1rem;font-style:normal;font-variant-numeric:tabular-nums;text-align:right}.score-values small{color:#8795a8;font-size:.72rem;font-weight:600}.turn-copy{align-self:center;min-width:115px;color:#91a2ba;font-size:.78rem;line-height:1.4;text-align:center;text-transform:capitalize}.workspace{display:grid;grid-template-columns:minmax(0,650px) minmax(290px,1fr);gap:14px}.workspace.replay-workspace{grid-template-columns:minmax(0,650px);justify-content:center}.chat-panel{border:1px solid #263850;border-radius:12px;background:#0f192aeb;box-shadow:0 18px 60px #00000038}.sandbox-controls{display:flex;align-items:flex-end;justify-content:center;flex-wrap:wrap;gap:10px 16px;border-bottom:1px solid #263850;margin:-2px -2px 10px;padding:4px 4px 12px}.control-group{display:grid;gap:5px}.control-group>span{color:#8795a8;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.control-group select{border:1px solid #3b506e;border-radius:6px;outline:none;background:#101b2c;color:#eef3fa;padding:6px 28px 6px 9px}.control-group select:focus{border-color:#7594bd}.number-control input{width:76px;border:1px solid #3b506e;border-radius:6px;outline:none;background:#101b2c;color:#eef3fa;padding:6px 8px}.number-control input:focus{border-color:#7594bd}.number-control input[aria-invalid=true]{border-color:#c96969}.field-error{width:150px;color:#e58a8a;font-size:.66rem;line-height:1.2}.apply-setup{align-self:end;border:1px solid #52755f;border-radius:6px;background:#1c4934;color:#e9fff2;padding:6px 11px}.apply-setup:hover:not(:disabled){background:#265f45}.apply-setup:disabled{cursor:default;opacity:.4}.checkbox-control{align-self:end;display:flex;align-items:center;gap:7px;min-height:31px;color:#c4cfdd;font-size:.78rem;cursor:pointer}.checkbox-control input{width:16px;height:16px;accent-color:#54d38a}.segmented{display:flex}.segmented button{border:1px solid #3b506e;border-right-width:0;background:#101b2c;color:#aebbd0;padding:6px 10px}.segmented button:first-child{border-radius:6px 0 0 6px}.segmented button:last-child{border-right-width:1px;border-radius:0 6px 6px 0}.segmented button.selected{position:relative;border-color:#7594bd;background:#2a3d59;color:#fff}.color-buttons button{text-transform:capitalize}.color-buttons button.blue.selected{background:#1c5fae}.color-buttons button.red.selected{background:#a92f38}.board{display:block;width:min(100%,650px);margin:0 auto;touch-action:manipulation}.board-background{fill:#0b1220;rx:8px}.territory{stroke:none;pointer-events:none}.territory-pattern-base.blue{fill:var(--player-blue);fill-opacity:.1}.territory-pattern-base.red{fill:var(--player-red);fill-opacity:.1}.territory-pattern-wave{fill:none;stroke-width:1.4;stroke-opacity:.18}.territory-pattern-wave.blue{stroke:var(--player-blue)}.territory-pattern-wave.red{stroke:var(--player-red)}.grid-lines{stroke:#c2cad5;stroke-width:var(--grid-line-width);opacity:.3}.range-square{fill:#ffd64d0e;stroke:#ffd64d;stroke-width:2;stroke-dasharray:7 5;filter:drop-shadow(0 0 3px rgba(255,214,77,.6));pointer-events:none}.segment{stroke-width:var(--segment-line-width);stroke-linecap:round}.invincible-outline{fill:none;stroke-width:var(--invincible-line-width);stroke-linecap:round;stroke-linejoin:round;stroke-opacity:.9;pointer-events:none}.invincible-outline.blue{stroke:var(--invincible-blue);filter:drop-shadow(0 0 4px var(--invincible-blue)) drop-shadow(0 0 8px var(--invincible-blue))}.invincible-outline.red{stroke:var(--invincible-red);filter:drop-shadow(0 0 4px var(--invincible-red)) drop-shadow(0 0 8px var(--invincible-red))}.segment.blue{stroke:var(--player-blue);filter:drop-shadow(0 0 4px var(--player-blue))}.segment.red{stroke:var(--player-red);filter:drop-shadow(0 0 4px var(--player-red))}.preview-edge{stroke-width:var(--preview-line-width);stroke-linecap:round;stroke-dasharray:9 5;opacity:.82;pointer-events:none}.preview-edge.blue{stroke:var(--player-blue);filter:drop-shadow(0 0 4px var(--player-blue))}.preview-edge.red{stroke:var(--player-red);filter:drop-shadow(0 0 4px var(--player-red))}.preview-edge.invalid{stroke:#8993a2;filter:drop-shadow(0 0 2px rgba(137,147,162,.5));opacity:.62}.segment-hit{stroke:transparent;stroke-width:16;cursor:pointer;pointer-events:stroke}.node{stroke-width:1.5}.node,.selection{pointer-events:none}.node.blue.invincible{stroke:var(--invincible-blue);stroke-width:4}.node.red.invincible{stroke:var(--invincible-red);stroke-width:4}.node.blue{fill:var(--player-blue);stroke:var(--player-blue);filter:drop-shadow(0 0 5px var(--player-blue))}.node.red{fill:var(--player-red);stroke:var(--player-red);filter:drop-shadow(0 0 5px var(--player-red))}.selection{fill:#ffd64d1a;stroke:#ffd64d;stroke-width:3;filter:drop-shadow(0 0 4px #ffd64d)}.point-hitbox{fill:transparent;cursor:pointer}.point-hitbox.disabled{pointer-events:none}.point-hitbox:hover{fill:#d6e4f557;filter:drop-shadow(0 0 3px rgba(214,228,245,.65))}.point-hitbox.invalid-target{cursor:not-allowed}.point-hitbox.invalid-target:hover{fill:#787e8a47}.hint{min-height:2.6em;margin:8px 6px 0;color:#a9b7ca;font-size:.83rem;text-align:center}.edit-note{margin:-10px 6px 8px;color:#77879d;font-size:.72rem;text-align:center}.validation-note{margin:-10px 6px 8px;color:#aab2be;font-size:.75rem;text-align:center}.game-error{min-height:1.25em;margin:0 6px 8px;color:#ff8a8a;font-size:.82rem;text-align:center}.controls{display:flex;justify-content:center;gap:8px}.controls button,.chat-panel button{border:1px solid #3b506e;border-radius:7px;background:#1d2c43;color:#eef3fa;padding:8px 14px}.controls button:hover:not(:disabled),.chat-panel button:hover{background:#2a3d59}.controls button:disabled{cursor:default;opacity:.4}.controls .reset,.controls .danger{border-color:#70424a;color:#ffb1b1}.replay-controls{display:grid;gap:7px;margin-top:14px}.replay-controls>div{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;color:#8292a8;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.replay-controls>div span:last-child{text-align:right}.replay-controls output{color:#dbe6f5;font-variant-numeric:tabular-nums;text-align:center}.replay-controls input{position:relative;z-index:2;display:block;width:100%;height:24px;accent-color:var(--player-blue);cursor:ew-resize;pointer-events:auto}.chat-panel{display:flex;flex-direction:column;min-height:400px;max-height:680px;overflow:hidden}.chat-panel h2{margin:0;border-bottom:1px solid #263850;padding:15px;font-size:1rem}.messages{flex:1;overflow-y:auto;padding:12px 15px}.messages p{margin-bottom:9px;color:#c5cfdd;font-size:.86rem;line-height:1.35;overflow-wrap:anywhere}.messages strong{color:#fff}.messages .chat-message.player-blue strong{color:var(--player-blue)}.messages .chat-message.player-red strong{color:var(--player-red)}.messages .chat-message.spectator,.messages .chat-message.spectator strong{color:#7f8da1}.messages .chat-message.broadcast,.messages .chat-message.broadcast strong{color:#ffad42}.messages .empty-chat{color:#71839b}.chat-panel form{display:flex;gap:7px;border-top:1px solid #263850;padding:10px}.chat-panel input{min-width:0;flex:1;border:1px solid #344963;border-radius:7px;outline:none;background:#0c1625;color:#fff;padding:9px 10px}.chat-panel input:focus{border-color:#6f96c7}.access-screen{display:grid;min-height:100vh;place-content:center;padding:24px;text-align:center}.access-screen h1{margin-bottom:10px}.access-screen p{color:#91a2ba}.access-screen a{color:#8fc1ff}.topbar{min-height:42px}.topbar-left{display:flex;align-items:center;gap:8px}.topbar-left>a{color:#a9b7ca;font-weight:800;text-decoration:none}.topbar button,.back-button{border:1px solid #3b506e;border-radius:7px;background:#1d2c43;color:#eef3fa;padding:7px 11px}.topbar .identity{background:#111c2e}.login-card{display:grid;width:min(390px,calc(100vw - 32px));gap:10px;border:1px solid #2a3b55;border-radius:16px;background:#111c2e;padding:28px;box-shadow:0 22px 70px #00000059}.login-card h1{margin-bottom:4px}.login-card input,.history-search input{border:1px solid #3b506e;border-radius:8px;outline:0;background:#0c1625;color:#fff;padding:11px}.login-card button,.history-search button{border:0;border-radius:8px;background:#2b74d3;color:#fff;padding:11px;font-weight:800}.primary{border:0;border-radius:999px;background:#2477dc;color:#fff;padding:12px 28px;font-weight:900}.primary.queued{background:#8b3540}.feature-nav button,.player-list button,.live-list button,.online-game-card,.pagination button,.game-title button{border:1px solid #3b506e;border-radius:7px;background:#1d2c43;color:#eef3fa;padding:8px 12px}.lobby-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.panel,.history-page{border:1px solid #263850;border-radius:14px;background:#0f192aeb;padding:16px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-heading h1,.section-heading h2{margin-bottom:12px}.section-heading>span{border-radius:999px;background:#263850;padding:3px 9px}.practice-heading{margin-bottom:12px}.practice-heading>div{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.practice-heading h2{margin:0}.quickplay-button{padding:7px 16px;font-size:.82rem}.player-list,.live-list,.history-list{display:grid;gap:8px}.player-list>div,.live-list>button,.history-list>button{display:flex;align-items:center;justify-content:space-between;width:100%;border:1px solid #293e59;border-radius:9px;background:#121f32;color:#e8edf5;padding:10px 12px;text-align:left}.player-list button.accept-challenge{border-color:#d4a72c;background:#7a5b09;color:#fff2b0;font-weight:800}.live-list>button span,.history-list>button span{display:grid;gap:3px}.live-list small,.history-list small{color:#91a2ba}.feature-nav{display:flex;justify-content:center;gap:10px;margin-top:18px}.enclosure-home-title{margin:4px 0 10px;text-align:center}.enclosure-home-title+.feature-nav{margin-top:0}.feature-nav .primary{border:0;border-radius:999px;background:#2477dc;padding-inline:24px}.online-lobby-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;margin-bottom:14px;padding:18px}.online-lobby-header h1{grid-column:2;margin:0;font-size:clamp(1.7rem,4vw,2.5rem);text-align:center}.online-lobby-header .back-button{grid-column:1;grid-row:1;justify-self:start}.online-lobby-header .primary{grid-column:3;grid-row:1;justify-self:end;padding:10px 22px}.online-lobby-pane+.online-lobby-pane{margin-top:14px}.online-lobby-pane .section-heading{margin-bottom:12px}.online-lobby-pane .section-heading h2{margin:0}.online-game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:10px}.online-game-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.online-game-card{display:flex;min-width:0;align-items:end;justify-content:space-between;gap:10px;text-align:left}.online-game-card>span{display:grid;min-width:0;gap:5px}.online-game-card b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.online-game-card small{flex:none;color:#91a2ba}.online-empty{grid-column:1 / -1;margin:4px;color:#91a2ba}.practice-board-panel{margin-top:18px}.practice-board-heading{margin-bottom:12px}.practice-board-heading h2{margin:0}.practice-board-content{width:min(100%,650px);margin:0 auto}.practice-board-content .score-progress-wrap{margin-bottom:12px}.practice-board{width:min(100%,590px)}.practice-controls{margin-top:12px}.admin-open-button{border-color:#b78b21!important;background:#6b5011!important;color:#fff0b0!important;font-weight:900}.admin-overlay{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:16px;background:#000000b3}.admin-card{display:grid;width:min(780px,100%);max-height:calc(100vh - 32px);gap:16px;overflow-y:auto;border:1px solid #425a79;border-radius:16px;background:#17253a;padding:22px;box-shadow:0 22px 70px #00000080}.admin-header,.admin-section-heading,.release-section{display:flex;align-items:center;justify-content:space-between;gap:12px}.admin-header{align-items:flex-start;margin-bottom:0}.admin-header span,.admin-user-row span,.admin-section-heading span,.release-section span{color:#91a2ba;font-size:.78rem;font-weight:700}.admin-header h2{margin:2px 0 0}.admin-header>button{width:38px;padding:4px;font-size:1.3rem}.admin-card button,.admin-confirm-card button{border:1px solid #3b506e;border-radius:7px;background:#1d2c43;color:#eef3fa;padding:8px 12px}.admin-card button:disabled,.admin-confirm-card button:disabled{cursor:not-allowed;opacity:.5}.admin-card input,.admin-confirm-card input{width:100%;border:1px solid #3b506e;border-radius:8px;outline:0;background:#0c1625;color:#fff;padding:10px 11px}.admin-card input:focus,.admin-confirm-card input:focus{border-color:#6f96c7}.admin-section{display:grid;gap:9px;border-top:1px solid #344963;padding-top:15px}.release-section{grid-template-columns:minmax(0,1fr) auto;border:1px solid #465a76;border-radius:10px;background:#111c2e;padding:14px}.release-section>div{display:grid;gap:3px}.site-open-badge{border:1px solid #35704e;border-radius:999px;background:#173d2a;color:#8ff0b6!important;padding:6px 10px}.admin-danger-button{border-color:#ef4949!important;color:#ffb1b1!important}.open-site-button{background:#bd1e24!important;color:#fff!important;font-weight:900}.admin-error{margin:0;color:#ff8a8a;font-size:.86rem}.admin-search{width:100%}.admin-list{display:grid;max-height:280px;gap:7px;overflow-y:auto}.admin-user-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;border:1px solid #344963;border-radius:9px;background:#111c2e;padding:10px}.admin-user-row>div:first-child{display:grid;min-width:0;gap:2px}.admin-user-row strong,.admin-user-row span{overflow-wrap:anywhere}.admin-row-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.admin-inline-form{display:flex;gap:8px}.admin-inline-form input{min-width:0;flex:1}.admin-blocklist{display:grid;max-height:190px;gap:7px;overflow-y:auto}.admin-blocklist>div{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid #344963;border-radius:8px;background:#111c2e;padding:8px 10px}.admin-blocklist>div>span{display:grid;gap:2px}.admin-blocklist small{color:#8795a8}.admin-confirm-overlay{z-index:50}.admin-confirm-card{display:grid;width:min(480px,100%);gap:14px;border:1px solid #425a79;border-radius:16px;background:#17253a;padding:22px;box-shadow:0 22px 70px #00000080}.admin-confirm-card h2,.admin-confirm-card p{margin:0}.admin-confirm-card p{color:#aebbd0;line-height:1.45}.admin-confirm-card label{display:grid;gap:7px;color:#dbe6f5;font-size:.85rem}.admin-confirm-card>div{display:flex;justify-content:flex-end;gap:8px}.launch-confirm-card{border-color:#a8393e}.profile-overlay{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:16px;background:#000000b3}.profile-card{display:grid;width:min(390px,100%);gap:16px;border:1px solid #425a79;border-radius:16px;background:#17253a;padding:22px;box-shadow:0 22px 70px #00000080}.profile-card header{margin:0}.profile-card h2,.profile-card p{margin:0}.profile-card p{color:#aebbd0}.profile-card header button,.profile-card>div button{border:1px solid #3b506e;border-radius:7px;background:#1d2c43;color:#eef3fa;padding:8px 12px}.profile-card header button{width:38px;padding:4px;font-size:1.3rem}.profile-card>div{display:flex;justify-content:flex-end;gap:8px}.profile-card .profile-logout{border-color:#a8393e;color:#ffb1b1;font-weight:800}.profile-card button:disabled{cursor:not-allowed;opacity:.5}.tester-list{display:grid;gap:7px}.tester-list h3{margin:0;color:#91a2ba;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.tester-list>div{display:flex;flex-wrap:wrap;gap:6px}.tester-list span{border:1px solid #344963;border-radius:999px;background:#111c2e;padding:4px 8px;color:#dbe6f5;font-size:.78rem}.tester-list small{color:#8795a8}.tester-status{color:#bdc9d9;font-size:.85rem}.history-search{display:flex;gap:8px;margin:12px 0 18px}.history-search input{flex:1}.history-list>button>span:last-child{text-align:right}.history-matchup{display:flex!important;min-width:0;align-items:center;flex-wrap:wrap;gap:7px!important}.history-matchup em{color:#91a2ba;font-size:.82rem;font-style:normal;font-weight:700}.history-player{display:inline-flex;min-width:0;align-items:center;gap:5px}.history-player.blue{color:var(--player-blue)}.history-player.red{color:var(--player-red)}.history-player .winner-trophy{flex:none;font-size:.92rem;font-style:normal;filter:drop-shadow(0 0 4px rgba(255,214,77,.45))}.history-meta{justify-items:end}.history-meta b{color:#dbe6f5}.blue-dot,.red-dot{display:inline-block;width:8px;height:8px;margin-right:7px;border-radius:50%;background:var(--player-blue)}.red-dot{background:var(--player-red)}.pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:18px}.pagination button:disabled{opacity:.4}.game-title{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:12px}.game-title h1{font-size:clamp(1.6rem,4vw,2.7rem)}.edges-placed{color:#bdc9d9;font-size:.9rem}.game-title-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.tournament-page{min-height:100vh;color:var(--theme-ink);background:#0b1220}.tournament-topbar{position:sticky;top:0;z-index:4;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid #263850;background:#0b1220f5;padding:12px 20px}.tournament-topbar>:first-child{justify-self:start}.tournament-topbar>:last-child{justify-self:end}.tournament-topbar h1{margin:0;font-size:1.08rem;letter-spacing:0}.tournament-topbar button,.tournament-actions button,.tournament-card button,.tournament-create button,.tournament-confirm button,.tournament-score-editor button,.tournament-placement-overlay button,.game-start-modal button{border:1px solid #3b506e;border-radius:8px;background:#1d2c43;color:#eef3fa;padding:8px 12px}.tournament-lobby,.tournament-browser{width:min(1100px,calc(100% - 28px));margin:0 auto;padding:30px 0 48px}.tournament-browser{width:min(820px,calc(100% - 28px))}.tournament-browser-section+.tournament-browser-section{margin-top:34px}.tournament-list,.tournament-player-list,.tournament-game-list{display:grid;gap:10px}.tournament-list>button{display:flex;justify-content:space-between;gap:12px;width:100%;border:1px solid #2a3b55;border-radius:12px;background:#111c2e;color:inherit;padding:15px;text-align:left}.tournament-list span{display:grid;gap:3px}.tournament-list span:last-child{text-align:right}.tournament-list small{color:var(--theme-muted)}.tournament-hero{display:grid;grid-template-columns:1fr auto 1fr;gap:8px 20px;margin-bottom:18px;padding:24px;border-radius:16px;background:#111c2e}.tournament-hero-home{grid-column:1;grid-row:1;align-self:start;justify-self:start;display:inline-flex;align-items:center;gap:6px;border:1px solid #3b506e;border-radius:8px;background:#1d2c43;color:#eef3fa;padding:7px 10px;font-weight:800}.tournament-hero-home svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.tournament-hero h1{grid-column:1 / -1;grid-row:2;margin:0;text-align:center}.tournament-eyebrow{grid-column:2;grid-row:1;justify-self:center;margin:0}.tournament-description,.tournament-actions{grid-column:1 / -1}.tournament-description{grid-row:3;overflow-wrap:anywhere;white-space:pre-wrap;text-align:center}.tournament-countdown{grid-row:1;grid-column:3;display:grid;justify-items:end}.tournament-countdown strong{font-size:2rem}.tournament-actions{grid-row:4;display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:10px}.tournament-between-rounds-status{grid-column:3;grid-row:5;display:grid;justify-self:end;gap:2px;border:1px solid #4d6383;border-radius:10px;background:#17253a;padding:9px 12px;text-align:right}.tournament-between-rounds-status span{color:var(--theme-muted);font-size:.68rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.tournament-between-rounds-status strong{color:#dce9fa}.tournament-hero.between-rounds .tournament-actions{grid-column:1 / 3;grid-row:4;align-self:end;justify-content:flex-start}.tournament-hero.between-rounds .tournament-between-rounds-status{grid-row:4;align-self:end}.tournament-actions .tournament-stop-tournament-button{border-color:#ff544d;background:#d51f2b;color:#fff;font-weight:900;box-shadow:0 0 10px #fc1f1559}.tournament-actions .tournament-stop-tournament-button:hover,.tournament-actions .tournament-stop-tournament-button:focus-visible{border-color:#ff7771;background:#f12a36}.tournament-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tournament-card{border:1px solid #263850;border-radius:14px;background:#111c2e;padding:18px}.tournament-card h2{display:flex;justify-content:space-between;margin-top:0}.tournament-card summary{cursor:pointer;font-weight:800}.tournament-players-card{display:flex;min-height:0;flex-direction:column}.tournament-player-card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.tournament-player-card-header h2{margin:0}.tournament-player-card-header>div{display:flex;align-items:center;gap:10px;margin-left:auto}.tournament-player-count{font-weight:900;font-variant-numeric:tabular-nums}.tournament-compact-player-list{position:relative;flex:1;min-height:0;overflow:hidden}.tournament-compact-player-list p{max-height:100%;margin:0;overflow:hidden;line-height:1.5}.tournament-compact-player-list .tournament-name-measure{position:absolute;inset:0;width:100%;max-height:none;visibility:hidden;pointer-events:none}.tournament-player-management{display:flex;flex-wrap:wrap;gap:8px;margin:-2px 0 12px}.tournament-player{display:grid;grid-template-columns:1fr auto;align-items:center;border-radius:9px;background:#182941;padding:10px}.tournament-player span{color:var(--theme-muted);font-size:.82rem}.tournament-player-actions{grid-column:2;grid-row:1 / span 2;display:flex;gap:5px}.tournament-rule{display:grid;gap:4px;border-top:1px solid #263850;margin-top:10px;padding-top:10px}.tournament-hosts{display:grid;gap:8px;margin-top:14px}.tournament-hosts form,.tournament-game-filters,.tournament-games-header{display:flex;gap:8px}.tournament-game-filters{align-items:end}.tournament-games-card{margin-top:14px}.tournament-games-header{align-items:end;justify-content:space-between}.tournament-game-list{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:14px}.tournament-games-hidden{margin:14px 0 0;color:var(--theme-muted)}.tournament-game-summary{display:grid;width:100%;min-height:70px;gap:7px;border:1px solid #3b506e;border-radius:8px;background:#1d2c43;color:#eef3fa;padding:10px 12px;text-align:left}.past-game-matchup{display:flex;min-width:0;align-items:center;gap:7px}.past-game-matchup .winner-trophy{flex:none;font-size:.9rem}.tournament-game-result{color:var(--theme-muted);font-size:.82rem;font-weight:700;text-transform:capitalize}.tournament-game-summary.ongoing,.tournament-game-summary.scheduled{border-color:#ffd64d8c;background:#ffd64d14;box-shadow:inset 0 0 14px #ffd64d0d}.tournament-game-summary.ongoing .tournament-game-result{color:#54d38a}.tournament-create-overlay,.tournament-placement-overlay{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:16px;background:#0000009e}.tournament-create,.tournament-confirm,.tournament-score-editor,.tournament-placement-overlay section,.game-start-modal{width:min(680px,100%);max-height:calc(100vh - 32px);overflow:auto;border:1px solid #344963;border-radius:16px;background:#17253a;padding:20px}.tournament-create header,.tournament-score-editor header{display:flex;align-items:center;justify-content:space-between}.tournament-create label,.tournament-confirm label{display:grid;gap:5px;margin-top:10px}.tournament-create input,.tournament-create textarea,.tournament-create select,.tournament-confirm input,.tournament-confirm select,.tournament-score-editor input,.tournament-hosts input,.tournament-game-filters select{width:100%;border:1px solid #3b506e;border-radius:7px;background:#0c1625;color:#fff;padding:8px}.tournament-broadcast-compose textarea{width:100%;min-height:120px;resize:vertical;border:1px solid #3b506e;border-radius:7px;outline:none;background:#0c1625;color:#fff;padding:10px;font:inherit}.tournament-confirm>textarea{width:100%;min-height:150px;resize:vertical;border:1px solid #3b506e;border-radius:7px;outline:none;background:#0c1625;color:#fff;padding:10px;font:inherit}.tournament-broadcast-compose textarea:focus{border-color:#ffad42}.tournament-broadcast-button,.tournament-broadcast-send{border-color:#b96b18!important;background:#713b0b!important;color:#ffe0b2!important}.tournament-broadcast-notice{border-color:#b96b18}.tournament-broadcast-notice>strong,.tournament-broadcast-notice>p{color:#ffad42}.tournament-create fieldset{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0;border:1px solid #344963;border-radius:10px}.tournament-create textarea{min-height:100px}.tournament-confirm-actions{display:flex;justify-content:end;gap:8px;margin-top:16px}.tournament-score-list{display:grid;gap:8px}.tournament-score-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.tournament-heart-groups{flex:1;min-height:0;display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:8px 0;overflow:hidden}.tournament-heart-group{display:contents}.tournament-heart-count{display:flex;min-width:70px;align-items:center;gap:5px;padding-right:12px;line-height:1}.tournament-heart-count strong,.tournament-heart-count span{font-size:1.35rem;font-weight:900;font-variant-numeric:tabular-nums}.tournament-heart-count span{color:#ff7272}.tournament-heart-player-names{position:relative;display:flex;min-width:0;height:100%;align-items:center;overflow:hidden;border-left:2px solid #3b506e;padding-left:12px}.tournament-heart-player-names p{max-height:100%;margin:0;overflow:hidden;line-height:1.5}.tournament-heart-player-names .tournament-name-measure{position:absolute;inset:0 auto auto 12px;width:calc(100% - 12px);max-height:none;visibility:hidden;pointer-events:none}.tournament-all-players-list{max-height:60vh;overflow:auto}.tournament-placement-overlay .tournament-placement-modal{position:relative;display:grid;width:min(430px,calc(100vw - 32px));justify-items:center;gap:12px;padding:28px 24px 24px;text-align:center}.tournament-placement-modal h2,.tournament-placement-modal p{margin:0;text-align:center}.tournament-placement-modal p{max-width:350px;color:var(--theme-muted);font-weight:600;line-height:1.5}.tournament-placement-close{position:absolute;top:10px;right:10px;display:grid;width:34px;min-height:34px;place-items:center;padding:0!important;font-size:1.25rem;line-height:1}.tournament-placement-round{border-radius:6px;background:var(--theme-warning);padding:4px 8px;font-size:.76rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.tournament-placement-matchup{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #3b506e;border-radius:999px;background:#111c2e;padding:8px 13px}.player-name-blue,.player-name-red{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:900}.player-name-blue{color:var(--player-blue)}.player-name-red{color:var(--player-red)}.matchup-vs{color:var(--theme-muted);font-size:.8rem;font-weight:900;text-transform:uppercase}.tournament-placement-countdown{display:inline-block;color:#ffd64d;font-size:1.12rem;font-variant-numeric:tabular-nums;font-weight:900;letter-spacing:.03em}.tournament-placement-join{justify-self:center;margin-top:4px;border-color:#2477dc!important;background:#2477dc!important;font-weight:900}.game-start-modal{display:grid;width:min(430px,calc(100vw - 32px));justify-items:center;gap:14px;text-align:center}.game-start-modal h2{margin:0}.game-start-modal p{margin:0;color:var(--theme-muted);font-weight:600;line-height:1.5}.game-start-modal>span:not(.tournament-placement-round){color:var(--theme-muted);font-weight:700}.game-start-countdown{color:#ffd64d;font-size:clamp(3rem,12vw,5.5rem);font-variant-numeric:tabular-nums;line-height:1;text-shadow:0 0 24px rgba(255,214,77,.3)}.game-board-stage{position:relative;width:min(100%,650px);margin:0 auto}.game-board-cover{position:absolute;inset:0;z-index:10;display:grid;place-items:center;border-radius:8px;background:#050a12eb;padding:16px}.game-board-cover .game-start-modal{position:relative;width:min(430px,100%)}.game-finished-close{position:absolute;top:10px;right:10px;display:grid;width:34px;min-height:34px;place-items:center;border:1px solid #3b506e;border-radius:8px;background:#1d2c43;color:#eef3fa;padding:0;font-size:1.25rem;line-height:1}@media(max-width:790px){.workspace,.lobby-grid,.tournament-columns{grid-template-columns:1fr}.chat-panel{min-height:300px;max-height:440px}.tournament-hero{grid-template-columns:1fr}.tournament-hero h1{grid-column:1;grid-row:auto}.tournament-description,.tournament-actions{grid-row:auto}.tournament-hero-home{grid-column:1;grid-row:auto}.tournament-eyebrow,.tournament-countdown{grid-column:1;grid-row:auto;justify-self:center;justify-items:center}.tournament-hero.between-rounds .tournament-actions{grid-column:1;grid-row:auto;justify-content:center}.tournament-between-rounds-status,.tournament-hero.between-rounds .tournament-between-rounds-status{grid-column:1;grid-row:auto;justify-self:end}.tournament-heart-groups{flex:none;grid-template-rows:none!important;grid-auto-rows:auto;overflow:visible}.tournament-heart-player-names{min-height:2.25rem;height:auto}.tournament-game-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.app-shell{width:min(100% - 14px,1100px);padding-top:14px}header{align-items:flex-end}.eyebrow{max-width:220px}.scorebar{gap:6px}.score{padding:8px 10px}.turn-copy{min-width:88px;font-size:.7rem}.sandbox-controls{gap:8px}.tool-group{order:3;width:100%}.tool-buttons{justify-content:center}.segmented button{padding:6px 8px;font-size:.78rem}.online-lobby-header{grid-template-columns:1fr 1fr}.online-lobby-header h1{grid-column:1 / -1;grid-row:1}.online-lobby-header .back-button{grid-column:1;grid-row:2}.online-lobby-header .primary{grid-column:2;grid-row:2}.admin-user-row,.release-section{grid-template-columns:1fr}.admin-row-actions{justify-content:flex-start}.release-section>button,.release-section>.site-open-badge{justify-self:start}.admin-inline-form{align-items:stretch;flex-direction:column}.tournament-game-list{grid-template-columns:1fr}}
