:root{color-scheme:light;--line-thin: #bbb;--line-thick: #333;--cell-bg: #fff;--cell-selected: #cfe8ff;--cell-highlight: #ebf3fd;--text-given: #636363;--text-user: #558ec9;--text-note: #bfbfbf;--text-mistake: #c01c28;--hint-accent: #62afc4;--hint-accent-bg: #eaf5f8;--text-revealed: var(--hint-accent);--gold-border: #d4af37;--gold-bg: #170f06;--gold-text: #ffcf5c}*{box-sizing:border-box}body{font-family:system-ui,sans-serif;margin:0;padding:1rem;background:#fff;color:#000;display:flex;flex-direction:column;align-items:center;gap:1rem}#app{display:flex;flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:32rem}.victory-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000;opacity:0;pointer-events:none;transition:opacity .7s ease;z-index:15}#app.celebrating .victory-backdrop{opacity:.6;pointer-events:auto;cursor:pointer}#app.celebrating>*:not(.victory-backdrop):not(.board-container){opacity:.32;pointer-events:none}#app.celebrating .board-container>.hint-panel-wrap{opacity:.32;pointer-events:none}.board-container{display:flex;flex-direction:column}.app-title{margin:0;margin-bottom:-.5rem;font-size:2.25rem;font-weight:800;color:var(--text-given);transition:color .5s ease}#app.celebrating .app-title{color:#fff}.board{position:relative;display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);width:min(90vw,32rem);aspect-ratio:1 / 1;margin-top:-.75rem;border:2px solid var(--line-thick);overflow:hidden}.hint-arrow{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:5}.hint-arrow line,.hint-arrow polygon{fill:#e5342b;stroke:#e5342b;stroke-width:4;stroke-linecap:round}.hint-arrow.hint-arrow-hidden{display:none}.cell{position:relative;border:1px solid var(--line-thin);background:var(--cell-bg);display:flex;align-items:center;justify-content:center;font-size:min(6.4vw,2.4rem);cursor:pointer;padding:0;touch-action:none;-webkit-user-select:none;user-select:none;overflow:hidden}.cell.box-top{border-top:2px solid var(--line-thick)}.cell.box-left{border-left:2px solid var(--line-thick)}.cell.box-bottom{border-bottom:2px solid var(--line-thick)}.cell.box-right{border-right:2px solid var(--line-thick)}.cell.selected{background:#b5d3f5}.cell.peer,.cell.value-match{background:var(--cell-highlight)}.cell-value{color:var(--text-user);font-weight:700;line-height:1;transform:scale(1);transform-origin:center;transition:transform .12s ease}.cell.given .cell-value{color:var(--text-given)}.cell.revealed .cell-value{color:var(--text-revealed)}.cell.value-match .cell-value,.cell.selected .cell-value{transform:scale(1.3)}.cell-value.enlargement-expired{transform:scale(1)!important}.cell-value.enlargement-fading{transform:scale(1)!important;transition:transform 1s ease}.cell.mistake .cell-value{color:var(--text-mistake)}.cell.paused-cell .cell-value{color:#0000004d}.cell.completion-flash-bg{transition:none;background:#000!important}.cell-value.completion-flash-text{transition:none;color:#fff!important}.board.paused .cell{cursor:default}.board.solved{--line-thick: var(--gold-border);--line-thin: var(--gold-border);position:relative;z-index:20;border-color:var(--gold-border);box-shadow:0 0 18px #d4af3766,0 0 46px #d4af3738}.board.solved .cell{background:radial-gradient(circle at 50% 45%,#2a1c0a,#170f06 55%,#0b0703)}.board.solved .cell-value{color:var(--gold-text);text-shadow:0 0 6px rgba(255,207,92,.9),0 0 16px rgba(255,180,60,.55)}.celebration{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;z-index:5}.board.solved .celebration{opacity:1}.celebration-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:2}.nailed-it-wrap{position:relative;z-index:1;max-width:85%;pointer-events:none;touch-action:none;cursor:grab}.board.solved .nailed-it-wrap{pointer-events:auto}.nailed-it-wrap.dragging{cursor:grabbing}.nailed-it{background:#000;border:5px solid var(--gold-border);border-radius:.5rem;box-shadow:0 0 16px #d4af3780,0 0 34px #d4af3740;font-weight:800;font-size:min(7vw,2rem);padding:.5em .7em;text-align:center;color:var(--gold-text);text-shadow:0 0 10px rgba(255,207,92,.6);transform:scale(0)}.board.solved .nailed-it{animation:nailed-it-pop .5s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes nailed-it-pop{0%{transform:scale(0)}60%{transform:scale(1.1)}to{transform:scale(1)}}.rabbit-hole-link{display:block;margin-top:.85em;padding-top:.6em;border-top:1px solid rgba(212,175,55,.3);font-size:.48em;font-weight:600;font-style:italic;color:var(--gold-text);text-decoration:none;text-underline-offset:.2em;cursor:pointer;opacity:.88;transition:color .15s ease,opacity .15s ease,transform .1s ease}.rabbit-hole-link:hover{color:#fff6da;opacity:1;text-decoration:underline}.rabbit-hole-link:active{transform:scale(.96)}@media (prefers-reduced-motion: reduce){.victory-backdrop{transition:none}.nailed-it{transform:scale(1);opacity:0;transition:opacity .4s ease}.board.solved .nailed-it{animation:none;opacity:1}}.cell-notes{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;padding:2px}.note{font-size:min(2.56vw,1.04rem);line-height:1;color:var(--text-note);font-weight:700;display:flex;align-items:center;justify-content:center;overflow:hidden}.note.match{color:#000;font-weight:700}.cell-value.hidden,.cell-notes.hidden{display:none}.pads-row{display:flex;flex-direction:row;gap:1.5rem;width:100%;justify-content:center}.pads-row.swapped{flex-direction:row-reverse}.pad-group{display:flex;flex-direction:column;align-items:center;gap:.4rem}.pad-swap{align-self:center;background:none;border:none;padding:0;font-size:1.5rem;line-height:1;color:var(--line-thin);cursor:pointer}.number-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem}.pad-button{width:min(11vw,3.4rem);height:min(11vw,3.4rem);border:1px solid var(--line-thin);border-radius:.5rem;background:var(--cell-bg);font-size:min(5.5vw,1.7rem);font-weight:700;cursor:pointer;transform:scale(1);transform-origin:center;transition:opacity .2s ease,transform .2s ease}.number-pad-value .pad-button{color:var(--text-user);font-size:min(6.6vw,2.04rem)}.number-pad-notes .pad-button{color:var(--text-note)}.pad-button.pad-complete{opacity:0;transform:scale(.5);pointer-events:none}.controls{display:flex;flex-direction:column;gap:.5rem;width:100%}.control-group{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.gimme-wrap{position:relative}.gimme-trigger{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:16px;padding:.35rem .85rem;background:#fff;border:1px solid var(--line-thick);border-radius:.25rem;color:#000;cursor:pointer}.gimme-menu{position:absolute;top:calc(100% + .4rem);left:50%;transform:translate(-50%);z-index:25;display:flex;flex-direction:column;min-width:11rem;background:#fff;border:1px solid var(--line-thick);border-radius:.375rem;box-shadow:0 .25rem .75rem #00000026;padding:.25rem 0;overflow:hidden}.gimme-menu.hidden{display:none}.gimme-item{display:block;width:100%;text-align:left;background:none;border:none;padding:.55rem .9rem;font-size:.95rem;color:#000;cursor:pointer;white-space:nowrap}.gimme-item:hover,.gimme-item:focus-visible{background:var(--cell-highlight);outline:none}.status-group{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;font-variant-numeric:tabular-nums}.status-text-group{display:flex;align-items:baseline;gap:.75rem;justify-self:start}.status-center-group{display:flex;align-items:center;gap:.35rem;justify-self:center}.difficulty-badge{font-size:1.35rem;line-height:1}.icon-button-wrap{position:relative;display:flex}.icon-button-wrap-end .icon-button-flash-label{left:auto;right:0;transform:none}.icon-button-flash-label{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:.25rem;white-space:nowrap;font-size:.7rem;font-weight:700;color:var(--line-thick);opacity:0;pointer-events:none}.icon-button-flash-label.icon-label-show{opacity:1}.icon-button-flash-label.icon-label-fade{opacity:0;transition:opacity .5s ease}.icon-button.mistakes-toggle{color:var(--line-thin)}.icon-button.mistakes-toggle.mistakes-toggle-active{color:var(--text-mistake)}.icon-button.hint-trigger-active{box-shadow:0 0 0 1.5px var(--hint-accent);border-radius:.3rem}.status-icon-group{display:flex;gap:.5rem;justify-self:end}.timer-button{display:flex;align-items:baseline;gap:.4rem;background:none;border:none;padding:0;font:inherit;color:#000;cursor:pointer}.timer{font-weight:600}.paused-label{display:none;font-weight:600}.timer-button.paused .timer,.timer-button.paused .paused-label{opacity:.3}.timer-button.paused .paused-label{display:inline}.message{color:var(--text-mistake);min-height:1.2em}.icon-button{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;border:none;background:none;color:var(--line-thick);cursor:pointer}.icon-button:disabled{color:var(--line-thin);cursor:default}.icon-button svg{width:100%;height:100%}.update-banner{display:flex;align-items:center;justify-content:center;gap:.75rem;width:100%;padding:.5rem 1rem;background:var(--cell-highlight);border:1px solid var(--cell-selected);border-radius:.375rem;font-size:.9rem}.update-banner.hidden{display:none}.update-banner button{border:1px solid var(--line-thick);border-radius:.25rem;background:#fff;padding:.2rem .6rem;cursor:pointer}.settings-trigger{position:fixed;top:1rem;right:1rem;color:#888}.settings-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0006;z-index:30}.settings-overlay.hidden{display:none}.settings-panel{position:relative;display:flex;flex-direction:column;gap:.75rem;width:min(85vw,20rem);max-height:85vh;overflow-y:auto;padding:1.5rem;background:#fff;border:2px solid var(--line-thick);border-radius:.5rem;text-align:center}.settings-panel.settings-panel-wide{width:min(90vw,30rem)}.settings-panel h2{margin:0}.settings-heading.hidden{display:none}.settings-panel-close{position:absolute;top:.5rem;right:.75rem;background:none;border:none;font-size:1.5rem;line-height:1;color:var(--line-thin);cursor:pointer}.settings-view{display:flex;flex-direction:column;gap:.75rem}.settings-view.hidden{display:none}.settings-action-button{border:1px solid var(--line-thick);border-radius:.25rem;background:#fff;padding:.5rem .75rem;font-size:1rem;cursor:pointer}.settings-action-button:disabled{opacity:.4;cursor:default}.settings-action-button.hidden{display:none}.settings-divider{width:100%;border:none;border-top:1px solid var(--line-thin);margin:0}.settings-version{margin:0;color:var(--text-given);font-size:.85rem;word-break:break-all}.settings-confirm-text{margin:0;font-size:1.05rem}.settings-confirm-heading{margin:0;font-size:1.05rem;font-weight:700}.settings-confirm-buttons{display:flex;gap:.75rem}.settings-cancel-button,.settings-confirm-button,.settings-feedback-button{flex:1;border-radius:.25rem;background:#fff;padding:.5rem;font-size:1rem;cursor:pointer}.settings-cancel-button{border:1px solid var(--line-thin);color:var(--text-given)}.settings-confirm-button{border:1px solid var(--text-mistake);color:var(--text-mistake);font-weight:700}.settings-feedback-button{border:1px solid var(--text-user);color:var(--text-user);font-weight:700}.settings-how-it-works{text-align:left}.how-it-works-title{margin:0;text-align:center;font-size:1.3rem}.how-it-works-subtitle{margin:-.4rem 0 0;text-align:center;color:var(--text-given);font-size:.9rem}.how-it-works-divider{width:100%;border:none;border-top:1px solid var(--line-thin);margin:.25rem 0}.how-it-works-section{display:flex;flex-direction:column;gap:.35rem}.how-it-works-heading{margin:0;font-size:1.05rem}.how-it-works-text{margin:0;font-size:.95rem;line-height:1.4}.how-it-works-list{margin:0;padding-left:1.25rem;font-size:.95rem;line-height:1.5}.install-prompt-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0006;z-index:35}.install-prompt-overlay.hidden{display:none}.install-prompt-panel{display:flex;flex-direction:column;align-items:center;gap:.6rem;width:min(85vw,22rem);padding:1.75rem 1.5rem 1.5rem;background:#fff;border:2px solid var(--line-thick);border-radius:.5rem;text-align:center}.install-prompt-icon{display:flex;color:var(--text-given);margin-bottom:.25rem}.install-prompt-panel h2{margin:0;font-size:1.15rem}.install-prompt-body{margin:0;color:var(--text-given);font-size:.95rem}.install-prompt-body strong{color:#000}.install-prompt-buttons{display:flex;gap:.75rem;width:100%;margin-top:.5rem}.install-prompt-not-now,.install-prompt-got-it{flex:1;border-radius:.25rem;padding:.5rem;font-size:1rem;cursor:pointer}.install-prompt-not-now{background:#fff;border:1px solid var(--line-thin);color:var(--text-given)}.install-prompt-got-it{background:var(--text-user);border:1px solid var(--text-user);color:#fff;font-weight:700}.trophy-shelf{width:100%;border-top:1px solid var(--line-thin);padding-top:.5rem}.trophy-shelf-empty{margin:0;padding:.5rem 0;text-align:center;color:var(--text-given);font-size:.9rem}.trophy-shelf-empty.hidden{display:none}.trophy-shelf-scroll{display:flex;align-items:center;gap:.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:.25rem .25rem .6rem;scrollbar-width:thin}.trophy{flex:0 0 auto;background:none;border:none;padding:.2rem .3rem;font-size:2rem;line-height:1;border-radius:.4rem;cursor:pointer;transition:transform .12s ease,background-color .12s ease}.trophy:hover{background:var(--cell-highlight);transform:scale(1.12)}.trophy:active{transform:scale(.94)}.trophy-card-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0006;z-index:32}.trophy-card-overlay.hidden{display:none}.trophy-card{position:relative;width:min(85vw,18rem);padding:1.5rem;background:#fff;border:2px solid var(--line-thick);border-radius:.5rem;text-align:center}.trophy-card-close{position:absolute;top:.5rem;right:.75rem;background:none;border:none;font-size:1.5rem;line-height:1;color:var(--line-thin);cursor:pointer}.trophy-card-header{margin:0 0 1rem;font-size:1.25rem}.trophy-card-rows{display:flex;flex-direction:column;gap:.85rem}.trophy-card-row{display:flex;flex-direction:column;gap:.15rem}.trophy-card-label{font-size:.8rem;color:var(--text-given);text-transform:uppercase;letter-spacing:.05em}.trophy-card-value{font-size:1.15rem;font-weight:700}.cell.hint-dim{opacity:.55;transition:opacity .2s ease}.cell.hint-relevant{background:#d4af3738}@keyframes hint-pulse{0%,to{box-shadow:inset 0 0 #d4af3700}50%{box-shadow:inset 0 0 14px 4px #d4af378c}}.cell.hint-target{animation:hint-pulse 1.6s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.cell.hint-target{animation:none;box-shadow:inset 0 0 10px 3px #d4af3780}}.hint-panel-wrap{width:100%;overflow:hidden}.hint-panel-wrap.hint-panel-collapsing{transition:height .25s ease}.hint-panel{position:relative;width:min(92vw,26rem);margin:0 auto .75rem;padding:.9rem 1.1rem;display:flex;align-items:center;gap:.75rem;border:1.5px solid var(--hint-accent);border-radius:.9rem;background:var(--hint-accent-bg);text-align:left}.hint-panel.hint-panel-card-hidden{display:none}.hint-panel-icon{flex:0 0 auto;display:flex;align-items:center;justify-content:center;height:2.15rem;color:var(--hint-accent)}.hint-panel-icon svg{height:100%;width:auto}.hint-panel-content{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center}.hint-panel-close{position:absolute;top:.5rem;right:.65rem;background:none;border:none;font-size:1.35rem;line-height:1;color:var(--line-thin);cursor:pointer;padding:.25rem}.hint-panel-heading{margin:0 0 .3rem;font-size:1.1rem;color:#1c5a68}.hint-panel-heading.hidden{display:none}.hint-panel-body{margin:0 0 .25rem;font-size:1rem}.hint-panel-detail{margin:0 0 .6rem;font-size:.8rem;color:var(--text-given)}.hint-panel-detail:empty{margin:0}.hint-panel-actions{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.hint-panel-button{border:1.5px solid var(--hint-accent);border-radius:999px;background:#fff;color:#1c5a68;padding:.55rem 1.1rem;font-size:.95rem;font-weight:600;cursor:pointer;min-height:44px}.hint-panel-button-primary{background:var(--hint-accent);border-color:var(--hint-accent);color:#fff;font-weight:700}
