.sd-page{--sd-thin: color-mix(in srgb, var(--text) 14%, transparent);--sd-line: color-mix(in srgb, var(--text) 40%, transparent);--sd-bad: #f44336}.sd-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:14px}.sd-seg{display:flex;background:var(--card-alt);border-radius:12px;padding:4px;gap:2px;margin-bottom:12px}.sd-seg-btn{flex:1;padding:8px 6px;border:none;border-radius:9px;background:transparent;color:var(--sub);font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.sd-seg-btn:hover{color:var(--text)}.sd-seg-btn.active{background:var(--primary);color:#fff;box-shadow:0 1px 4px #0000001f}.sd-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}.sd-stat{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;background:var(--card-alt);border-radius:10px}.sd-stat-v{font-size:17px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;line-height:1.1}.sd-stat-l{font-size:11px;color:var(--sub)}.sd-main{display:grid;grid-template-columns:1fr;gap:14px}@media(min-width:768px){.sd-main{grid-template-columns:minmax(0,1fr) 300px;align-items:start}}.sd-board-wrap{position:relative}.sd-board{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);aspect-ratio:1;width:100%;border:2px solid var(--sd-line);border-radius:8px;overflow:hidden;background:var(--card);font-size:clamp(17px,5.4vw,27px);touch-action:manipulation}@media(min-width:768px){.sd-board{font-size:27px}}.sd-cell{position:relative;display:flex;align-items:center;justify-content:center;padding:0;border:none;border-right:1px solid var(--sd-thin);border-bottom:1px solid var(--sd-thin);background:var(--card);color:var(--primary);font-size:1em;font-weight:600;line-height:1;cursor:pointer;transition:background .12s;-webkit-tap-highlight-color:transparent}.sd-cell:nth-child(9n){border-right:none}.sd-cell:nth-child(n+73){border-bottom:none}.sd-cell.bR{border-right:2px solid var(--sd-line)}.sd-cell.bB{border-bottom:2px solid var(--sd-line)}.sd-cell.given{color:var(--text);font-weight:700}.sd-cell.peer{background:color-mix(in srgb,var(--primary) 7%,var(--card))}.sd-cell.same{background:color-mix(in srgb,var(--primary) 20%,var(--card))}.sd-cell.bad,.sd-cell.wrong{background:color-mix(in srgb,var(--sd-bad) 16%,var(--card));color:var(--sd-bad)}.sd-cell.sel{background:color-mix(in srgb,var(--primary) 32%,var(--card));box-shadow:inset 0 0 0 2px var(--primary)}.sd-cell.hinted{animation:sd-pulse 1s ease-in-out infinite}@keyframes sd-pulse{0%,to{background:color-mix(in srgb,var(--primary) 32%,var(--card))}50%{background:color-mix(in srgb,var(--primary) 8%,var(--card))}}.sd-v{pointer-events:none}.sd-marks{position:absolute;inset:5%;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);pointer-events:none}.sd-marks i{display:flex;align-items:center;justify-content:center;font-size:.34em;font-style:normal;font-weight:600;color:var(--sub);line-height:1}.sd-win{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:color-mix(in srgb,var(--card) 92%,transparent);border-radius:8px;animation:fade-up .3s ease both;z-index:2}.sd-win-emoji{font-size:40px}.sd-win-title{font-size:19px;font-weight:700;color:var(--text)}.sd-win-stat{font-size:13px;color:var(--sub);text-align:center;padding:0 16px}.sd-pad{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.sd-key{position:relative;display:flex;align-items:center;justify-content:center;min-height:50px;border:1.5px solid var(--border);border-radius:11px;background:var(--card-alt);color:var(--text);font-size:21px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s;-webkit-tap-highlight-color:transparent}.sd-key:hover{border-color:var(--primary);background:var(--primary-muted)}.sd-key:active{filter:brightness(.95)}.sd-key .sd-rem{position:absolute;right:5px;bottom:3px;font-size:10px;font-style:normal;font-weight:600;color:var(--sub);line-height:1}.sd-key.done{opacity:.38}.sd-key-era{font-size:17px;color:var(--sub)}.sd-tools{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:9px}@media(min-width:768px){.sd-tools{grid-template-columns:repeat(2,1fr)}}.sd-tool{min-height:42px;padding:0 4px;border:1.5px solid var(--border);border-radius:10px;background:var(--card-alt);color:var(--sub);font-size:12.5px;font-weight:600;cursor:pointer;transition:all .15s}.sd-tool:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.sd-tool.on{background:var(--primary);border-color:var(--primary);color:#fff}.sd-tool:disabled{opacity:.4;cursor:not-allowed}.sd-actions{display:flex;align-items:center;gap:8px;margin-top:9px;flex-wrap:wrap}.sd-btn-sec{flex:1;min-width:90px;min-height:42px;border:none;border-radius:10px;background:var(--card-alt);color:var(--sub);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}.sd-btn-sec:hover{background:var(--primary-muted);color:var(--primary)}.sd-btn-sec.armed{background:color-mix(in srgb,var(--sd-bad) 16%,var(--card-alt));color:var(--sd-bad);flex-basis:100%}.sd-btn-main{padding:10px 20px;border:none;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--primary-end));color:#fff;font-size:14px;font-weight:700;cursor:pointer;transition:filter .15s}.sd-btn-main:hover{filter:brightness(1.08)}.sd-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;padding:0 4px}.sd-toggle input{display:none}.sd-track{position:relative;width:34px;height:20px;border-radius:10px;background:var(--border);transition:background .2s;flex-shrink:0}.sd-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--card);box-shadow:0 1px 3px #00000040;transition:transform .2s}.sd-toggle input:checked+.sd-track{background:var(--primary)}.sd-toggle input:checked+.sd-track .sd-thumb{transform:translate(14px)}.sd-toggle-lbl{font-size:12.5px;color:var(--sub);font-weight:600}.sd-msg{margin-top:12px;min-height:20px;font-size:12.5px;line-height:1.6;color:var(--sub)}.sd-msg[data-tone=warn]{color:var(--sd-bad)}.sd-msg[data-tone=good]{color:#4caf50}@media(max-width:767px){.sd-card{padding:12px 12px 14px}.sd-stat-v{font-size:15px}.sd-key{min-height:46px;font-size:19px}}
