:root{color-scheme:dark;--bg:#0b0f14;--panel:#121820;--border:#ffffff14;--text:#e6f1ea;--muted:#8ba396;--accent:#39ff8f;--accent-dim:#1fae5f;--warn:#ffb454;--danger:#ff5c5c;--board-bg:#0b0f14;--board-grid:#ffffff24;--food:#ffb454;--mine-head:#39ff8f;--mine-body:#1fae5f;--other-snake-saturation:85;--other-snake-lightness-head:60;--other-snake-lightness-body:38;--astro-code-foreground:var(--text);--astro-code-background:var(--panel);--astro-code-token-comment:var(--muted);--astro-code-token-keyword:var(--accent);--astro-code-token-string:var(--warn);--astro-code-token-constant:var(--warn);--astro-code-token-parameter:var(--text);--astro-code-token-string-expression:var(--warn);--astro-code-token-punctuation:var(--muted);--astro-code-token-link:var(--accent);--astro-code-token-function:#7dd3fc}:root[data-theme=light]{color-scheme:light;--bg:#f3f6f4;--panel:#fff;--border:#0000001f;--text:#0e1712;--muted:#51645a;--accent:#178a4c;--accent-dim:#0e6b3a;--warn:#a35d00;--danger:#b3261e;--board-bg:#e8efe9;--board-grid:#0e17121a;--food:#c2410c;--mine-head:#178a4c;--mine-body:#0e6b3a;--other-snake-saturation:70;--other-snake-lightness-head:42;--other-snake-lightness-body:30;--astro-code-token-function:#0369a1}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;padding:1.5rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.6}main{max-width:48rem;margin:0 auto}h1,h2,h3{letter-spacing:.02em}a{color:var(--accent)}main pre{border:1px solid var(--border);border-radius:.5rem;padding:.9rem 1rem}main :not(pre)>code{background:var(--panel);border:1px solid var(--border);border-radius:.25rem;padding:.1rem .35rem}main blockquote{border-left:3px solid var(--border);color:var(--muted);margin:1rem 0;padding:.25rem 1rem}main hr{border:none;border-top:1px solid var(--border);margin:1.5rem 0}nav[aria-label=site]{flex-wrap:wrap;gap:1.25rem;margin-bottom:1.5rem;font-size:.9rem;display:flex}nav[aria-label=site] a{color:var(--muted);text-decoration:none}nav[aria-label=site] a:hover,nav[aria-label=site] a:focus-visible{color:var(--accent)}.brand{color:var(--text);letter-spacing:.01em;font-weight:700}.brand:hover,.brand:focus-visible{color:var(--accent)}.theme-toggle{min-width:8rem;font:inherit;color:var(--muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:.4rem;justify-content:center;align-items:center;gap:.4rem;margin-left:auto;padding:.4rem .7rem;font-size:.85rem;display:inline-flex}.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--accent);border-color:var(--accent-dim)}.theme-toggle-icon{justify-content:center;width:1.1em;display:inline-flex}.panel{background:var(--panel);border:1px solid var(--border);border-radius:.75rem;padding:1.25rem}.button{border:1px solid var(--accent-dim);color:var(--accent);font:inherit;cursor:pointer;background:0 0;border-radius:.5rem;padding:.65rem 1.25rem;font-weight:600;text-decoration:none;display:inline-block}.button:hover,.button:focus-visible{background:#39ff8f1a}.button:disabled{opacity:.6;cursor:default;pointer-events:none}.button.primary{background:var(--accent);color:#06120b;border-color:var(--accent)}.button.primary:hover,.button.primary:focus-visible{background:#4dffa0}.button.danger{border-color:var(--danger);color:var(--danger)}.button.danger:hover,.button.danger:focus-visible{background:#ff5c5c1a}.arena-layout{flex-wrap:wrap;align-items:flex-start;gap:1.5rem;display:flex}.arena-board{flex:none;min-width:0}#board{aspect-ratio:1;border:1px solid var(--border);background:var(--bg);border-radius:.75rem;width:clamp(240px,100%,480px);height:auto;display:block}.arena-viewport{display:inline-block;position:relative}.game-over-overlay{background:#0009;border-radius:.75rem;justify-content:center;align-items:center;padding:1rem;display:flex;position:absolute;inset:0}.game-over-overlay[hidden]{display:none}.game-over-card{text-align:center;flex-direction:column;align-items:center;gap:.75rem;max-width:100%;display:flex}.game-over-message{color:var(--danger);margin:0;font-size:1.3rem;font-weight:700}.game-over-score{color:var(--text);margin:0}.hud{flex-direction:column;flex:14rem;gap:.75rem;min-width:12rem;display:flex}.hud-row{color:var(--muted);justify-content:space-between;gap:.75rem;font-size:.85rem;display:flex}.hud-row>*{min-width:0}.hud-row strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:1.1rem;overflow:hidden}#status-banner{font-weight:600}#status-banner[data-status=ready]{color:var(--warn)}#status-banner[data-status=playing]{color:var(--accent)}#status-banner[data-status=over]{color:var(--danger)}.controls-legend{color:var(--muted);font-size:.8rem}.controls-legend kbd{font:inherit;background:#ffffff14;border-radius:.25rem;padding:.05rem .4rem}#game-over-panel[hidden]{display:none}.dpad{flex-direction:column;align-items:center;gap:.5rem;width:clamp(240px,100%,480px);margin-top:1rem;display:none}.dpad-row{justify-content:center;gap:clamp(48px,14vw,56px);display:flex}.dpad-button{border:1px solid var(--accent-dim);background:var(--panel);width:clamp(48px,14vw,56px);height:clamp(48px,14vw,56px);color:var(--accent);cursor:pointer;touch-action:manipulation;user-select:none;-webkit-tap-highlight-color:transparent;border-radius:.75rem;justify-content:center;align-items:center;font-size:1.4rem;line-height:1;display:flex}.dpad-button:hover,.dpad-button:focus-visible{background:#39ff8f1a}.dpad-button:active,.dpad-button.pressed{background:var(--accent);color:#06120b;border-color:var(--accent)}.leaderboard-filters{flex-wrap:wrap;align-items:flex-end;gap:1rem;margin-bottom:.5rem;display:flex}.filter-field{flex-direction:column;gap:.3rem;font-size:.8rem;display:flex}.filter-field label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem}.filter-field input,.filter-field select{font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--border);border-radius:.5rem;min-width:0;height:2.5rem;padding:.5rem .6rem;line-height:1.5}.filter-field input:focus-visible,.filter-field select:focus-visible{outline:2px solid var(--accent-dim);outline-offset:1px}.filter-actions{gap:.5rem;display:flex}.filters-note,.active-filters{color:var(--muted);margin:.25rem 0;font-size:.8rem}#leaderboard-status:not(:empty){color:var(--muted);font-size:.85rem}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;border-bottom:1px solid var(--border);padding:.5rem .75rem}th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}tr.mine{background:#39ff8f12}.you-badge{background:var(--accent-dim);color:#06120b;letter-spacing:.04em;vertical-align:middle;border-radius:.25rem;margin-left:.5rem;padding:.05rem .4rem;font-size:.7rem;font-weight:700;display:inline-block}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}#status-banner[data-status=connecting]{color:var(--muted)}#status-banner[data-status=eliminated]{color:var(--danger)}.players-panel ul{flex-direction:column;gap:.4rem;margin:0;padding:0;font-size:.85rem;list-style:none;display:flex}.players-panel li{justify-content:space-between;gap:.75rem;display:flex}.players-panel .swatch{border-radius:999px;width:.65rem;height:.65rem;margin-right:.4rem;display:inline-block}.action-reason{color:var(--muted);margin:.35rem 0 0;font-size:.85rem}.action-reason[hidden]{display:none}#final-score-line{color:var(--muted);margin:.5rem 0;font-size:.9rem}#final-score-line[hidden]{display:none}.room-page-main{max-width:64rem}.room-layout{grid-template-columns:minmax(0,480px) minmax(18rem,22rem);justify-content:center;align-items:start;gap:1.25rem 1.75rem;display:grid}.room-header{grid-column:1/-1;align-items:center;gap:1rem;min-width:0;display:flex}.back-button{flex:none}.room-header-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:1.3rem;overflow:hidden}.room-main{flex-direction:column;align-items:center;min-width:0;display:flex}.room-sidebar{flex-direction:column;gap:1rem;min-width:0;display:flex}.room-status-panel .hud-row{margin-bottom:.4rem}.room-actions{flex-wrap:wrap;gap:.6rem;margin-top:.75rem;display:flex}.role-toggle{justify-content:center;align-items:center;min-width:9.5rem;display:inline-flex}.players-panel h2{margin:0 0 .6rem;font-size:.95rem}.players-panel li span{overflow-wrap:anywhere}@media (width<=860px){.room-layout{grid-template-columns:1fr}.dpad:not([hidden]){display:flex}.room-main{order:1}.room-header{order:0}.room-sidebar{order:2}}.lobby-toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;margin:1rem 0;display:flex}.lobby-search-group{flex-wrap:wrap;flex:16rem;gap:.5rem;display:flex}.lobby-search{flex:12rem}.lobby-search input{width:100%;font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--border);border-radius:.5rem;padding:.6rem .8rem}.create-room-form{flex-direction:column;gap:.75rem;margin-bottom:1.25rem;display:flex}.create-room-form[hidden]{display:none}.create-room-form .filter-field input{width:100%}.checkbox-field{color:var(--text);align-items:center;gap:.5rem;font-size:.9rem;display:flex}.checkbox-field input{width:1.1rem;height:1.1rem}.form-error{color:var(--danger);margin:0;font-size:.85rem}.form-error[hidden]{display:none}.rooms-grid{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:1rem;margin:1rem 0;display:grid}.room-card{flex-direction:column;gap:.6rem;display:flex}.room-card h3{margin:0;font-size:1.05rem}.room-lock-icon{font-size:.85em}.room-counts{color:var(--muted);margin:0;font-size:.85rem}.room-preview{aspect-ratio:1;background:var(--bg);border:1px solid var(--border);border-radius:.5rem;overflow:hidden}.room-preview canvas{width:100%;height:100%;display:block}.room-preview-locked{text-align:center;color:var(--muted);justify-content:center;align-items:center;padding:.5rem;font-size:.8rem;display:flex}.lobby-pager{color:var(--muted);justify-content:center;align-items:center;gap:1rem;margin:1.5rem 0;font-size:.85rem;display:flex}.role-dialog{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:.9rem;width:calc(100% - 2rem);max-width:24rem;max-height:calc(100vh - 2rem);padding:1.5rem;position:relative;overflow-y:auto}.role-dialog::backdrop{background:#0009}.dialog-dismiss{width:1.75rem;height:1.75rem;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:.4rem;justify-content:center;align-items:center;font-size:.85rem;line-height:1;display:inline-flex;position:absolute;top:.75rem;right:.75rem}.dialog-dismiss:hover,.dialog-dismiss:focus-visible{color:var(--text);background:var(--border)}.role-dialog-title{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0 1.75rem .2rem 0;font-size:1rem;font-weight:600}.role-dialog-room-name{overflow-wrap:anywhere;margin:0 1.75rem .9rem 0;font-size:1.3rem;font-weight:700}.role-dialog-capacity{align-items:center;gap:.6rem;font-size:.9rem;display:flex}.capacity-dots{gap:.25rem;display:inline-flex}.capacity-dot{border:1px solid var(--border);background:0 0;border-radius:999px;width:.5rem;height:.5rem}.capacity-dot.filled{background:var(--accent);border-color:var(--accent)}.role-dialog-viewer-count{color:var(--muted);margin:.2rem 0 0;font-size:.8rem}.role-choices{flex-direction:column;gap:.6rem;margin-top:1.1rem;display:flex}.role-choice{text-align:left;cursor:pointer;width:100%;font:inherit;background:0 0;border-radius:.6rem;align-items:flex-start;gap:.75rem;padding:.75rem .9rem;display:flex}.role-choice[hidden]{display:none}.role-choice-icon{border-radius:999px;flex:none;justify-content:center;align-items:center;width:2rem;height:2rem;font-size:1.05rem;display:inline-flex}.role-choice-text{flex-direction:column;gap:.15rem;min-width:0;display:flex}.role-choice-title{color:var(--text);font-weight:600}.role-choice-desc{color:var(--muted);font-size:.82rem}.role-choice-player{border:1px solid var(--accent-dim)}.role-choice-player .role-choice-icon{background:var(--accent);color:#06120b}.role-choice-player:hover,.role-choice-player:focus-visible{border-color:var(--accent);background:#39ff8f1a}.role-choice-viewer{border:1px solid var(--border)}.role-choice-viewer .role-choice-icon{background:var(--bg);color:var(--muted);border:1px solid var(--border)}.role-choice-viewer:hover,.role-choice-viewer:focus-visible{border-color:var(--muted);background:#80808014}.role-choice:disabled,.role-choice.role-choice-blocked{cursor:default;opacity:.55}.role-choice:disabled:hover,.role-choice.role-choice-blocked:hover{border-color:var(--border);background:0 0}.role-actions{flex-wrap:wrap;gap:.6rem;margin-top:.75rem;display:flex}.role-select-panel{max-width:28rem;margin:1.5rem auto}@media (width<=480px){body{padding:1rem}.arena-layout{flex-direction:column}nav[aria-label=site]{gap:.5rem .9rem;font-size:.82rem}.theme-toggle{min-width:7rem;margin-left:0}.controls-legend{font-size:.78rem}.rooms-grid{grid-template-columns:1fr}.lobby-toolbar{flex-direction:column;align-items:stretch}.lobby-search-group{flex-direction:column;flex:auto}.lobby-search{flex:none}.lobby-toolbar .button{text-align:center;width:100%}.role-actions .button{flex:auto;min-width:7rem}}@media (width<=640px){.leaderboard-filters{flex-direction:column;align-items:stretch}.filter-field,.filter-actions{width:100%}.filter-field input,.filter-field select{width:100%;font-size:1rem}.filter-actions{flex-wrap:wrap}.filter-actions .button{text-align:center;flex:auto;min-width:6rem;padding:.75rem 1rem}table{display:block}thead{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}tbody{display:block}tbody tr{background:var(--panel);border:1px solid var(--border);border-radius:.75rem;margin-bottom:.75rem;padding:.9rem 1rem;display:block}tbody tr.mine{border-color:var(--accent-dim)}tbody td{border-bottom:none;justify-content:space-between;align-items:center;gap:.75rem;padding:.3rem 0;font-size:.95rem;display:flex}tbody td[data-label]:before{content:attr(data-label);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;flex:none;font-size:.7rem}tbody td .cell-value{text-align:right}tbody td[data-label=Score] .cell-value{color:var(--accent);font-size:1.2rem;font-weight:700}tbody td.rank{color:var(--accent);border-bottom:1px solid var(--border);margin-bottom:.35rem;padding:0 0 .5rem;font-size:1rem;font-weight:700;display:block}tbody td.rank:before{content:"#";opacity:.7}tbody td.row-actions{padding-top:.6rem;display:block}tbody td.row-actions:not(:has(button)){display:none}tbody td.row-actions button{width:100%;padding:.75rem 1rem}}
