.ng{--ng-ink: #2b1d08;--ng-line: #3d2e14;--ng-num: 13px;--ng-rail-w: calc(var(--ng-rk) * var(--ng-num) * .95 + 12px);--ng-rail-h: calc(var(--ng-ck) * var(--ng-num) * 1.12 + 10px);--ng-cell: min( 40px, calc((100vw - 64px - var(--ng-rail-w)) / var(--ng-n)), calc((100dvh - 340px - var(--ng-rail-h)) / var(--ng-n)) );display:flex;flex-direction:column;align-items:center;gap:12px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.ng-frame{padding:10px;border-radius:10px;background:repeating-linear-gradient(94deg,rgb(0 0 0 / .14) 0 2px,transparent 2px 9px),linear-gradient(160deg,#5a3a20,#2f1c0e);border:1px solid #1a0f06;box-shadow:inset 0 1px #ffffff24,0 14px 30px #00000073}.ng-plate{position:relative;display:grid;grid-template-columns:var(--ng-rail-w) repeat(var(--ng-n),var(--ng-cell));grid-template-rows:var(--ng-rail-h) repeat(var(--ng-n),var(--ng-cell));padding:5px;border-radius:4px;background:linear-gradient(135deg,#a8842f,#e8c068 45%,#9a7528);box-shadow:inset 0 0 0 1px var(--ng-line),inset 0 2px #ffffff59;touch-action:none;outline:none}.ng-plate:focus-visible{box-shadow:inset 0 0 0 1px var(--ng-line),0 0 0 3px #2ec4b6}.ng-corner{margin:6px;border-radius:50%;border:1.5px solid rgb(61 46 20 / .5);background:linear-gradient(90deg,transparent calc(50% - .5px),rgb(61 46 20 / .45) calc(50% - .5px) calc(50% + .5px),transparent calc(50% + .5px)),linear-gradient(0deg,transparent calc(50% - .5px),rgb(61 46 20 / .45) calc(50% - .5px) calc(50% + .5px),transparent calc(50% + .5px));aspect-ratio:1;align-self:center;justify-self:center;width:min(34px,70%)}.ng-clue{display:flex;font:700 var(--ng-num) / 1.12 Georgia,"Times New Roman",serif;color:var(--ng-ink);text-shadow:0 1px 0 rgb(255 240 200 / .55);font-variant-numeric:tabular-nums;transition:opacity .2s,color .2s,background-color .15s}.ng-col{flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:4px}.ng-row{justify-content:flex-end;align-items:center;gap:.35em;padding-right:6px}.ng-clue.ng-done{opacity:.35}.ng-clue.ng-hot{background:#fff8dc73;border-radius:3px;opacity:1}.ng-cell{position:relative;border:1px solid rgb(61 46 20 / .55);background:linear-gradient(145deg,#f1d488,#c79f4a);box-shadow:inset 0 1px #ffffff80;cursor:pointer;transition:background .08s}.ng-cell.ng-r5{border-top:2px solid var(--ng-line)}.ng-cell.ng-c5{border-left:2px solid var(--ng-line)}.ng-cell.ng-lit:not(.ng-fill){background:linear-gradient(145deg,#f8e2a6,#d9b462)}.ng-cell.ng-fill{background:linear-gradient(145deg,#0e0b07,#2a2015);box-shadow:inset 0 2px 4px #000,inset 0 -1px #ffdc9640}.ng-cell.ng-cross:after{content:"";position:absolute;top:24%;right:24%;bottom:24%;left:24%;background:linear-gradient(45deg,transparent 42%,#6b5120 42% 58%,transparent 58%),linear-gradient(-45deg,transparent 42%,#6b5120 42% 58%,transparent 58%)}.ng-cell.ng-cursor{outline:2px solid #2ec4b6;outline-offset:-2px;z-index:1}.ng-solved .ng-cell:not(.ng-fill){background:linear-gradient(145deg,#f6dfa0,#d7b25c);border-color:transparent}.ng-solved .ng-cell.ng-fill{border-color:transparent;animation:ng-shine 1s ease-out both}.ng-solved .ng-clue{opacity:.2}.ng-solved .ng-plate{cursor:default}@keyframes ng-shine{40%{background:linear-gradient(145deg,#3a3020,#0e0b07);box-shadow:inset 0 2px 4px #000,0 0 10px #ffdc9699}}.ng-tools{display:flex;align-items:center;justify-content:center;gap:10px}.ng-seg{display:flex;border-radius:999px;overflow:hidden;border:1px solid var(--line, #2a3057)}.ng-seg button{display:flex;align-items:center;gap:8px;border:0;border-radius:0;color:var(--ink, #eef1ff);background:var(--surface, #151a33)}.ng-seg button[aria-pressed=true]{color:var(--accent-ink, #0b0d1c);background:var(--accent, #7c8cff)}.ng-swatch{position:relative;display:inline-block;width:16px;height:16px;border-radius:3px}.ng-swatch-fill{background:#0e0b07;box-shadow:inset 0 0 0 1px #c79f4a}.ng-swatch-cross{background:#c79f4a}.ng-swatch-cross:after{content:"×";position:absolute;top:0;right:0;bottom:0;left:0;color:#3d2e14;font-size:.95rem;line-height:15px;text-align:center;font-weight:800}.ng-caption{margin:0;min-height:1.5em;font-size:.9rem;color:var(--muted, #9aa3cc);text-align:center}.ng-solved .ng-caption{font-size:1.2rem;font-weight:700;color:var(--ink, #eef1ff)}@media(prefers-reduced-motion:reduce){.ng-solved .ng-cell.ng-fill{animation:none}}:root{--bg: #0b0d1c;--surface: #151a33;--line: #2a3057;--ink: #eef1ff;--muted: #9aa3cc;--accent: #7c8cff;--accent-ink: #0b0d1c;--pad-bg: var(--bg);--pad-surface: var(--surface);--pad-line: var(--line);--pad-ink: var(--ink);--pad-muted: var(--muted);--pad-accent: var(--accent);--pad-accent-strong: var(--accent);--pad-accent-ink: var(--accent-ink);--pad-tile: #1b2142;--pad-bad: #ff8a80;color-scheme:dark}@media(prefers-color-scheme:light){:root{--bg: #f5f6fb;--surface: #ffffff;--line: #dfe3f2;--ink: #161a2e;--muted: #5d6488;--accent: #4353d6;--accent-ink: #ffffff;--pad-accent: #7c8cff;--pad-accent-strong: #4353d6;--pad-tile: #eef0fa;--pad-bad: #b3261e;color-scheme:light}}*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:var(--bg);color:var(--ink);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overscroll-behavior:none;touch-action:manipulation}.site{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px}.board{display:flex;flex-direction:column;align-items:center;gap:12px}.stage{display:flex;align-items:center;justify-content:center}.tools{display:flex;align-items:center;justify-content:center;gap:12px;width:min(100%,420px);font-size:.9rem;color:var(--muted);font-variant-numeric:tabular-nums}button{font:inherit;font-weight:700;min-height:44px;padding:8px 16px;border-radius:999px;cursor:pointer}button.quiet{color:var(--ink);background:var(--surface);border:1px solid var(--line)}button.link{padding:0;color:var(--muted);background:none;border:0;font-weight:400;text-decoration:underline;text-underline-offset:3px}button:hover{filter:brightness(1.08)}button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.ng-mini{display:grid;grid-template-columns:repeat(var(--ng-n),1fr);width:min(160px,50vw);aspect-ratio:1;margin:0 auto;padding:6px;border-radius:4px;background:linear-gradient(135deg,#a8842f,#e8c068 45%,#9a7528);box-shadow:inset 0 0 0 1px #3d2e14}.ng-mini i.on{background:#14100a}
