/* Illustrated previews and live boards share the generated puzzle-palette.css. */
body[data-difficulty] :is(.board,.queens-board,.collection-board){--board-paper:var(--puzzle-paper);--board-tile:var(--puzzle-tile);--board-ink:var(--puzzle-ink);--board-green:var(--puzzle-sage);color:var(--puzzle-ink);font-family:Manrope,Arial,sans-serif}
/* Sudoku retains readable 3×3 divisions, with the same warm tiled surface. */
body[data-puzzle=sudoku] .board{background:var(--puzzle-paper);border-color:#a7b99e;border-radius:6px;box-shadow:0 4px 14px #294d400a}
body[data-puzzle=sudoku] .board .cell{background:var(--puzzle-tile);color:var(--puzzle-ink);font-family:Manrope,Arial,sans-serif;font-weight:600;border-right-color:var(--puzzle-paper);border-bottom-color:var(--puzzle-paper)}
body[data-puzzle=sudoku] .board .cell:nth-child(3n){border-right-color:#a7b99e}
body[data-puzzle=sudoku] .board .cell:is(:nth-child(n+19):nth-child(-n+27),:nth-child(n+46):nth-child(-n+54)){border-bottom-color:#a7b99e}
body[data-puzzle=sudoku] .board .cell.given{font-weight:800}
body[data-puzzle=sudoku] .board .cell.entered{color:#527a79}
body[data-puzzle=sudoku] .board .cell.peer{background:#e0e9d9}
body[data-puzzle=sudoku] .board .cell.same{background:#d3e2ca}
body[data-puzzle=sudoku] .board .cell.selected{background:#cbdcbe}
body[data-puzzle=sudoku] .board .cell.conflict{background:#f2d6cf;color:#983d2b}
/* Queens keeps single region boundaries and its existing conflict overlay. */
body[data-puzzle=queens] .queen-cell{color:var(--puzzle-ink)}
body[data-puzzle=queens] .queens-board{box-shadow:0 4px 14px #294d400a}
/* Give the smaller grid games the illustrations' softly separated square tiles. */
body[data-puzzle] .collection-board:is(.nonograms,.tents,.minesweeper,.number-trail) .collection-cell{border-radius:2px}
body[data-puzzle=nonograms] .nonograms .collection-cell.filled{background:var(--puzzle-sage)}
body[data-puzzle=tents] .tents .fixed{background:var(--puzzle-tile);color:var(--puzzle-sage)}
body[data-puzzle=tents] .tent-icon{color:var(--puzzle-terracotta)}
body[data-puzzle=bridges] .island{background:var(--puzzle-paper);border-color:var(--puzzle-sage);color:var(--puzzle-ink);font-family:Manrope,Arial,sans-serif}
body[data-puzzle=bridges] .island-complete{background:#e0ead8}
body[data-puzzle=bridges] .bridge-lines line:not(.bridge-error):not(.check-error){stroke:var(--puzzle-path)}
body[data-puzzle=loop] .loop-edge.drawn:not(.loop-branch-error):not(.check-error)::after{background:var(--puzzle-path)}
body[data-puzzle=number-trail] .number-trail .fixed{background:var(--puzzle-tile);font-weight:800}
body[data-puzzle=number-trail] .number-trail .trail-endpoint{background:var(--puzzle-path);color:white}
/* Decorative palettes never obscure errors or the state of an island or clue. */
body[data-puzzle] .collection-board .collection-cell:is(.check-error,.tent-error,.trail-conflict,.mine){background:#f2d6cf!important;color:#983d2b}
body[data-puzzle=bridges] .island-error{background:#f2d6cf;border-color:#bd563e;color:#983d2b}
body[data-puzzle=queens] .queen-cell:is(.queen-conflict,.check-error){color:#983d2b}
body[data-puzzle=word-search] .word-search .collection-cell.found{color:#fff;text-shadow:0 1px 2px #294d4066}

/* Bolder connections retain the same generous pointer/touch targets. */
body[data-puzzle=loop] .loop-edge.horizontal::after,body[data-puzzle=loop] .loop-edge.horizontal.excluded::after{height:5px;top:calc(50% - 2.5px);border-radius:3px}
body[data-puzzle=loop] .loop-edge.vertical::after,body[data-puzzle=loop] .loop-edge.vertical.excluded::after{width:5px;left:calc(50% - 2.5px);border-radius:3px}
body[data-puzzle=loop] .loop-dot{position:relative;z-index:1;pointer-events:none}
body[data-puzzle=loop] .loop-dot::after{width:9px;height:9px}
body[data-puzzle=bridges] .bridge-lines line{stroke-width:4.5px}
body[data-puzzle=bridges] .bridge-space.horizontal:not(.bridge-placed)::before{border-top-width:4.5px}
body[data-puzzle=bridges] .bridge-space.vertical:not(.bridge-placed)::before{border-left-width:4.5px}
