FEN
277 | 279 |PGN
282 | 283 |├── README.md ├── assets ├── avatar │ ├── acharya.png │ └── devki.png ├── capture piece │ ├── capture-bb-1.png │ ├── capture-bb-2.png │ ├── capture-bn-1.png │ ├── capture-bn-2.png │ ├── capture-bp-1.png │ ├── capture-bp-2.png │ ├── capture-bp-3.png │ ├── capture-bp-4.png │ ├── capture-bp-5.png │ ├── capture-bp-6.png │ ├── capture-bp-7.png │ ├── capture-bp-8.png │ ├── capture-bq-1.png │ ├── capture-br-1.png │ ├── capture-br-2.png │ ├── capture-wb-1.png │ ├── capture-wb-2.png │ ├── capture-wn-1.png │ ├── capture-wn-2.png │ ├── capture-wp-1.png │ ├── capture-wp-2.png │ ├── capture-wp-3.png │ ├── capture-wp-4.png │ ├── capture-wp-5.png │ ├── capture-wp-6.png │ ├── capture-wp-7.png │ ├── capture-wp-8.png │ ├── capture-wq-1.png │ ├── capture-wr-1.png │ └── capture-wr-2.png ├── captured-pieces.png ├── icons │ ├── black-crown-alt.png │ ├── blackKing.png │ ├── book.svg │ ├── challengelink.svg │ ├── computer.svg │ ├── copy.png │ ├── cross.png │ ├── crown-shadow.svg │ ├── delete.png │ ├── download.png │ ├── favIcon.png │ ├── handshake.svg │ ├── playwhite.svg │ ├── setting.svg │ ├── share.png │ ├── tick.png │ ├── tournaments.svg │ ├── upload.png │ ├── white-crown-alt.png │ └── whiteKing.png ├── screenshot.png ├── sounds │ ├── capture.mp3 │ ├── castle.mp3 │ ├── game-end.mp3 │ ├── game-start.mp3 │ ├── illegal.mp3 │ ├── move-check.mp3 │ ├── move-opponent.mp3 │ ├── move-self.mp3 │ ├── notify.mp3 │ ├── premove.mp3 │ ├── promote.mp3 │ └── tenseconds.mp3 └── theme │ ├── classic │ ├── board.png │ ├── pieces │ │ ├── bb.png │ │ ├── bk.png │ │ ├── bn.png │ │ ├── bp.png │ │ ├── bq.png │ │ ├── br.png │ │ ├── wb.png │ │ ├── wk.png │ │ ├── wn.png │ │ ├── wp.png │ │ ├── wq.png │ │ └── wr.png │ └── preview.png │ ├── newspaper │ ├── board.png │ ├── pieces │ │ ├── Screenshot 2025-01-05 180521.png │ │ ├── bb.png │ │ ├── bk.png │ │ ├── bn.png │ │ ├── bp.png │ │ ├── bq.png │ │ ├── br.png │ │ ├── wb.png │ │ ├── wk.png │ │ ├── wn.png │ │ ├── wp.png │ │ ├── wq.png │ │ └── wr.png │ └── preview.png │ └── walnut │ ├── board.png │ ├── pieces │ ├── bb.png │ ├── bk.png │ ├── bn.png │ ├── bp.png │ ├── bq.png │ ├── br.png │ ├── wb.png │ ├── wk.png │ ├── wn.png │ ├── wp.png │ ├── wq.png │ └── wr.png │ └── preview.png ├── css ├── style.css ├── theme.css └── util.css ├── desktop.ini ├── gm2600.bin ├── index.html └── js ├── bitBoard.js ├── board.js ├── defs.js ├── evaluation.js ├── generateMove.js ├── gui ├── board.js ├── controlls.js └── pieces.js ├── main.js ├── moveStructure.js ├── perft.js ├── pgnCompiler.js ├── polyglot.js ├── pvTable.js ├── search.js ├── searchWorker.js └── sounds.js /README.md: -------------------------------------------------------------------------------- 1 | # JavaScript Chess Engine (elo 2100) 2 | 3 | This is a lightweight and powerful chess engine written in JavaScript. It includes a bitboard-based architecture, move generation, evaluation, and a basic GUI. The project is modular and structured to make learning, debugging, and extending easier. 4 | 5 | ## Features 6 | 7 | - **Bitboard Representation** for efficient board handling (`bitBoard.js`) 8 | - **Move Generation** including legal move filtering (`generateMove.js`) 9 | - **Search Algorithm** with basic evaluation (`search.js`, `evaluation.js`) 10 | - **PGN Compiler** to parse/export games (`pgnCompiler.js`) 11 | - **Polyglot Opening Book Support** (`polyglot.js`) 12 | - **Perft Testing** for move generation accuracy (`perft.js`) 13 | - **Worker Support** for parallelized searching (`searchWorker.js`) 14 | - **Modular UI Components** in `gui/` folder 15 | 16 | ## File Structure 17 | 18 | - `bitBoard.js` - Core representation of the chessboard 19 | - `board.js` - Board setup, FEN parsing 20 | - `defs.js` - Constants and definitions 21 | - `evaluation.js` - Evaluation function to score positions 22 | - `generateMove.js` - Generates all legal and pseudo-legal moves 23 | - `main.js` - Entry point and initialization 24 | - `moveStructure.js` - Move representation and utilities 25 | - `perft.js` - Perft functionality for debugging 26 | - `pgnCompiler.js` - Handles PGN parsing and generation 27 | - `polyglot.js` - Integration for opening books 28 | - `pvTable.js` - Principal variation table 29 | - `search.js` - Minimax/Alpha-beta logic 30 | - `searchWorker.js` - Web worker for background search 31 | - `gui/` - Contains the graphical interface files 32 | 33 | ## Getting Started 34 | 35 | 1. Clone the repo: 36 | ```bash 37 | git clone https://github.com/abhijeetSinghRajput/chessEngine.git 38 | cd chessEngine -------------------------------------------------------------------------------- /assets/avatar/acharya.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/avatar/acharya.png -------------------------------------------------------------------------------- /assets/avatar/devki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/avatar/devki.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bb-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bb-1.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bb-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bb-2.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bn-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bn-1.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bn-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bn-2.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bp-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bp-1.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bp-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bp-2.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bp-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bp-3.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bp-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bp-4.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bp-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bp-5.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bp-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bp-6.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bp-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bp-7.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bp-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bp-8.png -------------------------------------------------------------------------------- /assets/capture piece/capture-bq-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-bq-1.png -------------------------------------------------------------------------------- /assets/capture piece/capture-br-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-br-1.png -------------------------------------------------------------------------------- /assets/capture piece/capture-br-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-br-2.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wb-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wb-1.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wb-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wb-2.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wn-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wn-1.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wn-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wn-2.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wp-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wp-1.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wp-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wp-2.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wp-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wp-3.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wp-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wp-4.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wp-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wp-5.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wp-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wp-6.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wp-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wp-7.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wp-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wp-8.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wq-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wq-1.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wr-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wr-1.png -------------------------------------------------------------------------------- /assets/capture piece/capture-wr-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/capture piece/capture-wr-2.png -------------------------------------------------------------------------------- /assets/captured-pieces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/captured-pieces.png -------------------------------------------------------------------------------- /assets/icons/black-crown-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/black-crown-alt.png -------------------------------------------------------------------------------- /assets/icons/blackKing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/blackKing.png -------------------------------------------------------------------------------- /assets/icons/book.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/icons/challengelink.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/icons/computer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/icons/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/copy.png -------------------------------------------------------------------------------- /assets/icons/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/cross.png -------------------------------------------------------------------------------- /assets/icons/crown-shadow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/icons/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/delete.png -------------------------------------------------------------------------------- /assets/icons/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/download.png -------------------------------------------------------------------------------- /assets/icons/favIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/favIcon.png -------------------------------------------------------------------------------- /assets/icons/handshake.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/icons/playwhite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/icons/setting.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/icons/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/share.png -------------------------------------------------------------------------------- /assets/icons/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/tick.png -------------------------------------------------------------------------------- /assets/icons/tournaments.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/icons/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/upload.png -------------------------------------------------------------------------------- /assets/icons/white-crown-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/white-crown-alt.png -------------------------------------------------------------------------------- /assets/icons/whiteKing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/icons/whiteKing.png -------------------------------------------------------------------------------- /assets/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/screenshot.png -------------------------------------------------------------------------------- /assets/sounds/capture.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/capture.mp3 -------------------------------------------------------------------------------- /assets/sounds/castle.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/castle.mp3 -------------------------------------------------------------------------------- /assets/sounds/game-end.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/game-end.mp3 -------------------------------------------------------------------------------- /assets/sounds/game-start.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/game-start.mp3 -------------------------------------------------------------------------------- /assets/sounds/illegal.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/illegal.mp3 -------------------------------------------------------------------------------- /assets/sounds/move-check.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/move-check.mp3 -------------------------------------------------------------------------------- /assets/sounds/move-opponent.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/move-opponent.mp3 -------------------------------------------------------------------------------- /assets/sounds/move-self.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/move-self.mp3 -------------------------------------------------------------------------------- /assets/sounds/notify.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/notify.mp3 -------------------------------------------------------------------------------- /assets/sounds/premove.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/premove.mp3 -------------------------------------------------------------------------------- /assets/sounds/promote.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/promote.mp3 -------------------------------------------------------------------------------- /assets/sounds/tenseconds.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/sounds/tenseconds.mp3 -------------------------------------------------------------------------------- /assets/theme/classic/board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/board.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/bb.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/bk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/bk.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/bn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/bn.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/bp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/bp.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/bq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/bq.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/br.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/wb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/wb.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/wk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/wk.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/wn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/wn.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/wp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/wp.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/wq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/wq.png -------------------------------------------------------------------------------- /assets/theme/classic/pieces/wr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/pieces/wr.png -------------------------------------------------------------------------------- /assets/theme/classic/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/classic/preview.png -------------------------------------------------------------------------------- /assets/theme/newspaper/board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/board.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/Screenshot 2025-01-05 180521.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/Screenshot 2025-01-05 180521.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/bb.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/bk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/bk.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/bn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/bn.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/bp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/bp.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/bq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/bq.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/br.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/wb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/wb.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/wk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/wk.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/wn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/wn.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/wp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/wp.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/wq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/wq.png -------------------------------------------------------------------------------- /assets/theme/newspaper/pieces/wr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/pieces/wr.png -------------------------------------------------------------------------------- /assets/theme/newspaper/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/newspaper/preview.png -------------------------------------------------------------------------------- /assets/theme/walnut/board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/board.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/bb.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/bk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/bk.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/bn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/bn.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/bp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/bp.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/bq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/bq.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/br.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/wb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/wb.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/wk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/wk.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/wn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/wn.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/wp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/wp.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/wq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/wq.png -------------------------------------------------------------------------------- /assets/theme/walnut/pieces/wr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/pieces/wr.png -------------------------------------------------------------------------------- /assets/theme/walnut/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/assets/theme/walnut/preview.png -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-dark: #302e2b; 3 | --clr-dark: #262522; 4 | --clr-dark: #0e1514; 5 | --clr-dark: #e2e2e2; 6 | --clr-dark: #989795; 7 | --clr-dark: #ffffff14; 8 | --clr-dark: #ffffffb8; 9 | --sq-light: #ebecd0; 10 | --sq-dark: #739552; 11 | --highlight: #ffff33; 12 | --alpha-dark: rgba(0, 0, 0, 0.14); 13 | } 14 | 15 | .icon { 16 | aspect-ratio: 1; 17 | overflow: hidden; 18 | width: 20px; 19 | cursor: pointer; 20 | } 21 | 22 | .icon img { 23 | width: 100%; 24 | height: 100%; 25 | object-fit: cover; 26 | } 27 | 28 | *, 29 | *::before, 30 | *::after { 31 | font-family: 'Roboto', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 32 | list-style: none; 33 | margin: 0; 34 | padding: 0; 35 | box-sizing: border-box; 36 | text-decoration: none; 37 | } 38 | 39 | .win-animation{ 40 | position: fixed; 41 | width: 100vw; 42 | height: 100vh; 43 | top: 0; 44 | left: 0; 45 | z-index: 100; 46 | display: none; 47 | } 48 | 49 | body { 50 | width: 100vw; 51 | min-height: 100svh; 52 | background-color: var(--bg-dark); 53 | display: flex; 54 | justify-content: center; 55 | overflow-x: hidden; 56 | } 57 | 58 | body::-webkit-scrollbar { 59 | display: none; 60 | } 61 | 62 | .container { 63 | display: grid; 64 | grid-template-columns: minmax(300px, 600px) 400px; 65 | grid-gap: 20px; 66 | max-height: 100svh; 67 | position: relative; 68 | } 69 | 70 | .board-layout { 71 | display: flex; 72 | flex-direction: column; 73 | gap: 10px; 74 | height: max-content; 75 | } 76 | 77 | .board-layout.flipped { 78 | flex-direction: column-reverse; 79 | } 80 | 81 | .board-layout .profile-photo { 82 | width: 50px; 83 | border-radius: 3px; 84 | } 85 | 86 | .board-layout .player { 87 | display: flex; 88 | align-items: center; 89 | justify-content: space-between; 90 | padding: 0 10px; 91 | color: #e2e2e2; 92 | text-transform: capitalize; 93 | font-size: 13px; 94 | font-weight: 600; 95 | } 96 | .board-layout .player .user{ 97 | display: flex; 98 | align-items: center; 99 | gap: 10px; 100 | } 101 | 102 | .player.white .profile-photo { 103 | border: 5px solid white; 104 | } 105 | 106 | .player.black .profile-photo { 107 | border: 5px solid black; 108 | } 109 | 110 | .board-layout .player .profile-photo { 111 | border-width: 3px; 112 | } 113 | 114 | .board-layout .player .user .name{ 115 | margin-bottom: 3px; 116 | } 117 | .board-layout .player .control{ 118 | display: flex; 119 | align-items: center; 120 | gap: 10px; 121 | } 122 | 123 | .captures { 124 | display: flex; 125 | align-items: center; 126 | gap: 4px; 127 | } 128 | 129 | .capture { 130 | background-position: center; 131 | background-size: auto 100%; 132 | background-repeat: no-repeat; 133 | height: 12px; 134 | } 135 | 136 | .drop-menu{ 137 | position: relative; 138 | min-width: 60px; 139 | height: max-content; 140 | color: #e2e2e2; 141 | z-index: 100; 142 | } 143 | .drop-menu .selection{ 144 | cursor: pointer; 145 | background-color: #3c3a38; 146 | border: 1px solid #ffffff1a; 147 | padding: 4px 8px; 148 | display: flex; 149 | justify-content: space-between; 150 | align-items: center; 151 | border-radius: 3px; 152 | overflow: hidden; 153 | } 154 | .selection:hover, 155 | .drop-menu.active .selection{ 156 | border-color: #ffffff4d; 157 | } 158 | .selection i{ 159 | font-size: 22px; 160 | width: 16px; 161 | height: 16px; 162 | display: flex; 163 | align-items: center; 164 | justify-content: center; 165 | } 166 | 167 | .drop-menu.active .options{ 168 | display: flex; 169 | } 170 | .drop-menu .options{ 171 | width: 100px; 172 | right: 0; 173 | position: absolute; 174 | background-color: #21201d; 175 | border-radius: 3px; 176 | overflow: hidden; 177 | padding: 8px 0; 178 | box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5); 179 | display: flex; 180 | flex-direction: column; 181 | display: none; 182 | } 183 | 184 | .options .option{ 185 | cursor: pointer; 186 | padding: 8px 8px; 187 | } 188 | .options .option.select, 189 | .options .option:hover{ 190 | background-color: #0e1514; 191 | } 192 | 193 | .player.black .drop-menu .options, 194 | .flipped .player.white .drop-menu .options{ 195 | top: calc(100% + 8px); 196 | bottom: auto; 197 | } 198 | .flipped .player.black .drop-menu .options, 199 | .player.white .drop-menu .options{ 200 | bottom: calc(100% + 8px); 201 | flex-direction: column-reverse; 202 | top: auto; 203 | } 204 | 205 | 206 | #board { 207 | aspect-ratio: 1; 208 | background: url('../assets/theme/classic/board.png') no-repeat; 209 | background-size: contain; 210 | border-radius: 3px; 211 | overflow: hidden; 212 | position: relative; 213 | } 214 | 215 | .coordinates { 216 | position: absolute; 217 | left: 0; 218 | top: 0; 219 | user-select: none; 220 | z-index: 3; 221 | } 222 | 223 | .coordinate-light { 224 | fill: var(--sq-dark); 225 | } 226 | 227 | .coordinate-dark { 228 | fill: var(--sq-light); 229 | } 230 | 231 | .coordinate-dark, 232 | .coordinate-light { 233 | font-weight: 600; 234 | } 235 | 236 | .flipped .promotion-window.black, 237 | .promotion-window { 238 | background-color: white; 239 | position: absolute; 240 | width: 12.5%; 241 | display: flex; 242 | flex-direction: column; 243 | top: 0; 244 | bottom: auto; 245 | border-radius: 3px; 246 | box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.65); 247 | z-index: 10; 248 | display: none; 249 | } 250 | 251 | .flipped .promotion-window, 252 | .promotion-window.black { 253 | top: auto; 254 | bottom: 0; 255 | flex-direction: column-reverse; 256 | } 257 | 258 | .promotion-window .piece { 259 | position: relative; 260 | width: 100%; 261 | } 262 | 263 | .promotion-window .piece:hover { 264 | background-color: var(--highlight); 265 | } 266 | 267 | .piece { 268 | background-size: contain; 269 | background-repeat: no-repeat; 270 | width: 12.5%; 271 | aspect-ratio: 1; 272 | position: absolute; 273 | cursor: grab; 274 | transition: transform .3s ease; 275 | z-index: 3; 276 | } 277 | .setting-window{ 278 | padding: 30px 14px 279 | } 280 | .theme.active, 281 | .theme:hover{ 282 | background-color: #302e2b; 283 | } 284 | .theme .name{ 285 | text-transform: capitalize; 286 | } 287 | .theme{ 288 | user-select: none; 289 | padding: 15px; 290 | display: flex; 291 | justify-content: space-between; 292 | align-items: flex-start; 293 | } 294 | 295 | .theme .preview img{ 296 | width: 100%; 297 | height: 100%; 298 | object-fit: cover; 299 | } 300 | 301 | .theme .preview{ 302 | aspect-ratio: 1; 303 | width: 100px; 304 | } 305 | 306 | .game-controller { 307 | background-color: #262522; 308 | display: flex; 309 | flex-direction: column; 310 | border-radius: 5px; 311 | overflow: hidden; 312 | height: 100svh; 313 | } 314 | 315 | .game-controller .header { 316 | background-color: #21201d; 317 | padding: 14px; 318 | color: #ffffffb8; 319 | display: flex; 320 | align-items: center; 321 | justify-content: space-between; 322 | font-weight: 600; 323 | font-size: 13px; 324 | } 325 | 326 | .game-controller .header .icons { 327 | display: flex; 328 | gap: 10px; 329 | align-items: center; 330 | } 331 | 332 | .game-controller .header .icons .icon { 333 | width: 20px; 334 | } 335 | 336 | .game-controller .header .icon:hover { 337 | filter: brightness(200%); 338 | } 339 | 340 | .lines{ 341 | background-color: #1b1917; 342 | color: #e2e2e2; 343 | color: #81b64c; 344 | font-weight: 600; 345 | min-width: 100%; 346 | font-size: 12px; 347 | white-space: nowrap; 348 | margin-bottom: 5px; 349 | } 350 | .lines .line{ 351 | margin: 0 8px; 352 | line-height: 25px; 353 | overflow-x: scroll; 354 | } 355 | .line::-webkit-scrollbar{ 356 | display: none; 357 | } 358 | 359 | .game-controller .movelist { 360 | min-height: 150px; 361 | height: 100%; 362 | overflow-y: scroll; 363 | } 364 | 365 | .move { 366 | /* display: none !important; */ 367 | } 368 | 369 | .movelist::-webkit-scrollbar { 370 | background-color: #262522; 371 | width: 6px; 372 | } 373 | 374 | .movelist::-webkit-scrollbar-thumb { 375 | background-color: #151413; 376 | } 377 | 378 | .movelist::-webkit-scrollbar-thumb:hover { 379 | background-color: #fff; 380 | } 381 | 382 | .movelist .move { 383 | display: grid; 384 | align-items: center; 385 | grid-template-columns: 10px 55px 55px; 386 | grid-gap: 10px; 387 | font-size: 11px; 388 | padding: 2px 5px 2px 15px; 389 | } 390 | 391 | .move .ply { 392 | color: #ffffff80; 393 | margin-right: 8px; 394 | } 395 | 396 | .move .node { 397 | min-width: 40px; 398 | width: max-content; 399 | color: #ffffffb8; 400 | font-weight: 700; 401 | padding: 4px; 402 | border-radius: 2px; 403 | border-bottom: 3px solid transparent; 404 | user-select: none; 405 | cursor: pointer; 406 | } 407 | 408 | .move:nth-child(odd) { 409 | background-color: #2a2926; 410 | } 411 | 412 | .node.selected { 413 | background-color: #454441; 414 | border-bottom: 3px solid #575754; 415 | color: white; 416 | } 417 | 418 | .controller { 419 | display: grid; 420 | grid-gap: 3px; 421 | grid-row-gap: 10px; 422 | grid-template-columns: repeat(4, 1fr); 423 | background-color: #21201d; 424 | padding: 16px 24px 20px; 425 | color: rgba(255, 255, 255, 0.72); 426 | } 427 | 428 | 429 | .backdrop { 430 | position: fixed; 431 | width: 100vw; 432 | height: 100vh; 433 | background-color: hsla(0, 0%, 0%, 0.7); 434 | z-index: 101; 435 | visibility: hidden; 436 | } 437 | 438 | .window{ 439 | position: fixed; 440 | top: 50%; 441 | left: 50%; 442 | transform: translate(-50%, -50%) scale(0); 443 | background-color: #21201d; 444 | box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.65); 445 | border-radius: 10px; 446 | overflow: hidden; 447 | width: 100%; 448 | max-width: 450px; 449 | color: #ffffff80; 450 | font-size: 13px; 451 | font-weight: 600; 452 | transition: .4s 0s cubic-bezier(0.51, 0.01, 0.47, 1.3); 453 | visibility: hidden; 454 | opacity: 0; 455 | z-index: 100; 456 | } 457 | 458 | 459 | .download-window input, 460 | .download-window textarea { 461 | color: #ffffffA1; 462 | background-color: #3c3a38; 463 | border: 1px solid #777574; 464 | outline: none; 465 | padding: 4px 8px; 466 | font-size: 14px; 467 | border-radius: 2px; 468 | margin-bottom: 6px; 469 | display: block; 470 | width: 100%; 471 | resize: vertical; 472 | max-height: 300px; 473 | } 474 | .upload-book .icon{ 475 | cursor: default; 476 | } 477 | .upload-book .icon.delete:hover{ 478 | cursor: pointer; 479 | filter: brightness(200%); 480 | } 481 | 482 | .upload-book{ 483 | padding: 30px 14px; 484 | font-weight: 400; 485 | } 486 | 487 | .upload-book > h3{ 488 | text-align: center; 489 | color: #fff; 490 | font-size: 14px; 491 | margin-bottom: 20px; 492 | } 493 | .book{ 494 | display: flex; 495 | align-items: center; 496 | gap: 10px; 497 | color: #ffffffA1; 498 | background-color: #151413; 499 | margin-bottom: 6px; 500 | padding: 16px 20px; 501 | border-radius: 5px; 502 | display: flex; 503 | gap: 10px; 504 | cursor: pointer; 505 | } 506 | .book.selected{ 507 | background-color: #81b64c; 508 | } 509 | .book .content{ 510 | /* border: 1px solid wheat; */ 511 | width: 100%; 512 | } 513 | .book .content .detail{ 514 | display: flex; 515 | justify-content: space-between; 516 | margin-bottom: 5px; 517 | } 518 | .progress-bar{ 519 | width: 100%; 520 | height: 6px; 521 | background-color: #ebecd0; 522 | overflow: hidden; 523 | border-radius: 50px; 524 | } 525 | .progress-bar .progress{ 526 | width: 0%; 527 | background-color: #81b64c; 528 | height: 100%; 529 | } 530 | 531 | .library{ 532 | height: 312px; 533 | margin-bottom: 20px; 534 | overflow-y: scroll; 535 | } 536 | .library::-webkit-scrollbar{ 537 | display: none; 538 | } 539 | .library .book .detail{ 540 | width: 100%; 541 | } 542 | 543 | textarea { 544 | min-height: 200px; 545 | max-height: 400px; 546 | } 547 | 548 | textarea::-webkit-scrollbar-thumb { 549 | background-color: #21201f; 550 | } 551 | 552 | textarea::-webkit-scrollbar { 553 | width: 6px; 554 | background-color: #3c3a38; 555 | } 556 | 557 | .download-window .header { 558 | position: relative; 559 | background-color: #1b1917; 560 | padding-top: 16px; 561 | } 562 | 563 | .download-window .header .option { 564 | display: flex; 565 | } 566 | 567 | .download-window .header .option div { 568 | width: 100%; 569 | text-align: center; 570 | color: #81b64c; 571 | padding: 15px; 572 | border-bottom: 4px solid transparent; 573 | cursor: pointer; 574 | position: relative; 575 | } 576 | 577 | .download-window .header .option div::before { 578 | content: ''; 579 | width: 0%; 580 | height: 4px; 581 | position: absolute; 582 | bottom: 0; 583 | left: 50%; 584 | transform: translateX(-50%); 585 | background-color: #81b64c; 586 | transition: width .3s; 587 | } 588 | 589 | .download-window .header .option div:hover::before, 590 | .download-window .header .option div.active::before { 591 | width: 100% 592 | } 593 | 594 | .download-window .content { 595 | padding: 10px 15px; 596 | display: flex; 597 | flex-direction: column; 598 | } 599 | 600 | .download-window .content p { 601 | padding: 5px 0; 602 | } 603 | 604 | .download-window .btn { 605 | font-size: 14px; 606 | font-weight: 600; 607 | padding: 5px 18px; 608 | text-shadow: none; 609 | height: 48px; 610 | align-self: center; 611 | margin-top: 8px; 612 | margin-bottom: 20px; 613 | } 614 | 615 | .download-window .btn .icon { 616 | filter: brightness(200%); 617 | width: 17px; 618 | padding: 0; 619 | margin-right: 10px; 620 | } 621 | 622 | .confirm-popover { 623 | text-align: center; 624 | width: 500px; 625 | padding: 30px 14px; 626 | } 627 | .backdrop.active{ 628 | visibility: visible; 629 | } 630 | .backdrop.active>.active { 631 | transform: translate(-50%, -50%) scale(1); 632 | opacity: 1; 633 | visibility: visible; 634 | } 635 | 636 | .window .message { 637 | font-size: 14px; 638 | text-transform: capitalize; 639 | color: #e2e2e2; 640 | margin-bottom: 20px; 641 | } 642 | 643 | .confirm-popover .buttons { 644 | display: flex; 645 | gap: 10px; 646 | } 647 | 648 | .confirm-popover .buttons .btn { 649 | flex: 1; 650 | height: 48px; 651 | } 652 | 653 | .profile-photo { 654 | aspect-ratio: 1; 655 | width: 80px; 656 | border-radius: 10px; 657 | overflow: hidden; 658 | position: relative; 659 | box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.4); 660 | } 661 | 662 | .profile-photo .crown-alt { 663 | display: none; 664 | position: absolute; 665 | bottom: -5px; 666 | right: -5px; 667 | width: 30px; 668 | background-color: #81b64c; 669 | border: 7px solid #81b64c; 670 | border-top-left-radius: 5px; 671 | } 672 | 673 | .winner .profile-photo .crown-alt { 674 | display: block; 675 | } 676 | 677 | 678 | .profile-photo img { 679 | width: 100%; 680 | height: 100%; 681 | object-fit: cover; 682 | } 683 | 684 | .game-over { 685 | text-align: center; 686 | width: 350px; 687 | color: #e2e2e2; 688 | } 689 | .game-over::before{ 690 | content: ''; 691 | position: absolute; 692 | width: 200%; 693 | height: 60%; 694 | background-color: #0e1514; 695 | border-radius: 100%; 696 | left: 50%; 697 | top: 0; 698 | transform: translate(-50%, -50%); 699 | z-index: -2; 700 | 701 | } 702 | .close { 703 | position: absolute; 704 | z-index: 10; 705 | font-size: 24px; 706 | padding: 2px; 707 | top: 0; 708 | right: 0; 709 | width: 30px; 710 | aspect-ratio: 1; 711 | cursor: pointer; 712 | display: flex; 713 | align-items: center; 714 | justify-content: center; 715 | color: #989795; 716 | } 717 | 718 | .close:hover { 719 | color: #fff; 720 | background-color: #2a2926; 721 | } 722 | 723 | .game-over .header { 724 | margin-top: 20px; 725 | margin-bottom: 30px; 726 | } 727 | 728 | .game-over .header .title { 729 | font-size: 32px; 730 | font-weight: 800; 731 | } 732 | 733 | .game-over .header .subtitle { 734 | color: #989795; 735 | } 736 | 737 | .game-over .players { 738 | display: flex; 739 | align-items: center; 740 | justify-content: space-evenly; 741 | } 742 | 743 | .game-over .winner .profile-photo { 744 | border-color: #81b64c; 745 | box-shadow: 0px 0px 16px 0px #aef46721; 746 | } 747 | 748 | .players .name { 749 | margin-top: 5px; 750 | text-transform: capitalize; 751 | } 752 | 753 | .game-over .crowns { 754 | margin: 16px 0; 755 | display: flex; 756 | justify-content: center; 757 | gap: 10px; 758 | } 759 | 760 | .crown { 761 | width: 50px; 762 | } 763 | 764 | .crown.dark { 765 | filter: grayscale(1); 766 | } 767 | 768 | .game-over .buttons { 769 | display: grid; 770 | grid-template-columns: 1fr 1fr; 771 | grid-template-rows: 58px 45px; 772 | grid-gap: 8px; 773 | padding: 10px; 774 | } 775 | 776 | .game-over .buttons .btn { 777 | height: 100%; 778 | } 779 | 780 | .setup-position.active{ 781 | visibility: visible; 782 | } 783 | 784 | .game-over.active { 785 | transition-delay: .7s; 786 | transform: translate(-50%, -50%) scale(1); 787 | opacity: 1; 788 | visibility: visible; 789 | } 790 | 791 | 792 | .upload { 793 | overflow: hidden; 794 | border-radius: 5px; 795 | margin-bottom: 20px; 796 | border: 2px dashed transparent; 797 | transition: .2s; 798 | } 799 | 800 | .upload.file-hover { 801 | border: 2px dashed #ffffffA1; 802 | } 803 | 804 | #upload-fen-input { 805 | color: #ffffffA1; 806 | background-color: #3c3a38; 807 | border: none; 808 | outline: none; 809 | padding: 4px 8px; 810 | font-size: 14px; 811 | border-radius: 2px; 812 | margin-bottom: 6px; 813 | width: 100%; 814 | } 815 | 816 | .upload textarea { 817 | color: #ffffffA1; 818 | background-color: #3c3a38; 819 | outline: none; 820 | padding: 4px 8px; 821 | font-size: 14px; 822 | display: block; 823 | width: 100%; 824 | resize: none; 825 | max-height: 300px; 826 | border: none; 827 | border-bottom: 1px solid #777574; 828 | } 829 | 830 | #upload-bar { 831 | width: 0%; 832 | height: 3px; 833 | margin-top: -3px; 834 | background-color: #777574; 835 | transition: width .3s; 836 | } 837 | 838 | 839 | .upload .btn { 840 | border-radius: 0; 841 | height: 48px; 842 | display: flex; 843 | align-items: center; 844 | justify-content: center; 845 | border: none; 846 | gap: 5px; 847 | } 848 | 849 | .upload .btn .icon { 850 | width: 20px; 851 | } 852 | 853 | 854 | 855 | 856 | .setup-position{ 857 | background-color: #575754; 858 | display: grid; 859 | bottom: 0; 860 | right: 0; 861 | left: auto; 862 | } 863 | .setup-position.active{ 864 | opacity: 1; 865 | transform: scale(1); 866 | } 867 | 868 | .setup-position .pieces{ 869 | padding: 16px; 870 | display: grid; 871 | grid-template-columns: repeat(6, minmax(30px, 75px)); 872 | } 873 | .setup-position .pieces .piece{ 874 | position: relative; 875 | width: 100%; 876 | } 877 | .setup-position .piece.selected{ 878 | background-color: var(--highlight); 879 | } 880 | .setup-position .buttons{ 881 | display: grid; 882 | grid-template-columns: 1fr 1fr; 883 | grid-gap: 10px; 884 | padding: 16px; 885 | } 886 | .setup-position .buttons button{ 887 | height: 50px; 888 | } 889 | .setup-position .close{ 890 | background-color: transparent; 891 | } 892 | 893 | .castle-permission{ 894 | font-weight: 600; 895 | text-transform: capitalize; 896 | grid-gap: 10px; 897 | padding: 16px; 898 | color: #e2e2e2; 899 | display: grid; 900 | grid-template-columns: 1fr 1fr; 901 | } 902 | .checkbox-grid{ 903 | gap: 5px; 904 | grid-column: 1/3; 905 | display: grid; 906 | grid-template-columns: 1fr 1fr; 907 | } 908 | .checkbox-grid input{ 909 | transform: scale(1.4); 910 | margin-right: 10px; 911 | cursor: pointer; 912 | } 913 | 914 | 915 | 916 | 917 | @media screen and (max-width: 900px) { 918 | .icon { 919 | width: 28px; 920 | } 921 | 922 | .close { 923 | width: 50px; 924 | font-size: 32px; 925 | } 926 | 927 | #board { 928 | justify-self: center; 929 | } 930 | 931 | .board-layout .player { 932 | padding: 0; 933 | } 934 | 935 | 936 | .container { 937 | grid-template-columns: minmax(200px, 600px); 938 | grid-template-rows: auto 1fr; 939 | margin-top: 10px; 940 | margin-bottom: 84px; 941 | } 942 | 943 | .movelist { 944 | padding-top: 10px; 945 | padding-bottom: 20px; 946 | overflow-y: auto; 947 | } 948 | 949 | .game-controller { 950 | min-height: 500px; 951 | max-height: 81svh; 952 | display: grid; 953 | grid-template-rows: repeat(3, max-content); 954 | } 955 | .game-controller .controller{ 956 | grid-row: 1/2; 957 | border-bottom: 1px solid #2a2926; 958 | } 959 | .game-controller .controller .btn { 960 | height: 48px; 961 | } 962 | .game-controller .controller .btn { 963 | font-size: 18px; 964 | } 965 | 966 | .square { 967 | font-size: clamp(7px, 3vmin, 11px); 968 | } 969 | } 970 | 971 | 972 | 973 | 974 | @media screen and (max-width: 480px) { 975 | .toggle-btn { 976 | width: 40px; 977 | height: 20px; 978 | } 979 | 980 | .confirm-popover { 981 | padding: 40px 10px; 982 | } 983 | .confirm-popover, 984 | .download-window, 985 | .game-over { 986 | width: 92vw; 987 | } 988 | 989 | #upload-fen-input { 990 | padding: 8px; 991 | } 992 | 993 | .board-layout { 994 | margin: 0 16px; 995 | } 996 | 997 | 998 | .confirm-popover .message { 999 | font-size: 16px; 1000 | margin-bottom: 30px; 1001 | } 1002 | 1003 | .confirm-popover .buttons .btn { 1004 | height: 50px; 1005 | } 1006 | 1007 | .game-over .profile-photo { 1008 | width: 100px; 1009 | } 1010 | 1011 | .game-over .crown { 1012 | width: 60px; 1013 | } 1014 | 1015 | .game-controller { 1016 | flex-direction: column; 1017 | grid-template-rows: repeat(2, max-content); 1018 | } 1019 | 1020 | .game-over .buttons { 1021 | grid-template-rows: 64px 50px; 1022 | } 1023 | 1024 | .game-controller .controller { 1025 | position: fixed; 1026 | width: 100%; 1027 | left: 0; 1028 | bottom: 0; 1029 | padding: 16px 10px 20px; 1030 | z-index: 100; 1031 | } 1032 | 1033 | .controller .btn i::before { 1034 | font-size: 30px; 1035 | } 1036 | 1037 | .game-controller { 1038 | padding-bottom: 100px; 1039 | } 1040 | 1041 | .game-controller .controller .btn { 1042 | height: 48px; 1043 | } 1044 | 1045 | .movelist .move { 1046 | font-size: 12px; 1047 | grid-template-columns: 10px 80px 55px; 1048 | } 1049 | } -------------------------------------------------------------------------------- /css/theme.css: -------------------------------------------------------------------------------- 1 | /* ======================================= */ 2 | /* =============== classic =============== */ 3 | /* ======================================= */ 4 | #board.classic { 5 | background: url('../assets/theme/classic/board.png') no-repeat contain; 6 | } 7 | #board.classic .highlight { 8 | background-color: var(--highlight); 9 | } 10 | .classic .piece.wp { 11 | background-image: url(../assets/theme/classic/pieces/wp.png); 12 | } 13 | 14 | .classic .piece.wr { 15 | background-image: url(../assets/theme/classic/pieces/wr.png); 16 | } 17 | 18 | .classic .piece.wn { 19 | background-image: url(../assets/theme/classic/pieces/wn.png); 20 | } 21 | 22 | .classic .piece.wb { 23 | background-image: url(../assets/theme/classic/pieces/wb.png); 24 | } 25 | 26 | .classic .piece.wq { 27 | background-image: url(../assets/theme/classic/pieces/wq.png); 28 | } 29 | 30 | .classic .piece.wk { 31 | background-image: url(../assets/theme/classic/pieces/wk.png); 32 | } 33 | 34 | .classic .piece.bp { 35 | background-image: url(../assets/theme/classic/pieces/bp.png); 36 | } 37 | 38 | .classic .piece.br { 39 | background-image: url(../assets/theme/classic/pieces/br.png); 40 | } 41 | 42 | .classic .piece.bn { 43 | background-image: url(../assets/theme/classic/pieces/bn.png); 44 | } 45 | 46 | .classic .piece.bb { 47 | background-image: url(../assets/theme/classic/pieces/bb.png); 48 | } 49 | 50 | .classic .piece.bq { 51 | background-image: url(../assets/theme/classic/pieces/bq.png); 52 | } 53 | 54 | .classic .piece.bk { 55 | background-image: url(../assets/theme/classic/pieces/bk.png); 56 | } 57 | 58 | 59 | /* ======================================= */ 60 | /* =============== walnut =============== */ 61 | /* ======================================= */ 62 | #board.walnut .coordinate-light { 63 | fill: #835f42; 64 | } 65 | #board.walnut .highlight { 66 | background-color: #d1a52d; 67 | } 68 | #board.walnut .coordinate-dark { 69 | fill: #c0a684; 70 | } 71 | 72 | #board.walnut { 73 | background: url('../assets/theme/walnut/board.png') no-repeat; 74 | background-size: contain; 75 | } 76 | 77 | 78 | .walnut .piece.wp { 79 | background-image: url(../assets/theme/walnut/pieces/wp.png); 80 | } 81 | 82 | .walnut .piece.wr { 83 | background-image: url(../assets/theme/walnut/pieces/wr.png); 84 | } 85 | 86 | .walnut .piece.wn { 87 | background-image: url(../assets/theme/walnut/pieces/wn.png); 88 | } 89 | 90 | .walnut .piece.wb { 91 | background-image: url(../assets/theme/walnut/pieces/wb.png); 92 | } 93 | 94 | .walnut .piece.wq { 95 | background-image: url(../assets/theme/walnut/pieces/wq.png); 96 | } 97 | 98 | .walnut .piece.wk { 99 | background-image: url(../assets/theme/walnut/pieces/wk.png); 100 | } 101 | 102 | .walnut .piece.bp { 103 | background-image: url(../assets/theme/walnut/pieces/bp.png); 104 | } 105 | 106 | .walnut .piece.br { 107 | background-image: url(../assets/theme/walnut/pieces/br.png); 108 | } 109 | 110 | .walnut .piece.bn { 111 | background-image: url(../assets/theme/walnut/pieces/bn.png); 112 | } 113 | 114 | .walnut .piece.bb { 115 | background-image: url(../assets/theme/walnut/pieces/bb.png); 116 | } 117 | 118 | .walnut .piece.bq { 119 | background-image: url(../assets/theme/walnut/pieces/bq.png); 120 | } 121 | 122 | .walnut .piece.bk { 123 | background-image: url(../assets/theme/walnut/pieces/bk.png); 124 | } 125 | 126 | 127 | /* ======================================= */ 128 | /* =============== newspaper =============== */ 129 | /* ======================================= */ 130 | #board.newspaper .coordinate-light { 131 | fill: #5a5956; 132 | } 133 | #board.newspaper .highlight { 134 | background-color: #99976e; 135 | } 136 | #board.newspaper .coordinate-dark { 137 | fill: #5a5956; 138 | } 139 | #board.newspaper{ 140 | background: url('../assets/theme/newspaper/board.png') no-repeat; 141 | background-size: contain; 142 | } 143 | .newspaper .piece.wp { 144 | background-image: url(../assets/theme/newspaper/pieces/wp.png); 145 | } 146 | 147 | .newspaper .piece.wr { 148 | background-image: url(../assets/theme/newspaper/pieces/wr.png); 149 | } 150 | 151 | .newspaper .piece.wn { 152 | background-image: url(../assets/theme/newspaper/pieces/wn.png); 153 | } 154 | 155 | .newspaper .piece.wb { 156 | background-image: url(../assets/theme/newspaper/pieces/wb.png); 157 | } 158 | 159 | .newspaper .piece.wq { 160 | background-image: url(../assets/theme/newspaper/pieces/wq.png); 161 | } 162 | 163 | .newspaper .piece.wk { 164 | background-image: url(../assets/theme/newspaper/pieces/wk.png); 165 | } 166 | 167 | .newspaper .piece.bp { 168 | background-image: url(../assets/theme/newspaper/pieces/bp.png); 169 | } 170 | 171 | .newspaper .piece.br { 172 | background-image: url(../assets/theme/newspaper/pieces/br.png); 173 | } 174 | 175 | .newspaper .piece.bn { 176 | background-image: url(../assets/theme/newspaper/pieces/bn.png); 177 | } 178 | 179 | .newspaper .piece.bb { 180 | background-image: url(../assets/theme/newspaper/pieces/bb.png); 181 | } 182 | 183 | .newspaper .piece.bq { 184 | background-image: url(../assets/theme/newspaper/pieces/bq.png); 185 | } 186 | 187 | .newspaper .piece.bk { 188 | background-image: url(../assets/theme/newspaper/pieces/bk.png); 189 | } -------------------------------------------------------------------------------- /css/util.css: -------------------------------------------------------------------------------- 1 | .btn { 2 | white-space: nowrap; 3 | border: none; 4 | outline: none; 5 | padding: 5px 20px; 6 | height: 40px; 7 | border-radius: 4px; 8 | color: #c5c5c4; 9 | cursor: pointer; 10 | text-transform: capitalize; 11 | display: flex; 12 | align-items: center; 13 | justify-content: center; 14 | border-bottom: 3px solid transparent; 15 | user-select: none; 16 | } 17 | body{ 18 | /* background-color: white !important; */ 19 | } 20 | .popup{ 21 | position: fixed; 22 | bottom: 100px; 23 | padding: 6px 8px; 24 | border-radius: 5px; 25 | background-color: #e8e7e6; 26 | display: flex; 27 | gap: 10px; 28 | align-items: center; 29 | box-shadow: 2px 2px 5px 1px rgba(0, 0, 0, 0.3); 30 | z-index: 1000; 31 | transform: scale(0); 32 | opacity: 0; 33 | visibility: hidden; 34 | transition: .2s 0s cubic-bezier(0.27, 0.63, 0.51, 1.58); 35 | } 36 | .popup.active{ 37 | transform: scale(1); 38 | opacity: 1; 39 | visibility: visible; 40 | } 41 | .popup .icon{ 42 | background: url('../assets/icons/tick.png') no-repeat; 43 | background-size: contain; 44 | width: 18px; 45 | } 46 | 47 | .popup.danger .icon{ 48 | background: url('../assets/icons/cross.png') no-repeat; 49 | background-size: contain; 50 | } 51 | 52 | .toggle-btn { 53 | background-color: #75757566; 54 | color: #ffffffb8; 55 | border: 1px solid #ffffff33; 56 | width: 30px; 57 | height: 16px; 58 | border-radius: 50px; 59 | position: relative; 60 | cursor: pointer; 61 | transition: all .3s ease; /* Unified transition */ 62 | } 63 | 64 | .toggle-btn::before { 65 | content: ''; 66 | position: absolute; 67 | background-color: #e8e7e6; 68 | border: 1px solid #dad7d5; 69 | border-radius: 50%; 70 | height: 120%; 71 | aspect-ratio: 1; 72 | top: 50%; 73 | transform: translateY(-50%); 74 | left: -1px; 75 | transition: all .3s ease; 76 | } 77 | 78 | .toggle-btn.active { 79 | background-color: #5d9948; 80 | } 81 | 82 | .toggle-btn.active::before { 83 | left: 100%; 84 | transform: translate(-90%, -50%); 85 | } 86 | 87 | .btn i::before { 88 | font-size: 22px; 89 | font-weight: 800; 90 | } 91 | 92 | .white.crown-alt { 93 | aspect-ratio: 1; 94 | width: 16px; 95 | background: url('../assets/icons/white-crown-alt.png') no-repeat; 96 | background-size: 100%; 97 | } 98 | 99 | .black.crown-alt { 100 | aspect-ratio: 1; 101 | width: 16px; 102 | background: url('../assets/icons/black-crown-alt.png') no-repeat; 103 | background-size: 100%; 104 | } 105 | 106 | .btn.primary { 107 | background-color: #81b64c; 108 | border-color: #45753c; 109 | color: white; 110 | } 111 | 112 | .btn.primary:hover { 113 | filter: brightness(120%); 114 | box-shadow: 0px 0px 16px 0px #aef46721; 115 | } 116 | 117 | .btn.bold { 118 | font-weight: 800; 119 | font-size: 16px; 120 | border-radius: 10px; 121 | border-width: 4px; 122 | height: 60px; 123 | grid-column: 1/-1; 124 | text-shadow: 0 0.1rem 0 rgba(0, 0, 0, .4); 125 | height: 48px; 126 | } 127 | 128 | .btn.secondary { 129 | background-color: #32312f; 130 | border-color: #2c2b28; 131 | } 132 | 133 | .highlight, 134 | .capture-hint, 135 | .hint, 136 | .check { 137 | width: 12.5%; 138 | height: 12.5%; 139 | position: absolute; 140 | z-index: 2; 141 | } 142 | 143 | .highlight { 144 | background-color: var(--highlight); 145 | opacity: 0.5; 146 | } 147 | 148 | .capture-hint { 149 | border: 6px solid var(--alpha-dark); 150 | border-radius: 50%; 151 | } 152 | 153 | .hint { 154 | padding: 4.2%; 155 | border-radius: 50%; 156 | background-color: var(--alpha-dark); 157 | background-clip: content-box; 158 | } 159 | 160 | .check { 161 | background-color: rgba(255, 0, 0, 0.5); 162 | } 163 | 164 | .btn.secondary:hover { 165 | color: white; 166 | background-color: #454441; 167 | } 168 | 169 | 170 | 171 | .capture.bp-1 { 172 | aspect-ratio: .8/1; 173 | background-image: url('../assets/capture piece/capture-bp-1.png'); 174 | } 175 | 176 | .capture.bp-2 { 177 | background-image: url('../assets/capture piece/capture-bp-2.png'); 178 | aspect-ratio: 1.3/1; 179 | } 180 | 181 | .capture.bp-3 { 182 | background-image: url('../assets/capture piece/capture-bp-3.png'); 183 | aspect-ratio: 1.7/1; 184 | } 185 | 186 | .capture.bp-4 { 187 | background-image: url('../assets/capture piece/capture-bp-4.png'); 188 | aspect-ratio: 2.1/1; 189 | } 190 | 191 | .capture.bp-5 { 192 | background-image: url('../assets/capture piece/capture-bp-5.png'); 193 | aspect-ratio: 2.5/1; 194 | } 195 | 196 | .capture.bp-6 { 197 | background-image: url('../assets/capture piece/capture-bp-6.png'); 198 | aspect-ratio: 3/1; 199 | } 200 | 201 | .capture.bp-7 { 202 | background-image: url('../assets/capture piece/capture-bp-7.png'); 203 | aspect-ratio: 3.4/1; 204 | } 205 | 206 | .capture.bp-8 { 207 | background-image: url('../assets/capture piece/capture-bp-8.png'); 208 | aspect-ratio: 4/1; 209 | } 210 | 211 | .capture.wp-1 { 212 | aspect-ratio: .8/1; 213 | background-image: url('../assets/capture piece/capture-wp-1.png'); 214 | } 215 | 216 | .capture.wp-2 { 217 | background-image: url('../assets/capture piece/capture-wp-2.png'); 218 | aspect-ratio: 1.3/1; 219 | } 220 | 221 | .capture.wp-3 { 222 | background-image: url('../assets/capture piece/capture-wp-3.png'); 223 | aspect-ratio: 1.8/1; 224 | } 225 | 226 | .capture.wp-4 { 227 | background-image: url('../assets/capture piece/capture-wp-4.png'); 228 | aspect-ratio: 2.3/1; 229 | } 230 | 231 | .capture.wp-5 { 232 | background-image: url('../assets/capture piece/capture-wp-5.png'); 233 | aspect-ratio: 2.6/1; 234 | } 235 | 236 | .capture.wp-6 { 237 | background-image: url('../assets/capture piece/capture-wp-6.png'); 238 | aspect-ratio: 3.1/1; 239 | } 240 | 241 | .capture.wp-7 { 242 | background-image: url('../assets/capture piece/capture-wp-7.png'); 243 | aspect-ratio: 3.5/1; 244 | } 245 | 246 | .capture.wp-8 { 247 | background-image: url('../assets/capture piece/capture-wp-8.png'); 248 | aspect-ratio: 4/1; 249 | } 250 | 251 | .capture.wb-1 { 252 | background-image: url('../assets/capture piece/capture-wb-1.png'); 253 | aspect-ratio: .8/1; 254 | } 255 | 256 | .capture.wb-2 { 257 | background-image: url('../assets/capture piece/capture-wb-2.png'); 258 | aspect-ratio: 1.2/1; 259 | } 260 | 261 | .capture.wn-1 { 262 | background-image: url('../assets/capture piece/capture-wn-1.png'); 263 | aspect-ratio: .8/1; 264 | } 265 | 266 | .capture.wn-2 { 267 | background-image: url('../assets/capture piece/capture-wn-2.png'); 268 | aspect-ratio: 1.2/1; 269 | } 270 | 271 | .capture.wr-1 { 272 | background-image: url('../assets/capture piece/capture-wr-1.png'); 273 | aspect-ratio: .8/1; 274 | } 275 | 276 | .capture.wr-2 { 277 | background-image: url('../assets/capture piece/capture-wr-2.png'); 278 | aspect-ratio: 1.3/1; 279 | } 280 | 281 | .capture.wq-1 { 282 | background-image: url('../assets/capture piece/capture-wq-1.png'); 283 | aspect-ratio: 1/1; 284 | } 285 | 286 | 287 | .capture.bb-1 { 288 | background-image: url('../assets/capture piece/capture-bb-1.png'); 289 | aspect-ratio: .8/1; 290 | } 291 | 292 | .capture.bb-2 { 293 | background-image: url('../assets/capture piece/capture-bb-2.png'); 294 | aspect-ratio: 1.2/1; 295 | } 296 | 297 | .capture.bn-1 { 298 | background-image: url('../assets/capture piece/capture-bn-1.png'); 299 | aspect-ratio: .8/1; 300 | } 301 | 302 | .capture.bn-2 { 303 | background-image: url('../assets/capture piece/capture-bn-2.png'); 304 | aspect-ratio: 1.2/1; 305 | } 306 | 307 | .capture.br-1 { 308 | background-image: url('../assets/capture piece/capture-br-1.png'); 309 | aspect-ratio: .8/1; 310 | } 311 | 312 | .capture.br-2 { 313 | background-image: url('../assets/capture piece/capture-br-2.png'); 314 | aspect-ratio: 1.3/1; 315 | } 316 | 317 | .capture.bq-1 { 318 | background-image: url('../assets/capture piece/capture-bq-1.png'); 319 | aspect-ratio: 1/1; 320 | } 321 | 322 | 323 | 324 | 325 | 326 | .piece.wp { 327 | background-image: url(../assets/theme/classic/pieces/wp.png); 328 | } 329 | 330 | .piece.wr { 331 | background-image: url(../assets/theme/classic/pieces/wr.png); 332 | } 333 | 334 | .piece.wn { 335 | background-image: url(../assets/theme/classic/pieces/wn.png); 336 | } 337 | 338 | .piece.wb { 339 | background-image: url(../assets/theme/classic/pieces/wb.png); 340 | } 341 | 342 | .piece.wq { 343 | background-image: url(../assets/theme/classic/pieces/wq.png); 344 | } 345 | 346 | .piece.wk { 347 | background-image: url(../assets/theme/classic/pieces/wk.png); 348 | } 349 | 350 | .piece.bp { 351 | background-image: url(../assets/theme/classic/pieces/bp.png); 352 | } 353 | 354 | .piece.br { 355 | background-image: url(../assets/theme/classic/pieces/br.png); 356 | } 357 | 358 | .piece.bn { 359 | background-image: url(../assets/theme/classic/pieces/bn.png); 360 | } 361 | 362 | .piece.bb { 363 | background-image: url(../assets/theme/classic/pieces/bb.png); 364 | } 365 | 366 | .piece.bq { 367 | background-image: url(../assets/theme/classic/pieces/bq.png); 368 | } 369 | 370 | .piece.bk { 371 | background-image: url(../assets/theme/classic/pieces/bk.png); 372 | } 373 | 374 | 375 | .promotion-window.file-a { 376 | transform: translateX(0%); 377 | } 378 | 379 | .promotion-window.file-b { 380 | transform: translateX(100%); 381 | } 382 | 383 | .promotion-window.file-c { 384 | transform: translateX(200%); 385 | } 386 | 387 | .promotion-window.file-d { 388 | transform: translateX(300%); 389 | } 390 | 391 | .promotion-window.file-e { 392 | transform: translateX(400%); 393 | } 394 | 395 | .promotion-window.file-f { 396 | transform: translateX(500%); 397 | } 398 | 399 | .promotion-window.file-g { 400 | transform: translateX(600%); 401 | } 402 | 403 | .promotion-window.file-h { 404 | transform: translateX(700%); 405 | } 406 | 407 | .flipped .promotion-window.file-a { 408 | transform: translateX(700%); 409 | } 410 | 411 | .flipped .promotion-window.file-b { 412 | transform: translateX(600%); 413 | } 414 | 415 | .flipped .promotion-window.file-c { 416 | transform: translateX(500%); 417 | } 418 | 419 | .flipped .promotion-window.file-d { 420 | transform: translateX(400%); 421 | } 422 | 423 | .flipped .promotion-window.file-e { 424 | transform: translateX(34px); 425 | } 426 | 427 | .flipped .promotion-window.file-f { 428 | transform: translateX(200%); 429 | } 430 | 431 | .flipped .promotion-window.file-g { 432 | transform: translateX(100%); 433 | } 434 | 435 | .flipped .promotion-window.file-h { 436 | transform: translateX(0%); 437 | } 438 | 439 | .flipped #a1 { 440 | transform: translate(700%, 0%); 441 | } 442 | 443 | .flipped #b1 { 444 | transform: translate(600%, 0%); 445 | } 446 | 447 | .flipped #c1 { 448 | transform: translate(500%, 0%); 449 | } 450 | 451 | .flipped #d1 { 452 | transform: translate(400%, 0%); 453 | } 454 | 455 | .flipped #e1 { 456 | transform: translate(300%, 0%); 457 | } 458 | 459 | .flipped #f1 { 460 | transform: translate(200%, 0%); 461 | } 462 | 463 | .flipped #g1 { 464 | transform: translate(100%, 0%); 465 | } 466 | 467 | .flipped #h1 { 468 | transform: translate(0%, 0%); 469 | } 470 | 471 | 472 | 473 | 474 | .flipped #a2 { 475 | transform: translate(700%, 100%); 476 | } 477 | 478 | .flipped #b2 { 479 | transform: translate(600%, 100%); 480 | } 481 | 482 | .flipped #c2 { 483 | transform: translate(500%, 100%); 484 | } 485 | 486 | .flipped #d2 { 487 | transform: translate(400%, 100%); 488 | } 489 | 490 | .flipped #e2 { 491 | transform: translate(300%, 100%); 492 | } 493 | 494 | .flipped #f2 { 495 | transform: translate(200%, 100%); 496 | } 497 | 498 | .flipped #g2 { 499 | transform: translate(100%, 100%); 500 | } 501 | 502 | .flipped #h2 { 503 | transform: translate(0%, 100%); 504 | } 505 | 506 | 507 | 508 | 509 | .flipped #a3 { 510 | transform: translate(700%, 200%); 511 | } 512 | 513 | .flipped #b3 { 514 | transform: translate(600%, 200%); 515 | } 516 | 517 | .flipped #c3 { 518 | transform: translate(500%, 200%); 519 | } 520 | 521 | .flipped #d3 { 522 | transform: translate(400%, 200%); 523 | } 524 | 525 | .flipped #e3 { 526 | transform: translate(300%, 200%); 527 | } 528 | 529 | .flipped #f3 { 530 | transform: translate(200%, 200%); 531 | } 532 | 533 | .flipped #g3 { 534 | transform: translate(100%, 200%); 535 | } 536 | 537 | .flipped #h3 { 538 | transform: translate(0%, 200%); 539 | } 540 | 541 | 542 | 543 | 544 | .flipped #a4 { 545 | transform: translate(700%, 300%); 546 | } 547 | 548 | .flipped #b4 { 549 | transform: translate(600%, 300%); 550 | } 551 | 552 | .flipped #c4 { 553 | transform: translate(500%, 300%); 554 | } 555 | 556 | .flipped #d4 { 557 | transform: translate(400%, 300%); 558 | } 559 | 560 | .flipped #e4 { 561 | transform: translate(300%, 300%); 562 | } 563 | 564 | .flipped #f4 { 565 | transform: translate(200%, 300%); 566 | } 567 | 568 | .flipped #g4 { 569 | transform: translate(100%, 300%); 570 | } 571 | 572 | .flipped #h4 { 573 | transform: translate(0%, 300%); 574 | } 575 | 576 | 577 | 578 | 579 | .flipped #a5 { 580 | transform: translate(700%, 400%); 581 | } 582 | 583 | .flipped #b5 { 584 | transform: translate(600%, 400%); 585 | } 586 | 587 | .flipped #c5 { 588 | transform: translate(500%, 400%); 589 | } 590 | 591 | .flipped #d5 { 592 | transform: translate(400%, 400%); 593 | } 594 | 595 | .flipped #e5 { 596 | transform: translate(300%, 400%); 597 | } 598 | 599 | .flipped #f5 { 600 | transform: translate(200%, 400%); 601 | } 602 | 603 | .flipped #g5 { 604 | transform: translate(100%, 400%); 605 | } 606 | 607 | .flipped #h5 { 608 | transform: translate(0%, 400%); 609 | } 610 | 611 | 612 | 613 | 614 | .flipped #a6 { 615 | transform: translate(700%, 500%); 616 | } 617 | 618 | .flipped #b6 { 619 | transform: translate(600%, 500%); 620 | } 621 | 622 | .flipped #c6 { 623 | transform: translate(500%, 500%); 624 | } 625 | 626 | .flipped #d6 { 627 | transform: translate(400%, 500%); 628 | } 629 | 630 | .flipped #e6 { 631 | transform: translate(300%, 500%); 632 | } 633 | 634 | .flipped #f6 { 635 | transform: translate(200%, 500%); 636 | } 637 | 638 | .flipped #g6 { 639 | transform: translate(100%, 500%); 640 | } 641 | 642 | .flipped #h6 { 643 | transform: translate(0%, 500%); 644 | } 645 | 646 | 647 | 648 | 649 | .flipped #a7 { 650 | transform: translate(700%, 600%); 651 | } 652 | 653 | .flipped #b7 { 654 | transform: translate(600%, 600%); 655 | } 656 | 657 | .flipped #c7 { 658 | transform: translate(500%, 600%); 659 | } 660 | 661 | .flipped #d7 { 662 | transform: translate(400%, 600%); 663 | } 664 | 665 | .flipped #e7 { 666 | transform: translate(300%, 600%); 667 | } 668 | 669 | .flipped #f7 { 670 | transform: translate(200%, 600%); 671 | } 672 | 673 | .flipped #g7 { 674 | transform: translate(100%, 600%); 675 | } 676 | 677 | .flipped #h7 { 678 | transform: translate(0%, 600%); 679 | } 680 | 681 | 682 | 683 | 684 | .flipped #a8 { 685 | transform: translate(700%, 700%); 686 | } 687 | 688 | .flipped #b8 { 689 | transform: translate(600%, 700%); 690 | } 691 | 692 | .flipped #c8 { 693 | transform: translate(500%, 700%); 694 | } 695 | 696 | .flipped #d8 { 697 | transform: translate(400%, 700%); 698 | } 699 | 700 | .flipped #e8 { 701 | transform: translate(300%, 700%); 702 | } 703 | 704 | .flipped #f8 { 705 | transform: translate(200%, 700%); 706 | } 707 | 708 | .flipped #g8 { 709 | transform: translate(100%, 700%); 710 | } 711 | 712 | .flipped #h8 { 713 | transform: translate(0%, 700%); 714 | } 715 | 716 | 717 | #a1 { 718 | transform: translate(0%, 700%); 719 | } 720 | 721 | #b1 { 722 | transform: translate(100%, 700%); 723 | } 724 | 725 | #c1 { 726 | transform: translate(200%, 700%); 727 | } 728 | 729 | #d1 { 730 | transform: translate(300%, 700%); 731 | } 732 | 733 | #e1 { 734 | transform: translate(400%, 700%); 735 | } 736 | 737 | #f1 { 738 | transform: translate(500%, 700%); 739 | } 740 | 741 | #g1 { 742 | transform: translate(600%, 700%); 743 | } 744 | 745 | #h1 { 746 | transform: translate(700%, 700%); 747 | } 748 | 749 | 750 | #a2 { 751 | transform: translate(0%, 600%); 752 | } 753 | 754 | #b2 { 755 | transform: translate(100%, 600%); 756 | } 757 | 758 | #c2 { 759 | transform: translate(200%, 600%); 760 | } 761 | 762 | #d2 { 763 | transform: translate(300%, 600%); 764 | } 765 | 766 | #e2 { 767 | transform: translate(400%, 600%); 768 | } 769 | 770 | #f2 { 771 | transform: translate(500%, 600%); 772 | } 773 | 774 | #g2 { 775 | transform: translate(600%, 600%); 776 | } 777 | 778 | #h2 { 779 | transform: translate(700%, 600%); 780 | } 781 | 782 | 783 | #a3 { 784 | transform: translate(0%, 500%); 785 | } 786 | 787 | #b3 { 788 | transform: translate(100%, 500%); 789 | } 790 | 791 | #c3 { 792 | transform: translate(200%, 500%); 793 | } 794 | 795 | #d3 { 796 | transform: translate(300%, 500%); 797 | } 798 | 799 | #e3 { 800 | transform: translate(400%, 500%); 801 | } 802 | 803 | #f3 { 804 | transform: translate(500%, 500%); 805 | } 806 | 807 | #g3 { 808 | transform: translate(600%, 500%); 809 | } 810 | 811 | #h3 { 812 | transform: translate(700%, 500%); 813 | } 814 | 815 | 816 | #a4 { 817 | transform: translate(0%, 400%); 818 | } 819 | 820 | #b4 { 821 | transform: translate(100%, 400%); 822 | } 823 | 824 | #c4 { 825 | transform: translate(200%, 400%); 826 | } 827 | 828 | #d4 { 829 | transform: translate(300%, 400%); 830 | } 831 | 832 | #e4 { 833 | transform: translate(400%, 400%); 834 | } 835 | 836 | #f4 { 837 | transform: translate(500%, 400%); 838 | } 839 | 840 | #g4 { 841 | transform: translate(600%, 400%); 842 | } 843 | 844 | #h4 { 845 | transform: translate(700%, 400%); 846 | } 847 | 848 | 849 | #a5 { 850 | transform: translate(0%, 300%); 851 | } 852 | 853 | #b5 { 854 | transform: translate(100%, 300%); 855 | } 856 | 857 | #c5 { 858 | transform: translate(200%, 300%); 859 | } 860 | 861 | #d5 { 862 | transform: translate(300%, 300%); 863 | } 864 | 865 | #e5 { 866 | transform: translate(400%, 300%); 867 | } 868 | 869 | #f5 { 870 | transform: translate(500%, 300%); 871 | } 872 | 873 | #g5 { 874 | transform: translate(600%, 300%); 875 | } 876 | 877 | #h5 { 878 | transform: translate(700%, 300%); 879 | } 880 | 881 | 882 | #a6 { 883 | transform: translate(0%, 200%); 884 | } 885 | 886 | #b6 { 887 | transform: translate(100%, 200%); 888 | } 889 | 890 | #c6 { 891 | transform: translate(200%, 200%); 892 | } 893 | 894 | #d6 { 895 | transform: translate(300%, 200%); 896 | } 897 | 898 | #e6 { 899 | transform: translate(400%, 200%); 900 | } 901 | 902 | #f6 { 903 | transform: translate(500%, 200%); 904 | } 905 | 906 | #g6 { 907 | transform: translate(600%, 200%); 908 | } 909 | 910 | #h6 { 911 | transform: translate(700%, 200%); 912 | } 913 | 914 | #a7 { 915 | transform: translate(0%, 100%); 916 | } 917 | 918 | #b7 { 919 | transform: translate(100%, 100%); 920 | } 921 | 922 | #c7 { 923 | transform: translate(200%, 100%); 924 | } 925 | 926 | #d7 { 927 | transform: translate(300%, 100%); 928 | } 929 | 930 | #e7 { 931 | transform: translate(400%, 100%); 932 | } 933 | 934 | #f7 { 935 | transform: translate(500%, 100%); 936 | } 937 | 938 | #g7 { 939 | transform: translate(600%, 100%); 940 | } 941 | 942 | #h7 { 943 | transform: translate(700%, 100%); 944 | } 945 | 946 | #a8 { 947 | transform: translate(0%, 0%); 948 | } 949 | 950 | #b8 { 951 | transform: translate(100%, 0%); 952 | } 953 | 954 | #c8 { 955 | transform: translate(200%, 0%); 956 | } 957 | 958 | #d8 { 959 | transform: translate(300%, 0%); 960 | } 961 | 962 | #e8 { 963 | transform: translate(400%, 0%); 964 | } 965 | 966 | #f8 { 967 | transform: translate(500%, 0%); 968 | } 969 | 970 | #g8 { 971 | transform: translate(600%, 0%); 972 | } 973 | 974 | #h8 { 975 | transform: translate(700%, 0%); 976 | } -------------------------------------------------------------------------------- /desktop.ini: -------------------------------------------------------------------------------- 1 | [ViewState] 2 | Mode= 3 | Vid= 4 | FolderType=Generic 5 | -------------------------------------------------------------------------------- /gm2600.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhijeetSinghRajput/ChessEngine/36c371be11c9d601c74a9b0dc3442d2efdf71661/gm2600.bin -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |devki
54 | 55 |acharya
138 | 139 |acharya
242 |vs
244 |devki
250 |FEN
277 | 279 |PGN
282 | 283 |