:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-text:#1f1f1f;--color-text-muted:#6a6a66;--color-text-strong:#2f2f2a;--color-bg:#f6f6f4;--color-card:#fff;--color-border:#d6d6d0;--color-border-strong:#e2e2de;--color-input-bg:#fafaf7;--color-panel-bg:#f3f3ef;--color-grid-bg:#f0f0ed;--color-shadow:#0000000f;--color-shadow-strong:#0003;--color-dark:#1f1f1f}body{background:var(--color-bg);color:var(--color-text);margin:0;font-family:"Source Sans 3",Avenir Next,Segoe UI,sans-serif}.page{max-width:900px;margin:40px auto 64px;padding:0 20px}.card{background:var(--color-card);border:1px solid var(--color-border-strong);box-shadow:0 8px 24px var(--color-shadow);border-radius:12px;padding:20px;position:relative}.title{margin:0 0 12px;font-size:20px;font-weight:600}.github-corner{color:#fff;width:64px;height:64px;text-decoration:none;position:absolute;top:0;right:0}.github-corner svg{fill:#1f1f1f;color:#fff;width:64px;height:64px}.github-corner:hover .octo-arm{animation:.56s ease-in-out octo-wave}.github-corner:focus-visible{outline:2px solid var(--color-dark);outline-offset:2px}@keyframes octo-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}.octo-arm{transform-origin:130px 106px}.octo-arm,.octo-body{fill:#fff}.input-row{align-items:center;gap:12px;margin-bottom:16px;display:flex}.input{border:1px solid var(--color-border);background:var(--color-input-bg);color:var(--color-text);border-radius:10px;flex:1;padding:10px 12px;font-size:14px}.hint{color:var(--color-text-muted);margin-top:6px;font-size:12px}.status{color:var(--color-text-muted);margin-top:12px;font-size:14px}.grid-wrap{flex-direction:column;align-items:center;margin-top:16px;display:flex;overflow-x:auto}.puzzle-meta{justify-content:center;align-items:center;display:flex}.puzzle-meta-line{color:var(--color-text-strong);background:0 0;border:none;border-radius:0;align-items:center;gap:10px;padding:0;font-size:13px;display:inline-flex;overflow:visible}.puzzle-size{font-weight:600}.palette-label{color:var(--color-text-strong);text-transform:lowercase;letter-spacing:.03em;font-size:12px}.palette-inline{align-items:center;gap:6px;display:inline-flex;overflow:visible}.grid-toggle{border:1px solid var(--color-border);background:var(--color-card);color:var(--color-text-strong);cursor:pointer;border-radius:999px;width:80px;margin-left:6px;padding:4px 8px;font-size:11px}.grid-toggle:hover{background:var(--color-panel-bg)}.swatch-color{width:12px;height:12px;box-shadow:inset 0 0 0 .5px var(--color-shadow-strong);border-radius:999px;position:relative}.swatch-color:hover:after{content:attr(data-color);background:var(--color-dark);color:var(--color-card);white-space:nowrap;box-shadow:0 6px 12px var(--color-shadow-strong);pointer-events:none;z-index:2;border-radius:6px;padding:3px 6px;font-size:11px;position:absolute;top:18px;left:50%;transform:translate(-50%)}.grid{background:var(--color-grid-bg);border-radius:10px;margin-top:12px;padding:6px}.step-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin-top:14px;display:flex}.step-slider{appearance:none;background:linear-gradient(90deg,#dcdcd6,#e9e9e4);border-radius:999px;outline:none;width:min(420px,70vw);height:6px}.step-label{color:var(--color-text-muted);white-space:nowrap;font-size:12px}.step-note{color:var(--color-text-muted);text-align:center;margin-top:8px;font-size:12px}.step-note a{color:var(--color-text-strong);text-decoration:underline}.step-slider::-webkit-slider-thumb{appearance:none;background:var(--color-dark);border:2px solid var(--color-panel-bg);cursor:pointer;border-radius:50%;width:16px;height:16px;box-shadow:0 2px 8px #00000026}.step-slider::-moz-range-thumb{background:var(--color-dark);border:2px solid var(--color-panel-bg);cursor:pointer;border-radius:50%;width:16px;height:16px;box-shadow:0 2px 8px #00000026}.step-slider::-moz-range-track{background:linear-gradient(90deg,#dcdcd6,#e9e9e4);border-radius:999px;height:6px}.grid.show-lines .cell{box-shadow:inset 0 0 0 .5px #0000001f}@media (max-width:600px){.puzzle-meta-line{flex-direction:column;align-items:center;gap:6px}.palette-inline{flex-wrap:wrap}.grid-toggle{justify-content:space-between;width:100%}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}