.ng{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;max-width:600px;margin:0 auto}.ng-top{display:flex;align-items:center;gap:8px}.ng-tabs{display:flex;flex:1 1 0;min-width:0;gap:4px;background:var(--bg-2);border-radius:999px;padding:3px}.ng-tab{flex:1 1 0;min-width:0;border:0;background:transparent;border-radius:999px;padding:6px 4px;min-height:44px;font:inherit;font-weight:600;color:var(--ink-2);cursor:pointer;font-variant-numeric:tabular-nums}.ng-tab.is-on{background:var(--cell);color:var(--ink);box-shadow:0 1px 2px #00000014}.ng-gear{flex:none;min-height:44px;min-width:44px;padding:0;font-size:1.2rem}.ng-bar{display:flex;align-items:center;justify-content:space-between;gap:4px 12px;min-height:32px;flex-wrap:wrap}.ng-name{display:flex;align-items:center;gap:0 8px;flex-wrap:wrap;min-width:0}.ng-label{font-weight:700;color:var(--ink);font-size:.95rem;white-space:nowrap}.ng-today{min-height:36px;padding:4px 2px;font:inherit;font-size:.9rem;font-weight:700;color:var(--ink);background:none;border:0;text-decoration:underline;text-underline-offset:3px;cursor:pointer;white-space:nowrap}.ng-meta{display:flex;gap:12px;color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:.92rem;white-space:nowrap;margin-left:auto}.ng-meta b{color:var(--ink)}.ng-board-wrap{display:flex;justify-content:center;min-height:120px}.ng-loading{margin:24px 0;color:var(--ink-2);text-align:center}.ng-loading[hidden]{display:none}.ng-board{display:grid;--cs: 30px;--f: 14px;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;font-family:var(--font-display);font-variant-numeric:tabular-nums;isolation:isolate}.ng-corner{grid-row:1;grid-column:1}.ng-cc{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:0;padding-bottom:4px;font-size:var(--f);line-height:1.12;font-weight:700;color:var(--ink);border-radius:6px 6px 0 0}.ng-rc{display:flex;justify-content:flex-end;align-items:center;gap:calc(var(--f) * .42);padding-right:6px;font-size:var(--f);font-weight:700;color:var(--ink);border-radius:6px 0 0 6px;white-space:nowrap}.ng-cc span,.ng-rc span{transition:opacity calc(.2s * var(--motion)) ease}.ng-cc span.is-done,.ng-rc span.is-done{opacity:.32}.ng-cc.is-cross,.ng-rc.is-cross{background:var(--cell-selected)}.ng-cc.is-broken span:not(.is-done),.ng-rc.is-broken span:not(.is-done){color:var(--coral)}.ng-cc.is-hint,.ng-rc.is-hint{background:color-mix(in srgb,var(--sun) 40%,transparent)}.ng-cell{position:relative;background:var(--cell);border-right:1px solid var(--line);border-bottom:1px solid var(--line);box-sizing:border-box;cursor:pointer;transition:background-color calc(.12s * var(--motion)) ease}.ng-board .ng-cell[data-c="0"]{border-left:2px solid var(--ink-2)}.ng-board .ng-cell[data-r="0"]{border-top:2px solid var(--ink-2)}.ng-board.s5 .ng-cell[data-c="4"],.ng-board.s10 .ng-cell[data-c="9"],.ng-board.s15 .ng-cell[data-c="14"]{border-right:2px solid var(--ink-2)}.ng-board.s5 .ng-cell[data-r="4"],.ng-board.s10 .ng-cell[data-r="9"],.ng-board.s15 .ng-cell[data-r="14"]{border-bottom:2px solid var(--ink-2)}.ng-cell.bR{border-right:2px solid var(--ink-2)}.ng-cell.bB{border-bottom:2px solid var(--ink-2)}.ng-cell.is-cross{background:var(--cell-selected)}.ng-cell.is-fill{background:var(--ink)}.ng-cell.is-mark:before,.ng-cell.is-mark:after,.ng-cell.is-fixed:before,.ng-cell.is-fixed:after{content:"";position:absolute;left:22%;right:22%;top:50%;height:max(2px,calc(var(--cs) * .07));margin-top:max(-1px,calc(var(--cs) * -.035));background:var(--ink-2);border-radius:2px;transform:rotate(45deg);pointer-events:none}.ng-cell.is-mark:after,.ng-cell.is-fixed:after{transform:rotate(-45deg)}.ng-cell.is-fixed{background:color-mix(in srgb,var(--coral) 14%,var(--cell))}.ng-cell.is-fixed:before,.ng-cell.is-fixed:after{background:var(--coral)}.ng-cell.is-cursor{outline:3px solid var(--sun);outline-offset:-3px;z-index:2}.ng-cell.is-hint{animation:ng-hint calc(.8s * var(--motion)) ease-in-out 3;z-index:3}.ng-cell.is-shake{animation:sk-shake calc(.3s * var(--motion)) ease-in-out}@keyframes ng-hint{50%{box-shadow:0 0 0 4px var(--sun),0 0 0 6px var(--ink)}}.ng-board.is-solved .ng-cell{cursor:default;border-color:transparent!important;transition:border-color calc(.6s * var(--motion)) ease,background-color calc(.6s * var(--motion)) ease}.ng-board.is-solved .ng-cell:not(.is-fill){background:var(--cell)}.ng-board.is-solved .ng-cell.is-fill{background:var(--ink)}.ng-board.is-solved .ng-cc span,.ng-board.is-solved .ng-rc span{opacity:.25}.ng-reveal{margin:0;text-align:center;font-family:var(--font-display);font-weight:800;font-size:1.35rem;color:var(--ink)}.ng-reveal[hidden]{display:none}.ng-msg{margin:0;min-height:1.5em;color:var(--ink-2);font-size:.92rem;line-height:1.35}.ng-tools{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr);gap:8px}.ng-tools .suvi-btn{min-height:48px;padding:8px 6px;font-size:.95rem}.ng-modes{display:flex;gap:3px;background:var(--bg-2);border-radius:999px;padding:3px;min-width:0}.ng-mode{flex:1 1 0;min-width:0;min-height:42px;border:0;border-radius:999px;background:transparent;font:inherit;font-weight:600;font-size:.92rem;color:var(--ink-2);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:4px 6px}.ng-mode.is-on{background:var(--cell);color:var(--ink);box-shadow:0 1px 2px #00000014}.ng-sw{flex:none;width:14px;height:14px;border-radius:3px;position:relative}.ng-sw.is-fill{background:var(--ink)}.ng-sw.is-mark{border:1.5px solid var(--ink-2);box-sizing:border-box}.ng-sw.is-mark:before,.ng-sw.is-mark:after{content:"";position:absolute;left:1px;right:1px;top:50%;height:2px;margin-top:-1px;background:var(--ink-2);transform:rotate(45deg)}.ng-sw.is-mark:after{transform:rotate(-45deg)}.ng-after{display:grid;gap:6px;text-align:center}.ng-after[hidden]{display:none}.ng-done-title{margin:0;font-family:var(--font-display);font-weight:800;font-size:1.1rem;color:var(--ink)}.ng-done-body{margin:0;color:var(--ink-2)}.ng-after-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.ng-after-row .suvi-btn{min-height:48px;flex:1 1 140px}.ng-result .emoji{font-size:1.05rem}:root[data-text-size=large] .ng-tab{font-size:calc(1rem * 16 / 19);padding:6px 2px}:root[data-text-size=large] .ng-meta{font-size:calc(.92rem * 16 / 19)}:root[data-text-size=large] .ng-tools{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}:root[data-text-size=large] .ng-tools .ng-modes{grid-column:1 / -1}:root[data-text-size=large] .ng-tools .suvi-btn{padding:6px 4px}:root[data-text-size=large] .ng-reveal{font-size:calc(1.35rem * 16 / 19)}
