/* Bàn cờ chessground dùng chung cho cả site: Dashboard (Luyện câu đố, Ôn câu sai) và trình xem ván của Khoá học /
   Tủ sách (library/library.js). Gắn lớp `ban-cg` lên phần tử bọc `.cg-wrap`. Ô board-light/board-dark, quân
   /library/pieces, toạ độ nằm trong ô, ô nước vừa đi vàng, khung xanh đậm + bóng mềm. Đổi giao diện bàn cờ: sửa ở
   đây, đừng chép sang file khác. */
.ban-cg .cg-wrap { width: 100%; aspect-ratio: 1 / 1; height: auto; }
.ban-cg cg-board { background-color: #EBECD0; background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyI+PHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsbD0iI0VCRUNEMCIvPjxnIGZpbGw9IiM3Mzk1NTIiPjxyZWN0IHg9IjEiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIzIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iNSIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjciIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIwIiB5PSIxIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMiIgeT0iMSIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjQiIHk9IjEiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSI2IiB5PSIxIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMSIgeT0iMiIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjMiIHk9IjIiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSI1IiB5PSIyIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iNyIgeT0iMiIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjAiIHk9IjMiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIyIiB5PSIzIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iNCIgeT0iMyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjYiIHk9IjMiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIxIiB5PSI0IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMyIgeT0iNCIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjUiIHk9IjQiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSI3IiB5PSI0IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMCIgeT0iNSIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjIiIHk9IjUiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSI0IiB5PSI1IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iNiIgeT0iNSIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjEiIHk9IjYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIzIiB5PSI2IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iNSIgeT0iNiIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjciIHk9IjYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIwIiB5PSI3IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMiIgeT0iNyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPjxyZWN0IHg9IjQiIHk9IjciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSI2IiB5PSI3IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PC9nPjwvc3ZnPg=='); border-radius: 4px; }
.ban-cg cg-board square.last-move { background-color: rgba(255, 241, 105, .5); }
.ban-cg cg-board square.selected { background-color: rgba(20, 85, 30, .45); }
.ban-cg .cg-wrap coords { font: 700 12px/1 var(--sans, "Be Vietnam Pro", sans-serif); opacity: 1; }
.ban-cg .cg-wrap coords.ranks { left: 3px; top: 2px; }
.ban-cg .cg-wrap coords.files { bottom: 2px; left: auto; right: 0; text-align: right; text-transform: lowercase; }
.ban-cg .cg-wrap coords.files coord { padding-right: 3px; }
/* Màu toạ độ theo ô nằm dưới nó (a1 là ô tối): chữ sáng trên ô tối, chữ xanh đậm trên ô sáng.
   Thứ tự DOM của chessground luôn là a→h và 1→8, chiều xoay chỉ đổi flex-flow. */
.ban-cg .orientation-white .ranks :nth-child(odd), .ban-cg .orientation-white .files :nth-child(odd),
.ban-cg .orientation-black .ranks :nth-child(even), .ban-cg .orientation-black .files :nth-child(even) { color: #F4F5E4; }
.ban-cg .orientation-white .ranks :nth-child(even), .ban-cg .orientation-white .files :nth-child(even),
.ban-cg .orientation-black .ranks :nth-child(odd), .ban-cg .orientation-black .files :nth-child(odd) { color: #4A6534; }
.ban-cg .cg-wrap piece.pawn.white { background-image: url(/library/pieces/wp.png); }
.ban-cg .cg-wrap piece.knight.white { background-image: url(/library/pieces/wn.png); }
.ban-cg .cg-wrap piece.bishop.white { background-image: url(/library/pieces/wb.png); }
.ban-cg .cg-wrap piece.rook.white { background-image: url(/library/pieces/wr.png); }
.ban-cg .cg-wrap piece.queen.white { background-image: url(/library/pieces/wq.png); }
.ban-cg .cg-wrap piece.king.white { background-image: url(/library/pieces/wk.png); }
.ban-cg .cg-wrap piece.pawn.black { background-image: url(/library/pieces/bp.png); }
.ban-cg .cg-wrap piece.knight.black { background-image: url(/library/pieces/bn.png); }
.ban-cg .cg-wrap piece.bishop.black { background-image: url(/library/pieces/bb.png); }
.ban-cg .cg-wrap piece.rook.black { background-image: url(/library/pieces/br.png); }
.ban-cg .cg-wrap piece.queen.black { background-image: url(/library/pieces/bq.png); }
.ban-cg .cg-wrap piece.king.black { background-image: url(/library/pieces/bk.png); }
/* Khung bàn: viền xanh đậm cùng tông ô tối + bóng mềm để bàn tách khỏi nền trắng (Lichess dùng bóng). */
.ban-cg { --khung: #4E6B37; --bong: rgb(23 34 28 / .18); --bong-xa: rgb(23 34 28 / .35); }
:root[data-theme="dark"] .ban-cg { --bong: rgb(0 0 0 / .5); --bong-xa: rgb(0 0 0 / .7); }
/* Khung đặt trên cg-container chứ không trên cg-wrap: chessground làm tròn cạnh bàn XUỐNG bội số 8px (theo
   devicePixelRatio), nên cg-wrap thường rộng hơn bàn vài px — khung trên cg-wrap để lộ vạch nền ở cạnh phải/dưới. */
.ban-cg cg-container { border-radius: 4px; box-shadow: 0 0 0 4px var(--khung), 0 0 0 5px var(--bong), 0 10px 28px -6px var(--bong-xa);
  transition: box-shadow .2s ease; }
.ban-cg cg-board { border-radius: 4px; }
