:root{--bg:#f7f5ee;--surface:#ffffff;--ink:#121212;--ink-soft:#5a5a5a;--ink-faint:#8a8a8a;--hairline:#e3e0d4;--tile-bg:#ffffff;--tile-bg-locked:#faf6e9;--tile-text-locked:#2a2a2a;--tile-border:#d6cfb6;--tile-border-locked:#e3dcc6;--highlight:#ebe2b8;--accent:#1f9d55;--accent-soft:#d6efde;--warm-shadow:rgba(60, 50, 20, 0.10);--warm-shadow-strong:rgba(60, 50, 20, 0.18);--particle:#d4a93a;--tile:60px;--tile-gap:8px;--active-scale:1.25;--active-tile:calc(var(--tile) * var(--active-scale));--active-gap:8px;--grid-radius:14px;--tile-radius:12px;--transition-tile:360ms cubic-bezier(0.22, 1, 0.36, 1);--transition-quick:180ms cubic-bezier(0.4, 0, 0.2, 1)}*{box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0;height:100%;font-family:Karla,-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;overflow:hidden;overscroll-behavior:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}body{display:flex;justify-content:center;align-items:flex-start;min-height:100vh;min-height:100dvh;height:100vh;height:100dvh;position:fixed;inset:0;width:100%}.app{width:100%;max-width:720px;display:flex;flex-direction:column;padding:12px 18px 12px;gap:6px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--hairline);padding-bottom:12px}.brand-side{text-align:left}.theme-side{text-align:right}.title{font-family:'Playfair Display',Georgia,serif;font-weight:800;font-size:30px;margin:0;letter-spacing:-.01em;line-height:1}.attribution{margin-top:6px;font-size:12px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em}.theme-name{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-weight:800;font-size:30px;color:var(--ink-soft);line-height:1}.play-area{flex:1;display:flex;flex-direction:column;align-items:center}.board-stage{position:relative;width:100%;display:flex;flex-direction:column;align-items:center}.theme-intro{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:60;font-family:'Playfair Display',Georgia,serif;font-style:italic;font-weight:800;font-size:64px;line-height:1.05;color:var(--ink);text-align:center;padding:0 8px;opacity:0;transform:scale(.92);word-break:normal;overflow-wrap:break-word;text-shadow:0 4px 18px rgba(0,0,0,.08)}.theme-intro.animate{animation:themeIntroAnim 3s cubic-bezier(.22,.8,.3,1) forwards}@keyframes themeIntroAnim{0%{opacity:0;transform:scale(.92)}12%{opacity:1;transform:scale(1)}85%{opacity:1;transform:scale(1.1)}100%{opacity:0;transform:scale(1.16)}}.app.tiles-sliding-in .tile{transition:transform 1.17s cubic-bezier(.22, .9, .3, 1),width var(--transition-tile),height var(--transition-tile),background var(--transition-quick),color var(--transition-quick),box-shadow var(--transition-quick),border-color var(--transition-quick),opacity var(--transition-tile)}.app.tiles-intro .board-stage{overflow:hidden}.grid{position:relative;background:#efeadb;border-radius:var(--grid-radius);padding:12px;border:1px solid var(--hairline);box-shadow:0 2px 0 var(--hairline) inset;width:calc(var(--tile) * var(--num-cols,5) + var(--tile-gap) * (var(--num-cols,5) - 1) + 24px);height:calc(var(--tile) * var(--max-col-len,10) + var(--tile-gap) * (var(--max-col-len,10) - 1) + 24px);flex-shrink:0}.col-zone{position:absolute;top:0;bottom:0;cursor:pointer;-webkit-tap-highlight-color:transparent}.col-zone[data-empty=true]{cursor:default}.tile{position:absolute;top:0;left:0;width:var(--tile);height:var(--tile);border-radius:var(--tile-radius);background:var(--tile-bg);color:var(--ink);display:flex;align-items:center;justify-content:center;font-family:Karla,sans-serif;font-weight:700;font-size:calc(var(--tile) * .6);letter-spacing:0;border:1px solid var(--tile-border);box-shadow:0 1px 0 rgba(0,0,0,.04),0 2px 6px var(--warm-shadow);user-select:none;-webkit-user-select:none;pointer-events:none;transition:transform var(--transition-tile),width var(--transition-tile),height var(--transition-tile),font-size var(--transition-tile),background var(--transition-quick),color var(--transition-quick),box-shadow var(--transition-quick),border-color var(--transition-quick),opacity var(--transition-tile);will-change:transform,width,height;transform-origin:top left}.tile.locked{background:var(--tile-bg-locked);color:var(--tile-text-locked);border-color:var(--tile-border-locked);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -1px 0 rgba(0,0,0,.03)}.tile.bottom{background:var(--tile-bg);color:var(--ink)}.tile.highlighted{background:var(--highlight);border-color:#b9a955;box-shadow:0 2px 0 rgba(0,0,0,.04),0 4px 12px var(--warm-shadow-strong)}.tile.active{width:var(--active-tile);height:var(--active-tile);font-size:calc(var(--active-tile) * .6);background:var(--tile-bg);color:var(--ink);border-color:var(--tile-border);box-shadow:0 2px 0 rgba(0,0,0,.05),0 6px 16px var(--warm-shadow-strong);z-index:5;pointer-events:auto;cursor:pointer}.tile.active:hover{border-color:#b9a955;box-shadow:0 2px 0 rgba(0,0,0,.05),0 8px 22px var(--warm-shadow-strong)}.tile.active:active{filter:brightness(.97)}.tile.active.confirming{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset,0 6px 22px rgba(31,157,85,.32)}.tile.confirmed-tile{background:#fbf7e8;color:var(--ink-soft);border-color:var(--tile-border-locked);box-shadow:0 1px 2px rgba(60,50,20,.08);border-radius:6px;font-weight:700;z-index:2}.tile.removed{opacity:0;pointer-events:none}.hint-bar{margin-top:6px;text-align:center;font-size:12px;color:var(--ink-faint);letter-spacing:.08em;text-transform:uppercase;max-width:100%;word-wrap:break-word}.hint-bar.tutorial-mode{font-size:18px;font-weight:600;line-height:1.3;letter-spacing:.06em;color:var(--ink-soft);max-width:90%;margin-left:auto;margin-right:auto}.hint-bar.puzzle-hint{font-size:18px;font-weight:500;font-style:italic;line-height:1.3;letter-spacing:.01em;text-transform:none;color:var(--ink-soft);max-width:95%;margin-left:auto;margin-right:auto}.hint-bar.puzzle-hint:empty{height:0;margin-top:0}.tutorial-text{position:absolute;text-align:center;font-family:Karla,-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;font-weight:500;font-size:16px;color:var(--ink-faint);letter-spacing:.08em;text-transform:uppercase;line-height:1.3;pointer-events:none;user-select:none;-webkit-user-select:none;display:flex;align-items:center;justify-content:center;padding:0 4px}.tutorial-text[hidden]{display:none}.active-area{position:relative;width:100%;height:calc(var(--active-tile) + 12px);margin-top:6px;display:flex;align-items:center;justify-content:center}.active-hint{height:18px;margin-top:4px;text-align:center;font-size:13px;color:var(--ink-faint);letter-spacing:.04em;font-style:italic;opacity:0;transition:opacity 180ms ease;pointer-events:none}.active-hint.visible{opacity:1}.confirmed-zone{position:relative;width:100%;margin-top:6px;transition:height 240ms cubic-bezier(.22, 1, .36, 1)}.particle{position:fixed;width:6px;height:6px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#f7e3a8 0,var(--particle) 55%,rgba(212,169,58,0) 100%);pointer-events:none;z-index:90;will-change:transform,opacity;filter:drop-shadow(0 0 2px rgba(212, 169, 58, .5))}.particle.particle-tutorial{background:radial-gradient(circle at 30% 30%,#ffefc4 0,#d9b25a 55%,rgba(217,178,90,0) 100%);filter:drop-shadow(0 0 3px rgba(217, 178, 90, .55))}.tile.tutorial-pulse{animation:tutorialPulse 2.4s ease-in-out infinite}.icon-btn.attention-pulse{animation:attentionPulse 2.4s ease-in-out infinite}@keyframes attentionPulse{0%,100%{color:var(--ink);border-color:var(--hairline);box-shadow:none}50%{color:#d8631a;border-color:#e87b1f;box-shadow:0 0 0 3px rgba(232,123,31,.15),0 4px 12px rgba(232,123,31,.35)}}@keyframes tutorialPulse{0%,100%{color:var(--ink);border-color:var(--tile-border);box-shadow:0 1px 0 rgba(0,0,0,.04),0 2px 6px var(--warm-shadow)}50%{color:#d8631a;border-color:#e87b1f;box-shadow:0 1px 0 rgba(0,0,0,.04),0 4px 14px rgba(232,123,31,.42)}}.app-footer{margin-top:10px;display:flex;justify-content:space-between;align-items:center}.footer-menu{display:flex}.footer-controls{display:flex;gap:8px}.icon-btn{width:44px;height:44px;border-radius:12px;border:1px solid var(--hairline);background:var(--surface);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background var(--transition-quick),transform var(--transition-quick),border-color var(--transition-quick);-webkit-tap-highlight-color:transparent}.icon-btn:hover:not(:disabled){background:#f1eedf}.icon-btn:active:not(:disabled){transform:scale(.94)}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.icon-btn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.modal-backdrop{position:fixed;inset:0;background:rgba(20,20,20,.42);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;animation:fadeIn .2s ease}.modal-backdrop[hidden]{display:none!important}#pause-modal{background:rgba(20,20,20,.55);backdrop-filter:blur(18px) saturate(0.85);-webkit-backdrop-filter:blur(18px) saturate(0.85)}.modal{background:var(--surface);border-radius:16px;padding:28px 28px 24px;width:100%;max-width:360px;text-align:center;box-shadow:0 12px 40px rgba(0,0,0,.18);animation:pop 280ms cubic-bezier(.22,1.2,.36,1)}.modal h2{font-family:'Playfair Display',Georgia,serif;font-size:30px;margin:0 0 6px;font-weight:800}.modal-subtitle{margin:0 0 18px;color:var(--ink-soft);font-size:15px}.stats{display:flex;justify-content:space-around;gap:12px;margin:0 0 14px;padding:14px 6px;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}.stats>div{display:flex;flex-direction:column;gap:2px}.stats dt{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.stats dd{margin:0;font-size:22px;font-weight:700;font-family:'Playfair Display',Georgia,serif}.words-found{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:6px 8px;max-height:130px;overflow-y:auto}.words-found li{font-size:13px;background:var(--accent-soft);color:#155731;padding:4px 10px;border-radius:999px;font-weight:600;letter-spacing:.02em}.words-found li.speed-green{background:var(--accent-soft);color:#155731}.leaderboard{margin:0 0 18px;border-top:1px solid var(--hairline);padding-top:12px}.leaderboard-heading{margin:0 0 8px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);text-align:center;font-weight:600}.lb-status{margin:0;text-align:center;color:var(--ink-faint);font-style:italic;font-size:13px}.lb-status:empty{display:none}.leaderboard-list{list-style:none;margin:0 auto;padding:0;width:fit-content;max-width:100%;max-height:160px;overflow-y:auto;counter-reset:lb-counter}.leaderboard-list li{counter-increment:lb-counter;display:flex;align-items:baseline;gap:8px;padding:2px 0;font-size:14px;color:var(--ink)}.leaderboard-list li::before{content:counter(lb-counter) ".";color:var(--ink-faint);font-size:12px;min-width:18px;text-align:right;flex-shrink:0}.lb-time{font-weight:700;font-variant-numeric:tabular-nums;flex-shrink:0}.lb-name{color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.name-input{width:100%;box-sizing:border-box;margin:0 0 18px;padding:12px 14px;font-family:inherit;font-size:16px;font-weight:600;text-align:center;color:var(--ink);background:var(--surface);border:1.5px solid var(--hairline);border-radius:12px;outline:0;transition:border-color var(--transition-quick)}.name-input:focus{border-color:var(--ink)}.primary-btn{width:100%;background:var(--ink);color:var(--surface);border:none;border-radius:999px;padding:14px;font-family:inherit;font-size:15px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:transform var(--transition-quick),background var(--transition-quick)}.primary-btn:hover{background:#2a2a2a}.primary-btn:active{transform:scale(.98)}.primary-btn.secondary{background:0 0;color:var(--ink);border:1px solid var(--hairline);margin-top:10px}.primary-btn.secondary:hover{background:#f1eedf}.stats.single{justify-content:center}.debug-words{margin-top:14px;font-size:11px;color:#b5b3aa;letter-spacing:.04em;font-style:italic;text-align:center;line-height:1.5;word-break:break-word}.debug-words:empty{display:none}.debug-words[hidden]{display:none!important}.modal-credit{margin-top:16px;font-size:11px;color:var(--ink-faint);letter-spacing:.05em;text-transform:uppercase;text-align:center}#pause-title{outline:0}#pause-title:focus{outline:0}.see-you-tomorrow{position:fixed;font-size:13px;font-weight:600;font-style:italic;color:var(--ink-soft);pointer-events:none;white-space:nowrap;z-index:200}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes pop{from{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}@media (max-width:540px){:root{--tile-gap:6px;--active-gap:6px}.app{padding:12px 10px 16px}.title{font-size:26px}.theme-name{font-size:26px}.icon-btn{width:42px;height:42px}.modal h2{font-size:24px}.stats dd{font-size:18px}}@media (max-width:360px){.app{padding:10px 6px 14px}.icon-btn{width:40px;height:40px}}.app.preload .confirmed-zone,.app.preload .tile{transition:none!important}.active-area,.col-zone,.confirmed-zone,.grid{user-select:none;-webkit-user-select:none}