/* V1.46. Original digital Matrix collections. Cosmetic presentation only.
   Shared textures are local vectors. No network, random sampling or game timers.
   Glyphs stay on the surface; legal move rings and readable pips are separate. */
:is(.theme-coderain,.game-die.coderain,.dr-skin-coderain,.dice-coderain,.checker-preview[data-checker="coderain"]) {
  --matrix-light:#4adf83; --matrix-accent:#8affb0; --matrix-color:#063d22; --matrix-edge:#010e08;
  --matrix-second:#278557; --matrix-art:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2296%22%20height%3D%22128%22%20viewBox%3D%220%200%2096%20128%22%3E%3Cg%20stroke%3D%22%2362ffa3%22%20stroke-width%3D%22.8%22%20fill%3D%22none%22%3E%3Cpath%20d%3D%22M3%20-4h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M4.5%206v5%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M3%2016h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M4.5%2026v5%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M3%2036h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M3%2046h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M4.5%2056v5%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M3%2066h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M4.5%2076v5%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M3%2086h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M3%2096h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M4.5%20106v5%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M3%20116h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M15%20-1h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M15%209h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M16.5%2019v5%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M15%2029h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M16.5%2039v5%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M15%2049h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M15%2059h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M16.5%2069v5%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M15%2079h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M16.5%2089v5%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M15%2099h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M15%20109h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M16.5%20119v5%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M28.5%202v5%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M27%2012h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M27%2022h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M28.5%2032v5%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M27%2042h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M28.5%2052v5%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M27%2062h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M27%2072h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M28.5%2082v5%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M27%2092h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M28.5%20102v5%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M27%20112h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M27%20122h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M39%20-4h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M40.5%206v5%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M39%2016h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M39%2026h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M40.5%2036v5%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M39%2046h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M40.5%2056v5%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M39%2066h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M39%2076h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M40.5%2086v5%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M39%2096h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M40.5%20106v5%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M39%20116h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M52.5%20-1v5%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M51%209h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M52.5%2019v5%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M51%2029h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M51%2039h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M52.5%2049v5%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M51%2059h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M52.5%2069v5%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M51%2079h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M51%2089h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M52.5%2099v5%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M51%20109h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M52.5%20119v5%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M63%202h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M64.5%2012v5%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M63%2022h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M64.5%2032v5%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M63%2042h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M63%2052h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M64.5%2062v5%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M63%2072h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M64.5%2082v5%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M63%2092h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M63%20102h3v5h-3z%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M64.5%20112v5%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M63%20122h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M75%20-4h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M75%206h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M76.5%2016v5%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M75%2026h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M76.5%2036v5%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M75%2046h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M75%2056h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M76.5%2066v5%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M75%2076h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M76.5%2086v5%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M75%2096h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M75%20106h3v5h-3z%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M76.5%20116v5%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M88.5%20-1v5%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M87%209h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M87%2019h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M88.5%2029v5%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M87%2039h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M88.5%2049v5%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M87%2059h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M87%2069h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3Cpath%20d%3D%22M88.5%2079v5%22%20opacity%3D%220.18%22%2F%3E%3Cpath%20d%3D%22M87%2089h3v5h-3z%22%20opacity%3D%220.36%22%2F%3E%3Cpath%20d%3D%22M88.5%2099v5%22%20opacity%3D%220.52%22%2F%3E%3Cpath%20d%3D%22M87%20109h3v5h-3z%22%20opacity%3D%220.28%22%2F%3E%3Cpath%20d%3D%22M87%20119h3v5h-3z%22%20opacity%3D%220.68%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
  --matrix-glow:#8affb022; --matrix-grid:#8affb00b; --matrix-wash:#8affb00a;
  --matrix-pane-hi:#063d22; --matrix-pane-lo:#010e08;
  --matrix-scene:radial-gradient(ellipse at 50% 70%,#063d2277,transparent 72%),#080f12;
}
:is(.theme-ciphergrid,.game-die.ciphergrid,.dr-skin-ciphergrid,.dice-ciphergrid,.checker-preview[data-checker="ciphergrid"]) {
  --matrix-light:#bcffe1; --matrix-accent:#75ffd3; --matrix-color:#125843; --matrix-edge:#031d18;
  --matrix-second:#277660; --matrix-art:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2248%22%20height%3D%2248%22%20viewBox%3D%220%200%2048%2048%22%3E%3Cg%20stroke%3D%22%2379ffd5%22%20fill%3D%22none%22%3E%3Cpath%20d%3D%22M0%200H48V48H0Z%20M0%2024h16l8-8h24%20M24%2048V36l12-12V0%22%20stroke-width%3D%22.6%22%20opacity%3D%22.28%22%2F%3E%3Cpath%20d%3D%22M6%206h8v8H6z%20M34%2034h8v8h-8z%20M0%2038h9l6-6V24%22%20stroke-width%3D%22.85%22%20opacity%3D%22.62%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23bcffe5%22%3E%3Ccircle%20cx%3D%2224%22%20cy%3D%2216%22%20r%3D%221.5%22%2F%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%2224%22%20r%3D%221.1%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
  --matrix-glow:#75ffd322; --matrix-grid:#75ffd30b; --matrix-wash:#75ffd30a;
  --matrix-pane-hi:#125843; --matrix-pane-lo:#031d18;
  --matrix-scene:radial-gradient(ellipse at 50% 70%,#12584377,transparent 72%),#080f12;
}
:is(.theme-neolattice,.game-die.neolattice,.dr-skin-neolattice,.dice-neolattice,.checker-preview[data-checker="neolattice"]) {
  --matrix-light:#dfff8c; --matrix-accent:#d3ff81; --matrix-color:#3c5820; --matrix-edge:#101c09;
  --matrix-second:#43753d; --matrix-art:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2248%22%20height%3D%2240%22%20viewBox%3D%220%200%2048%2040%22%3E%3Cg%20stroke%3D%22%23c9ff7b%22%20fill%3D%22none%22%3E%3Cpath%20d%3D%22M0%200H48L24%2040ZM0%200L-24%2040H24L48%200L72%2040H24%22%20stroke-width%3D%22.7%22%20opacity%3D%22.48%22%2F%3E%3Cpath%20d%3D%22M0%200H48L24%2040Z%22%20stroke-width%3D%221%22%20opacity%3D%22.22%22%2F%3E%3C%2Fg%3E%3Ccircle%20cx%3D%2224%22%20cy%3D%2240%22%20r%3D%221.25%22%20fill%3D%22%23e9ffc7%22%2F%3E%3C%2Fsvg%3E");
  --matrix-glow:#d3ff8122; --matrix-grid:#d3ff810b; --matrix-wash:#d3ff810a;
  --matrix-pane-hi:#3c5820; --matrix-pane-lo:#101c09;
  --matrix-scene:radial-gradient(ellipse at 50% 70%,#3c582077,transparent 72%),#080f12;
}
/* Preview and full table use identical rails and point surfaces. */
:is(.board-frame,.cosmetic-board-mini):is(.theme-coderain,.theme-ciphergrid,.theme-neolattice) {
  --board-bg:#020c08; --board-bg-2:#091911; --rail:#02130c; --rail-hi:var(--matrix-color);
  --point-a:var(--matrix-accent); --point-b:var(--matrix-second); --trim:var(--matrix-accent);
  background:linear-gradient(125deg,var(--matrix-color),#020c09 40%,#031a11 68%,var(--matrix-color));
  box-shadow:inset 0 0 0 1px var(--matrix-accent),inset 0 0 0 4px #010906,inset 0 0 0 5px var(--matrix-glow),0 14px 32px #0008,0 0 20px var(--matrix-glow);
}
:is(.theme-coderain,.theme-ciphergrid,.theme-neolattice) :is(.board-grid,.mini-felt) {
  background:linear-gradient(var(--matrix-grid) 1px,transparent 1px),linear-gradient(90deg,var(--matrix-grid) 1px,transparent 1px),radial-gradient(ellipse at 50% 50%,var(--matrix-wash),transparent 80%),#020d09;
  background-size:24px 24px,24px 24px,100% 100%,100% 100%;
  box-shadow:inset 0 0 0 1px var(--matrix-glow),inset 0 0 32px #0008;
}
#gameBoard:is(.theme-coderain,.theme-ciphergrid,.theme-neolattice) :is(.bar-column,.board-balance-rail,.bearoff-tray),
.cosmetic-board-mini:is(.theme-coderain,.theme-ciphergrid,.theme-neolattice) .mini-spine {
  background:repeating-linear-gradient(0deg,transparent 0 6px,var(--matrix-grid) 6px 7px),linear-gradient(90deg,#010c08,var(--matrix-color),#010c08);
  box-shadow:inset 1px 0 var(--matrix-glow),inset -1px 0 var(--matrix-glow);
}
#gameBoard:is(.theme-coderain,.theme-ciphergrid,.theme-neolattice) .point::before,
.cosmetic-board-mini:is(.theme-coderain,.theme-ciphergrid,.theme-neolattice) .mini-inlay {
  --matrix-point:var(--point-a);
  background:var(--matrix-art),linear-gradient(90deg,var(--matrix-point),#072217cc 13% 87%,var(--matrix-point)),linear-gradient(var(--matrix-point),var(--matrix-point));
  background-size:72px 96px,100% 100%,100% 100%; opacity:.95;
}
#gameBoard:is(.theme-coderain,.theme-ciphergrid,.theme-neolattice) .point.tone-b::before,
.cosmetic-board-mini:is(.theme-coderain,.theme-ciphergrid,.theme-neolattice) .mini-inlay.b { --matrix-point:var(--point-b); }
#gameBoard:is(.theme-coderain,.theme-ciphergrid,.theme-neolattice) .board-grid::before {
  inset:0; pointer-events:none; background:var(--matrix-art) repeat; background-size:144px 192px; opacity:.16; animation:none;
}
#gameBoard.theme-coderain .board-grid::before { animation:matrixCodeDrift 32s linear infinite; }
@keyframes matrixCodeDrift { from{background-position:0 0} to{background-position:0 192px} }
/* The grid and lattice are intentionally static; no flashing or checker pulses. */
.shop-card[data-material="matrix"] .material-board-preview {
  padding:23px; background:radial-gradient(ellipse at 50% 70%,#164d2e55,transparent 72%),#08110c;
}

/* The dice art never covers the pips or changes the roll transform. */
:is(.game-die.coderain,.game-die.ciphergrid,.game-die.neolattice,
.dr-skin-coderain,.dr-skin-ciphergrid,.dr-skin-neolattice,
.dice-coderain,.dice-ciphergrid,.dice-neolattice) {
  --dc-hi:var(--matrix-pane-hi); --dc-lo:var(--matrix-pane-lo); --dc-pip:#d6ffe5; --dc-edge:var(--matrix-accent);
  --dc-art:var(--matrix-art),linear-gradient(135deg,transparent 32%,#bfffd10d 33% 46%,transparent 47%);
  --dc-scene:var(--matrix-scene);
}
.game-die:is(.coderain,.ciphergrid,.neolattice) {
  background:var(--dc-art),linear-gradient(145deg,var(--dc-hi),var(--dc-lo)); background-size:64px 80px,100% 100%,100% 100%;
  box-shadow:0 8px 18px #0008,inset 0 0 0 1.3px var(--matrix-accent),inset 0 0 0 4px var(--matrix-glow),0 0 13px var(--matrix-glow);
}
.game-die:is(.coderain,.ciphergrid,.neolattice) .die-pip {background:var(--dc-pip);box-shadow:0 0 0 1px #062214,0 0 4px var(--matrix-accent);}
.dr-stage:is(.dr-skin-coderain,.dr-skin-ciphergrid,.dr-skin-neolattice) {
  --dr-face-hi:var(--dc-hi); --dr-face-lo:var(--dc-lo); --dr-edge:var(--dc-edge); --dr-pip:var(--dc-pip); --dr-pip-light:transparent;
}
.dr-stage:is(.dr-skin-coderain,.dr-skin-ciphergrid,.dr-skin-neolattice) .dr-face {
  background:var(--dc-art),linear-gradient(145deg,var(--dc-hi),var(--dc-lo)); background-size:64px 80px,100% 100%,100% 100%;
  border-color:var(--matrix-accent);box-shadow:inset 0 0 0 2px var(--matrix-glow),inset 0 0 10px var(--matrix-glow);
}
/* Shop circles use the exact same SVG art as live, dragged and borne off pieces. */
.checker-preview[data-material="matrix"] {
  --checker-face-color:var(--matrix-color); --checker-face-edge:var(--matrix-edge); --checker-face-light:var(--matrix-light);
  --checker-face-accent:var(--matrix-accent); --checker-face-opacity:1; --checker-face-hologram:0;
  --checker-face-matrix:1; --checker-face-matrix-rain:0; --checker-face-matrix-grid:0; --checker-face-matrix-lattice:0;
  background:linear-gradient(#9affa108 1px,transparent 1px),linear-gradient(90deg,#9affa108 1px,transparent 1px),var(--matrix-scene);
  background-size:24px 24px,24px 24px,100% 100%;
}
.checker-preview[data-checker="coderain"] {--checker-face-matrix-rain:1;}
.checker-preview[data-checker="ciphergrid"] {--checker-face-matrix-grid:1;}
.checker-preview[data-checker="neolattice"] {--checker-face-matrix-lattice:1;}
.checker-preview[data-material="matrix"] .collection-checker {
  border:0;background:none;box-shadow:0 12px 16px #0007,0 0 16px var(--matrix-glow);overflow:visible;
}
.checker-preview[data-material="matrix"] .collection-checker > .checker-face {
  position:absolute;display:block;left:-8%;top:-8%;width:116%;height:116%;max-width:none;overflow:visible;pointer-events:none;border-radius:0;
}
@media (prefers-reduced-motion:reduce) {
  #gameBoard.theme-coderain .board-grid::before {animation:none;}
}
