:root{color-scheme:light;font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;font-synthesis:none;background:#f7f7f4;color:#33413f;--muted:#929b97;--accent:#506d60}*{box-sizing:border-box}body{margin:0;overflow:hidden}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.symbols{position:absolute;width:0;height:0;overflow:hidden}button{font:inherit;cursor:pointer;color:inherit;background:#fff;border:1px solid #dfe4df;border-radius:8px;transition:background .15s,transform .15s}button:hover{background:#edf1eb}button:active{transform:translateY(1px)}button:disabled{opacity:.3;cursor:default}button:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0}.primary{background:#425c4e;border-color:#425c4e;color:#fff;font-size:12px;font-weight:500}.primary:hover{background:#516d5d}.secondary{padding:11px 17px;margin-left:10px;margin-top:8px;font-size:11px}header{height:60px;position:absolute;inset:0 0 auto;z-index:2;padding:0 28px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.brand{display:flex;align-items:center;gap:9px;color:#64726b}.brand svg{width:21px;height:21px;color:#647d68}.brand b{font-size:13px;font-weight:500;letter-spacing:4px}.header-actions{display:flex;gap:8px;pointer-events:auto}.header-actions .icon-button{background:transparent;border-color:transparent;color:#89958d}.header-actions .icon-button:hover{background:#e9eee6;color:#425c4e}.connection-button{position:relative}.connection-button i{position:absolute;right:4px;bottom:5px;width:4px;height:4px;border-radius:50%;background:#bbc2ba;border:1px solid #f7f7f4}.connection-button i.ready{background:#7a9d76}main,.stage{width:100%;height:100dvh}.stage{position:relative;overflow:hidden;background:#f7f7f4}#viewport{position:absolute;inset:0;touch-action:none;transition:opacity .2s}canvas{display:block;width:100%;height:100%}.hud{position:absolute;left:50%;transform:translateX(-50%);top:15%;pointer-events:none;text-align:center;white-space:nowrap}.session-state{font-size:10px;color:#99a29a;letter-spacing:1.5px}.session-state i{display:none}.stats{display:flex;align-items:baseline;justify-content:center;gap:30px;margin-top:13px;font-variant-numeric:tabular-nums}.stats>div{display:flex;align-items:baseline;gap:6px;order:2}.stats strong{font-size:27px;font-weight:400;letter-spacing:-.5px;color:#53625a}.stats>strong{font-size:32px;letter-spacing:1px;order:1}.stats span{font-size:10px;color:#a0a89f}.activity{position:absolute;bottom:9%;left:0;right:0;text-align:center;color:#8b9b8b;font:11px Consolas,monospace;letter-spacing:2px;min-height:16px;pointer-events:none}.hint{position:absolute;bottom:6%;left:0;right:0;text-align:center;font-size:11px;color:#8b958a;pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}dialog{color:inherit;background:#fafbf8;border:1px solid #e1e6dc;border-radius:14px;padding:24px;width:calc(100% - 40px);max-width:570px;box-shadow:0 24px 100px #273b3020;animation:reveal .16s ease-out}dialog::backdrop{background:#77847535;backdrop-filter:blur(5px)}.dialog-head{display:flex;align-items:center;justify-content:space-between}.dialog-head h2{font-size:15px;font-weight:500;margin:0}.dialog-head .icon-button{background:transparent;border-color:transparent;color:#8d998f;width:30px;height:30px}dialog p{font-size:11px;line-height:1.8;color:#939d91;margin:20px 0 13px}pre{padding:16px;background:#eef1e9;border:1px solid #e4e9dd;border-radius:7px;font:11px/1.75 Consolas,monospace;color:#63715d;white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 18px;max-height:min(48dvh,440px);overflow:auto}dialog .primary{padding:11px 17px}.help-row{display:flex;justify-content:space-between;align-items:center;padding:16px 0;font-size:12px;border-bottom:1px solid #e9ede4}.help-row>span:last-child{color:#8c9887;font-size:11px}.help-row:last-child{border:0}kbd{font:10px Consolas,monospace;color:#8a9786;border:1px solid #dde4d6;background:#f1f4ec;border-radius:3px;padding:2px 5px}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,8px);border:1px solid #d9e0d3;background:#f9fbf5;color:#5c6d55;border-radius:8px;padding:11px 18px;font-size:11px;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;z-index:5;box-shadow:0 8px 30px #243a2210}#toast.show{opacity:1;transform:translate(-50%,0)}::-webkit-scrollbar{width:3px;height:3px}::-webkit-scrollbar-thumb{background:#c3ceba;border-radius:4px}::-webkit-scrollbar-track{background:transparent}.initializing #viewport,.initializing .hud{opacity:0;pointer-events:none}@keyframes reveal{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media(max-width:600px){header{height:52px;padding:0 17px}.brand b{font-size:11px}.stats{gap:24px}.stats>strong{font-size:28px}.stats strong{font-size:24px}.secondary{margin-left:7px;padding:11px 12px}dialog{padding:20px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

[hidden]{display:none!important}.api-button{display:inline-flex;align-items:center;gap:7px;padding:8px 10px;font-size:11px;white-space:nowrap}.api-button svg{width:17px;height:17px}.header-actions .api-button{background:transparent;border-color:transparent;color:#7a897e}.api-button i{right:6px;bottom:6px}.mode-switch{position:absolute;left:50%;transform:translateX(-50%);display:flex;gap:3px;padding:3px;background:#eaeee680;border:1px solid #e3e8dc;border-radius:8px}.mode-switch button,.board-tabs button{padding:7px 13px;border:0;background:transparent;color:#8c9885;font-size:11px;white-space:nowrap}.mode-switch button.active,.board-tabs button.active{background:#fff;color:#4c6652;box-shadow:0 1px 5px #263b2510}.mode-switch button:disabled{opacity:.65}.board-tabs{display:flex;gap:5px;margin:20px 0 12px;padding:3px;background:#edf0e8;border-radius:8px}.board-tabs button{flex:1}.board-scroll{overflow:auto;max-height:47dvh}table{width:100%;border-collapse:collapse;font-size:11px;text-align:left;font-variant-numeric:tabular-nums}th{font-size:10px;font-weight:400;color:#99a58f;padding:10px 6px;position:sticky;top:0;background:#fafbf8}td{padding:12px 6px;border-bottom:1px solid #e9ede4;color:#66755f}td:first-child{width:30px;color:#a0ad95}td:nth-last-child(2),td:last-child{white-space:nowrap}.local-score td{color:#4d7252;background:#edf3e6}.local-score td:first-child{color:#739066}#leaderboard-status{font-size:11px;color:#9aa78f;padding:8px 0}.result-time{font-size:36px;font-variant-numeric:tabular-nums;color:#526e52;margin:25px 0 12px}.mail-action{display:inline-block;color:#506f53;font-size:12px;text-decoration:none;padding:10px 0;border-bottom:1px solid #acbda0}.intro-modes{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:20px}.intro-modes strong{font-size:12px;font-weight:500}.intro-modes p{margin-top:8px}.help-row{padding:11px 0}dialog a{color:#637e5d}#help-dialog{max-height:90dvh;overflow:auto}.admin-page{overflow:auto}.admin-page header{position:relative;height:72px;pointer-events:auto;font-size:12px;color:#8c9984}.admin-page .brand{text-decoration:none;letter-spacing:3px}.admin-workspace{width:min(900px,calc(100% - 40px));height:auto;margin:30px auto 80px}.admin-note,#admin-status{font-size:12px;line-height:1.8;color:#899780;margin:18px 0}.admin-page .board-scroll{max-height:none}.admin-page td button{font-size:10px;padding:5px 9px;margin-right:6px}.admin-page form{display:grid;grid-template-columns:2fr 1fr 1fr;gap:14px;margin:25px 0}label{font-size:11px;color:#8b9981;display:flex;flex-direction:column;gap:8px}input{font:inherit;font-size:13px;border:1px solid #dce3d3;background:#fff;border-radius:7px;padding:11px;color:#536b4a;min-width:0;width:100%}input:focus{outline:1px solid #789363}.form-actions{grid-column:1/-1;display:flex;gap:8px}.form-actions button{padding:9px 15px;font-size:11px}.initializing .mode-switch{opacity:0;pointer-events:none}@media(max-width:600px){.api-button{font-size:10px;padding:7px 5px}.header-actions{gap:3px}.brand b{display:none}.intro-modes{gap:14px}.admin-page form{grid-template-columns:1fr 1fr}.admin-page label:first-child{grid-column:1/-1}.mode-switch button{padding:7px 10px;font-size:10px}}
