/* Game screens drawn as the same objects the homepage shows (assets/js/table-objects.js).
   Loaded after club.css. Rules, hit areas and markup are unchanged; only paint is. */
:root{--obj-wood:#7a4e2c;--obj-wood-dark:#4a2f1c;--obj-wood-deep:#3b2516;--obj-wood-light:#d9a865;--obj-wood-mid:#b5793f;--obj-paper:#faf7ee;--obj-cream:#f5f0df;--obj-rust:#963e32;--obj-gold:#d7ba62;--obj-green:#2f6b4f;--obj-blue:#2f5d8a;--obj-ink:#1d241d;--obj-grass:#5f7f45;--obj-grass-dark:#4a6636;--obj-soil:#d8b88a;--obj-copper:#c47a3f;--obj-water:#3d6b78;--obj-hand:'Segoe Print','Bradley Hand','Comic Sans MS',cursive}

/* ---------- Puzzles ---------- */

/* 2048: a wooden tray of numbered wooden blocks */
.game-panel .g2048-grid{background:var(--obj-wood-dark);padding:10px;gap:8px;border-radius:10px;box-shadow:inset 0 4px 10px #0007,0 8px 16px #0004;border:0}
.game-panel .g2048-cell{border-radius:3px;font-family:var(--table-type);font-weight:400;color:var(--obj-wood-dark);box-shadow:inset -5px -5px 0 #0000002e,inset 4px 4px 0 #ffffff2e}
.game-panel .g2048-cell.v0{background:var(--obj-wood-deep);box-shadow:inset 0 3px 6px #0008}
.game-panel .g2048-cell.v2{background:#e8c890}.game-panel .g2048-cell.v4{background:var(--obj-wood-light)}
.game-panel .g2048-cell.v8{background:#c48a4f}.game-panel .g2048-cell.v16{background:var(--obj-wood-mid);color:var(--obj-cream)}
.game-panel .g2048-cell.v32{background:#9a5f30;color:var(--obj-cream)}.game-panel .g2048-cell.v64{background:var(--obj-wood);color:var(--obj-cream)}
.game-panel .g2048-cell.v128{background:#b5793f;color:var(--obj-cream);outline:2px solid var(--obj-gold);outline-offset:-5px}
.game-panel .g2048-cell.v256{background:#a8473a;color:var(--obj-cream)}.game-panel .g2048-cell.v512{background:var(--obj-green);color:var(--obj-cream)}
.game-panel .g2048-cell.v1024{background:var(--obj-rust);color:var(--obj-cream)}.game-panel .g2048-cell.v2048{background:var(--obj-gold);color:var(--obj-wood-dark)}

/* Mahjong: cream tiles with thick green backs */
.game-panel .mah-tile{background:var(--obj-cream);border:0;border-radius:7px;box-shadow:4px 5px 0 var(--obj-green),6px 8px 8px #0005}
.game-panel .mah-tile.blocked{filter:brightness(.82) saturate(.8)}
.game-panel .mah-tile.selected{background:#fbefc9;box-shadow:0 0 0 3px var(--obj-gold),4px 5px 0 var(--obj-green),6px 8px 8px #0005}

/* Sudoku: a spiral graph-paper pad, pencil answers in red */
.game-panel .sudoku-grid{position:relative;background:#fbfbf6;padding:26px 10px 10px;border-radius:2px;box-shadow:0 12px 22px #0006;border:0;gap:0}
.game-panel .sudoku-grid::before{content:'';position:absolute;left:12px;right:12px;top:-8px;height:22px;background:repeating-linear-gradient(90deg,#8c8a82 0 4px,transparent 4px 16px);border-radius:2px;pointer-events:none}
.game-panel .sudoku-cell{background:transparent;border:1px solid #c9d6e3;color:var(--obj-rust);font-family:var(--obj-hand);font-weight:600}
.game-panel .sudoku-cell.given{background:transparent;color:var(--obj-ink);font-family:system-ui,sans-serif;font-weight:800}
.game-panel .sudoku-cell.box-right{border-right:2px solid var(--obj-ink)}.game-panel .sudoku-cell.box-bottom{border-bottom:2px solid var(--obj-ink)}
.game-panel .sudoku-cell.related{background:#eef3f8}.game-panel .sudoku-cell.same-value{background:#f6e7b0}
.game-panel .sudoku-cell.selected{background:#f3dd8c;outline:2px solid var(--obj-gold);outline-offset:-2px}
.game-panel .sudoku-cell .pencil-marks{color:#8c8a82;font-family:var(--obj-hand)}

/* Pixel Nonograms: linen stretched in a wooden embroidery hoop, stitched squares */
.game-panel .nono-board{background:#efe9dc;padding:14px;border-radius:22px;border:10px solid #c48a4f;box-shadow:inset 0 0 0 2px #a46d38,0 10px 20px #0005;color:var(--obj-ink)}
.game-panel .nono-cell{background:#efe9dc;border-color:#d8cfbc;color:#9b8f7a}
.game-panel .nono-cell.filled{background:var(--obj-rust) repeating-linear-gradient(45deg,#0000 0 3px,#ffffff1f 3px 4px);box-shadow:inset 0 0 0 2px #efe9dc}
.game-panel .nono-cell.crossed{background:#e4dccb;color:#8f8370}
.game-panel .nono-corner,.game-panel .nono-corner *{color:#6b5a48}
.game-panel .nono-cell.five-left{border-left-color:#a46d38}.game-panel .nono-cell.five-top{border-top-color:#a46d38}
.game-panel :is(.nono-col-clue,.nono-row-clue),.game-panel :is(.nono-col-clue,.nono-row-clue) span{color:var(--obj-ink);opacity:1}.game-panel :is(.nono-col-clue,.nono-row-clue).done span{color:#9b8f7a}

/* Minesweeper: a grass plot you dig up */
.game-panel .mine-grid{background:var(--obj-grass-dark);padding:8px;gap:3px;border-radius:8px;box-shadow:0 10px 18px #0005}
.game-panel .mine-cell{background:var(--obj-grass);border-radius:3px;box-shadow:inset 0 3px 0 #ffffff26,inset 0 -3px 0 #0000002b;color:var(--obj-ink);font-family:var(--table-type)}
.game-panel .mine-cell.state-1{background:var(--obj-soil);box-shadow:inset 0 2px 4px #0003}
.game-panel .mine-cell.state-2{background:var(--obj-grass);color:var(--obj-rust)}
.game-panel .mine-cell.boom{background:var(--obj-rust);color:var(--obj-cream)}
.game-panel .mine-readout{background:var(--obj-paper);color:var(--obj-ink)}

/* Mastermind: a wooden pegboard */
.game-panel .mm-board{background:var(--obj-wood);border:0;border-radius:12px;padding:10px 12px;box-shadow:inset 0 -6px 0 var(--obj-wood-dark),0 10px 18px #0005;color:var(--obj-cream)}
.game-panel .mm-row{background:transparent;border-color:#ffffff1a}.game-panel .mm-row.active{background:#ffffff14}
.game-panel .mm-num{color:var(--obj-gold)}
.game-panel .mm-peg{box-shadow:inset -2px -3px 0 #0003,inset 2px 2px 0 #fff4,0 2px 3px #0005;border:0}
.game-panel .mm-peg[style*="#39485a"]{--peg:var(--obj-wood-dark)!important;box-shadow:inset 0 3px 5px #000a}
.game-panel .mm-score i{border-color:#ffffff55;background:var(--obj-wood-dark)}.game-panel .mm-score i.exact{background:var(--obj-ink);border-color:var(--obj-ink)}.game-panel .mm-score i.near{background:var(--obj-cream);border-color:var(--obj-cream)}
.game-panel .mm-shell [style*="#edcc6c"]{--peg:var(--obj-gold)!important}.game-panel .mm-shell [style*="#83c5b4"]{--peg:var(--obj-green)!important}.game-panel .mm-shell [style*="#f29b62"]{--peg:var(--obj-rust)!important}.game-panel .mm-shell [style*="#b7a5db"]{--peg:var(--obj-blue)!important}

/* Tiny Town: a green toy base with wooden lots */
.game-panel .town-grid{background:var(--obj-grass);padding:10px;gap:6px;border-radius:14px;box-shadow:0 8px 0 var(--obj-grass-dark),0 14px 18px #0005}
.game-panel .town-lot{background:#6f8f52;border:0;border-radius:4px;box-shadow:inset 0 -3px 0 #0002;color:var(--obj-ink)}
.game-panel .town-lot.road{background:#c9bfa3}.game-panel .town-lot.house{background:var(--obj-cream)}.game-panel .town-lot.shop{background:var(--obj-wood-light)}.game-panel .town-lot.factory{background:#c48a7a}.game-panel .town-lot.park{background:#3f6b3a;color:var(--obj-cream)}

/* ---------- Across the table ---------- */

/* Chess: a wooden board */
.game-panel .chess-board{border:10px solid var(--obj-wood-dark);border-radius:4px;box-shadow:0 12px 22px #0006}
.game-panel .chess-square.light{background:#e8c890}.game-panel .chess-square.dark{background:var(--obj-wood)}
.game-panel :is(.chess-rank,.chess-file){color:var(--obj-cream)}

/* Backgammon: wooden board, rust and cream points */
.game-panel .bg-board{background:var(--obj-wood-light);border:10px solid var(--obj-wood);border-radius:6px;box-shadow:0 12px 22px #0006}
.game-panel .bg-point::before{background:var(--obj-rust)}.game-panel .bg-point.cool::before{background:var(--obj-cream)}
.game-panel .bg-point small{color:var(--obj-wood-dark)}
.game-panel .bg-divider{background:var(--obj-wood)}
.game-panel .bg-checker.white{background:var(--obj-cream);border-color:#a89a78}.game-panel .bg-checker.black{background:var(--obj-ink);border-color:#000}

/* Yacht Dice: a leather cup tipped onto a felt dice tray, and a notebook scorepad */
.game-panel .yacht-table{display:flex;align-items:center;gap:18px;padding:18px 22px;border-radius:16px;background:#2b4a3a;box-shadow:inset 0 0 0 8px var(--obj-wood),inset 0 0 0 10px var(--obj-wood-dark),inset 0 10px 24px #0007}
.game-panel .yacht-cup{flex:0 0 120px;width:120px;height:auto;filter:drop-shadow(0 6px 4px #0005)}
.game-panel .yacht-table .yacht-dice{flex:1;margin:0}
.game-panel .yacht-die{background:var(--obj-cream);color:var(--obj-ink);border:0;border-radius:12px;box-shadow:0 5px 0 #c9bfa3,0 10px 14px #0006;transition:transform .2s}
.game-panel .yacht-die:nth-child(1){transform:rotate(-6deg)}.game-panel .yacht-die:nth-child(2){transform:rotate(4deg) translateY(6px)}.game-panel .yacht-die:nth-child(3){transform:rotate(-2deg)}.game-panel .yacht-die:nth-child(4){transform:rotate(7deg) translateY(-4px)}.game-panel .yacht-die:nth-child(5){transform:rotate(-4deg) translateY(4px)}
.game-panel .yacht-die.held{transform:translateY(-10px) rotate(0);box-shadow:0 0 0 3px var(--obj-gold),0 5px 0 #c9bfa3,0 14px 16px #0006}
.game-panel .yacht-die small{color:#6b6458}.game-panel .yacht-die.held small{color:var(--obj-rust);font-weight:800}
.game-panel .yacht-scorecard{position:relative;background:var(--obj-paper);padding:16px 18px 14px 42px;border-radius:2px;box-shadow:0 12px 22px #0006;color:var(--obj-ink);transform:rotate(-.6deg)}
.game-panel .yacht-scorecard::before{content:'';position:absolute;top:0;bottom:0;left:28px;width:2px;background:#e3a3a3}
.game-panel .yacht-scorecard::after{content:'';position:absolute;left:14px;right:14px;top:-9px;height:18px;background:repeating-linear-gradient(90deg,#8c8a82 0 4px,transparent 4px 18px);pointer-events:none}
.game-panel .yacht-category{background:transparent;color:var(--obj-ink);border:0;border-bottom:1px solid #c9d6e3;border-radius:0}
.game-panel .yacht-category strong{font-family:var(--obj-hand);color:#8c8a82;font-weight:600}
.game-panel .yacht-category:disabled:not(.used){opacity:1;color:#57524a}
.game-panel .yacht-category.used{background:transparent;color:#6b6560}.game-panel .yacht-category.used strong{color:var(--obj-rust);font-size:20px}
.game-panel .yacht-category.chosen{background:#f6e7b0;outline:2px solid var(--obj-gold)}
.game-panel .yacht-category:not(:disabled):hover{background:#f3e6b8}
.game-panel .yacht-bonuses{color:var(--obj-cream)}
@media (max-width:650px){.game-panel .yacht-table{padding:12px 10px 14px;gap:6px}.game-panel .yacht-cup{flex-basis:54px;width:54px}.game-panel .yacht-scorecard{padding-left:30px}.game-panel .yacht-scorecard::before{left:18px}}

/* Connect Four: a wooden frame; you play the gold discs, the computer the rust ones */
.game-panel .connect-grid{background:var(--obj-wood);padding:10px;border-radius:14px;box-shadow:inset 0 -6px 0 var(--obj-wood-dark),0 12px 20px #0005}
.game-panel .connect-cell i{background:#243b30;box-shadow:inset 0 3px 5px #000a}
.game-panel .connect-cell.p1 i,.game-panel .connect-key .p1,.game-panel .connect-key i.p1{background:var(--obj-gold)}
.game-panel .connect-cell.p2 i,.game-panel .connect-key .p2,.game-panel .connect-key i.p2{background:var(--obj-rust)}
.game-panel .connect-cell:is(.p1,.p2) i{box-shadow:inset -3px -4px 0 #0004,inset 3px 3px 0 #fff3}

/* Battleship: pencil on graph paper */
.game-panel .sea-grid{background:var(--obj-paper);padding:8px;gap:0;border-radius:2px;box-shadow:0 10px 20px #0005}
.game-panel .sea-cell{background:transparent;box-shadow:inset 0 0 0 1px #c9d6e3;color:#2a2a28;border-radius:0}
.game-panel .sea-cell:not(:disabled):hover{background:#f3e6b8}
.game-panel .sea-cell.ship{background:#2a2a2814;box-shadow:inset 0 0 0 1px #c9d6e3,inset 0 0 0 4px var(--obj-paper),inset 0 0 0 6px #2a2a28;color:#2a2a28}
.game-panel .sea-cell.hit{background:linear-gradient(45deg,#0000 44%,var(--obj-rust) 44% 56%,#0000 56%),linear-gradient(-45deg,#0000 44%,var(--obj-rust) 44% 56%,#0000 56%);color:var(--obj-rust)}
.game-panel .sea-cell.miss{background:radial-gradient(circle,#0000 0 22%,#2a2a28 23% 30%,#0000 31%);color:#2a2a28}

/* Block Stack: wooden blocks in a wooden tray */
.game-panel .block-grid{background:var(--obj-wood-dark);padding:8px;gap:3px;border-radius:8px;box-shadow:inset 0 3px 8px #0008,0 10px 18px #0005}
.game-panel .block-cell{background:var(--obj-wood-deep);border:0;border-radius:2px;box-shadow:inset 0 2px 4px #0007}
.game-panel .block-cell.filled{background:var(--block-color);border-radius:3px;box-shadow:inset 3px 3px 0 #ffffff40,inset -3px -3px 0 #0004}
.game-panel .block-tray{background:#ffffff0d;border-radius:8px}

/* ---------- A little order, please ---------- */

/* Tiny Dispatch: pavements on a green town map */
.game-panel .dispatch-board{background:var(--obj-grass);padding:8px;border-radius:10px;box-shadow:0 10px 18px #0005}
.game-panel .dispatch-cell{background:#ddd1b4;border:0;border-radius:4px;box-shadow:inset 0 -3px 0 #0001}
.game-panel .dispatch-cell.blocked{background:#6f8f52}

/* Shelf Shift: a wooden shelf */
.game-panel .shelf-board{background:var(--obj-wood-mid);padding:10px;gap:0;border-radius:4px;box-shadow:0 12px 20px #0005}
.game-panel .shelf-cell{background:#8a5a33;border:0;border-bottom:7px solid var(--obj-wood);box-shadow:inset 0 6px 10px #0004;border-radius:0}

/* Fix the Flow: copper pipes */
.game-panel .flow-board{background:#24342c;padding:8px;border-radius:8px;box-shadow:0 10px 18px #0005}
.game-panel .flow-cell{background:#2f4339}.game-panel .flow-cell:hover{background:#3a5145}
.game-panel .flow-cell path[stroke="#365d60"]{stroke:#8a5226}
.game-panel .flow-cell path[stroke="#83c5b4"]{stroke:var(--obj-copper)}
.game-panel .flow-cell path[stroke="#c9e4ce"]{stroke:#e8b27a}
.game-panel .flow-cell path[stroke="#172633"]{stroke:#3e2a1c}.game-panel .flow-cell path[stroke="#657882"]{stroke:#8c6a4f}.game-panel .flow-cell path[stroke="#80939b"]{stroke:#a8876b}

/* Cargo Sort: ribbed shipping containers in a ship's hold */
.game-panel .cargo-floor{background:var(--obj-rust);padding:12px 12px 16px;border-radius:6px 6px 30px 30px;box-shadow:inset 0 6px 0 var(--obj-wood),0 12px 20px #0005}
.game-panel .cargo-bay{background:#3a2419;border-color:#2a1810}
.game-panel .crate{background:var(--crate-color) repeating-linear-gradient(90deg,#0000 0 9px,#0000001f 9px 11px);color:var(--obj-cream);font-family:var(--table-type);border-radius:2px}
.game-panel :is(.crate,.cargo-color)[style*="#f29b62"]{--crate-color:var(--obj-gold)!important;color:var(--obj-ink)}
.game-panel :is(.crate,.cargo-color)[style*="#83c5b4"]{--crate-color:var(--obj-green)!important}
.game-panel :is(.crate,.cargo-color)[style*="#b7a5db"]{--crate-color:var(--obj-blue)!important}
.game-panel .cargo-color i[style*="#f29b62"]{background:var(--obj-gold)!important;color:var(--obj-ink)}.game-panel .cargo-color i[style*="#83c5b4"]{background:var(--obj-green)!important;color:var(--obj-cream)}.game-panel .cargo-color i[style*="#b7a5db"]{background:var(--obj-blue)!important;color:var(--obj-cream)}
.game-panel .cargo-pallet{background:var(--obj-wood)}
.game-panel .bay-number{color:var(--obj-cream)}

/* Crate Crew: wooden crates on a warehouse floor */
.game-panel .crew-board{background:#9c9182;padding:6px;border-radius:6px;box-shadow:0 10px 18px #0005}
.game-panel .crew-cell{background:#d3cabb;box-shadow:inset 0 0 0 1px #bfb5a4}
.game-panel .crew-cell.wall{background:var(--obj-wood) repeating-linear-gradient(0deg,#0000 0 10px,#0003 10px 12px);box-shadow:none}
.game-panel .crew-cell.storage-pad{background:#d3cabb;box-shadow:inset 0 0 0 3px #d3cabb,inset 0 0 0 5px var(--obj-gold)}
.game-panel .crew-cell svg rect[fill="#edcc6c"]{fill:var(--obj-wood-mid)}
.game-panel .crew-cell.has-box svg rect[fill="#121b2a"]{fill:var(--obj-wood)}
.game-panel .crew-cell.has-box svg rect[fill="#f8ebc7"]{fill:var(--obj-wood-light)}
.game-panel .crew-cell.has-box svg :is(rect,path)[fill="#594d41"]{fill:var(--obj-wood)}

/* Dock Escape: boats on harbour water inside a wooden pier */
.game-panel .dock-board{background:var(--obj-water);border:8px solid var(--obj-wood);border-radius:6px;box-shadow:0 10px 18px #0005}
.game-panel .dock-square{background:transparent;border-color:#ffffff14}
.game-panel .yard-vehicle{border-radius:999px;border:0;box-shadow:inset 0 -4px 0 #0003,0 4px 6px #0004}
.game-panel .yard-vehicle .vehicle-slats{display:none}
.game-panel .yard-vehicle .vehicle-window{border-radius:50%;background:var(--obj-cream)}
.game-panel .yard-vehicle.escape-van{--vehicle:var(--obj-rust)!important;color:var(--obj-cream)}
.game-panel .yard-vehicle:not(.escape-van)[style*="#83c5b4"]{--vehicle:var(--obj-green)!important;color:var(--obj-cream)}
.game-panel .yard-vehicle:not(.escape-van)[style*="#b7a5db"]{--vehicle:var(--obj-blue)!important;color:var(--obj-cream)}
.game-panel .yard-vehicle:not(.escape-van)[style*="#edcc6c"]{--vehicle:var(--obj-gold)!important}
.game-panel .yard-vehicle:not(.escape-van)[style*="#86b6dd"]{--vehicle:var(--obj-cream)!important}
.game-panel .yard-exit{background:var(--obj-gold)}

/* Parcel Slide: brown-paper parcels tied with string, in a wooden frame */
.game-panel .parcel-board{background:var(--obj-wood);padding:8px;border-radius:8px;box-shadow:0 12px 20px #0005}
.game-panel .parcel-tile{background:linear-gradient(90deg,#0000 calc(50% - 1.5px),var(--obj-cream) calc(50% - 1.5px) calc(50% + 1.5px),#0000 calc(50% + 1.5px)),linear-gradient(#0000 calc(50% - 1.5px),var(--obj-cream) calc(50% - 1.5px) calc(50% + 1.5px),#0000 calc(50% + 1.5px)),#c9a477;color:var(--obj-wood-dark);box-shadow:inset 0 -3px 0 #0002}
.game-panel .parcel-tile.in-place{box-shadow:inset 0 0 0 3px var(--obj-gold)}
.game-panel .parcel-tile.empty-slot{background:var(--obj-wood-dark);color:#c9a477}
.game-panel .parcel-tile .parcel-number{font-family:var(--table-type);text-shadow:0 0 6px #c9a477,0 0 3px #c9a477}

/* Load Balance: wooden crates and brass gauges */
.game-panel .weight-crate{background:var(--obj-wood-mid) linear-gradient(45deg,#0000 47%,#0003 47% 53%,#0000 53%);border:3px solid var(--obj-wood);color:var(--obj-cream);border-radius:3px}
.game-panel .weight-crate.selected{outline:3px solid var(--obj-gold);outline-offset:2px}
.game-panel .weight-truck svg rect[fill="#f29b62"]{fill:var(--obj-rust)}
.game-panel .weight-truck svg rect[fill="#83c5b4"]{fill:var(--obj-green)}
.game-panel .load-gauge{accent-color:var(--obj-gold)}
.game-panel .loading-pad{background:#6b5a48;border-radius:6px}

/* ---------- Outlier: the homepage hillside ---------- */
.game-panel .outlier-strip{position:relative;gap:14px;padding:6px 4px 10px;margin-bottom:6px}
.game-panel .outlier-strip::before{content:'';position:absolute;left:0;right:110px;top:20px;height:5px;border-radius:3px;background:var(--obj-wood);box-shadow:0 12px 0 var(--obj-wood)}
.game-panel .outlier-node{position:relative;z-index:1;width:30px;height:40px;border:0;border-radius:4px 4px 2px 2px;background:var(--obj-wood-mid);color:var(--obj-cream);box-shadow:inset -4px 0 0 #0003,0 3px 4px #0005;clip-path:polygon(0 18%,50% 0,100% 18%,100% 100%,0 100%)}
.game-panel .outlier-node b{padding-top:6px;font-family:var(--table-type)}
.game-panel .outlier-node.current{background:var(--obj-gold);color:var(--obj-wood-dark)}
.game-panel .outlier-node.done{background:var(--obj-wood);color:var(--obj-gold)}
.game-panel .outlier-total{font-family:var(--table-type)}
.game-panel .outlier-prompt{font-size:clamp(30px,4.6vw,52px);text-shadow:0 3px 0 #0003}
.game-panel .outlier-grazing{position:relative;display:block;height:140px;margin:18px -24px 0;overflow:hidden}
.game-panel .outlier-hills{position:absolute;inset:0;width:100%;height:100%}
.game-panel .outlier-grazing>span{position:absolute;display:block;width:calc(64px * var(--sheep-scale,1));transform:translate(-50%,-100%) scaleX(var(--sheep-turn,1));filter:drop-shadow(0 4px 2px #0004)}
.game-panel .outlier-grazing>span:nth-child(3n){width:calc(54px * var(--sheep-scale,1));align-self:auto}
.game-panel .outlier-grazing>.outlier-stray{width:52px}
.game-panel .outlier-input-row input{background:var(--obj-paper);border:3px solid var(--obj-gold);border-radius:10px}
.game-panel .outlier-flock-map{border:0;border-radius:14px;box-shadow:0 0 0 8px var(--obj-wood),0 14px 24px #0006}
.game-panel .outlier-reveal h2{font-size:clamp(34px,4vw,52px);line-height:.95}
.game-panel .outlier-alt{background:var(--obj-cream);color:var(--obj-wood-dark);border:0;border-left:6px solid var(--obj-wood);border-radius:4px}
.game-panel .outlier-alt small{color:var(--obj-rust);font-weight:800}
.game-panel .outlier-done .outlier-big strong{font-family:var(--table-type);color:var(--obj-gold)}
@media (max-width:650px){.game-panel .outlier-node{width:24px;height:34px}.game-panel .outlier-strip{gap:8px}.game-panel .outlier-strip::before{right:80px;top:17px}.game-panel .outlier-grazing{height:96px;margin:10px -14px 0}.game-panel .outlier-grazing>span{width:calc(44px * var(--sheep-scale,1))}.game-panel .outlier-grazing>.outlier-stray{width:36px}.game-panel .outlier-flock-map{box-shadow:0 0 0 5px var(--obj-wood),0 10px 18px #0006}}

/* ---------- Higher or Lower: two index cards on a brass tape ---------- */
.play-wrap:is([data-game=higherlower],[data-game=letterlists]) #completion{display:none}
.game-panel .party-shell{color:var(--obj-cream);max-width:880px;margin:0 auto}
.game-panel .hl-shell{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}
.game-panel .hl-head{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px 22px;font-size:13px}
.game-panel .hl-theme{padding:6px 14px;border-radius:4px;background:var(--obj-wood);color:var(--obj-gold);font:400 16px var(--table-type);box-shadow:inset 0 -3px 0 var(--obj-wood-dark)}
.game-panel .hl-streak strong{font:400 26px var(--table-type);color:var(--obj-gold)}
.game-panel .hl-left{color:#e3dcc4}
.game-panel .hl-question{margin:0;font:400 clamp(20px,2.8vw,28px) var(--table-type)}
.game-panel .hl-table{display:flex;align-items:center;justify-content:center;gap:clamp(10px,3vw,34px);width:100%;margin-top:6px}
.game-panel .hl-card{position:relative;flex:0 1 280px;min-height:230px;padding:34px 18px 18px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-between;gap:12px;color:var(--obj-ink);background:var(--obj-paper) repeating-linear-gradient(transparent 0 31px,#c9d6e3 31px 32px);background-position:0 26px;border-radius:4px;box-shadow:0 14px 24px #0007;transition:transform .25s}
.game-panel .hl-card::before{content:'';position:absolute;left:0;right:0;top:24px;height:2px;background:#e3a3a3}
.game-panel .hl-card.known{transform:rotate(-3deg)}.game-panel .hl-card.next{transform:rotate(2.5deg)}
.game-panel .hl-pin{position:absolute;left:50%;top:8px;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:var(--obj-rust);box-shadow:0 2px 0 #0004}
.game-panel .hl-card h3{margin:0;font:700 clamp(16px,2vw,20px)/1.2 system-ui,sans-serif;color:#3b2a1a}
.game-panel .hl-value{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:6px}
.game-panel .hl-value b{font:400 clamp(30px,4.4vw,46px)/1 var(--table-type);color:var(--obj-ink)}
.game-panel .hl-value small{font-size:13px;color:#5c5a52;font-weight:700}
.game-panel .hl-card.next .hl-value b[aria-label]{font-size:clamp(54px,8vw,80px);color:var(--obj-rust)}
.game-panel .hl-card.right{box-shadow:0 0 0 4px var(--obj-gold),0 14px 24px #0007}
.game-panel .hl-card.wrong{box-shadow:0 0 0 4px var(--obj-rust),0 14px 24px #0007}
.game-panel .hl-card.wrong .hl-value b{color:var(--obj-rust)}
.game-panel .hl-vs{flex:0 0 auto;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--obj-ink);color:var(--obj-gold);font:400 24px var(--table-type);box-shadow:0 6px 10px #0006}
.game-panel .hl-tape{width:min(640px,100%);height:20px;border-radius:4px;background:var(--obj-gold) repeating-linear-gradient(90deg,var(--obj-wood-dark) 0 2px,transparent 2px 10px);background-size:10px 7px,auto;background-repeat:repeat-x;box-shadow:inset 0 -3px 0 #b8923f,0 6px 10px #0005}
.game-panel .hl-controls{gap:14px;flex-wrap:wrap;justify-content:center}
.game-panel .hl-controls .cp-button{min-width:170px;min-height:56px;font:400 20px var(--table-type);border-radius:10px;border:0;background:var(--obj-cream);color:var(--obj-wood-dark);box-shadow:0 5px 0 #c9bfa3,0 10px 14px #0005}
.game-panel .hl-controls .cp-button.hl-down{background:var(--obj-wood);color:var(--obj-cream);box-shadow:0 5px 0 var(--obj-wood-dark),0 10px 14px #0005}
.game-panel .hl-controls .cp-button.primary{background:var(--obj-gold);color:var(--obj-wood-dark);box-shadow:0 5px 0 #b8923f,0 10px 14px #0005}
.game-panel .hl-controls .cp-button:active{transform:translateY(3px)}
.game-panel .hl-verdict{font:400 26px var(--table-type);color:var(--obj-gold)}
.game-panel .hl-hint{color:var(--obj-gold)}
.game-panel .hl-result{background:var(--obj-wood);border:0;border-radius:12px;padding:18px 22px;box-shadow:inset 0 -6px 0 var(--obj-wood-dark),0 10px 18px #0005;color:var(--obj-cream)}
.game-panel .hl-result h2{font:400 clamp(24px,3.4vw,34px) var(--table-type);color:var(--obj-gold);margin:0 0 6px}
@media (max-width:650px){.game-panel .hl-table{gap:6px}.game-panel .hl-card{min-height:170px;padding:30px 10px 12px}.game-panel .hl-vs{width:34px;height:34px;font-size:16px}.game-panel .hl-controls .cp-button{min-width:140px;min-height:50px;font-size:17px}}

/* ---------- Letter Lists: a lettered die, a spiral pad and a sand timer ---------- */
.game-panel .ll-shell{display:flex;flex-direction:column;align-items:stretch;gap:14px}
.game-panel .ll-pad{position:relative;background:var(--obj-paper);color:var(--obj-ink);padding:30px 22px 20px 46px;border-radius:2px;box-shadow:0 14px 24px #0006}
.game-panel .ll-pad::before{content:'';position:absolute;top:0;bottom:0;left:30px;width:2px;background:#e3a3a3}
.game-panel .ll-pad::after{content:'';position:absolute;left:16px;right:16px;top:-9px;height:20px;background:repeating-linear-gradient(90deg,#8c8a82 0 4px,transparent 4px 18px);pointer-events:none}
.game-panel .ll-pad h2{margin:0 0 12px;font:400 26px var(--table-type);color:var(--obj-wood-dark)}
.game-panel .ll-pad h3{margin:18px 0 8px;font:800 12px system-ui,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:#5c5a52}
.game-panel .ll-players{margin:0 0 10px;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px 16px}
.game-panel .ll-players li{display:flex;align-items:center;gap:6px}
.game-panel .ll-shell input{flex:1;min-width:0;height:44px;padding:0 6px;border:0;border-bottom:2px solid #9cb1c6;background:transparent;color:var(--obj-rust);font:600 20px var(--obj-hand);border-radius:0}
.game-panel .ll-shell input::placeholder{color:#a9a59a;font-family:system-ui,sans-serif;font-size:15px}
.game-panel .ll-shell input:focus{outline:none;border-bottom-color:var(--obj-gold);background:#f6e7b055}
.game-panel .ll-remove{width:36px;height:36px;border:0;border-radius:50%;background:#e8dfc9;color:var(--obj-wood-dark);font-size:20px}
.game-panel .ll-pad .cp-button{border:0;border-radius:8px;background:var(--obj-wood);color:var(--obj-cream);min-height:44px;padding:0 16px;font-weight:700}
.game-panel .ll-pad .cp-button.ll-add{background:transparent;color:var(--obj-wood);border:2px dashed var(--obj-wood)}
.game-panel .party-shell .cp-button.primary{background:var(--obj-gold);color:var(--obj-wood-dark);font:400 18px var(--table-type);min-height:52px;padding:0 22px;border:0;border-radius:10px;box-shadow:0 5px 0 #b8923f,0 10px 14px #0004}
.game-panel .ll-chips{display:flex;flex-wrap:wrap;gap:8px}
.game-panel .ll-chip{min-width:48px;min-height:44px;padding:0 14px;border:0;border-radius:999px;background:#e8dfc9;color:var(--obj-wood-dark);font-weight:800;box-shadow:inset 0 -3px 0 #0001}
.game-panel .ll-chip.on{background:var(--obj-wood);color:var(--obj-gold);box-shadow:inset 0 -3px 0 var(--obj-wood-dark)}
.game-panel .ll-die{width:76px;height:76px;flex:0 0 auto;display:grid;place-items:center;border-radius:14px;background:var(--obj-rust);color:var(--obj-cream);font:400 46px var(--table-type);box-shadow:inset -5px -6px 0 #0003,inset 4px 4px 0 #fff2,0 10px 16px #0006;transform:rotate(-7deg)}
.game-panel .ll-die.rolled{width:120px;height:120px;font-size:74px;margin:0 auto;animation:ll-roll .6s ease-out}
@keyframes ll-roll{from{transform:rotate(-200deg) scale(.6)}to{transform:rotate(-7deg) scale(1)}}
.game-panel .ll-pass{text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px;padding:10px 0}
.game-panel .ll-pass h2{margin:6px 0 0;font:400 clamp(28px,4.4vw,44px) var(--table-type)}
.game-panel .ll-round{margin:0;font:800 12px system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--obj-gold)}
.game-panel .ll-order{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:10px 0 0;padding:0;list-style:none}
.game-panel .ll-order li{padding:4px 12px;border-radius:999px;background:#ffffff14;color:#e3dcc4;font-size:13px}
.game-panel .ll-order li.done{text-decoration:line-through;opacity:.6}.game-panel .ll-order li.now{background:var(--obj-gold);color:var(--obj-wood-dark);font-weight:800}
.game-panel .ll-write-head{display:flex;align-items:center;gap:16px}
.game-panel .ll-write-head h2{margin:2px 0 0;font:400 30px var(--table-type)}
.game-panel .ll-clock{margin-left:auto;display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;background:var(--obj-wood);color:var(--obj-gold);font-weight:800}
.game-panel .ll-clock svg{width:22px;height:22px}.game-panel .ll-clock b{font:400 26px var(--table-type)}
.game-panel .ll-clock.low{background:var(--obj-rust);color:var(--obj-cream);animation:ll-pulse 1s infinite}
@keyframes ll-pulse{50%{transform:scale(1.06)}}
.game-panel .ll-clock.off{font-size:13px;color:#e3dcc4;background:#ffffff14}
.game-panel .ll-list{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:4px 28px}
.game-panel .ll-list li{display:flex;flex-direction:column}
.game-panel .ll-list label{font:800 11px system-ui,sans-serif;letter-spacing:.05em;text-transform:uppercase;color:#5c5a52;margin-top:8px}
.game-panel .ll-write>.cp-controls,.game-panel .ll-score>.cp-controls,.game-panel .ll-pass .cp-controls{justify-content:center}
.game-panel .ll-grid-wrap{overflow-x:auto;background:var(--obj-paper);border-radius:2px;box-shadow:0 14px 24px #0006}
.game-panel .ll-grid{width:100%;border-collapse:collapse;color:var(--obj-ink);font-size:14px}
.game-panel .ll-grid th,.game-panel .ll-grid td{padding:6px 8px;border-bottom:1px solid #c9d6e3;text-align:left;vertical-align:middle}
.game-panel .ll-grid thead th{font:400 16px var(--table-type);color:var(--obj-wood-dark);border-bottom:2px solid var(--obj-ink)}
.game-panel .ll-grid tbody th{font:800 11px system-ui,sans-serif;letter-spacing:.04em;text-transform:uppercase;color:#5c5a52;min-width:110px}
.game-panel .ll-grid tfoot th,.game-panel .ll-grid tfoot td{border-bottom:0;font:400 18px var(--table-type);color:var(--obj-wood-dark)}
.game-panel .ll-answer{position:relative;width:100%;min-height:40px;padding:4px 28px 4px 6px;border:0;border-radius:4px;background:transparent;color:var(--obj-rust);font:600 17px var(--obj-hand);text-align:left;cursor:pointer}
.game-panel .ll-answer:not(:disabled):hover{background:#f3e6b8}
.game-panel .ll-answer i{position:absolute;right:4px;top:50%;transform:translateY(-50%);font:800 11px system-ui,sans-serif;font-style:normal;color:var(--obj-wood-dark);background:var(--obj-gold);border-radius:999px;padding:2px 6px}
.game-panel .ll-answer:is(.same,.veto,.letter){text-decoration:line-through;text-decoration-thickness:2px;color:#8f877a}
.game-panel .ll-answer.veto{text-decoration-color:var(--obj-rust)}
.game-panel .ll-answer.same::after{content:'=';position:absolute;right:8px;top:50%;transform:translateY(-50%);font:800 14px system-ui;color:#8f877a}
.game-panel .ll-answer:disabled{cursor:default;color:#a9a59a}
.game-panel .ll-standings{margin:0 0 12px;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.game-panel .ll-standings li{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid #c9d6e3;font-size:17px}
.game-panel .ll-standings li span{flex:1;font-weight:700}.game-panel .ll-standings small{color:#6b6560}.game-panel .ll-standings b{font:400 26px var(--table-type);color:var(--obj-rust)}
.game-panel .ll-standings li:first-child{background:#f6e7b0;border-radius:6px}
.game-panel .ll-over h2{font-size:clamp(30px,4.4vw,44px)}
@media (max-width:650px){.game-panel .ll-pad{padding:26px 12px 16px 30px}.game-panel .ll-pad::before{left:18px}.game-panel .ll-die{width:56px;height:56px;font-size:34px}.game-panel .ll-die.rolled{width:96px;height:96px;font-size:58px}.game-panel .ll-write-head h2{font-size:22px}.game-panel .ll-list{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.game-panel .ll-die.rolled,.game-panel .ll-clock.low{animation:none}}
.game-panel .ll-shell .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Polish pass ---------- */
/* One table palette for every inline piece colour the games set (shelf items, boats, blocks, crates, pegs). */
.game-panel [style*="#f29b62"]{--piece-color:#a8473a!important;--vehicle:#a8473a!important;--block-color:#a8473a!important}
.game-panel [style*="#83c5b4"]{--piece-color:var(--obj-green)!important;--vehicle:var(--obj-green)!important;--block-color:var(--obj-green)!important}
.game-panel [style*="#b7a5db"]{--piece-color:var(--obj-blue)!important;--vehicle:var(--obj-blue)!important;--block-color:var(--obj-blue)!important}
.game-panel [style*="#edcc6c"]{--piece-color:var(--obj-gold)!important;--vehicle:var(--obj-gold)!important;--block-color:var(--obj-gold)!important}
.game-panel [style*="#86b6dd"]{--piece-color:#8fb3c9!important;--vehicle:var(--obj-cream)!important;--block-color:#8fb3c9!important}
.game-panel [style*="#e48d9e"]{--piece-color:#b5646e!important;--vehicle:#b5646e!important;--block-color:#b5646e!important}
.game-panel [style*="#a7ce79"]{--piece-color:#7c9a4a!important;--vehicle:#7c9a4a!important;--block-color:#7c9a4a!important}

/* Outlier: the finished-day list is a cream scorecard you can read */
.game-panel .outlier-results li{background:var(--obj-paper);color:var(--obj-ink);border:0;border-left:6px solid var(--tier);border-radius:4px;padding:10px 14px;box-shadow:0 4px 8px #0004;font-size:15px}
.game-panel .outlier-results li span{color:#3b3a33}
.game-panel .outlier-results li b{color:var(--obj-rust);font:600 19px var(--obj-hand)}
.game-panel .outlier-results li small{min-width:44px;padding:4px 10px;border-radius:999px;background:var(--obj-wood);color:var(--obj-gold);text-align:center;font:400 15px var(--table-type)}
.game-panel .outlier-done .outlier-tier{color:var(--obj-gold)}
.game-panel .outlier-done .outlier-big{color:var(--obj-cream)}
.game-panel .outlier-daily-note{color:#e3dcc4}

/* Nonograms: fill/cross as wooden tokens */
.game-panel .nono-tools .retro-button{min-height:48px;border:0;border-radius:10px;background:var(--obj-wood);color:var(--obj-cream);box-shadow:inset 0 -4px 0 var(--obj-wood-dark),0 6px 10px #0004;font-weight:800}
.game-panel .nono-tools .retro-button.active{background:var(--obj-gold);color:var(--obj-wood-dark);box-shadow:inset 0 -4px 0 #b8923f,0 6px 10px #0004}

/* Shelf Shift: empty slots are shelf, placed items are coloured boxes on it */
.game-panel .shelf-cell{background:#7a4f2d;box-shadow:inset 0 8px 12px #0005}
.game-panel .shelf-cell.occupied{background:var(--piece-color);border-radius:3px;box-shadow:inset 3px 3px 0 #ffffff30,inset -3px -4px 0 #00000038,0 3px 0 #0003}
.game-panel .shelf-cell.occupied .piece-number{color:var(--obj-cream);font:400 18px var(--table-type);text-shadow:0 1px 0 #0005}
.game-panel .shelf-cell.occupied[style*="#edcc6c"] .piece-number,.game-panel .shelf-cell.occupied[style*="#86b6dd"] .piece-number{color:var(--obj-wood-dark);text-shadow:none}
.game-panel .shelf-cell:not(.occupied):hover{background:#8c5d36}

/* Dock Escape: boats get a small porthole; arrow keys are wooden */
.game-panel .h .vehicle-window{width:15px;height:15px;top:calc(50% - 7.5px);right:12%;border:2px solid #0004;border-radius:50%;background:var(--obj-cream)}
.game-panel .v .vehicle-window{width:15px;height:15px;left:calc(50% - 7.5px);top:12%;border:2px solid #0004;border-radius:50%;background:var(--obj-cream)}
.game-panel .yard-vehicle{color:var(--obj-cream)}
.game-panel .yard-vehicle[style*="#edcc6c"],.game-panel .yard-vehicle[style*="#86b6dd"]{color:var(--obj-wood-dark)}
.game-panel .dir{background:var(--obj-wood);color:var(--obj-cream);border:0;box-shadow:inset 0 -4px 0 var(--obj-wood-dark),0 4px 6px #0004}
.game-panel .dir:hover:not(:disabled){background:var(--obj-wood-mid)}
.game-panel .dir:disabled{background:#5a4535;color:#a8957f;opacity:1}

/* Battleship: ships are pencil-shaded hulls, not boxes */
.game-panel .sea-cell.ship{color:transparent;font-size:0;background:repeating-linear-gradient(45deg,#2a2a2840 0 2px,#0000 2px 6px);box-shadow:inset 0 0 0 1px #c9d6e3,inset 0 0 0 3px var(--obj-paper),inset 0 0 0 5px #2a2a28}
.game-panel .sea-cell.ship.hit{background:linear-gradient(45deg,#0000 44%,var(--obj-rust) 44% 56%,#0000 56%),linear-gradient(-45deg,#0000 44%,var(--obj-rust) 44% 56%,#0000 56%),repeating-linear-gradient(45deg,#2a2a2840 0 2px,#0000 2px 6px)}

/* Load Balance: trucks on paper manifest cards */
.game-panel .weight-truck{background:var(--obj-paper);border:0;border-radius:4px;box-shadow:0 10px 18px #0005;overflow:hidden}
.game-panel .weight-truck.on-target{box-shadow:0 0 0 4px var(--obj-gold),0 10px 18px #0005}
.game-panel .load-destination{background:var(--obj-paper);color:var(--obj-ink);border-bottom:2px dashed #c9bfa3}
.game-panel .load-destination:hover:not(:disabled){background:#f3e6b8}
.game-panel .load-destination .truck-name{font:400 16px var(--table-type);color:var(--obj-wood-dark)}
.game-panel .load-destination .weight-readout strong{font-family:var(--table-type)}
.game-panel .load-gauge{background:#e8dfc9;border:0;border-radius:999px;overflow:hidden}.game-panel .load-gauge i{background:var(--obj-rust)}
.game-panel .weight-truck.on-target .load-gauge i{background:var(--obj-green)}
.game-panel .load-command{color:var(--obj-wood);font-weight:800}
.game-panel .unload-button{background:var(--obj-wood);color:var(--obj-cream);border:0;border-radius:8px;box-shadow:inset 0 -4px 0 var(--obj-wood-dark);font-weight:800}
.game-panel .unload-button:disabled{background:#5a4535;color:#a8957f;opacity:1}
/* The same palette for colours drawn inside game SVGs (piece previews, mahjong faces, truck bodies). */
.game-panel svg [fill="#f29b62"]{fill:#a8473a}.game-panel svg [fill="#83c5b4"]{fill:var(--obj-green)}.game-panel svg [fill="#b7a5db"]{fill:var(--obj-blue)}.game-panel svg [fill="#edcc6c"]{fill:var(--obj-gold)}.game-panel svg [fill="#86b6dd"]{fill:#8fb3c9}.game-panel svg [fill="#e48d9e"]{fill:#b5646e}.game-panel svg [fill="#a7ce79"]{fill:#7c9a4a}
.game-panel .piece-choice{background:var(--obj-paper);border:0;border-radius:6px;box-shadow:0 4px 8px #0004}
.game-panel .piece-choice.selected,.game-panel .piece-choice[aria-pressed=true]{box-shadow:0 0 0 3px var(--obj-gold),0 4px 8px #0004}

/* Battleship: one drawn warship per ship, laid over its squares (your fleet, and enemy ships once sunk) */
.game-panel .sea-grid{position:relative;--pad:8px}
.game-panel .sea-cell{position:relative}
.game-panel .sea-cell.boat{color:transparent;font-size:0;background:transparent;box-shadow:inset 0 0 0 1px #c9d6e3}
.game-panel .ship-layer{position:absolute;inset:var(--pad);pointer-events:none;z-index:2}
.game-panel .ship-piece{position:absolute;left:calc(var(--x) * 12.5%);top:calc(var(--y) * 12.5%);width:calc(var(--w) * 12.5%);height:calc(var(--h) * 12.5%);padding:3px;box-sizing:border-box;filter:drop-shadow(0 3px 2px #0003)}
.game-panel .ship-art{display:block;width:100%;height:100%}
.game-panel .sea-cell.boat.hit::after{content:'';position:absolute;z-index:3;inset:18%;background:linear-gradient(45deg,#0000 41%,var(--obj-rust) 41% 59%,#0000 59%),linear-gradient(-45deg,#0000 41%,var(--obj-rust) 41% 59%,#0000 59%);filter:drop-shadow(0 0 1px var(--obj-paper))}
.game-panel .sea-cell.boat.hit{background:transparent}
