/* Three independent palettes, each with an airy day and a lighter night treatment. */
:root,[data-palette=forest]{--mode-bg:#faf7ef;--mode-surface:#fffdf7;--mode-surface2:#ede9dd;--mode-ink:#103c2f;--mode-muted:#53634f;--mode-line:#d5d4c3;--action-hi:#276e4e;--action-lo:#10452f;--action-edge:#0b3522;--action-border:#538568;--action-ink:#fffdf5;--mode-soft:#e4edda;--mode-soft-edge:#a1b890;--mode-selection:#b9d0a6;--mode-selection-ink:#123b29;--puzzle-fill:#739868;--mode-rim:#c6c8b3;--mode-shade:#514b3426;--mode-focus:#176344;--mode-input:#819076;--mode-honey:#c39a64;--mode-tray-hi:#dfc390;--mode-tray-lo:#b28c58;--mode-tray-edge:#7a5b35}
:root[data-palette=ocean]{--mode-bg:#f3faf9;--mode-surface:#ffffff;--mode-surface2:#e5f0ef;--mode-ink:#123342;--mode-muted:#486570;--mode-line:#bfd5d5;--action-hi:#16808d;--action-lo:#005b69;--action-edge:#00444f;--action-border:#499eaa;--action-ink:#ffffff;--mode-soft:#d6eeee;--mode-soft-edge:#94bdc1;--mode-selection:#a4d6d6;--mode-selection-ink:#113c46;--puzzle-fill:#4399a4;--mode-rim:#aabfc0;--mode-shade:#254a5528;--mode-focus:#006776;--mode-input:#718e93;--mode-honey:#cbb28a;--mode-tray-hi:#c4dedd;--mode-tray-lo:#86b0b1;--mode-tray-edge:#527f84}
:root[data-palette=terracotta]{--mode-bg:#fcf6ed;--mode-surface:#fffaf2;--mode-surface2:#f0e2d0;--mode-ink:#48291e;--mode-muted:#795747;--mode-line:#dac8b1;--action-hi:#b84f30;--action-lo:#8c321d;--action-edge:#692416;--action-border:#ce7956;--action-ink:#fffaf3;--mode-soft:#f1dfc7;--mode-soft-edge:#c8aa89;--mode-selection:#e9c69f;--mode-selection-ink:#48291e;--puzzle-fill:#b86640;--mode-rim:#cbb297;--mode-shade:#6a402730;--mode-focus:#9d3d22;--mode-input:#a18168;--mode-honey:#be8f5d;--mode-tray-hi:#e4c59b;--mode-tray-lo:#c28d5e;--mode-tray-edge:#8d5938}
:root[data-theme=dark][data-palette=forest]{--mode-bg:#30473c;--mode-surface:#405c4c;--mode-surface2:#496653;--mode-ink:#fff9e9;--mode-muted:#e0e9d6;--mode-line:#82967c;--action-hi:#cee2b8;--action-lo:#b0cd97;--action-edge:#73905f;--action-border:#deedcb;--action-ink:#163421;--mode-soft:#526d55;--mode-soft-edge:#8da280;--mode-selection:#c1d9ab;--mode-selection-ink:#173923;--puzzle-fill:#a7c28f;--mode-rim:#203d2d;--mode-shade:#132e2450;--mode-focus:#e1f1c9;--mode-input:#a9b9a0;--mode-tray-hi:#a1ad88;--mode-tray-lo:#73866a;--mode-tray-edge:#425d43}
:root[data-theme=dark][data-palette=ocean]{--mode-bg:#2a4652;--mode-surface:#365965;--mode-surface2:#406672;--mode-ink:#f2ffff;--mode-muted:#d7edf0;--mode-line:#7fabb3;--action-hi:#bce6e5;--action-lo:#96ced1;--action-edge:#4d909b;--action-border:#d6f0ef;--action-ink:#133842;--mode-soft:#456c76;--mode-soft-edge:#82afb7;--mode-selection:#b4dfe0;--mode-selection-ink:#123a45;--puzzle-fill:#91cdd0;--mode-rim:#1c3e49;--mode-shade:#112d3850;--mode-focus:#c2f2f0;--mode-input:#a5c9cf;--mode-tray-hi:#87b6bb;--mode-tray-lo:#5c8c95;--mode-tray-edge:#2e5d69}
:root[data-theme=dark][data-palette=terracotta]{--mode-bg:#503e38;--mode-surface:#674d41;--mode-surface2:#735647;--mode-ink:#fff9eb;--mode-muted:#f2dfcd;--mode-line:#ae8e77;--action-hi:#f2cda6;--action-lo:#e6b88b;--action-edge:#aa764d;--action-border:#ffe1be;--action-ink:#48291e;--mode-soft:#7d604d;--mode-soft-edge:#b99778;--mode-selection:#f0c99f;--mode-selection-ink:#48291e;--puzzle-fill:#e1ac7d;--mode-rim:#3e2d26;--mode-shade:#2b181550;--mode-focus:#ffdab3;--mode-input:#d2b39a;--mode-tray-hi:#c4a07d;--mode-tray-lo:#9e7655;--mode-tray-edge:#654735}
:root[data-palette]{--bg:var(--mode-bg);--surface:var(--mode-surface);--surface-2:var(--mode-surface2);--text:var(--mode-ink);--muted:var(--mode-muted);--line:var(--mode-line);--select:var(--mode-focus);--accent:var(--action-lo);--accent-ink:var(--action-ink);--forest:var(--mode-ink);--chip:var(--mode-soft);--slot:var(--mode-soft);--glass:var(--mode-surface);--glass-strong:var(--mode-surface);--glass-edge:color-mix(in srgb,var(--mode-surface) 65%,white);--tile-top:var(--mode-surface);--tile-ink:var(--mode-ink);--tile-edge:var(--mode-rim);--control-border:var(--mode-input);--board:var(--action-lo);--tray:linear-gradient(145deg,var(--mode-tray-hi),var(--mode-tray-lo));--tray-edge:var(--mode-tray-edge);--glass-shadow:inset 0 2px 0 #ffffff55,0 4px 0 var(--mode-rim),0 12px 22px var(--mode-shade);--glass-shadow-hi:inset 0 2px 0 #ffffff77,0 6px 0 var(--mode-rim),0 17px 28px var(--mode-shade);--lift:inset 0 2px 0 #ffffff55,0 4px 0 var(--mode-rim),0 9px 15px var(--mode-shade);--ok:#176344}
:root[data-theme=dark][data-palette]{--ok:#dcf0c7;color-scheme:dark}
.forest-header .palette-bar{padding-top:0;padding-bottom:12px;justify-content:flex-end!important;gap:12px}.palette-title{font-size:12px;color:var(--muted);margin-right:4px}.palette-choices{display:flex;gap:8px}.palette-choices button{min-height:44px;display:flex;align-items:center;justify-content:center;gap:9px;border:1px solid var(--control-border);border-radius:9px;padding:8px 12px;background:var(--surface);color:var(--text);font:600 12px var(--body);cursor:pointer;box-shadow:inset 0 1px 0 #ffffff66,0 2px 0 var(--mode-rim);transition:transform 120ms,background 180ms,box-shadow 180ms}.palette-choices button[aria-pressed=true]{background:var(--mode-soft);border:2px solid var(--select);padding:7px 11px;box-shadow:inset 0 1px 0 #ffffff55,0 3px 0 var(--mode-rim)}.palette-choices button:hover{transform:translateY(-2px)}.palette-choices button:active{transform:translateY(2px);box-shadow:none}.palette-swatch{width:16px;height:16px;flex:none;border-radius:50%;box-shadow:inset 0 1px 1px #ffffff99,0 1px 2px #0003;border:1px solid #ffffff88}.swatch-forest{background:linear-gradient(135deg,#98b587,#19452e)}.swatch-ocean{background:linear-gradient(135deg,#9bd7d6,#006676)}.swatch-terracotta{background:linear-gradient(135deg,#edc99e,#aa4228)}.palette-check{visibility:hidden;font-size:12px}.palette-choices [aria-pressed=true] .palette-check{visibility:visible}.palette-short{display:none}
:root[data-palette] .forest-category,:root[data-theme=dark][data-palette] .forest-category{background:linear-gradient(145deg,var(--surface),var(--surface-2));border-color:var(--glass-edge);box-shadow:var(--glass-shadow)}:root[data-palette] .forest-category:hover,:root[data-palette] .forest-category:focus-visible{border-color:var(--select);box-shadow:var(--glass-shadow-hi)}:root[data-palette] .forest-category-description{color:var(--muted)}:root[data-palette] .forest-explore,:root[data-palette] .btn-primary{background:linear-gradient(var(--action-hi),var(--action-lo))!important;color:var(--action-ink)!important;border-color:var(--action-border)!important;box-shadow:inset 0 2px 0 #ffffff44,0 4px 0 var(--action-edge),0 8px 12px var(--mode-shade)!important}:root[data-palette] .btn-primary:hover{background:linear-gradient(color-mix(in srgb,var(--action-hi) 88%,white),var(--action-lo))!important}:root[data-palette] .btn-primary:active,:root[data-palette] .forest-category:active .forest-explore{box-shadow:inset 0 1px 0 #ffffff33,0 1px 0 var(--action-edge)!important}:root[data-palette] .gtile .orb{background:linear-gradient(145deg,var(--puzzle-fill),var(--action-lo))!important;border-color:var(--action-border);color:var(--action-ink);box-shadow:inset 0 2px 0 #ffffff77,0 3px 0 var(--action-edge),0 8px 12px var(--mode-shade)}:root[data-palette] .gtile:nth-child(3n+2) .orb{background:linear-gradient(145deg,#f8efd8,var(--mode-honey))!important;color:#14372c;border-color:#fff6df;box-shadow:inset 0 2px 0 #fff,0 3px 0 #a4875e,0 8px 12px var(--mode-shade)}:root[data-palette] .ch-token.selected{background:linear-gradient(145deg,color-mix(in srgb,var(--mode-selection) 80%,white),var(--mode-selection));color:var(--mode-selection-ink);border-color:var(--mode-soft-edge)}:root[data-palette] .ch-vessel .fill{background:linear-gradient(135deg,color-mix(in srgb,var(--puzzle-fill) 65%,white),var(--puzzle-fill))}:root[data-palette] .ch-vessel{border-color:var(--control-border);box-shadow:inset 3px 0 5px #ffffff66,0 5px 0 var(--mode-rim),0 13px 20px var(--mode-shade)}:root[data-palette] .bg-tray,:root[data-palette] .bg-board,:root[data-palette] .go-board{background:var(--tray);border-color:color-mix(in srgb,var(--mode-tray-hi) 75%,white);box-shadow:inset 0 2px 0 #ffffff66,0 7px 0 var(--tray-edge),0 18px 26px var(--mode-shade)}:root[data-palette] .bt-timebar span{background:linear-gradient(90deg,var(--puzzle-fill),var(--action-lo))}:root[data-palette] .bt-timebar.low span{background:linear-gradient(90deg,#f7c472,#c44739)}:root[data-palette] .wk-step.now,:root[data-palette] .wk-step.done,:root[data-palette] .wk-ic{background:linear-gradient(145deg,var(--action-hi),var(--action-lo));color:var(--action-ink)}:root[data-palette] .forest-cube path[fill="#23513d"]{fill:var(--action-hi)}:root[data-palette] .forest-cube path[fill="#123c2d"]{fill:var(--action-lo)}:root[data-palette] .forest-cube path[fill="#759477"]{fill:var(--puzzle-fill)}
/* Meaningful game states and team colors retain their identities. Palette affects material/rims. */
:root[data-palette] .ch-token:focus-visible,:root[data-palette] .domino:focus-visible,:root[data-palette] .ng-cell:focus-visible{outline:3px solid var(--select);outline-offset:3px}:root[data-palette] .domino.selected{outline-color:var(--select)}:root[data-palette] .ng-key{box-shadow:inset 0 1px 0 #ffffff55,0 3px 0 var(--mode-rim),0 6px 9px var(--mode-shade)}:root[data-palette] .ng-key:active{transform:translateY(2px);box-shadow:0 1px 0 var(--mode-rim)}:root[data-palette] .ch-token:hover:not(:disabled){transform:translateY(-3px) rotate(-1deg);box-shadow:var(--glass-shadow-hi)}:root[data-palette] .ch-token:active:not(:disabled){transform:translateY(2px)}
@media(max-width:700px){.forest-header .palette-bar{padding:0 20px 10px;justify-content:center!important;flex-wrap:wrap}.palette-title{display:none}.palette-choices{width:100%;gap:8px}.palette-choices button{flex:1;min-width:0;padding:8px;gap:6px}.palette-choices button[aria-pressed=true]{padding:7px}.palette-full{display:none}.palette-short{display:inline}.palette-swatch{width:14px;height:14px}.palette-check{font-size:10px}.forest-header .wrap:first-child{padding-bottom:16px}}
@media(prefers-reduced-motion:reduce){.palette-choices button{transition:none}.palette-choices button:hover,:root[data-palette] .ch-token:hover:not(:disabled){transform:none}}
@keyframes mode-feedback-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:no-preference){.ch-feedback:not(:empty){animation:mode-feedback-in 180ms ease-out}.ch-display .ch-glass{animation:mode-feedback-in 180ms ease-out}}
/* Card Flash: theme the actual playing cards, leaving success/error/reveal states intact. */
:root[data-palette] .cf-card:not(.ok):not(.bad):not(.show) .cf-front{background:linear-gradient(145deg,var(--action-hi),var(--action-lo));color:var(--action-ink);box-shadow:inset 0 2px 1px #ffffff77,0 4px 0 var(--action-edge),0 10px 16px var(--mode-shade)}:root[data-palette] .cf-back::after{background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--puzzle-fill) 70%,white),var(--action-lo));box-shadow:inset 0 2px 1px #ffffff77,0 2px 3px var(--mode-shade)}
