.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-card{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:20px 24px;min-width:280px;max-width:400px;box-shadow:0 4px 20px var(--card-shadow)}.modal-title{font-size:16px;font-weight:600;margin:0 0 8px;color:var(--text)}.modal-message{font-size:14px;color:var(--text);margin:0 0 16px;line-height:1.4}.modal-actions{display:flex;gap:8px;justify-content:flex-end}.modal-btn{padding:6px 16px;border-radius:5px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--btn-bg);color:var(--text)}.modal-btn:hover{background:var(--btn-hover)}.modal-btn-confirm{background:#20b2aa;color:#fff;border-color:#20b2aa}.modal-btn-confirm:hover{opacity:.9;background:#20b2aa}.modal-card a{color:#1a73e8}.modal-card a:hover{text-decoration:underline}[data-theme=dark] .modal-card a{color:#8ab4f8}.puzzle-list-layout{display:flex;height:100vh;height:100dvh;overflow:hidden}.puzzle-list-sidebar{width:220px;min-width:220px;border-right:1px solid var(--border);padding:16px;overflow:hidden;display:flex;flex-direction:column;gap:16px}.puzzle-list-main{flex:1;overflow-y:auto;padding:20px}.sidebar-section{display:flex;flex-direction:column;gap:8px}.sidebar-section:last-of-type{flex:1;min-height:0;overflow:hidden}.sidebar-title{margin:0;font-size:13px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px}.sidebar-empty{margin:0;font-size:12px;color:var(--text-muted)}.sidebar-spacer{flex:1}.auth-btn-full{width:100%;text-align:center}.auth-btn{padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--btn-bg);color:var(--text);cursor:pointer;font-size:13px;white-space:nowrap}.auth-btn:hover{background:var(--btn-hover)}.leaderboard-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;overflow-y:auto;flex:1;min-height:0}.leaderboard-entry{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;font-size:13px}.leaderboard-entry.leaderboard-self{background:var(--btn-hover);font-weight:600}.leaderboard-rank{color:var(--text-muted);min-width:20px}.leaderboard-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leaderboard-count{font-weight:600;color:#20b2aa}.puzzle-list-topbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-bottom:4px}.discord-link{font-size:12px;color:var(--text-muted);cursor:pointer;padding:4px 8px;border-radius:4px}.discord-link:hover{color:#5865f2;background:var(--btn-hover)}.puzzle-list-main h1{text-align:center;margin-bottom:0}.puzzle-list-header{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:20px;position:relative}.puzzle-list-logo{width:64px;height:64px}.puzzle-list-header h1{margin:0}.puzzle-list-actions{text-align:center;margin-bottom:24px}.new-puzzle-btn{display:inline-block;padding:10px 24px;background:#20b2aa;color:#fff;text-decoration:none;border-radius:6px;font-size:15px}.new-puzzle-btn:hover{opacity:.9}.empty-state{text-align:center;color:var(--text-muted);margin-top:40px}.puzzle-sections{display:flex;flex-direction:column;gap:32px;max-width:1200px;margin:0 auto}.puzzle-section-title{margin:0 0 12px;font-size:16px;font-weight:600;color:var(--text-muted);border-bottom:1px solid var(--border);padding-bottom:6px}.puzzle-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.puzzle-card-row{position:relative;display:flex;gap:0;border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);overflow:hidden;transition:box-shadow .15s}.puzzle-card-row:hover{box-shadow:0 2px 8px var(--card-shadow)}.puzzle-card-row:has(.puzzle-completed){border-color:#20b2aa}.puzzle-card-row.puzzle-in-progress{border:2px dashed transparent;background-image:repeating-linear-gradient(-45deg,#e67e22,#e67e22 8px,#1a1a1a 8px,#1a1a1a 16px);background-origin:border-box;background-clip:border-box;padding:3px;opacity:.8}.puzzle-card-row.puzzle-in-progress>.puzzle-card{background:var(--card-bg);border-radius:5px}.puzzle-card-row.puzzle-in-progress>.puzzle-edit-btn{background:var(--card-bg)}.puzzle-card{display:block;flex:1;padding:16px;min-height:150px;border:none;border-radius:0;text-decoration:none;color:inherit;background:transparent;position:relative}.puzzle-card:hover{background:var(--btn-hover)}.puzzle-edit-overlay{position:absolute;top:4px;right:4px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;background:var(--card-bg);color:var(--text-muted);text-decoration:none;font-size:14px;opacity:0;transition:opacity .15s;z-index:1}.puzzle-card-row:hover .puzzle-edit-overlay{opacity:1}.puzzle-edit-overlay:hover{background:var(--btn-hover);color:var(--text)}.puzzle-stat-count{position:absolute;top:-2px;left:-3px;font-size:11px;color:var(--text-muted);background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:1px 6px;opacity:.7}.puzzle-thumbnail{position:absolute;top:8px;right:8px;max-width:64px;max-height:64px;width:auto;height:auto;opacity:.7;pointer-events:none;border-radius:3px;box-shadow:0 1px 3px #00000026}.puzzle-card:hover .puzzle-thumbnail{opacity:1}.puzzle-card h3{margin:0 0 8px;font-size:18px;padding-right:68px}.puzzle-difficulty{margin:0 0 4px;font-size:13px;font-weight:600;color:var(--text)}.puzzle-meta{margin:0;font-size:13px;color:var(--text-muted)}.filter-bars{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.tag-filter-bar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px}.filter-label{font-size:13px;font-weight:600;color:var(--text-muted);white-space:nowrap}.filter-separator{color:var(--border);font-size:18px;line-height:1;-webkit-user-select:none;user-select:none}.tag-chip{padding:4px 12px;border:1px solid var(--border);border-radius:16px;background:var(--btn-bg);color:var(--text);cursor:pointer;font-size:13px}.tag-chip:hover{background:var(--btn-hover)}.tag-chip.selected{background:#20b2aa;color:#fff;border-color:#20b2aa}.tag-chip.difficulty.selected{background:#e67e22;border-color:#e67e22}.completion-count{font-size:13px;color:var(--text-muted)}.tag-mode-toggle{padding:4px 10px;border:1px solid var(--border);border-radius:16px;background:var(--btn-bg);color:var(--text-muted);cursor:pointer;font-size:11px;font-weight:700;letter-spacing:.5px}.tag-mode-toggle:hover{background:var(--btn-hover);color:var(--text)}.puzzle-tags{display:flex;flex-wrap:nowrap;gap:4px;margin-top:6px;overflow:hidden}.puzzle-tag{display:inline-block;padding:1px 8px;border-radius:10px;background:var(--btn-bg);color:var(--text-muted);font-size:11px;white-space:nowrap;flex-shrink:0}.currently-playing{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px}.currently-playing-name,.currently-playing-more{padding:1px 7px;border-radius:8px;background:#22c55e26;color:#22c55e;font-size:11px;line-height:1.7;white-space:nowrap}.completed-info{display:flex;align-items:center;gap:4px;margin-top:6px;margin-right:6px;justify-content:flex-end}.completed-badge{color:#20b2aa;font-size:16px}.completion-time{font-size:12px;color:var(--text-muted);font-weight:400;font-variant-numeric:tabular-nums}.account-info{font-size:13px;color:var(--text-muted);margin:0 0 12px}.account-name-field{margin-bottom:16px}.account-name-field label{display:block;font-size:12px;font-weight:600;color:var(--text-muted);margin-bottom:4px}.account-name-field input{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font-size:14px;box-sizing:border-box}.modal-btn-danger{color:#e74c3c;border-color:#e74c3c}.modal-btn-danger:hover{background:#e74c3c;color:#fff}@media(max-width:600px){.puzzle-list-layout{flex-direction:column}.puzzle-list-sidebar{width:auto;min-width:0;border-right:none;border-bottom:1px solid var(--border);flex-direction:row;flex-wrap:wrap;align-items:center;gap:12px;padding:12px;overflow:visible}.sidebar-section{flex:none;overflow:visible;width:100%;min-width:0}.sidebar-spacer{display:none}.leaderboard-list{flex-direction:row;flex-wrap:nowrap;gap:8px;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}.leaderboard-entry{white-space:nowrap;flex-shrink:0}.puzzle-list-topbar{flex-wrap:wrap}.lang-picker-btn{white-space:nowrap}}.grid-expand-wrapper{position:relative;display:inline-block;padding:150px}.grid-expand-btn{position:absolute;display:flex;align-items:center;justify-content:center;background:var(--bg);border:2px dashed var(--grid-border);border-radius:6px;color:var(--text-muted);font-size:22px;font-weight:700;cursor:pointer;opacity:0;transition:opacity .15s,background-color .15s,border-color .15s;z-index:1}.grid-expand-wrapper:hover .grid-expand-btn{opacity:.2}.grid-expand-btn:hover{opacity:1!important;background:var(--selection);border-color:var(--text-muted)}.grid-expand-wrapper:has(.puzzle-grid:hover) .grid-expand-btn,.grid-expand-wrapper:has(.puzzle-grid:hover) .grid-shrink-btn{opacity:0!important;pointer-events:none}.grid-expand-top,.grid-expand-bottom{left:150px;right:150px;height:30px}.grid-expand-top{top:60px}.grid-expand-bottom{bottom:60px}.grid-expand-left,.grid-expand-right{top:150px;bottom:150px;width:30px}.grid-expand-left{left:60px}.grid-expand-right{right:60px}.grid-shrink-btn{position:absolute;display:flex;align-items:center;justify-content:center;background:var(--bg);border:2px dashed var(--grid-border);border-radius:6px;color:var(--text-muted);font-size:22px;font-weight:700;cursor:pointer;opacity:0;transition:opacity .15s,background-color .15s,border-color .15s;z-index:1}.grid-expand-wrapper:hover .grid-shrink-btn{opacity:.2}.grid-shrink-btn:hover{opacity:1!important;background:var(--selection);border-color:var(--text-muted)}.grid-shrink-top,.grid-shrink-bottom{left:150px;right:150px;height:30px}.grid-shrink-top{top:94px}.grid-shrink-bottom{bottom:94px}.grid-shrink-left,.grid-shrink-right{top:150px;bottom:150px;width:30px}.grid-shrink-left{left:94px}.grid-shrink-right{right:94px}.grid-headers-col{position:absolute;top:165px;display:flex;flex-direction:column;user-select:none;-webkit-user-select:none;z-index:1}.grid-headers-col.left{right:calc(100% - 160px);align-items:flex-end;padding-right:7px}.grid-headers-col.right{left:calc(100% - 160px);align-items:flex-start;padding-left:7px}.grid-headers-row{position:absolute;left:165px;display:flex;flex-direction:row;user-select:none;-webkit-user-select:none;z-index:1}.grid-headers-row.top{bottom:calc(100% - 160px);align-items:flex-end;padding-bottom:7px}.grid-headers-row.bottom{top:calc(100% - 160px);align-items:flex-start;padding-top:7px}.grid-header-cell{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;border-radius:4px;transition:background-color .1s,color .1s;box-sizing:border-box;flex-shrink:0}.grid-headers-col .grid-header-cell{height:50px;min-width:28px;padding:0 4px}.grid-headers-row .grid-header-cell{width:50px;min-height:28px;padding:4px 0}.grid-header-cell:hover{background:var(--selection);color:var(--text)}.grid-header-cell.selected{background:var(--selection);color:var(--text);font-weight:700}.grid-container{position:relative;padding:15px;margin:-15px}.grid-expand-wrapper>.grid-container{margin:0}.puzzle-grid{table-layout:fixed;border-collapse:collapse;user-select:none;-webkit-user-select:none;backface-visibility:hidden;overflow:visible}.puzzle-grid td{min-width:50px;min-height:50px;width:50px;height:50px;max-width:50px;max-height:50px;border:1px solid var(--grid-border);padding:0;position:relative}.cell-inner{height:100%;width:100%;text-align:center;line-height:48px;box-sizing:border-box;font-size:20px;position:relative}.cell-border{position:absolute;background-color:var(--text);pointer-events:none;z-index:4}.cell-border-top{top:-1px;left:-1px;right:-1px}.cell-border-right{top:-1px;right:-1px;bottom:-1px}.cell-border-bottom{bottom:-1px;left:-1px;right:-1px}.cell-border-left{top:-1px;left:-1px;bottom:-1px}.cell-fixed-value{font-weight:700;font-size:28px;text-shadow:-1px -1px 0 rgba(255,255,255,.7),1px -1px 0 rgba(255,255,255,.7),-1px 1px 0 rgba(255,255,255,.7),1px 1px 0 rgba(255,255,255,.7)}[data-theme=dark] .cell-fixed-value{text-shadow:-1px -1px 0 rgba(0,0,0,.7),1px -1px 0 rgba(0,0,0,.7),-1px 1px 0 rgba(0,0,0,.7),1px 1px 0 rgba(0,0,0,.7)}.cell-selected,.cell-being-selected{background-color:var(--selection)!important}.cell-texture{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.35;background-size:auto}.cell-image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;pointer-events:none;z-index:0}.cell-value{position:relative;z-index:1;text-shadow:-1px -1px 0 rgba(255,255,255,.7),1px -1px 0 rgba(255,255,255,.7),-1px 1px 0 rgba(255,255,255,.7),1px 1px 0 rgba(255,255,255,.7)}[data-theme=dark] .cell-value{text-shadow:-1px -1px 0 rgba(0,0,0,.7),1px -1px 0 rgba(0,0,0,.7),-1px 1px 0 rgba(0,0,0,.7),1px 1px 0 rgba(0,0,0,.7)}.cell-cross{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:70px;font-weight:700;color:var(--text);line-height:0;margin-top:-15px;pointer-events:none;opacity:.7}.cell-mark{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;color:var(--text);opacity:.75}.cell-mark svg{width:34px;height:34px}.cell-mark-edge{display:block}.cell-mark-edge svg{width:auto;height:auto}.cell-note-highlight{position:relative}.cell-note-highlight:after{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#20b2aa40;border:3px solid rgba(32,178,170,.8);border-radius:2px;z-index:10;pointer-events:none}.notes-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;line-height:1;align-items:center;justify-items:center}.note-item{font-size:13px;font-weight:700;color:#222;line-height:1;text-shadow:-1px -1px 0 rgba(255,255,255,.8),1px -1px 0 rgba(255,255,255,.8),-1px 1px 0 rgba(255,255,255,.8),1px 1px 0 rgba(255,255,255,.8)}[data-theme=dark] .note-item{color:#eee;text-shadow:-1px -1px 0 rgba(0,0,0,.8),1px -1px 0 rgba(0,0,0,.8),-1px 1px 0 rgba(0,0,0,.8),1px 1px 0 rgba(0,0,0,.8)}.cell-label{position:absolute;left:2px;font-size:11px;color:var(--text);white-space:nowrap;pointer-events:none;z-index:1;line-height:1}.cell-label-top{top:2px}.cell-label-middle{top:50%;transform:translateY(-50%)}.cell-label-bottom{bottom:2px}.cell-label-over-fog{z-index:11}.debug-overlay{position:absolute;bottom:1px;right:2px;font-size:8px;color:#ff0000b3;line-height:1}.color0{background-color:#9e9e9e8c}.color1{background-color:#e539358c}.color2{background-color:#d81b608c}.color3{background-color:#ff98008c}.color4{background-color:#fbc02d8c}.color5{background-color:#4caf508c}.color6{background-color:#00bcd48c}.color7{background-color:#1e88e58c}.color8{background-color:#7e57c28c}.color9{background-color:#141414eb}[data-theme=dark] .color9{background-color:#3c3c50eb}.edge-draft{position:absolute;background-color:#20b2aa;pointer-events:none;z-index:5}.edge-draft-top{top:-1px;left:0;right:0;height:3px}.edge-draft-right{top:0;right:-1px;bottom:0;width:3px}.edge-draft-bottom{bottom:-1px;left:0;right:0;height:3px}.edge-draft-left{top:0;left:-1px;bottom:0;width:3px}td.cell-has-lines{transform:translateZ(0)}.cell-line{position:absolute;background-color:#2ecc71;pointer-events:none;z-index:4}.cell-line-top{left:50%;top:0;height:50%;width:3px;transform:translate(-50%)}.cell-line-right{top:50%;right:0;width:50%;height:3px;transform:translateY(-50%)}.cell-line-bottom{left:50%;bottom:0;height:50%;width:3px;transform:translate(-50%)}.cell-line-left{top:50%;left:0;width:50%;height:3px;transform:translateY(-50%)}.cell-line-fixed{background-color:#1a9e54}.cell-line-top.cell-line-exit{top:-50%;height:100%}.cell-line-bottom.cell-line-exit{bottom:-50%;height:100%}.cell-line-right.cell-line-exit{right:-50%;width:100%}.cell-line-left.cell-line-exit{left:-50%;width:100%}.edge-x{position:absolute;pointer-events:none;z-index:5;font-size:10px;line-height:1;color:#e44;font-weight:700;transform:translate(-50%,-50%)}.edge-x-top{top:-1px;left:50%}.edge-x-right{top:calc(50% - 1px);right:0;left:auto;transform:translate(50%,-50%)}.edge-x-bottom{bottom:1px;top:auto;left:50%;transform:translate(-50%,50%)}.edge-x-left{top:calc(50% - 1px);left:0}.edge-dir{position:absolute;pointer-events:none;z-index:5;width:14px;height:20px}.edge-dir-top{top:0;left:50%;transform:translate(-50%,-50%) rotate(-90deg)}.edge-dir-right{top:50%;right:0;left:auto;transform:translate(50%,-50%)}.edge-dir-bottom{bottom:0;top:auto;left:50%;transform:translate(-50%,50%) rotate(-90deg)}.edge-dir-left{top:50%;left:0;transform:translate(-50%,-50%)}.fixed-mark{position:absolute;pointer-events:none;z-index:11;color:var(--text);display:flex;align-items:center;justify-content:center;opacity:.75}.fixed-mark svg{display:block}.fixed-mark-center{top:0;right:0;bottom:0;left:0}.fixed-mark-center svg{width:34px;height:34px}.fixed-mark-edge-top,.fixed-mark-edge-right,.fixed-mark-edge-bottom,.fixed-mark-edge-left{width:34px;height:34px}.fixed-mark-edge-top svg,.fixed-mark-edge-right svg,.fixed-mark-edge-bottom svg,.fixed-mark-edge-left svg{width:34px;height:34px}.fixed-mark-edge-top{top:0;left:50%;transform:translate(-50%,-50%)}.fixed-mark-edge-right{top:50%;right:0;transform:translate(50%,-50%)}.fixed-mark-edge-bottom{bottom:0;left:50%;transform:translate(-50%,50%)}.fixed-mark-edge-left{top:50%;left:0;transform:translate(-50%,-50%)}.fixed-mark-edge-top.fixed-mark-arrow{top:6px}.fixed-mark-edge-right.fixed-mark-arrow{right:6px}.fixed-mark-edge-bottom.fixed-mark-arrow{bottom:6px}.fixed-mark-edge-left.fixed-mark-arrow{left:6px}.fixed-mark-vertex-tl,.fixed-mark-vertex-tr,.fixed-mark-vertex-br,.fixed-mark-vertex-bl{width:34px;height:34px}.fixed-mark-vertex-tl svg,.fixed-mark-vertex-tr svg,.fixed-mark-vertex-br svg,.fixed-mark-vertex-bl svg{width:34px;height:34px}.fixed-mark-vertex-tl{top:0;left:0;transform:translate(-50%,-50%)}.fixed-mark-vertex-tr{top:0;right:0;transform:translate(50%,-50%)}.fixed-mark-vertex-br{bottom:0;right:0;transform:translate(50%,50%)}.fixed-mark-vertex-bl{bottom:0;left:0;transform:translate(-50%,50%)}td.cell-fogged{border-style:none!important}.cell-fog-overlay{position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background-color:var(--bg, #fff);pointer-events:none;z-index:10}.cell-fog-preview{position:absolute;top:1px;right:1px;bottom:1px;left:1px;border:2px dashed rgba(128,0,255,.6);pointer-events:none;z-index:10}[data-theme=dark] .cell-fog-preview{border-color:#b450ff80}.toolbar{display:flex;flex-direction:column;gap:12px;padding:10px;overflow-y:auto;height:100%}.tb-section{display:flex;flex-direction:column;gap:4px}.tb-section-title{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px;margin-bottom:2px}.tb-btn{width:100%;height:32px;border:1px solid var(--border);background:var(--btn-bg);color:var(--text);cursor:pointer;border-radius:4px;font-size:13px;text-align:center}.tb-btn:hover{background:var(--btn-hover)}.tb-btn.selected{background-color:#20b2aa;color:#fff;border-color:#20b2aa}.tb-row{display:flex;gap:4px}.tb-label-fields{display:flex;flex-direction:column;gap:4px;margin-top:4px}.tb-btn-sm{flex:1;height:28px;border:1px solid var(--border);background:var(--btn-bg);color:var(--text);cursor:pointer;border-radius:4px;font-size:12px}.tb-btn-sm.selected{background-color:#20b2aa;color:#fff;border-color:#20b2aa}.tb-input{width:100%;padding:4px 6px;border:1px solid var(--input-border);border-radius:4px;font-size:13px;background:var(--input-bg);color:var(--text);box-sizing:border-box}.tb-values{display:grid;grid-template-columns:repeat(5,1fr);gap:3px}.tb-val-btn{width:100%;aspect-ratio:1;border:1px solid var(--border);border-radius:4px;cursor:pointer;font-size:13px;font-weight:700;background:var(--btn-bg);color:var(--text);display:flex;align-items:center;justify-content:center}.tb-val-btn:hover{background:var(--btn-hover)}.tb-val-btn.tb-val-highlighted{background-color:#20b2aa;border-color:#20b2aa;color:#fff;font-weight:800}.tb-palette{display:grid;grid-template-columns:repeat(5,1fr);gap:3px}.palette-swatch{width:100%;aspect-ratio:1;border:2px solid var(--border);border-radius:4px;cursor:pointer;font-size:11px;font-weight:700;color:#fff;text-shadow:0 0 3px rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center}.palette-swatch.color-erase{background:var(--btn-bg);color:var(--text);text-shadow:none;font-size:14px}.palette-swatch:hover{border-color:var(--text);transform:scale(1.1)}.palette-swatch.active-color{border-color:#fff;box-shadow:0 0 0 2px var(--text),0 0 6px #0006;transform:scale(1.1)}.tb-mark-palette{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}.mark-swatch{width:100%;aspect-ratio:1;border:2px solid var(--border);border-radius:4px;cursor:pointer;font-size:18px;background:var(--btn-bg);color:var(--text);display:flex;align-items:center;justify-content:center}.mark-swatch.mark-erase{font-size:14px}.mark-swatch:hover{border-color:var(--text);transform:scale(1.1)}.mark-swatch.active-mark{border-color:#fff;box-shadow:0 0 0 2px var(--text),0 0 6px #0006;transform:scale(1.1)}.texture-swatch{width:28px;height:28px;border:2px solid var(--border);border-radius:4px;cursor:pointer;padding:0}.texture-swatch:hover{border-color:var(--text);transform:scale(1.1)}.texture-swatch.active-texture{border-color:#fff;box-shadow:0 0 0 2px var(--text),0 0 6px #0006;transform:scale(1.1)}.tb-hint{font-size:13px;color:var(--text-muted);line-height:1.3}.tb-hint-sticky{position:sticky;top:-10px;z-index:2;background:var(--panel-bg);border-bottom:1px solid var(--border);margin:-10px -10px 0;padding:10px 10px 6px}.tb-image-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}.tb-image-thumb{aspect-ratio:1;border:2px solid var(--border);border-radius:4px;cursor:pointer;padding:1px;background:var(--btn-bg);display:flex;align-items:center;justify-content:center;overflow:hidden}.tb-image-thumb img{width:100%;height:100%;object-fit:contain}.tb-image-thumb:hover{border-color:var(--text)}.tb-image-thumb.selected{border-color:#20b2aa;box-shadow:0 0 0 1px #20b2aa}.tb-icon-search{margin-bottom:2px}.tb-icon-scroll{max-height:50vh;overflow-y:auto}.tb-icon-results{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}.tb-icon-thumb{aspect-ratio:1;border:2px solid var(--border);border-radius:4px;cursor:pointer;padding:2px;background:var(--btn-bg);display:flex;align-items:center;justify-content:center;overflow:hidden}.tb-icon-thumb:hover{border-color:var(--text)}.tb-icon-thumb img{width:100%;height:100%;object-fit:contain;filter:var(--icon-invert, none)}.tb-icon-colors{display:flex;gap:3px;flex-wrap:wrap;align-items:center;margin-bottom:4px}.tb-icon-color-swatch{width:20px;height:20px;border-radius:50%;border:2px solid var(--border);cursor:pointer;padding:0;flex-shrink:0}.tb-icon-color-swatch:hover{border-color:var(--text)}.tb-icon-color-swatch.active{border-color:#fff;box-shadow:0 0 0 2px var(--text),0 0 6px #0006;transform:scale(1.1)}.tb-icon-color-row{display:flex;align-items:center;gap:6px;margin-bottom:4px}.tb-icon-color-label{font-size:11px;color:var(--text-muted)}.tb-icon-color-custom{width:24px;height:24px;border:2px solid var(--border);border-radius:50%;cursor:pointer;padding:0;background:none;flex-shrink:0}.tb-icon-color-custom::-webkit-color-swatch-wrapper{padding:0}.tb-icon-color-custom::-webkit-color-swatch{border:none;border-radius:50%}.tb-icon-color-custom::-moz-color-swatch{border:none;border-radius:50%}.tb-icon-meta{font-size:10px;color:var(--text-muted);margin-bottom:2px}.tb-click-actions{display:flex;flex-direction:column;gap:6px}.tb-click-action-label{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--text-muted)}.tb-click-action-select{width:100%;height:28px;border:1px solid var(--border);border-radius:4px;background:var(--input-bg);color:var(--text);font-size:13px;padding:0 4px}.tb-spacer{flex:1}.tb-submit{padding-bottom:8px}.tb-submit-btn{width:100%;padding:8px 16px;background:#20b2aa;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer}.tb-submit-btn:hover{opacity:.9}.info-panel{display:flex;flex-direction:column;height:100%;overflow:hidden}.info-panel-fixed-top{flex-shrink:0;display:flex;flex-direction:column;gap:12px;padding:10px 10px 0}.info-panel-scrollable{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:10px}.info-header-row{display:flex;align-items:stretch;position:relative}.info-back-link{flex:1;display:flex;align-items:center;color:#20b2aa;text-decoration:none;font-size:14px;padding:6px 0}.info-back-link:hover{text-decoration:underline}.info-header-right{flex-shrink:0;display:flex;align-items:center;gap:4px;margin-left:auto}.info-section{display:flex;flex-direction:column;gap:4px}.info-title{margin:0;font-size:18px;line-height:1.2}.info-meta{margin:0;font-size:13px;color:var(--text-muted)}.info-section-title{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px}.info-collapsible{cursor:pointer;display:flex;align-items:center;gap:4px;-webkit-user-select:none;user-select:none}.info-collapsible:hover{color:var(--text)}.info-chevron{display:inline-block;font-size:10px;transition:transform .15s}.info-chevron.open{transform:rotate(90deg)}.info-rules{margin:0;font-size:13px;line-height:1.4;color:var(--text)}.info-editor-field{display:flex;flex-direction:column;gap:2px}.info-editor-field label{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px}.info-editor-field input,.info-editor-field select{width:100%;padding:4px 6px;border:1px solid var(--input-border);border-radius:4px;font-size:13px;background:var(--input-bg);color:var(--text);box-sizing:border-box}.info-editor-row{display:flex;gap:6px}.info-editor-row .info-editor-field{flex:1}.info-editor-row .info-editor-field input{width:100%}.info-timer{text-align:center;font-size:20px;font-variant-numeric:tabular-nums;color:var(--text);padding:4px 0;font-family:monospace}.info-timer.completed{color:#20b2aa}.info-btn{width:100%;height:30px;border:1px solid var(--border);background:var(--btn-bg);color:var(--text);cursor:pointer;border-radius:4px;font-size:12px}.info-btn:hover{background:var(--btn-hover)}.info-list{margin:0;padding-left:18px;font-size:13px;line-height:1.5;color:var(--text)}.info-list-item{display:flex;align-items:flex-start;gap:4px;font-size:13px;line-height:1.4;color:var(--text)}.info-list-draggable{border-radius:4px;padding:2px 4px;transition:background .15s}.info-list-draggable:hover{background:var(--btn-hover)}.info-list-draggable[draggable=true]{cursor:default}.info-drag-handle{cursor:grab;color:var(--text-muted);font-size:11px;flex-shrink:0;width:14px;text-align:center;line-height:1.4;opacity:.5;-webkit-user-select:none;user-select:none}.info-drag-handle:hover{opacity:1}.info-list-editable{cursor:text;border-radius:2px}.info-list-editable:hover{text-decoration:underline dotted var(--text-muted)}.info-edit-input{flex:1;padding:1px 4px;border:1px solid lightseagreen;border-radius:3px;font-size:13px;background:var(--input-bg);color:var(--text);box-sizing:border-box;outline:none}.info-list-text{flex:1;word-break:break-word}.info-list-bullet{cursor:pointer}.info-word{cursor:pointer;border-radius:2px;transition:opacity .15s}.info-word:hover{opacity:.7}.info-word-struck{text-decoration:line-through;color:var(--text-muted);opacity:.6}.info-list-remove{flex-shrink:0;width:20px;height:20px;border:none;background:none;color:var(--text-muted);cursor:pointer;font-size:16px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;border-radius:3px}.info-list-remove:hover{background:var(--btn-hover);color:var(--text)}.info-add-row{display:flex;gap:4px}.info-add-input{flex:1;padding:4px 6px;border:1px solid var(--input-border);border-radius:4px;font-size:13px;background:var(--input-bg);color:var(--text);box-sizing:border-box}.info-add-btn{width:30px;height:28px;border:1px solid var(--border);background:var(--btn-bg);color:var(--text);cursor:pointer;border-radius:4px;font-size:16px;display:flex;align-items:center;justify-content:center}.info-add-btn:hover{background:var(--btn-hover)}.tag-input-wrapper{display:flex;flex-wrap:wrap;gap:4px;padding:3px 4px;border:1px solid var(--input-border);border-radius:4px;background:var(--input-bg);position:relative;cursor:text}.tag-input-wrapper:focus-within{border-color:#20b2aa}.tag-input-pill{display:flex;align-items:center;gap:2px;padding:1px 6px;border-radius:10px;background:#20b2aa;color:#fff;font-size:12px;white-space:nowrap}.tag-input-pill button{border:none;background:none;color:#fff;cursor:pointer;font-size:13px;padding:0 1px;line-height:1;opacity:.7}.tag-input-pill button:hover{opacity:1}.tag-input-bare{flex:1;min-width:60px;border:none!important;background:transparent!important;padding:2px!important;font-size:13px;color:var(--text);outline:none}.tag-suggestions{position:absolute;top:100%;left:0;right:0;margin-top:2px;border:1px solid var(--border);border-radius:4px;background:var(--card-bg, var(--bg));box-shadow:0 4px 12px #00000026;z-index:10;max-height:120px;overflow-y:auto}.tag-suggestion{padding:5px 8px;font-size:13px;cursor:pointer;color:var(--text)}.tag-suggestion:hover,.tag-suggestion.active{background:var(--btn-hover)}.info-panel-wrapper{display:flex;flex-direction:column;height:100%;overflow:hidden}.info-panel-wrapper>.info-panel{flex:1;min-height:0}.puzzle-leaderboard{flex-shrink:0;min-height:20vh;max-height:35vh;display:flex;flex-direction:column;border-top:1px solid var(--border);padding:10px;overflow:hidden}.puzzle-leaderboard-title{margin:0 0 6px;font-size:13px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px;flex-shrink:0}.puzzle-leaderboard-empty{margin:0;font-size:12px;color:var(--text-muted);font-style:italic}.puzzle-leaderboard-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;overflow-y:auto;flex:1;min-height:0}.puzzle-leaderboard-entry{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;font-size:13px}.puzzle-leaderboard-entry.puzzle-leaderboard-self{background:var(--btn-hover);font-weight:600}.puzzle-leaderboard-rank{color:var(--text-muted);min-width:22px}.puzzle-leaderboard-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.puzzle-leaderboard-time{font-variant-numeric:tabular-nums;color:#20b2aa;font-weight:600;white-space:nowrap}.input-panel{display:flex;flex-direction:column;gap:4px;padding:6px 8px;background:var(--panel-bg);border-top:1px solid var(--panel-border);z-index:10;flex-shrink:0}.ip-modes{display:flex;gap:2px;overflow-x:auto;-webkit-overflow-scrolling:touch}.ip-mode-btn{display:flex;align-items:center;gap:3px;padding:4px 8px;border:1px solid var(--border);background:var(--btn-bg);color:var(--text);border-radius:4px;font-size:12px;cursor:pointer;white-space:nowrap;min-height:32px;flex-shrink:0}.ip-mode-btn:hover{background:var(--btn-hover)}.ip-mode-btn.selected{background:#20b2aa;color:#fff;border-color:#20b2aa}.ip-mode-icon{font-size:14px}.ip-mode-label{font-size:11px}.ip-context{min-height:36px;display:flex;align-items:center}.ip-values{display:flex;gap:3px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:2px 0}.ip-val-btn{min-width:36px;height:36px;border:1px solid var(--border);background:var(--btn-bg);color:var(--text);border-radius:4px;font-size:16px;font-weight:600;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ip-val-btn:hover{background:var(--btn-hover)}.ip-val-btn:active{background:#20b2aa;color:#fff}.ip-val-btn.ip-val-highlighted{background:#20b2aa;border-color:#20b2aa;color:#fff;font-weight:800}.ip-colors{display:flex;gap:3px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding:4px 2px}.ip-color-swatch{min-width:36px;height:36px;border:2px solid var(--border);border-radius:4px;cursor:pointer;font-size:14px;font-weight:700;color:#fff;text-shadow:0 0 3px rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;flex-shrink:0}.ip-color-swatch.color-erase{background:var(--btn-bg);color:var(--text);text-shadow:none}.ip-color-swatch.active-color{border-color:#fff;box-shadow:0 0 0 2px var(--text),0 0 6px #0006}.ip-marks{display:flex;gap:3px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding:4px 2px}.ip-mark-swatch{min-width:36px;height:36px;border:2px solid var(--border);border-radius:4px;cursor:pointer;font-size:18px;background:var(--btn-bg);color:var(--text);display:flex;align-items:center;justify-content:center;flex-shrink:0}.ip-mark-swatch.active-mark{border-color:#fff;box-shadow:0 0 0 2px var(--text),0 0 6px #0006}.ip-click-actions{display:flex;gap:6px;padding:2px 0}.ip-click-action-label{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-muted);flex:1;min-width:0}.ip-click-action-select{flex:1;min-width:0;height:28px;border:1px solid var(--border);border-radius:4px;background:var(--input-bg);color:var(--text);font-size:12px;padding:0 4px}.ip-hint{font-size:14px;color:var(--text-muted);padding:4px 0}.ip-actions{display:flex;gap:4px;align-items:center}.ip-action-btn{min-width:40px;height:34px;border:1px solid var(--border);background:var(--btn-bg);color:var(--text);border-radius:4px;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}.ip-action-btn:hover,.ip-action-btn:active{background:var(--btn-hover)}.ip-submit-btn{margin-left:auto;padding:6px 20px;height:34px;background:#20b2aa;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer}.ip-submit-btn:hover{opacity:.9}@media(max-width:768px){.input-panel{padding:4px 6px;padding-bottom:max(4px,env(safe-area-inset-bottom))}.ip-val-btn{min-width:32px;height:32px;font-size:14px}.ip-color-swatch,.ip-mark-swatch{min-width:32px;height:32px}.ip-mode-btn{padding:3px 6px;min-height:28px}.ip-mode-label{display:none}.ip-mode-icon{font-size:16px}}:root,[data-theme=light]{--bg: #ffffff;--bg-alt: #f5f5f5;--text: #333333;--text-muted: #888888;--border: #d0d0d0;--btn-bg: #f0f0f0;--btn-bg-alt: #e8e8e8;--btn-hover: #e0e0e0;--card-bg: #ffffff;--card-border: #dddddd;--card-shadow: rgba(0, 0, 0, .12);--input-bg: #ffffff;--input-border: #cccccc;--grid-border: #d0d0d0;--selection: rgb(255, 255, 0);--panel-bg: #f8f8f8;--panel-border: #e0e0e0;--icon-invert: none}[data-theme=dark]{--bg: #1a1a2e;--bg-alt: #16213e;--text: #e0e0e0;--text-muted: #999999;--border: #555555;--btn-bg: #2a2a4a;--btn-bg-alt: #333360;--btn-hover: #3a3a5a;--card-bg: #22223a;--card-border: #444466;--card-shadow: rgba(0, 0, 0, .4);--input-bg: #2a2a4a;--input-border: #555577;--grid-border: #444444;--selection: rgba(255, 255, 0, .5);--panel-bg: #16213e;--panel-border: #2a2a4a;--icon-invert: invert(1)}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.4) transparent}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#80808066;border-radius:3px}*::-webkit-scrollbar-thumb:hover{background:#80808099}body{margin:0;top:0!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg);transition:background .2s,color .2s;overflow:hidden;height:100vh;height:100dvh;touch-action:manipulation}#root{height:100vh;height:100dvh}#google_translate_element,.skiptranslate iframe,[class*=VIpgJd]{display:none!important}.lang-picker{position:relative}.lang-picker-btn{padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:var(--btn-bg);color:var(--text);cursor:pointer;font-size:12px;text-align:left}.lang-picker-btn:hover{background:var(--btn-hover)}.lang-picker-menu{min-width:150px;background:var(--card-bg);border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 12px var(--card-shadow);max-height:300px;overflow-y:auto;z-index:1000;display:flex;flex-direction:column;padding:4px 0}.lang-picker-item{padding:6px 12px;border:none;background:transparent;color:var(--text);cursor:pointer;font-size:13px;text-align:left}.lang-picker-item:hover{background:var(--btn-hover)}.lang-picker-item.active{color:#20b2aa;font-weight:600}.page-layout{display:flex;height:100vh;width:100%}.panel-left-wrapper{display:flex;height:100vh;position:relative}.panel-left{width:var(--panel-left-width, 400px);min-width:180px;max-width:800px;height:100vh;background:var(--panel-bg);border-right:none;overflow-y:auto;flex-shrink:0}.panel-left-handle{width:6px;height:100vh;cursor:col-resize;background:var(--panel-border);flex-shrink:0;position:relative;transition:background .15s}.panel-left-handle:hover,.panel-left-handle.dragging{background:#20b2aa}.panel-left-handle:after{content:"⋮";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:12px;color:var(--text-muted);pointer-events:none}.panel-left-handle:hover:after,.panel-left-handle.dragging:after{color:#fff}@media(max-width:1200px){.panel-left{width:var(--panel-left-width, 300px)}}@media(max-width:900px){.panel-left{width:var(--panel-left-width, 220px)}}.panel-right-wrapper{display:flex;height:100vh;position:relative}.panel-right{width:var(--panel-right-width, 200px);min-width:160px;max-width:600px;height:100vh;background:var(--panel-bg);border-left:1px solid var(--panel-border);overflow-y:auto;flex-shrink:0}.panel-right-handle{width:6px;height:100vh;cursor:col-resize;background:var(--panel-border);transition:background .15s;position:relative;flex-shrink:0}.panel-right-handle:hover,.panel-right-handle.dragging{background:#20b2aa}.panel-right-handle:after{content:"⋮";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--text-muted);font-size:12px}.panel-right-handle:hover:after,.panel-right-handle.dragging:after{color:#fff}.panel-center{flex:1;height:100vh;overflow:auto;padding:20px}.panel-center-col{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0}.grid-scale-area{flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center;position:relative;min-height:0;touch-action:none}.grid-scale-wrapper{display:inline-block;will-change:transform}.mobile-layout{display:flex;flex-direction:column;height:100vh;height:100dvh;width:100%;overflow:hidden}.mobile-header{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--panel-bg);border-bottom:1px solid var(--panel-border);flex-shrink:0;min-height:44px}.mobile-menu-btn{width:36px;height:36px;border:1px solid var(--border);background:var(--btn-bg);color:var(--text);border-radius:4px;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}.mobile-back-btn{color:#20b2aa;text-decoration:none;font-size:26px;flex-shrink:0;display:flex;align-items:center;padding:0 4px}.mobile-header-title{flex:1;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-header-timer{flex-shrink:0;font-size:14px;font-family:monospace;font-variant-numeric:tabular-nums}.mobile-header-timer .info-timer{font-size:14px;padding:0}.slide-panel-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0000;pointer-events:none;transition:background .25s}.slide-panel-backdrop.open{background:#0006;pointer-events:auto}.slide-panel{position:fixed;top:0;left:0;bottom:0;width:300px;max-width:85vw;background:var(--panel-bg);transform:translate(-100%);transition:transform .25s ease;overflow:hidden;z-index:101;box-shadow:4px 0 16px #0003}.slide-panel.open{transform:translate(0)}.slide-panel-content{display:flex;flex-direction:column;height:100%;overflow:hidden}.slide-panel-scroll{flex:1;min-height:0;overflow-y:auto}.slide-panel-content>.puzzle-leaderboard{flex-shrink:0}.puzzle-info a{color:#20b2aa}.back-link{color:#20b2aa;text-decoration:none;font-size:14px}.back-link:hover{text-decoration:underline}.completion-signin-text{font-size:13px;color:var(--text-muted);margin:0 0 12px;line-height:1.4}.completion-actions{flex-wrap:wrap}.clues-bar{flex-shrink:0;max-height:90px;overflow-y:auto;border-bottom:1px solid var(--panel-border);padding:4px 10px;background:var(--panel-bg);position:relative}.clues-bar--shadow-top{box-shadow:inset 0 6px 6px -4px #0003}.clues-bar--shadow-bottom{box-shadow:inset 0 -6px 6px -4px #0003}.clues-bar--shadow-top.clues-bar--shadow-bottom{box-shadow:inset 0 6px 6px -4px #0003,inset 0 -6px 6px -4px #0003}.clues-bar-list{list-style:none;margin:0;padding:0;font-size:13px;line-height:1.4}.clues-bar-item{padding:2px 0;cursor:pointer}.clues-bar-separator{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px;padding:3px 0 1px;border-top:1px solid var(--border-color, rgba(128,128,128,.3));margin-top:2px}.clues-bar-section-title{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:2px 0}
