:root{color-scheme:light;--bg: #f2f0ea;--panel: #ffffff;--panel-border: #ddd8cc;--text: #2b2b33;--text-dim: #8a8794;--accent: #2f6fed;--accent-text: #ffffff;--danger: #d64545;--shadow: 0 8px 30px rgba(30, 30, 50, .14);--board-bg: #f7f5ef;--edge-faint: #cfcabd;--edge-hover: #2f6fed;--cross: #b0aa9c;--line: #2f6fed;--dot: #6f6a5e;--clue: #33323b;--clue-satisfied: #b3aea2;--clue-error: #d64545;--error: #d64545;--hint: #e79b17;--hint-face: rgba(231, 155, 23, .14);--win: #1fa85c}:root[data-theme=dark]{color-scheme:dark;--bg: #14161b;--panel: #1e2129;--panel-border: #31353f;--text: #e5e7ee;--text-dim: #8b8f9c;--accent: #5b9dff;--accent-text: #10131a;--danger: #ef6262;--shadow: 0 8px 30px rgba(0, 0, 0, .45);--board-bg: #191c22;--edge-faint: #3b404d;--edge-hover: #5b9dff;--cross: #565c69;--line: #5b9dff;--dot: #7d8290;--clue: #dfe2ea;--clue-satisfied: #565c69;--clue-error: #ef6262;--error: #ef6262;--hint: #f2b13d;--hint-face: rgba(242, 177, 61, .13);--win: #35c777}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);user-select:none;-webkit-user-select:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;border:1px solid var(--panel-border);background:var(--panel);transition:background .15s,border-color .15s,opacity .15s}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.btn.primary:hover:not(:disabled){filter:brightness(1.08)}select,input[type=text]{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--panel-border);border-radius:8px;padding:7px 10px}select:focus,input:focus{outline:2px solid var(--accent);outline-offset:-1px}label.row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:6px 0}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}
