*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #fafafa;--fg: #1a1a1a;--border: #e0e0e0;--primary: #2563eb;--success: #16a34a;--warning: #ea580c;--muted: #6b7280;--grid-bg: #ffffff;--cell-border: #d1d5db;--cell-selected: #dbeafe;--cell-found: #86efac;--cell-hint: #fef3c7;--flash-wrong: #fecaca;--star: #f59e0b}@media (prefers-color-scheme: dark){:root{--bg: #1a1a1a;--fg: #fafafa;--border: #404040;--primary: #60a5fa;--success: #4ade80;--warning: #fb923c;--muted: #9ca3af;--grid-bg: #262626;--cell-border: #404040;--cell-selected: #1e3a8a;--cell-found: #166534;--cell-hint: #854d0e;--flash-wrong: #7f1d1d;--star: #fbbf24}}html,body{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--fg);line-height:1.5;-webkit-font-smoothing:antialiased;touch-action:manipulation;overflow:hidden}.app{max-width:960px;height:100dvh;margin:0 auto;padding:.75rem;display:flex;flex-direction:column;overflow:hidden}.header{flex:0 0 auto;text-align:center;padding-bottom:.6rem;border-bottom:2px solid var(--border);margin-bottom:.75rem}.header h1{font-size:1.25rem;font-weight:700;margin-bottom:.35rem}.meta{display:flex;justify-content:center;align-items:center;gap:1.25rem;font-size:.85rem;color:var(--muted)}.timer{font-variant-numeric:tabular-nums;font-weight:600}.action-bar{display:flex;justify-content:center;flex-wrap:wrap;gap:.4rem;margin-top:.6rem}.icon-btn{width:42px;height:42px;padding:0;display:flex;align-items:center;justify-content:center;background:var(--grid-bg);color:var(--fg);border:1px solid var(--border);border-radius:8px;font-size:1.15rem;line-height:1;text-decoration:none;cursor:pointer;transition:transform .15s,background .15s}.icon-btn:hover{background:var(--border);transform:scale(1.05)}.icon-btn:active{transform:scale(.95)}.play-area{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:.75rem;overflow:hidden}.grid-panel{flex:0 0 auto;min-height:0;display:flex;flex-direction:column;align-items:center}.theme-bar{text-align:center;font-size:.9rem;margin-bottom:.4rem}.theme-label-inline{text-transform:uppercase;letter-spacing:.05em;font-size:.7rem;color:var(--muted);margin-right:.4rem}.theme-text{font-weight:700;color:var(--primary)}.current-word{height:2.75rem;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:600;letter-spacing:.1em;color:var(--primary);margin-bottom:.4rem}.grid-container{display:flex;justify-content:center;align-items:center;flex:1 1 auto;min-height:0}.grid{display:grid;gap:4px;background:var(--grid-bg);padding:.75rem;border:2px solid var(--border);border-radius:8px;justify-content:center;user-select:none;-webkit-user-select:none;touch-action:none;position:relative;transition:transform .3s ease}.grid-overlay{position:absolute;top:0;left:0;pointer-events:none;z-index:10}.hitbox-circle{fill:none;stroke:var(--muted);stroke-width:1;stroke-dasharray:3 4;opacity:.35}.selection-line{fill:none;stroke:var(--primary);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;opacity:.8}.direction-arrow{fill:var(--primary);opacity:.3}.grid-cell{width:60px;height:60px;display:flex;align-items:center;justify-content:center;background:var(--grid-bg);border:2px solid var(--cell-border);border-radius:6px;font-size:1.5rem;font-weight:700;cursor:pointer;transition:transform .3s ease,background .15s ease,border-color .15s ease,color .15s ease;text-transform:uppercase}.grid-cell:active{transform:scale(.95)}.grid-cell.selected{background:var(--cell-selected);border-color:var(--primary);transform:scale(1.05)}.grid-cell.hint{background:var(--cell-hint);border-color:var(--warning);animation:pulse .5s ease}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.grid-cell.hint-revealed{border-color:var(--warning);box-shadow:inset 0 0 0 2px var(--cell-hint)}.grid-cell.hint-pulse{animation:pulse .5s ease}.grid-cell.flash-correct{animation:flash-correct .5s ease}.grid-cell.flash-wrong{animation:flash-wrong .5s ease}@keyframes flash-correct{0%{background:var(--cell-found);border-color:var(--success)}to{background:var(--grid-bg);border-color:var(--cell-border)}}@keyframes flash-wrong{0%{background:var(--flash-wrong);border-color:var(--warning)}to{background:var(--grid-bg);border-color:var(--cell-border)}}.clues-panel{flex:1 1 auto;min-height:0;overflow-y:auto;padding:.75rem 1rem;background:var(--grid-bg);border:1px solid var(--border);border-radius:8px}.clues-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.5rem;position:sticky;top:0;background:var(--grid-bg);padding-bottom:.25rem}.clues-head h2{font-size:.95rem;color:var(--muted)}.clue-progress{font-variant-numeric:tabular-nums;font-weight:700;color:var(--primary);font-size:.9rem}.clues-list{list-style:none;display:flex;flex-direction:column;gap:.35rem}.clue-item{display:flex;align-items:baseline;gap:.5rem;padding:.4rem .5rem;border-radius:6px;border:1px solid transparent;transition:background .2s,border-color .2s}.clue-item.active{border-color:var(--primary);background:var(--cell-selected)}.clue-item.found{opacity:.5;text-decoration:line-through}.clue-length{font-weight:600;color:var(--primary);min-width:1.5rem}.clue-text{flex:1}.clue-answer{font-weight:600;color:var(--success);margin-left:.5rem;font-size:.875rem}.clue-hint{margin-left:auto;align-self:center;background:transparent;border:none;cursor:pointer;font-size:1rem;line-height:1;padding:.15rem .3rem;border-radius:6px;opacity:.65;transition:opacity .2s,transform .1s}.clue-hint:hover{opacity:1}.clue-hint:active{transform:scale(.9)}@media (min-width: 700px),(orientation: landscape){.play-area{flex-direction:row;align-items:stretch}.grid-panel{flex:0 1 auto;overflow:auto;justify-content:center}.clues-panel{flex:1 1 320px;min-width:260px}}@media (orientation: landscape) and (max-height: 500px){.header{padding-bottom:.25rem;margin-bottom:.4rem}.header h1{font-size:1rem;margin-bottom:.15rem}.current-word{height:2rem;font-size:1.1rem}.found-words{display:flex;flex-wrap:wrap;gap:.5rem}.found-word{padding:.375rem .75rem;background:var(--cell-found);color:var(--success);border-radius:4px;font-weight:600;font-size:.875rem;text-transform:uppercase}.found-word.bonus{background:transparent;color:var(--text-secondary, #888);border:1px dashed var(--cell-found)}button{padding:.75rem 1.5rem;border:none;border-radius:6px;font-weight:600;font-size:.875rem;cursor:pointer;transition:all .2s}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{filter:brightness(1.1)}.btn-primary:active{transform:scale(.98)}.btn-secondary{background:var(--grid-bg);color:var(--fg);border:1px solid var(--border)}.btn-secondary:hover{background:var(--border)}.btn-secondary:active{transform:scale(.98)}button:disabled{opacity:.5;cursor:not-allowed}.status{position:fixed;left:50%;bottom:1rem;transform:translate(-50%);max-width:calc(100% - 2rem);text-align:center;padding:.6rem 1rem;font-weight:600;border-radius:8px;box-shadow:0 4px 16px #0003;z-index:900}.status:empty{display:none}.status.success{background:var(--cell-found);color:var(--success)}.status.error{background:#fee;color:#c00}.completion-panel{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.completion-panel.hidden{display:none}.completion-content{background:var(--grid-bg);padding:2rem;border-radius:12px;max-width:400px;text-align:center}.completion-content h2{font-size:2rem;margin-bottom:1rem}.completion-stats{font-size:1.25rem;margin-bottom:.75rem}.stars{color:var(--star);letter-spacing:.08em}.completion-stars{font-size:2.25rem;line-height:1;margin-bottom:.5rem}.best-stars{color:var(--muted);margin-bottom:.5rem}.completion-hints{color:var(--muted);font-size:.9rem;margin-bottom:1.5rem}.completion-actions{display:flex;gap:.5rem;flex-direction:column}.completion-actions button{width:100%}.tutorial-overlay,.board-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.tutorial-overlay.hidden,.board-overlay.hidden{display:none}.overlay-close{position:absolute;top:.75rem;right:.75rem;width:32px;height:32px;padding:0;background:none;border:none;color:var(--muted);font-size:1.1rem;cursor:pointer}.overlay-title{text-align:center;font-size:1.2rem;margin-bottom:1.25rem}.theme-nav{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.25rem}.theme-content{text-align:center;flex:1}.theme-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:.25rem}.list-now-playing{font-size:1.05rem;font-weight:600;color:var(--primary)}.nav-btn{width:40px;height:40px;padding:0;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:6px;font-size:1.25rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.nav-btn:hover:not(:disabled){background:var(--border);transform:scale(1.05)}.nav-btn:active:not(:disabled){transform:scale(.95)}.nav-btn:disabled{opacity:.3;cursor:not-allowed}.tutorial-card{position:relative;background:var(--grid-bg);padding:2.5rem 2rem 2rem;border-radius:16px;max-width:360px;width:100%;text-align:center}.tutorial-skip{position:absolute;top:.75rem;right:.75rem;padding:.25rem .75rem;background:none;border:none;color:var(--muted);font-size:.8rem;cursor:pointer}.tutorial-steps{position:relative;min-height:180px}.tutorial-step{display:none;flex-direction:column;align-items:center;gap:1rem}.tutorial-step.active{display:flex;animation:tutorial-in .3s ease}@keyframes tutorial-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.tutorial-art{height:120px;display:flex;align-items:center;justify-content:center;gap:.4rem;font-size:2rem}.tutorial-art-swipe{position:relative}.tutorial-art-swipe .t-letter{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border:2px solid var(--primary);border-radius:8px;font-weight:700;background:var(--cell-selected)}.tutorial-art-swipe .t-finger{position:absolute;bottom:0;left:50%;animation:finger-swipe 1.8s ease-in-out infinite}@keyframes finger-swipe{0%{transform:translate(-70px)}50%{transform:translate(40px)}to{transform:translate(-70px)}}.tutorial-art-clue{font-size:1.5rem}.tutorial-art-clue .t-word{color:var(--success);font-weight:700}.tutorial-art-done{font-size:4rem;animation:pulse .8s ease infinite}.tutorial-caption{font-size:1.15rem;font-weight:600}.tutorial-dots{display:flex;justify-content:center;gap:.5rem;margin:1.25rem 0}.tutorial-dot{width:8px;height:8px;border-radius:50%;background:var(--border);transition:background .2s,transform .2s}.tutorial-dot.filled{background:var(--primary);transform:scale(1.3)}.tutorial-next{width:100%}.board-card{position:relative;background:var(--grid-bg);padding:2.5rem 1.5rem 1.5rem;border-radius:16px;max-width:380px;width:100%}.board-streak{text-align:center;font-size:1.5rem;font-weight:700;margin-bottom:1.25rem}.board-sizes{display:flex;flex-direction:column;gap:.75rem}.board-row{display:block;width:100%;text-align:left;font:inherit;color:inherit;padding:.75rem;border:1px solid var(--border);border-radius:10px;background:var(--bg);transition:border-color .2s,transform .1s}button.board-row{cursor:pointer}button.board-row:hover{border-color:var(--primary)}button.board-row:active{transform:scale(.99)}.board-row.current{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset}.board-row.locked{opacity:.6}.board-row-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.board-size{font-weight:700;font-size:1.1rem}.board-lock{font-size:.9rem}.board-solved{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:600;color:var(--muted)}.board-bar{height:8px;border-radius:4px;background:var(--border);overflow:hidden}.board-bar-fill{height:100%;background:var(--success);border-radius:4px;transition:width .4s ease}.board-best{margin-top:.4rem;font-size:.95rem;color:var(--muted)}.board-puzzles{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.4rem;margin-top:.5rem}.pz-item{display:inline-flex;flex-direction:column;align-items:center;gap:.15rem}.pz-stars{font-size:.7rem;line-height:1;color:var(--star);letter-spacing:.02em}.pz-chip{display:flex;align-items:center;justify-content:center;width:2.4rem;flex-shrink:0;aspect-ratio:1;font:inherit;font-size:.9rem;font-weight:600;font-variant-numeric:tabular-nums;color:inherit;border:1px solid var(--border);border-radius:8px;background:var(--bg);padding:0;cursor:pointer;transition:border-color .2s,transform .1s}.pz-chip:hover{border-color:var(--primary)}.pz-chip:active{transform:scale(.94)}.pz-chip.solved{background:var(--success);border-color:var(--success);color:#fff}.pz-chip.current{box-shadow:0 0 0 2px var(--primary) inset}.pz-chip.locked{opacity:.45;cursor:default}.pz-chip.locked:hover{border-color:var(--border)}.board-puzzles-summary{margin-top:.35rem;font-size:.75rem;color:var(--muted);font-variant-numeric:tabular-nums}@media (max-width: 640px){.header h1{font-size:1.1rem}.current-word{font-size:1.2rem}}}
