/* Consistent vector pieces, independent of emoji fonts and device text rendering. */
.games-chess-frame{display:grid;grid-template-columns:18px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 18px;min-width:0;min-height:0;box-sizing:border-box;max-width:100%;max-height:100%;isolation:isolate}.games-chess-board{grid-area:1/2;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(8,minmax(0,1fr));min-width:0;min-height:0;border:5px solid #31524a;border-radius:7px;overflow:hidden;background:#31524a;box-shadow:0 8px 25px #162e2726}.gch-ranks{grid-area:1/1;display:grid;grid-template-rows:repeat(8,1fr);padding-block:5px}.gch-files{grid-area:2/2;display:grid;grid-template-columns:repeat(8,1fr);padding-inline:5px}.gch-ranks span,.gch-files span{display:grid;place-items:center;font:650 10px/1 system-ui;color:var(--muted,#50665e)}.gch-square{position:relative;display:grid;place-items:center;padding:0!important;min-width:0!important;min-height:0!important;width:100%;height:100%;border:0!important;border-radius:0!important;overflow:visible;cursor:pointer;opacity:1!important;transform:none!important;touch-action:manipulation}.gch-square.light{background:#e9eddf!important}.gch-square.dark{background:#779480!important}.gch-square.last.light{background:#e7dc94!important}.gch-square.last.dark{background:#a9ae64!important}.gch-square.selected{box-shadow:inset 0 0 0 3px #f7d369}.gch-square.legal:after{content:'';position:absolute;inset:37%;border-radius:50%;background:#16392a66;pointer-events:none;z-index:3}.gch-square.legal[data-piece]:not([data-piece='']):after{inset:3%;background:none;border:4px solid #143e3070}.gch-square.check{background:#bd7164!important;box-shadow:inset 0 0 20px #bb3535}.gch-square:focus-visible{outline:3px solid #d4aa48;outline-offset:-3px;z-index:4}.gch-piece{display:block;position:absolute;inset:1%;width:98%!important;height:98%!important;max-width:98%;max-height:98%;pointer-events:none;filter:drop-shadow(0 1px 1px #12271f65)}.gch-square:disabled{cursor:default}.gch-square.last .gch-piece{animation:gch-arrive .13s ease-out}.gch-colors{font-size:11px;display:flex;justify-content:center;color:var(--muted);white-space:pre-wrap;flex:none}.gch-thinking{display:flex;flex-direction:column;gap:5px;align-items:center;font-size:12px;flex:none;color:var(--text);padding:4px 0}.gch-thinking-bar{display:block;width:min(280px,75%);height:4px;border-radius:5px;background:linear-gradient(90deg,#d3dfd7 0 25%,#448973 45% 55%,#d3dfd7 75%);background-size:220% 100%;animation:gch-think 1.3s linear infinite}.gch-level-label{display:grid;gap:7px;font-size:12px;margin:14px 0}.gch-level-label select{min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--play-paper);color:var(--text);padding:8px 12px;font:inherit}.gch-promotion,.gch-chat-invite{color:var(--text);background:var(--g-solid,#fff);border:1px solid var(--line);border-radius:18px;padding:22px;width:min(450px,calc(100vw - 24px));box-sizing:border-box}.gch-promotion::backdrop,.gch-chat-invite::backdrop{background:#11251e99;backdrop-filter:blur(3px)}.gch-promotion h3{margin:0 0 16px}.gch-promotion-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:15px}.gch-promotion-options button{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px;border:1px solid var(--line);border-radius:10px;background:#dce5d7;text-transform:capitalize;font:inherit;font-size:11px}.gch-promotion-options .gch-piece{position:static;width:60px!important;height:72px!important;max-width:100%}.gch-chat-invite button{margin:8px 8px 0 0}.games-playing .gch-match .games-playfield{padding:3px;box-sizing:border-box}.games-chess-review{position:absolute;inset:0;z-index:12;background:var(--play-canvas,#f2f6f3);color:var(--text);display:flex;flex-direction:column;min-height:0;gap:9px;padding:4px;box-sizing:border-box}.gch-review-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.gch-review-header h2{font-size:21px;margin:0}.gch-review-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.gch-review-actions select{border:1px solid var(--line);border-radius:9px;padding:7px;background:var(--play-paper);color:inherit;min-height:35px;font:inherit;font-size:11px}.gch-review-actions button,.gch-review-header button{min-height:35px;font-size:11px;padding:7px 12px}.gch-review-status{font-size:11px;margin:0}.games-chess-review>progress{width:100%;height:5px;accent-color:#488c74;flex:none}.gch-review-body{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,1fr);gap:16px;flex:1;min-height:0}.gch-review-left{display:flex;flex-direction:column;align-items:center;gap:9px;min-width:0;min-height:0}.gch-review-board{display:grid;place-items:center;flex:1;min-height:0;width:100%;overflow:hidden}.gch-review-left>strong{font-size:12px}.gch-review-left>input{width:min(90%,600px);accent-color:#488c74}.gch-replay-controls{display:flex;gap:8px;flex:none}.gch-replay-controls button{min-width:40px;min-height:35px;font-size:12px;padding:6px 10px}.gch-review-panel{overflow:auto;min-height:0;padding:0 9px 20px 0;scrollbar-width:thin}.gch-review-scores{display:grid;grid-template-columns:1fr 1fr;gap:10px}.gch-review-score{display:flex;flex-direction:column;gap:6px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--play-paper);min-width:0}.gch-review-score strong{font-size:12px;overflow-wrap:anywhere}.gch-review-score b{font-size:30px;color:#34735b;line-height:1.2}.gch-review-score span{font-size:11px}.gch-review-score small{font-size:10px;line-height:1.6;color:var(--muted)}.gch-eval-chart{height:90px;background:linear-gradient(to bottom,#f0f4ed 49%,#42624d33 50%,#dce6dd 51%);border:1px solid var(--line);border-radius:10px;margin-block:12px;cursor:pointer;overflow:hidden}.gch-eval-chart svg{width:100%;height:100%}.gch-feedback{border:1px solid var(--line);border-radius:12px;padding:13px;background:var(--play-paper)}.gch-feedback strong{font-size:14px}.gch-feedback p{font-size:12px;line-height:1.7;margin:8px 0}.gch-feedback small{font-size:10px;color:var(--muted)}.gch-evaluation{font-weight:750}.gch-key-moments{display:flex;flex-wrap:wrap;gap:6px;margin:13px 0}.gch-key-moments strong{width:100%;font-size:12px}.gch-key-moments button{font-size:10px;padding:6px 9px}.gch-review-moves{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-block:14px}.gch-review-moves button{padding:8px 10px;text-align:left;display:flex;flex-direction:column;gap:6px;min-width:0;font-size:12px}.gch-review-moves small{font-size:10px}.gch-review-moves [aria-current=step]{outline:2px solid #488c74}.gch-counts{font-size:12px;margin-block:12px}.gch-counts summary{cursor:pointer}.gch-counts table{width:100%;font-size:11px;border-spacing:0 8px}.gch-counts th{text-align:left}.gch-estimate-note{font-size:10px;color:var(--muted);line-height:1.7}.gch-square.suggested{box-shadow:inset 0 0 0 3px #4a9b84}.gch-move-badge{position:absolute;right:0;top:0;background:#397762;color:white;border-radius:7px;padding:2px 4px;font-size:11px;z-index:5}.gch-move-badge[data-quality=blunder]{background:#ba5557}.gch-move-badge[data-quality=mistake]{background:#bd843c}.gch-move-badge[data-quality=brilliant]{background:#37a1ad}
@keyframes gch-think{to{background-position:-220% 0}}@keyframes gch-arrive{from{transform:scale(.95)}to{transform:scale(1)}}
@media(max-width:700px){.gch-review-body{grid-template-columns:1fr;grid-template-rows:minmax(310px,1fr) minmax(100px,.32fr);gap:8px}.gch-review-left{gap:5px}.gch-review-actions{gap:5px}.gch-review-actions button,.gch-review-header button{padding:5px 8px;min-height:32px;font-size:10px}.gch-review-header h2{font-size:17px}.gch-review-scores{gap:8px}.gch-review-score{padding:10px}.gch-review-score b{font-size:23px}.gch-review-panel{padding-right:3px}.gch-colors{font-size:10px}.gch-thinking{font-size:11px}.gch-review-status{font-size:10px}.games-chess-frame{grid-template-columns:15px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 15px}.gch-ranks span,.gch-files span{font-size:9px}.games-chess-board{border-width:4px}}
@media(max-height:500px){.gch-colors{display:none}.gch-review-body{grid-template-columns:minmax(0,1fr) minmax(270px,1fr);grid-template-rows:minmax(0,1fr)}.games-chess-review{gap:4px}.gch-thinking{padding:0;gap:3px}.gch-review-actions button,.gch-review-header button{min-height:28px}.gch-review-score{padding:8px}.gch-review-score b{font-size:20px}.gch-review-board{min-height:0}}
@media(prefers-reduced-motion:reduce){.gch-thinking-bar,.gch-piece{animation:none!important}}
.gch-history{margin-block:18px;padding:14px;border:1px solid var(--line);border-radius:12px}.gch-history h3{font-size:14px;margin:0 0 12px}.gch-history>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-block:8px;font-size:11px}.gch-history button{min-height:34px;font-size:10px;white-space:nowrap}
.gch-review-actions select{width:auto;flex:none;max-width:190px;min-width:130px}
.games-playing .gch-match .games-player-actions{position:static;display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap;flex:none}.games-playing .gch-match .games-player-actions small{font-size:10px;color:var(--muted)}.games-playing .gch-match .games-player-actions button{min-height:32px;font-size:11px}
