Abstract Play lets you tune how games look on your account: player piece colours, board drawing colours, optional board layout tweaks, and (advanced) per-game CSS. Settings are saved to your profile and follow you across devices when you are logged in.
Questions? Join Discord in #customization (pinned posts have extra links).
GAMEUID with the game’s meta id, e.g. complica).The page shows a live preview of a sample board for that game (loaded from the site’s thumbnail JSON when available).
Use the scope control at the top:
Build a palette of colours used for player pieces:
Some games show Developer hints under the palette (which slot maps to which player). Those come from the game author, not from wiki palette tables.
Choose My preferred colour so your pieces use that slot when the game allows. You can set a global default or override it for the current game only.
Under Board Colours, pick a property (background, board, strokes, borders, labels, annotations, fill) and set its colour. Help text under each property explains what it affects in the renderer.
These map to the drawing colour context used when the board is rendered.
Expand Board and pieces for renderer overrides:
Fix any preflight errors before saving. The saved render block has a size limit (~8 KiB); trim glyph maps if save is rejected.
Reset board layout overrides clears render overrides for the current scope without deleting your colours.
Expand Custom CSS on the Customize screen to add CSS scoped to this game’s board. Saved CSS is stored on your account when you click Save Settings. Scope selectors to the board wrapper, e.g. div.board._meta_complica (replace complica with the game’s meta id).
Audience: You should already be comfortable with HTML/CSS and your browser’s developer tools. The board DOM is not a stable API — class names, ids, and SVG structure can change as the renderer evolves. Prefer Player colours, Board colours, coordinate label size, and glyph replacements on the Customize screen before reaching for CSS.
squares boards) do not expose separate light/dark cell targets like checkered boards.svg#theBoardSVG:defs / symbol — reusable glyphs (ids like aprender-glyph-…; opaque but stable per glyph). Customize used piece instances in g#pieces; to restyle a glyph everywhere, target the symbol.g#labels — row/column labels (often easier to adjust with Coordinate label size on Customize).g#gridlines — grid lines and some markers.g#tiles — tile-based boards.g#pieces — piece instances (usually use elements pointing at symbols).class names like aprender-marker-… / aprender-annotation-….data-playerfill=true and/or data-playerstroke=true — target those when overriding fills/strokes on complex glyphs.
A second SVG (svg#theStackSVG) appears for some stacking renderers; most games only use theBoardSVG.
CSS variables you may set on the board container (names may change over time):
–svg-label-color — label and some chrome text/lines–svg-gridline-color — gridlines and related strokes–svg-default-fill — default filled cells (e.g. blocked squares)–svg-volcano-caps — Volcano cap colour (dark-mode visibility)Do not paste CSS you do not understand. Abstract Play is not responsible for broken layouts from custom CSS. For help, use #customization on Discord.
Paste snippets into the Custom CSS box on Customize, then Save Settings. Adjust selectors for your game and inspect the live board if something does not match.
Change a piece colour (find the symbol id via devtools — inspect a piece → follow href to defs):
symbol#aprender-glyph-82ae1f37b40e1 *[data-playerfill=true] {
fill: #0f0;
}
Labels (prefer Coordinate label size when opacity/font size is enough):
g#labels text {
opacity: 0.5;
stroke: black;
fill: white;
font-family: cursive;
}
Gridlines:
g#gridlines line {
stroke: red;
stroke-width: 3;
}
Background image (on the board wrapper or the SVG — test which fits your layout):
div.board._meta_complica {
background-image: url(https://example.com/your-texture.jpg);
}
svg#theBoardSVG {
background-image: url(https://example.com/your-texture.jpg);
}
This is separate from site theme colours (light/dark chrome), which you can adjust from the navbar theme control — that changes page chrome, not the game board palette.
Implementation details (how CSS is loaded in React, account vs localStorage, renderer wiring): https://docs.abstractplay.com/front/subsystems/customize/
Power users can edit Settings JSON directly (including render.board, render.glyphmap, render.options) and paste a full blob, then save.