:root{--bulb-r: #d6443f;--bulb-r-edge: #9c2b27;--bulb-b: #3f7fd6;--bulb-b-edge: #2a5fa8;--bulb-rb: #b388e0;--bulb-rb-edge: #6b46b0;--lit-core: #f4ecff;--wall: #2d2640;--wall-edge: #1c1730;--wall-ink: #f4f1fb}:root[data-cb]{--bulb-r: #d55e00;--bulb-r-edge: #9e4500;--bulb-b: #0072b2;--bulb-b-edge: #00547f;--bulb-rb: #cc79a7;--bulb-rb-edge: #9c4f78}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--page-bg);color:var(--ink);font-family:var(--body);min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}.mauve-collection-link{margin-top:1.5rem;text-align:center;font-size:.9rem}.mauve-collection-link a{display:inline-block;padding:.65rem;color:var(--muted);text-underline-offset:.2em}.mauve-collection-link a:hover{color:var(--ink)}.mauve-collection-link a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.kbd.red{background:var(--bulb-r);color:#fff;border-color:var(--bulb-r-edge)}.kbd.blue{background:var(--bulb-b);color:#fff;border-color:var(--bulb-b-edge)}:root{--bulb-g: #46cc8b;--bulb-g-edge: #168653}.puzzle-board.is-rgb{--cell-empty: #858990;--bulb-r: #ff7779;--bulb-r-edge: #b33845;--bulb-g: #61e59a;--bulb-g-edge: #218854;--bulb-b: #79b8ff;--bulb-b-edge: #3265a9;--full-light: #ffffff;--full-edge: #d7e2ed;--lit-core: #ffffff;--light-rg: #eee375;--light-rb: #db88ec;--light-gb: #70e1e4}.clue-count[data-colour=R]{fill:#ff8581}.clue-count[data-colour=G]{fill:#68e3a0}.clue-count[data-colour=B]{fill:#8fbcff}:root[data-cb] .clue-count[data-colour=R]{fill:#ffa66b}:root[data-cb] .clue-count[data-colour=B]{fill:#82cfff}.kbd.green{background:#168653;color:#fff;border-color:#11683f}.mauve-tutorial-steps{display:grid}.mauve-tutorial-step{grid-area:1 / 1}@media(prefers-reduced-motion:no-preference){.mauve-light{transition:opacity .24s ease-out}}.mauve-clue-focus{stroke:#f3c96a;stroke-width:.05;stroke-dasharray:0 .13;stroke-linecap:round;animation:mauve-clue-pulse 1.25s ease-in-out infinite}@keyframes mauve-clue-pulse{0%,to{stroke-opacity:1}50%{stroke-opacity:.7}}@media(prefers-reduced-motion:reduce){.mauve-clue-focus{animation:none}}
