:root{--paper: #d9dbd6;--paper-deep: #c5c8c1;--ink: #101211;--line: #101211;--panel: #f3f3ef;--accent: #68c8df;--accent-deep: #3d8fa5;--danger: #d4614e;--ui-bg: rgba(243, 243, 239, .78);--font: "Fredoka", sans-serif;--mono: "Fredoka", sans-serif;--digits: "Fredoka Digits Mono", "Fredoka", sans-serif}*{box-sizing:border-box}html,body{width:100%;height:100%;overscroll-behavior:none}body{margin:0;overflow:hidden;color:var(--ink);background:var(--paper-deep);font-family:var(--font);-webkit-tap-highlight-color:transparent}button{color:inherit;font:inherit}.app{position:relative;width:100%;height:100dvh;animation:app-in .28s ease-out both}@keyframes app-in{0%{opacity:0;transform:translateY(5px)}}.topbar{position:absolute;inset:0;height:0;z-index:3;pointer-events:none}.brand{position:absolute;top:max(10px,env(safe-area-inset-top));left:10px;padding:7px 9px;border:2px solid var(--line);pointer-events:auto}h1{margin:0;font-size:24px;line-height:1;font-weight:600;letter-spacing:0;white-space:nowrap}.header-score{position:absolute;top:max(10px,env(safe-area-inset-top));right:10px;appearance:none;width:fit-content;padding:7px 9px;border:2px solid var(--line);border-radius:0;font-family:var(--digits);font-size:24px;font-weight:600;line-height:1;text-align:right;font-variant-numeric:tabular-nums;pointer-events:auto;cursor:pointer}.header-score:hover{background:var(--accent)}.header-score:focus-visible{outline:3px solid var(--accent-deep);outline-offset:2px}.connection-status{position:absolute;top:calc(max(10px,env(safe-area-inset-top)) + 42px);right:10px;display:flex;align-items:center;gap:6px;padding:5px 7px;border:2px solid var(--line);background:var(--ui-bg);font-family:var(--mono);font-size:9px;line-height:1;border-radius:0;color:var(--ink);cursor:pointer;pointer-events:auto}.connection-dot{width:7px;height:7px;background:var(--danger)}.connection-status[data-state=online] .connection-dot{background:#438d68}.connection-status[data-state=connecting] .connection-dot{background:#d89b32}.connection-status[data-state=queued] .connection-dot{background:#d89b32;animation:pulse 1.5s infinite}.connection-status[data-state=offline] .connection-dot{background:var(--danger)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.bottom-controls{position:absolute;left:10px;right:10px;bottom:max(10px,env(safe-area-inset-bottom));z-index:3;display:flex;align-items:stretch;justify-content:space-between;gap:14px}.location-controls,.tools{display:flex;align-items:stretch;gap:6px}.icon-btn{appearance:none;width:34px;height:32px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:2px solid var(--line);border-radius:0;background:var(--ui-bg);font-size:18px;line-height:1;cursor:pointer;transition:background-color .1s ease,transform .1s ease}.icon-btn:hover{background:var(--accent)}.icon-btn:active{transform:scale(.9)}.icon-btn[aria-pressed=true]:not(.sound-btn){background:var(--accent)}.icon-btn:disabled{opacity:.32;cursor:default}.icon-btn:disabled:hover{background:var(--ui-bg)}.icon-btn:focus-visible{outline:3px solid var(--accent-deep);outline-offset:2px}.sound-btn svg{width:19px;height:19px;display:block}.sound-btn .sound-off,.sound-btn[aria-pressed=false] .sound-wave{display:none}.sound-btn[aria-pressed=false] .sound-off{display:block}.brand,.header-score,.coordinate,.icon-btn,dialog{background:var(--ui-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.stage{position:relative;width:100%;height:100%;overflow:hidden;background:var(--paper-deep);cursor:crosshair}.stage.pan-mode{cursor:grab}.stage.panning{cursor:grabbing}.stage.pinching{cursor:zoom-in}#board{display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none}.connecting-curtain{position:absolute;inset:0;z-index:10;display:grid;place-items:center;background:#c5c8c1d1;background-image:linear-gradient(rgba(16,18,17,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(16,18,17,.03) 1px,transparent 1px);background-size:20px 20px;background-position:center center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);font-family:var(--mono);font-size:12px;pointer-events:none}.connecting-curtain[hidden]{display:none}.remote-player-layer{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;touch-action:none}.remote-player-badge{position:absolute;max-width:140px;padding:3px 5px;overflow:hidden;border:2px solid var(--player-color);background:var(--ui-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-size:9px;line-height:1;text-overflow:ellipsis;white-space:nowrap}.remote-player-badge.inactive{opacity:.45}.grid-label-layer{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;touch-action:none}.grid-label{position:absolute;left:0;top:0;display:inline-flex;align-items:center;height:22px;padding:0 6px;border:2px solid var(--line);background:var(--ui-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-size:12px;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}.coordinate{width:calc(8ch + 22px);padding:7px 9px;border:2px solid var(--line);font-family:var(--mono);font-size:10px;line-height:14px;text-align:center;font-variant-numeric:tabular-nums;pointer-events:none}.grid-btn svg{width:18px;height:18px;display:block}.session-hud{position:absolute;left:50%;bottom:max(54px,calc(env(safe-area-inset-bottom) + 48px));z-index:3;transform:translate(-50%);display:flex;align-items:center;gap:7px;padding:6px 7px 6px 10px;border:2px solid var(--line);background:var(--ui-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-family:var(--mono);font-size:10px;line-height:1;white-space:nowrap;pointer-events:auto}.session-hud[hidden]{display:none}.session-hud span{max-width:60vw;overflow:hidden;text-overflow:ellipsis}.session-hud button{appearance:none;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:2px solid var(--line);background:var(--paper);font-size:13px;line-height:1;cursor:pointer}.session-hud button:hover{background:var(--accent)}.merge-pop{position:absolute;left:50%;top:30%;z-index:2;padding:5px 9px;border:2px solid var(--line);background:#68c8dfd1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-size:24px;font-weight:600;line-height:1;font-variant-numeric:tabular-nums;pointer-events:none;opacity:0;transform:translate(-50%,-50%);--drift-x: 12px;--drift-y: 0px}.merge-pop.show{animation:merge-pop 1s ease-out both}@keyframes merge-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}12%{opacity:1;transform:translate(-50%,-50%) scale(1.07)}20%{transform:translate(-50%,-50%) scale(1)}55%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(calc(-50% + var(--drift-x)),calc(-50% + var(--drift-y))) scale(1)}}dialog{width:min(92vw,430px);max-height:85vh;padding:0;border:3px solid var(--line);border-radius:0;color:var(--ink);box-shadow:none;overflow:hidden;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);margin:0}dialog[open]{display:flex;flex-direction:column}dialog:not([open]){display:none}dialog::backdrop{background:#10121161;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.help-head{display:flex;align-items:center;justify-content:space-between;padding:13px 14px;border-bottom:3px solid var(--line);background:#68c8dfc7}.help-head h2{margin:0;font-size:20px}.help-body{padding:15px}.frequency-dialog{width:min(94vw,520px)}.frequency-summary{display:flex;flex-direction:column;gap:7px;padding:11px 14px;border-bottom:2px solid var(--line);font-family:var(--mono);font-size:10px;opacity:.65}.frequency-world-summary,.frequency-score-summary{display:flex;align-items:center;justify-content:space-between;gap:12px}.frequency-score-summary{display:grid;grid-template-columns:repeat(3,1fr)}.frequency-score-summary .move-summary:nth-child(2){text-align:center}.frequency-score-summary .move-summary:last-child{text-align:right}.move-summary{white-space:nowrap}.move-summary strong{font-family:var(--font);font-size:17px;font-weight:600}.frequency-list{max-height:calc(85vh - 140px);overflow-y:auto}#aboutDialog{max-height:90vh}#aboutDialog[open]{display:flex;flex-direction:column;overflow-y:auto}.about-content{flex-shrink:0;overflow:visible;padding:15px;display:flex;flex-direction:column}.about-tagline{margin:4px 0 15px;font-size:14px;line-height:1.55;text-align:center}.about-wordmark{position:relative;z-index:0;display:flex;gap:3px;width:100%;margin:2px 0 11px;padding:3px;background:#101211;container-type:inline-size}.about-wordmark-cell{position:relative;flex:1 1 0;min-width:0;aspect-ratio:1;display:flex;align-items:center;justify-content:center;background:var(--tile-color);color:#101211;font-weight:600;font-size:5.9cqi;line-height:1;user-select:none;-webkit-user-select:none}.about-wordmark-cell.bridge:after{content:"";position:absolute;left:100%;top:50%;width:33.333%;aspect-ratio:1;transform:translate(-50%,-50%);background:var(--tile-color);z-index:-1}.about-links{display:grid;grid-template-columns:1fr 1fr;gap:8px}.about-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:58px;padding:10px;border:2px solid var(--line);border-radius:0;background:var(--panel);color:var(--ink);text-decoration:none;text-align:center;transition:background-color .1s ease,transform .1s ease,box-shadow .1s ease}.about-link:hover{background:var(--accent);transform:translate(-2px,-2px);box-shadow:3px 3px 0 var(--line)}.about-link:active{transform:translate(0);box-shadow:none}.about-link:focus-visible{outline:3px solid var(--accent-deep);outline-offset:2px}.about-link-title{font-size:14px;font-weight:600;line-height:1.15}.about-link-sub{font-size:10px;line-height:1.2;opacity:.68}.about-link-discord{grid-column:1 / -1;background:#5865f2;color:#fff}.about-link-discord:hover{background:#4752c4}.about-link-discord .about-link-sub{opacity:.8}.about-legal{margin-top:14px;padding-top:12px;border-top:2px solid var(--line);font-size:11px;text-align:center;color:var(--accent-deep)}.about-legal:hover{color:var(--accent)}.frequency-row{display:grid;grid-template-columns:54px minmax(80px,1fr) 48px 48px;gap:10px;align-items:center;min-height:43px;padding:7px 14px;border-bottom:1px solid rgba(16,18,17,.2);font-family:var(--mono);font-size:10px}.frequency-row:last-child{border-bottom:0}.frequency-number{display:flex;align-items:center;justify-content:center;height:28px;border:2px solid var(--line);background:var(--tile-color);font-family:var(--font);font-size:15px}.frequency-meter{height:16px;background:#d5d6d0}.frequency-fill{display:block;width:var(--frequency-width);min-width:2px;height:100%;background:var(--tile-color);border-right:2px solid var(--line)}.frequency-count,.frequency-percent{text-align:right;font-variant-numeric:tabular-nums}.leaderboard-list{overflow-y:auto}.leaderboard-row{display:grid;grid-template-columns:28px minmax(120px,2fr) auto auto;gap:10px;align-items:center;min-height:43px;padding:8px 14px;border-bottom:1px solid rgba(16,18,17,.2)}.leaderboard-row:last-child{border-bottom:0}.leaderboard-row.inactive{opacity:.45}.leaderboard-rank,.leaderboard-score{font-family:var(--digits);font-variant-numeric:tabular-nums}.leaderboard-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.leaderboard-score{text-align:right}.leaderboard-actions{display:flex;gap:4px;align-items:center}.leaderboard-action-btn{min-width:28px;height:24px;padding:0;border:1px solid var(--line);border-radius:4px;background:var(--bg);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:background .2s,opacity .2s}.leaderboard-action-btn:hover{background:#e8614e33;opacity:.8}.leaderboard-redact-btn{color:#d4614e}.leaderboard-ban-btn{color:#9b59b6}.leaderboard-jump-btn{color:#3d8fa5}.leaderboard-kick-btn{color:#b67f35}.leaderboard-empty{padding:18px 14px;font-size:12px;opacity:.65}.leaderboard-create-grid{margin:10px 14px 0;padding:9px 11px;border:2px solid var(--line);border-radius:0;background:var(--accent);font-size:13px;font-weight:600;cursor:pointer}.leaderboard-create-grid:hover{background:var(--accent-deep)}.leaderboard-create-grid[hidden]{display:none}.leaderboard-grid-row{width:100%;appearance:none;background:var(--ui-bg);font:inherit;color:inherit;text-align:left;cursor:pointer}.leaderboard-grid-row:hover{background:var(--accent)}.leaderboard-tools,.leaderboard-pages,.key-actions{display:flex;align-items:center;gap:6px}.leaderboard-tools{justify-content:space-between;padding:10px 14px;border-bottom:2px solid var(--line)}.leaderboard-filter{display:flex}.leaderboard-filter button,.page-btn,.key-btn{min-height:30px;padding:5px 9px;border:2px solid var(--line);border-radius:0;background:var(--panel);color:var(--ink);font:600 12px/1 var(--font);cursor:pointer}.leaderboard-filter button+button{border-left:0}.leaderboard-filter button[aria-pressed=true]{background:var(--accent)}#leaderboardDialog{min-height:70vh;max-height:90vh}#leaderboardDialog[open]{display:flex;flex-direction:column;overflow-y:auto}#leaderboardDialog .help-head,#leaderboardDialog .leaderboard-tools{flex-shrink:0}#leaderboardDialog .leaderboard-list,#leaderboardDialog .profile-form{flex-shrink:0;overflow:visible}.page-btn{width:30px;padding:0;font-size:17px}.page-btn:disabled{opacity:.35;cursor:default}.page-label{min-width:68px;text-align:center;font:11px/1 var(--mono)}.leaderboard-profile{border-top:3px solid var(--line)}.profile-key{margin-top:12px}.profile-key-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}.profile-key-row input{font-family:var(--mono);font-size:14px;letter-spacing:0}.key-actions{margin-top:6px}.key-message{min-height:16px;margin:6px 0 0;font-size:10px;opacity:.72}.close-btn{background:var(--ui-bg)}.profile-form{padding:15px;overflow:visible}.profile-form label{display:block;margin-bottom:7px;font-size:12px;font-weight:600}.profile-form input{appearance:none;width:100%;height:40px;padding:7px 9px;border:2px solid var(--line);border-radius:0;background:var(--panel);color:var(--ink);font:16px/1 var(--font);outline:none}.profile-form input:focus{border-color:var(--accent-deep);box-shadow:0 0 0 2px var(--accent-deep)}.profile-form input:invalid{border-color:var(--danger)}.profile-form input:not(:placeholder-shown):valid{border-color:#438d68}.profile-colors{display:flex;justify-content:space-between;gap:clamp(2px,1.4vw,8px);min-width:0;margin:14px 0 0;padding:0;border:0}.leaderboard-profile{max-height:200px;overflow-y:auto;border-top:3px solid var(--line)}.profile-colors legend{margin-bottom:7px;padding:0;font-size:12px;font-weight:600}.color-swatch{position:relative;flex:0 1 32px;min-width:0;width:32px;aspect-ratio:1}.color-swatch input{position:absolute;width:1px;height:1px;opacity:0}.color-swatch span{display:block;width:100%;height:100%;border:2px solid var(--line);background:var(--swatch-color);cursor:pointer}.color-swatch input:checked+span{box-shadow:inset 0 0 0 3px var(--panel)}.color-swatch input:focus-visible+span{outline:3px solid var(--accent-deep);outline-offset:2px}.color-picker input{inset:0;width:100%;height:100%;cursor:pointer}.color-picker[data-selected=true] span{box-shadow:inset 0 0 0 3px var(--panel)}.profile-actions{display:flex;justify-content:flex-end;margin-top:12px}.profile-save{min-height:34px;padding:6px 12px;border:2px solid var(--line);border-radius:0;background:var(--accent);color:var(--ink);font:600 14px/1 var(--font);cursor:pointer}.chain-hud{position:absolute;left:0;top:0;z-index:3;min-width:44px;height:44px;display:grid;place-items:center;padding:0 6px;border:2px solid var(--line);border-radius:9px;background:var(--chain-color, rgba(104, 200, 223, .9));color:#101211;font-size:17px;font-weight:600;white-space:nowrap;pointer-events:none;opacity:0;transform:translate(-50%,-100%);transition:opacity .22s ease-out}.chain-hud.show{opacity:1}.demo-dialog{width:min(86vw,340px);overflow:visible}.demo-dialog form{position:absolute;right:-12px;top:-12px;z-index:2}.demo-copy{margin:0;padding:9px 11px 10px;border-top:3px solid var(--line);font-size:11px;text-align:center}.demo-board{--demo-gap: 2px;--demo-pitch: 80px;width:100%;aspect-ratio:1;padding:calc(3px + var(--demo-gap));background:#101211}.demo-grid{position:relative;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:calc(var(--demo-gap) * 2);width:100%;height:100%}.demo-path{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.demo-underlay{position:absolute;inset:0;pointer-events:none}.demo-bridge{position:absolute;width:calc((var(--demo-pitch) - var(--demo-gap) * 2) / 3);height:calc((var(--demo-pitch) - var(--demo-gap) * 2) / 3);transform:translate(-50%,-50%);background:var(--tile-color)}.demo-bridge:before,.demo-bridge:after{content:"";position:absolute;inset:0;background:#10121173;opacity:0;transition:opacity .12s ease-out}.demo-bridge:before{opacity:var(--dim, 0)}.demo-bridge:after{opacity:var(--head-dim, 0)}.demo-cell{position:relative;isolation:isolate;display:flex;align-items:center;justify-content:center;min-width:0;background:var(--tile-color);transform:scale(var(--cell-scale, 1));translate:var(--lean-x, 0px) var(--lean-y, 0px);transition:transform .24s ease-out,translate .24s ease-out}.demo-cell.head{--cell-scale: 1.08}.demo-cell:before{content:"";position:absolute;inset:0;z-index:-1;background:#10121173;opacity:var(--dim, 0);transition:opacity .12s ease-out}.demo-number{font-size:clamp(9px,calc(var(--demo-pitch) * .48),44px);font-weight:600;line-height:1;color:#101211;opacity:calc(1 - .58 * var(--dim, 0));transition:opacity .12s ease-out}.demo-cell.empty{background:#d9dbd6}.demo-cell.empty .demo-number{visibility:hidden}.demo-cell.spawn{animation:demo-spawn .25s cubic-bezier(.215,.61,.355,1)}.demo-cell.spawn .demo-number{animation:demo-spawn-number .25s linear}.demo-cell.pop{animation:demo-pop .38s ease-in-out}@keyframes demo-spawn{0%{transform:scale(.18)}}@keyframes demo-spawn-number{0%,34.99%{opacity:0}35%,to{opacity:1}}@keyframes demo-pop{50%{transform:scale(1.16)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:720px){h1,.header-score{font-size:20px}.icon-btn{width:31px}}@media(max-width:520px){.bottom-controls{gap:8px}.location-controls,.tools{gap:3px}.tools{gap:2px}.icon-btn{width:27px;height:32px;font-size:16px}.frequency-score-summary{gap:5px}.move-summary strong{font-size:15px}.frequency-row{grid-template-columns:48px minmax(60px,1fr) 80px;padding-left:10px;padding-right:10px}.frequency-percent{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}
