:root{--text:#5d5d5d;--null:#9b9a9c;--text-h:#08060d;--bg:#fff;--bg-raised:#fcfcfe;--border:#e5e4e7;--code-bg:#efefef;--accent:#e6308a;--accent-bg:#e6308a0a;--accent-border:#e6308a80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--shadow-lg:#0000001f 0 20px 25px -5px, #00000014 0 8px 10px -6px;--radius-xs:4px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--sans:"Jost", system-ui, "Segoe UI", Roboto, sans-serif;--heading:"Jost", system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (width<=1024px){:root{font-size:16px}}*,:before,:after{box-sizing:border-box}#root{text-align:center;width:1126px;max-width:100%;min-height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);flex-direction:column;margin:0 auto;display:flex}html{overscroll-behavior-y:none}body{margin:0}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}button{font:inherit;color:inherit}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px!important}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}.back-link{color:var(--text);justify-content:center;align-items:center;transition:color .15s,transform 80ms;display:inline-flex;position:absolute;top:16px;left:16px}.back-link:hover{color:var(--text-h)}.back-link:active{transform:scale(.92)}.back-icon{width:24px;height:24px}.dialog{border-radius:var(--radius-lg);background:var(--bg-raised);width:min(400px,100vw - 48px);box-shadow:var(--shadow-lg);color:var(--text);border:none;padding:0}.dialog::backdrop{background:#0006}.dialog-body{text-align:left;padding:24px}.dialog-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.dialog-head h3{font-family:var(--heading);color:var(--text-h);margin:0;font-size:1.15rem;font-weight:700}.dialog-text{color:var(--text);margin:0;font-size:.95rem;line-height:1.5}.dialog-actions{gap:8px;margin-top:20px;display:flex}.dialog-close{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);width:30px;height:30px;color:var(--text);cursor:pointer;justify-content:center;align-items:center;transition:border-color .15s,color .15s;display:inline-flex}.dialog-close:hover{border-color:var(--text-h);color:var(--text-h)}.dialog-close-icon{width:13px;height:13px}.btn{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);min-width:0;color:var(--text-h);cursor:pointer;text-align:center;flex:1;justify-content:center;align-items:center;gap:6px;padding:10px;font-size:1rem;font-weight:700;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.4;cursor:default}.btn.primary{background:var(--text-h);border-color:var(--text-h);color:var(--bg)}.error-screen{text-align:center;flex-direction:column;align-items:center;gap:12px;max-width:400px;margin:0 auto;padding:64px 16px;display:flex}.error-screen h1{margin:0;font-size:28px}.error-screen p{color:var(--text);margin-bottom:8px}.error-screen .btn{flex:none;padding:10px 24px}.error-screen .error-feedback{color:var(--null);text-underline-offset:3px;font-size:13px;text-decoration:underline}.settings-dialog.dialog{width:min(400px,100vw - 32px);max-height:calc(100dvh - 48px);overflow-y:auto}.settings-section{border-top:1px solid var(--border);margin-top:20px;padding-top:20px}.settings-section:first-of-type{border-top:none;margin-top:0;padding-top:0}.settings-section h4{font-family:var(--heading);letter-spacing:.08em;text-transform:uppercase;color:var(--null);margin:0 0 10px;font-size:.8rem;font-weight:700}.settings-hint{color:var(--null);margin:0;font-size:.8rem;line-height:1.4}.error-text{color:#d53a0f}.inline-icon{flex-shrink:0;width:15px;height:15px}.progress-panel{align-content:space-between;gap:10px;display:grid}.progress-panel.centered{align-content:center}.code-row{gap:8px;display:flex}.code-row .code-display{flex:1;min-width:0}.code-copy{flex:none;width:104px;height:44px;font-size:.9rem}.code-display{letter-spacing:.14em;text-indent:.14em;background:var(--code-bg);border-radius:var(--radius-sm);justify-content:center;align-items:center;height:44px;font-size:1.15rem;display:flex}.code-input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);width:100%;height:44px;color:var(--text-h);font-family:var(--mono);letter-spacing:.1em;text-align:center;padding:0 12px;font-size:1.05rem}.code-input:focus-visible{border-color:var(--text-h);outline:none}.btn-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.btn-row.three{grid-template-columns:repeat(3,minmax(0,1fr))}.btn-row .btn{height:40px;padding:0 8px;font-size:.9rem}.progress-panel .btn.primary:disabled{opacity:1;background:var(--border);border-color:var(--border);color:var(--null)}.import-diff{margin:0;padding:0;font-size:.85rem;list-style:none}.import-diff li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:5px 0;display:flex}.import-diff li:last-child{border-bottom:none}.import-diff-change{font-family:var(--mono);color:var(--text-h)}.palette-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.palette-option{border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;flex-direction:column;justify-content:space-between;align-items:center;gap:8px;padding:10px 6px;transition:border-color .15s;display:flex}.palette-option:hover{border-color:var(--null)}.palette-option.on{border-color:var(--accent)}.palette-option.on .palette-name{color:var(--text-h);font-weight:700}.palette-strip{gap:4px;display:flex}.palette-chip{border-radius:4px;width:18px;height:18px}.palette-name{color:var(--text);font-size:.85rem;line-height:1.2}.custom-swatches{gap:8px;margin-top:10px;display:grid}.custom-swatches .custom-swatch{appearance:none;border-color:var(--border);background:0 0;overflow:hidden}.custom-swatches .custom-swatch::-webkit-color-swatch-wrapper{padding:0}.custom-swatches .custom-swatch::-webkit-color-swatch{border-radius:calc(var(--radius-sm) - 2px);border:none}.custom-swatches .custom-swatch::-moz-color-swatch{border-radius:calc(var(--radius-sm) - 2px);border:none}.home-screen{flex-direction:column;flex:1;align-items:center;gap:18px;width:100%;max-width:480px;margin:0 auto;padding:38px 12px 12px;display:flex;position:relative}.settings-button{top:calc(16px + env(safe-area-inset-top));right:calc(16px + env(safe-area-inset-right));z-index:5;color:var(--text);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;transition:color .15s,transform 80ms;display:inline-flex;position:fixed}.settings-button:hover{color:var(--text-h)}.settings-button:active{transform:scale(.92)}.settings-icon{width:24px;height:24px}.home-header{text-align:center;flex-direction:column;align-items:center;gap:14px;display:flex}.home-header h1{letter-spacing:0.5%;margin:0}.mark{gap:8px;display:flex}.mark-glyph{width:20px;height:20px}.size-cards{flex-direction:column;gap:14px;width:100%;max-width:360px;margin-top:14px;display:flex}.size-card{background:var(--bg);border:2px solid var(--border);border-radius:var(--radius-lg);color:inherit;justify-content:space-between;align-items:center;gap:24px;padding:12px;text-decoration:none;transition:border-color .15s,transform 80ms;display:flex}.size-card:hover{border-color:var(--text-h)}.size-card:active{transform:scale(.98)}.size-card-grid{flex-shrink:0;gap:2px;width:68px;height:68px;display:grid}.size-card-cell{justify-content:center;align-items:center;display:flex}.size-card-glyph{width:82%;height:82%}.size-card-info{flex-direction:column;gap:4px;min-width:0;display:flex}.size-card-label{letter-spacing:-.02em;color:var(--text-h);font-size:1.5rem;font-weight:700}.size-card-subtitle{color:var(--text);opacity:.8;align-items:center;gap:4px;font-size:.85rem;display:inline-flex}.size-card-subtitle.complete{color:var(--accent);opacity:1;font-weight:700}.size-card-complete-icon{width:24px;height:24px}.size-card-secret{background:var(--text-h);border-color:var(--text-h)}.size-card-secret:hover{border-color:#f97316}.size-card-secret .size-card-label{color:var(--bg)}.size-card-subtitle.secret{color:#f97316;opacity:1;font-weight:700}.size-card-crown{color:#f97316;flex-shrink:0;width:40px;height:40px}.how-to-play-link{color:var(--text);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:4px;font-size:1rem;font-weight:600;transition:color .15s;display:inline-flex}.how-to-play-link:hover{color:var(--text-h)}.how-to-play-icon{width:24px;height:24px}.rules{color:var(--text);margin:0;padding-left:18px;font-size:.9rem;line-height:1.4}.rules li{margin-bottom:6px}.rules li:last-child{margin-bottom:0}.feedback-footer{text-align:center;flex-wrap:wrap;justify-content:center;gap:8px 24px;margin-top:auto;padding-top:10px;display:flex}.feedback-footer .cta{width:100%;color:var(--text);justify-content:center;gap:8px;font-size:14px;display:flex}.feedback-footer a{color:var(--text);text-underline-offset:3px;font-size:14px;text-decoration:underline}.feedback-footer a:hover{color:var(--text-h)}.level-select-screen{flex-direction:column;gap:20px;max-width:480px;margin:0 auto;padding:12px;display:flex;position:relative}.level-select-topbar{z-index:10;background:var(--bg);border-bottom:1px solid #0000;margin:-14px -12px 0;padding:14px 12px 12px;position:sticky;top:0}.level-select-header{text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.level-select-header h2{margin:0;font-size:1.6rem;font-weight:700}.progress-header{align-items:center;gap:12px;width:100%;display:flex}.progress-meter{appearance:none;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-raised);flex:1;height:12px;overflow:hidden}.progress-meter::-webkit-progress-bar{background:var(--bg-raised);border-radius:var(--radius-sm)}.progress-meter::-webkit-progress-value{background:var(--accent);border-radius:var(--radius-sm);transition:width .3s}.progress-meter::-moz-progress-bar{background:var(--accent);border-radius:var(--radius-sm)}.progress-num{color:var(--text);white-space:nowrap;flex-shrink:0;font-size:.8rem}.progress-num strong{color:var(--text-h);font-weight:700}.endless-cta{border-radius:var(--radius-sm);border:2px solid var(--accent);width:100%;color:var(--text-h);justify-content:center;align-items:center;gap:8px;margin-top:4px;padding:10px;font-weight:700;text-decoration:none;transition:transform 80ms;display:inline-flex}.endless-cta:hover{background-color:var(--accent-bg)}.endless-cta:active{transform:scale(.98)}.endless-cta-icon{width:24px;height:24px}.level-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.level-btn{aspect-ratio:1;border-radius:var(--radius-md);border:2px solid var(--border);background:var(--bg);color:var(--text-h);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:4px;font-weight:700;text-decoration:none;transition:transform 80ms,border-color .15s;display:flex;position:relative}.level-glyph{width:45%;height:45%}.level-number{font-size:16px;line-height:1}.level-btn:active{transform:scale(.92)}.level-btn.locked{opacity:.3;cursor:not-allowed;color:var(--text)}.level-btn.solved:hover{border-color:var(--text-h)}.level-btn.next{border-color:var(--accent)}.level-btn.next:hover{background-color:var(--accent-bg)}.game-screen{flex-direction:column;align-items:center;gap:12px;width:100%;max-width:480px;margin:0 auto;padding:12px;display:flex;position:relative}.game-header{justify-content:flex-end;align-items:center;width:100%;font-size:.85rem;display:flex}.level-infinity{width:24px;height:24px;display:block}.level-tag{background:var(--bg-raised);border:1px solid var(--border);color:var(--text);border-radius:999px;align-items:baseline;gap:3px;padding:6px 12px;font-size:.75rem;font-weight:600;display:inline-flex}.level-tag strong{color:var(--text-h);font-size:.95rem;font-weight:700}.level-tag-sep{opacity:.4}.grid{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);gap:6px;width:100%;max-width:fit-content;padding:6px;display:grid}.grid.celebrate{animation:.4s cubic-bezier(.34,1.15,.64,1) gridPop}@keyframes gridPop{0%{transform:scale(1)}10%{transform:scale(.98)}50%{transform:scale(1.11)}to{transform:scale(1)}}.cell{aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;justify-content:center;align-items:center;padding:0;transition:border-color .15s,background .15s;display:flex}.cell.given-both,.cell.given-part{background:#8080800f}.cell.sel{border-color:var(--text-h);border-width:2px}.cell.conflict,.cell.flagged{border-width:2px;border-color:#d20000;animation:.3s ease-in-out shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}50%{transform:translate(4px)}75%{transform:translate(-4px)}}.cell.won{background-color:#e8fff4;border-width:2px;border-color:#05e77e}.cell.hinted{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-bg);border-width:2px}.glyph{width:60%;height:60%;display:block}.picker{flex-direction:column;align-items:center;gap:10px;display:flex}.row{grid-template-columns:repeat(4,minmax(0,58px));gap:8px;width:100%;max-width:fit-content;display:grid}.swatch{border-radius:var(--radius-sm);cursor:pointer;border:2px solid #0000;width:100%;height:36px;padding:0}.swatch.on{border-color:var(--text-h);transform:scale(1.15)}.swatch:disabled{opacity:.3;cursor:default}.shape-btn.hint{border-color:var(--accent);animation:1.4s ease-in-out infinite hintPulse}.swatch.hint{border-color:var(--accent);animation:1.4s ease-in-out infinite hintPulseSwatch}@keyframes hintPulse{0%,to{box-shadow:0 0 0 0 var(--accent-bg)}50%{box-shadow:0 0 0 5px var(--accent-bg)}}@keyframes hintPulseSwatch{0%,to{box-shadow:inset 0 0 0 1px #fff, 0 0 0 0 var(--accent-bg)}50%{box-shadow:inset 0 0 0 1px #fff, 0 0 0 5px var(--accent-bg)}}.shape-btn,.control-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;justify-content:center;align-items:center;width:100%;height:36px;padding:0;transition:transform .1s,border-color .15s;display:flex}.shape-glyph{width:24px;height:24px;display:block}.btn-icon{width:20px;height:20px;color:var(--text);flex-shrink:0;transition:color .15s}.control-btn:not(:disabled):hover{border-color:var(--text-h)}.control-btn:not(:disabled):hover .btn-icon{color:var(--text-h)}.control-btn:not(:disabled):active{transform:scale(.92)}.control-btn:disabled{opacity:.3;cursor:default}.shape-btn.on{border-color:var(--text-h);transform:scale(1.15)}.shape-btn:disabled .shape-glyph{opacity:.3;cursor:default}.game-controls{margin-top:6px}.controls{gap:8px;width:100%;margin-top:6px;display:flex}
