/* Optional player-selected themes. No theme attribute keeps the original desk. */
html[data-game-theme="charcoal"] {
  color-scheme:dark;--g-bg:#17191e;--g-panel:#252932;--g-board:#30353c;--g-text:#eae5da;--g-muted:#b7b4ad;--g-paper:#e3ddd0;--g-paper-ink:#303039;--g-accent:#d6aba7;--g-rule:#797881;--g-error:#efaf9e;--g-success:#bfdbbf;--g-mark:#7b3e49;
}
html[data-game-theme="navy"] {
  color-scheme:dark;--g-bg:#101926;--g-panel:#1b2a3d;--g-board:#25364b;--g-text:#e8e5dc;--g-muted:#b6c1cb;--g-paper:#ded6c3;--g-paper-ink:#2a3240;--g-accent:#d4b579;--g-rule:#758395;--g-error:#edb19f;--g-success:#b6d6c3;--g-mark:#916543;
}
html[data-game-theme="paper"] {
  color-scheme:light;--g-bg:#dfd3bc;--g-panel:#fff8e9;--g-board:#d4c4a6;--g-text:#302b27;--g-muted:#655444;--g-paper:#fff8e9;--g-paper-ink:#302b27;--g-accent:#814633;--g-rule:#9a8264;--g-error:#973f36;--g-success:#315d45;--g-mark:#8e493d;
}
html[data-game-theme] {--bg:var(--g-bg);--panel:var(--g-panel);--ink:var(--g-text);--muted:var(--g-muted);--gold:var(--g-accent);--line:var(--g-rule);--paper:var(--g-paper);--night:var(--g-bg);--desk:var(--g-panel);--board:var(--g-board);--chalk:var(--g-text);--brass:var(--g-accent);}
html[data-game-theme] body {color:var(--g-text);background:var(--g-bg);}
html[data-game-theme] body.case-page {--ink:var(--g-paper-ink);}
html[data-game-theme] .topbar,html[data-game-theme] header {background:var(--g-panel);border-color:var(--g-rule);box-shadow:none;}
html[data-game-theme] .brand,html[data-game-theme] .topbar nav a,html[data-game-theme] .case-switch label {color:var(--g-text);}
html[data-game-theme] .case-switch select,html[data-game-theme] select,html[data-game-theme] input {background:var(--g-bg);color:var(--g-text);border-color:var(--g-rule);}
html[data-game-theme] .board {background:var(--g-board);border-color:var(--g-rule);box-shadow:inset 0 0 0 5px var(--g-panel);}
html[data-game-theme] .dossier {background:var(--g-paper);color:var(--g-paper-ink);border-color:var(--g-rule);box-shadow:none;}
html[data-game-theme] .dossier-intro,html[data-game-theme] .dossier .eyebrow,html[data-game-theme] .schema,html[data-game-theme] .hint,html[data-game-theme] .verdict-help,html[data-game-theme] .dossier code {color:var(--g-paper-ink);}
html[data-game-theme] .console {color:var(--g-text);background:var(--g-panel);border-color:var(--g-rule);box-shadow:none;}
html[data-game-theme] .console textarea,html[data-game-theme] .sql-editor,html[data-game-theme] pre {background:var(--g-bg);color:var(--g-text);border-color:var(--g-rule);box-shadow:none;}
html[data-game-theme] textarea::placeholder {color:var(--g-muted);}
html[data-game-theme] .console label,html[data-game-theme] .console > .eyebrow,html[data-game-theme] .results-head,html[data-game-theme] .board-count,html[data-game-theme] .board-status,html[data-game-theme] .board-head .eyebrow {color:var(--g-accent);}
html[data-game-theme] .mission,html[data-game-theme] .board-instruction,html[data-game-theme] .board-head h2,html[data-game-theme] .mobile-reference {color:var(--g-text);}
html[data-game-theme] .actions small,html[data-game-theme] footer {color:var(--g-muted);}
html[data-game-theme] .map-labels text {fill:var(--g-text);stroke:var(--g-board);}
html[data-game-theme] .map-walls,html[data-game-theme] .map-fixtures {stroke:var(--g-muted);}
html[data-game-theme] .map-doors,html[data-game-theme] .map-compass {stroke:var(--g-accent);}
html[data-game-theme] .map-compass text {fill:var(--g-accent);}
html[data-game-theme] .pin {background:var(--g-paper);color:var(--g-paper-ink);border-color:var(--g-rule);box-shadow:2px 4px 5px #0002;}
html[data-game-theme] .pin.active {background:color-mix(in srgb,var(--g-paper) 82%,var(--g-mark));outline-color:var(--g-accent);}
html[data-game-theme] .pin.found {background:var(--g-paper);}
html[data-game-theme] .clue.active {background:color-mix(in srgb,var(--g-paper) 84%,var(--g-mark));}
html[data-game-theme] .pin-index,html[data-game-theme] .pin-time,html[data-game-theme] .pin-detail {color:var(--g-paper-ink);}
html[data-game-theme] .connection,html[data-game-theme] .connection.linked {background:var(--g-panel);color:var(--g-text);border-color:var(--g-accent);box-shadow:none;}
html[data-game-theme] .connection p {color:var(--g-muted);}
html[data-game-theme] .connection .eyebrow {color:var(--g-accent);}
html[data-game-theme] .suspects button {background:var(--g-paper);color:var(--g-paper-ink);border-color:var(--g-rule);border-radius:4px;}
html[data-game-theme] .suspects button[aria-pressed=true] {background:color-mix(in srgb,var(--g-paper) 80%,var(--g-mark));box-shadow:inset 0 0 0 2px var(--g-mark);}
html[data-game-theme] #accuse {background:var(--g-paper);color:var(--g-mark);border-color:var(--g-mark);border-radius:4px;transform:none;}
html[data-game-theme] .actions .primary,html[data-game-theme] .primary {background:var(--g-accent);color:var(--g-bg);border-color:var(--g-accent);box-shadow:none;border-radius:4px;}
html[data-game-theme="paper"] .actions .primary,html[data-game-theme="paper"] .primary {color:#f4efe1;}
html[data-game-theme] .feedback {color:var(--g-text);}
html[data-game-theme] .feedback.error {color:var(--g-error);}
html[data-game-theme] .feedback.success {color:var(--g-success);}
html[data-game-theme] .dossier .feedback {color:var(--g-paper-ink);}
html[data-game-theme] .dossier .feedback.error {color:#973f36;}
html[data-game-theme] .dossier .feedback.success {color:#315d45;}
html[data-game-theme] th {background:var(--g-bg);color:var(--g-accent);}
html[data-game-theme] td,html[data-game-theme] th {border-color:var(--g-rule);}
html[data-game-theme] .duel-meter,html[data-game-theme] .player,html[data-game-theme] .invite-box,html[data-game-theme] .practice,html[data-game-theme] .mode {background:var(--g-panel);border-color:var(--g-rule);color:var(--g-text);}
html[data-game-theme] .scene {background:var(--g-paper);color:var(--g-paper-ink);border-color:var(--g-rule);}
html[data-game-theme] .scene .eyebrow {color:var(--g-mark);}
html[data-game-theme] .concepts p,html[data-game-theme] .mode p {color:var(--g-text);}
html[data-game-theme] .feedback {background:var(--g-panel);}
html[data-game-theme] .dossier .feedback {background:transparent;}
html[data-game-theme] .duel-status {color:var(--g-accent);}
html[data-game-theme] .button,html[data-game-theme] button:not(.pin):not(.clue):not(.lesson-link):not(.primary):not(#accuse) {background:var(--training-selected-bg,var(--g-panel));color:var(--training-selected-text,var(--g-text));border-color:var(--g-rule);}
html[data-game-theme] .suspects button:not(.primary) {background:var(--g-paper);color:var(--g-paper-ink);}
html[data-game-theme] .suspects button[aria-pressed=true] {background:color-mix(in srgb,var(--g-paper) 80%,var(--g-mark));}
html[data-game-theme] .choice[aria-pressed=true] {outline:2px solid var(--g-accent);}
/* The generic button and disabled rules must use the same selected color pair. */
html[data-game-theme] .training-main button.choice[aria-pressed=true] {
  --training-selected-bg:var(--g-board);
  --training-selected-text:var(--g-text);
  background:var(--training-selected-bg);
  color:var(--training-selected-text);
}
html[data-game-theme] button:focus-visible,html[data-game-theme] a:focus-visible,html[data-game-theme] select:focus-visible,html[data-game-theme] input:focus-visible,html[data-game-theme] textarea:focus-visible {outline:2px solid var(--g-accent);outline-offset:3px;}
