:root{color-scheme:dark;--bg: #0f1219;--bg-elevated: #161b26;--border: #2a3142;--text: #e8eaef;--muted: #8b93a5;--accent: #6ee7b7;--accent-dim: #34d399;--danger: #f87171;--ok: #4ade80;--font: "DM Sans", system-ui, sans-serif}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}.app{max-width:720px;margin:0 auto;padding:1.25rem 1rem 3rem;min-height:100vh;display:flex;flex-direction:column}.app.empty{justify-content:center;align-items:center;text-align:center}.empty-msg{color:var(--muted);max-width:28rem}.empty-msg code{display:block;margin-top:1rem;padding:.75rem;background:var(--bg-elevated);border-radius:8px;font-size:.8rem;word-break:break-all}.header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:.75rem}.brand-mark{font-size:1.5rem;color:var(--accent);line-height:1}.brand h1{margin:0;font-size:1.35rem;font-weight:700;letter-spacing:-.02em}.brand-sub{margin:0;font-size:.8rem;color:var(--muted)}.level-nav{display:flex;align-items:center;gap:.5rem}.level-select-wrap{display:flex;align-items:center}.level-select{font:inherit;font-size:.9rem;padding:.45rem .75rem;border-radius:8px;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);max-width:220px}.main{flex:1;display:flex;flex-direction:column;gap:1rem}.panel{background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:1rem 1.1rem}.title-panel{padding-bottom:.9rem}.level-id{margin:0 0 .25rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.level-title{margin:0;font-size:1.35rem;font-weight:600}.title-panel-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1rem;margin-top:.65rem}.hint-controls{display:flex;align-items:center;gap:.5rem}.hint-remaining{font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}.quote-panel{margin:0}.quote-label{margin:0 0 .35rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.quote-hint{margin:0 0 .85rem;font-size:.82rem;color:var(--muted);line-height:1.45}.quote-grid{display:flex;flex-wrap:wrap;gap:.65rem 1.15rem;align-items:flex-end}.quote-word{display:inline-flex;gap:4px;flex-wrap:wrap;align-items:flex-end}.quote-hyphen-wrap{align-self:center;padding:0 .1rem;color:var(--muted);font-weight:500}.crypt-row{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:.35rem}.crypt-letter{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:1.75rem;padding:.2rem .25rem .15rem;border-radius:8px;background:var(--bg);border:1px solid var(--border)}.quote-slot.crypt-letter{min-height:3.1rem}.crypt-dig{font-size:.72rem;font-weight:700;color:var(--accent);line-height:1;letter-spacing:.02em}.crypt-ch{font-size:1.1rem;font-weight:600;line-height:1.2;min-height:1.35rem;text-transform:lowercase}.clue-crypt-block{margin-top:.35rem}.clue-merged-strip{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-end;margin-top:.35rem}.merged-cell{position:relative}.merged-cell--hint .crypt-ch{color:var(--muted);font-style:italic}.merged-cell--solved .crypt-ch{color:var(--ok)}.merged-letter-layer{position:relative;display:flex;align-items:center;justify-content:center;min-height:1.4rem;min-width:1.25rem}.merged-letter-layer .crypt-ch{pointer-events:none;-webkit-user-select:none;user-select:none}.merged-input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;min-height:2rem;margin:0;padding:0;border:none;border-radius:6px;background:transparent;color:transparent;caret-color:transparent;font:inherit;font-size:1rem;cursor:text;z-index:2}.merged-input:focus{outline:none}.merged-cell:focus-within{box-shadow:0 0 0 2px #34d39959;border-radius:8px}.clue-actions-row{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.tk-keyboard-sticky{position:fixed;bottom:0;left:50%;transform:translate(-50%);z-index:40;width:min(720px,100%);padding:.65rem .75rem calc(.75rem + env(safe-area-inset-bottom,0px));background:var(--bg-elevated);border-top:1px solid var(--border);border-left:1px solid var(--border);border-right:1px solid var(--border);border-radius:12px 12px 0 0;box-shadow:0 -10px 28px #00000073}.tk-keyboard-hint{margin:0 0 .45rem;font-size:.72rem;color:var(--muted);text-align:center}.tk-keyboard{max-width:100%}.tk-keyboard-row{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;margin-bottom:5px}.tk-key{min-width:2.1rem;height:2.35rem;padding:0 .35rem;font:inherit;font-size:.95rem;font-weight:600;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;text-transform:lowercase}.tk-key:hover{background:#ffffff0f}.tk-key:active{transform:scale(.97)}.tk-key-backspace{flex:1;max-width:12rem;font-size:.85rem;font-weight:500}.clues-section{padding-bottom:max(2rem,env(safe-area-inset-bottom))}.app--keyboard{padding-bottom:11.5rem}.legacy-msg{margin:0;font-size:.9rem;color:var(--muted);line-height:1.5}.legacy-msg code{font-size:.78rem;display:block;margin-top:.5rem;padding:.6rem;background:var(--bg);border-radius:8px;word-break:break-all}.section-title{margin:0 0 .75rem;font-size:.85rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.clue-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.clue-progress{font-size:.9rem;color:var(--muted)}.clues{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.85rem}.clue-row{display:flex;gap:.65rem;padding:.75rem;border-radius:10px;background:var(--bg);border:1px solid var(--border);transition:border-color .15s ease}.clue-row.status-ok{border-color:#4ade8073}.clue-row.status-bad{border-color:#f8717173}.clue-num{flex-shrink:0;width:1.75rem;height:1.75rem;display:flex;align-items:center;justify-content:center;border-radius:8px;background:var(--bg-elevated);font-size:.85rem;font-weight:600;color:var(--accent)}.clue-body{flex:1;min-width:0}.clue-text{margin:0 0 .5rem;font-size:.92rem;color:var(--text);word-break:break-word}.btn{font:inherit;font-size:.85rem;font-weight:500;padding:.45rem .85rem;border-radius:8px;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);cursor:pointer;transition:background .12s ease,border-color .12s ease}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:linear-gradient(145deg,#059669,#047857);border-color:#047857;color:#fff}.btn.primary:hover:not(:disabled){filter:brightness(1.08)}.btn.ghost{background:transparent}.btn.ghost:hover:not(:disabled){background:#ffffff0f}.btn.ghost.subtle{font-size:.8rem;color:var(--muted)}.btn.icon{padding:.45rem .65rem;min-width:2.5rem}.footer{margin-top:auto;padding-top:2rem;font-size:.8rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:1rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:1rem;background:#05080eb8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-card{width:min(100%,22rem);padding:1.35rem 1.25rem;border-radius:14px;border:1px solid var(--border);background:var(--bg-elevated);box-shadow:0 20px 50px #0000008c}.modal-card--winner{text-align:center}.modal-winner-icon{font-size:2rem;color:var(--accent);line-height:1;margin-bottom:.35rem}.modal-title{margin:0 0 .5rem;font-size:1.35rem;font-weight:700;letter-spacing:-.02em}.modal-text{margin:0 0 1.1rem;font-size:.9rem;color:var(--muted);line-height:1.45}.modal-actions{display:flex;flex-direction:column;gap:.5rem}.modal-btn{width:100%;justify-content:center;padding:.55rem 1rem}.modal-btn-full{width:100%;margin-top:.25rem}.details-list{margin:0 0 1rem}.details-row{display:grid;grid-template-columns:6.5rem 1fr;gap:.5rem;padding:.4rem 0;border-bottom:1px solid var(--border);font-size:.88rem}.details-row:last-of-type{border-bottom:none}.details-row dt{margin:0;color:var(--muted);font-weight:500}.details-row dd{margin:0;word-break:break-word}.details-row--block{grid-template-columns:1fr;gap:.25rem}.details-row--block dt{grid-column:1 / -1}.details-quote{font-size:.95rem;font-weight:500;color:var(--text);line-height:1.4}@media(max-width:520px){.header{flex-direction:column;align-items:stretch}.level-nav{justify-content:space-between}.level-select{max-width:none;flex:1}}
