*,:before,:after{box-sizing:border-box}body{margin:0}#root{flex-direction:column;min-height:100svh;display:flex}:root{--bg:#f0f3fa;--surface:#fff;--surface2:#e8edf8;--surface3:#dde3f4;--border:#bfc9e0;--border-dim:#d4daea;--text:#0a1628;--text-dim:#3d5080;--text-faint:#7a90b8;--accent:#1455cc;--accent-dim:#1455cc1f;--accent-glow:#1455cc47;--correct:#1a7a3c;--correct-dim:#1a7a3c1a;--wrong:#b83020;--wrong-dim:#b830201a;--gold:#c07800;--cell-bg:#fff;--cell-black:#101010;--cell-border:#8898b8;--cell-sel:#c8dcff;--cell-focus:#1455cc;--cell-focus-t:#fff;--scifi-bg:#1455cc0f;--del-bg:#b83020;--del-t:#fff;--vkb-bg:#dde3f4;--vkb-t:#0a1628;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,Segoe UI,sans-serif;font-size:15px;line-height:1.4}[data-theme=dark]{--bg:#0b1628;--surface:#0f2040;--surface2:#162848;--surface3:#1e3258;--border:#2a4270;--border-dim:#1e3258;--text:#c8dcf8;--text-dim:#6888b8;--text-faint:#3d5888;--accent:#4080f0;--accent-dim:#4080f02e;--accent-glow:#4080f052;--correct:#3db870;--correct-dim:#3db87024;--wrong:#f06050;--wrong-dim:#f0605024;--gold:#f0a830;--cell-bg:#122040;--cell-black:#060e1a;--cell-border:#2a4270;--cell-sel:#4080f047;--cell-focus:#4080f0;--cell-focus-t:#fff;--scifi-bg:#64a0ff17;--del-bg:#c03828;--del-t:#fff;--vkb-bg:#162848;--vkb-t:#c8dcf8}button{cursor:pointer;border:1px solid var(--border);background:var(--surface2);color:var(--text);-webkit-user-select:none;user-select:none;touch-action:manipulation;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:600;transition:background .12s,border-color .12s,color .12s}button:hover,button.active{background:var(--accent);border-color:var(--accent);color:#fff}.app-header{border-bottom:2px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:10px;height:50px;padding:0 14px;display:flex}.app-logo{letter-spacing:.1em;text-transform:uppercase;color:var(--text);font-size:16px;font-weight:900}.app-logo em{color:var(--accent);font-style:normal}.app-date{color:var(--text-faint);letter-spacing:.03em;font-size:12px}.header-right{align-items:center;gap:8px;margin-left:auto;display:flex}.theme-btn{background:0 0;border:none;padding:4px 8px;font-size:16px;line-height:1}.theme-btn:hover{background:var(--surface2)}.dev-controls{align-items:center;gap:6px;display:flex}.dev-controls input[type=date]{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:6px;outline:none;padding:4px 8px;font-size:12px}.dev-controls input[type=date]:focus{border-color:var(--accent)}.dev-badge{letter-spacing:.06em;color:var(--gold);border:1px solid var(--gold);border-radius:3px;padding:2px 5px;font-size:10px;font-weight:800}.app-main{flex-direction:column;flex:1;display:flex;overflow:hidden}.game-state{color:var(--text-dim);flex:1;justify-content:center;align-items:center;padding:60px 24px;display:flex}.game-state.game-error{color:var(--wrong)}.game{flex-direction:column;flex:1;display:flex}.toolbar{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.progress-track{background:var(--border);height:3px}.progress-fill{background:var(--accent);height:100%;transition:width .3s}.toolbar-row{align-items:center;gap:10px;padding:7px 12px;display:flex}.timer{font-variant-numeric:tabular-nums;color:var(--text-dim);min-width:38px;font-size:13px;font-weight:700}.solved-tick{color:var(--correct)}.toolbar-btns{gap:5px;margin-left:auto;display:flex}.toolbar-btns button{padding:4px 10px;font-size:12px}.active-clue{background:var(--surface2);border-bottom:1px solid var(--border);flex-shrink:0;align-items:baseline;gap:8px;padding:8px 14px;display:none}.ac-ref{color:var(--accent);letter-spacing:.05em;flex-shrink:0;min-width:28px;font-size:11px;font-weight:900}.ac-text{color:var(--text);flex:1;font-size:14px;line-height:1.35}.ac-len{color:var(--text-faint);flex-shrink:0;margin-left:auto;font-size:11px}.game-body{flex-direction:column;flex:none;display:flex}.grid-section{flex-shrink:0;padding:6px 4px 2px}.grid-wrap{width:min(100%, calc((100svh - 420px) * var(--cols,11) / var(--rows,11)));outline:none;margin:0 auto;display:block;container-type:inline-size}.grid-wrap:focus-visible{box-shadow:0 0 0 3px var(--accent-glow);border-radius:2px}.grid{grid-template-columns:repeat(var(--cols,11), 1fr);background:var(--cell-black);border:2px solid var(--cell-border);width:100%;display:grid}.cell{aspect-ratio:1;-webkit-user-select:none;user-select:none;touch-action:manipulation;cursor:pointer;justify-content:center;align-items:center;display:flex;position:relative}.cell-black{background:var(--cell-black);border:1px solid color-mix(in srgb, var(--cell-black) 60%, var(--cell-border));cursor:default}.cell-white{background:var(--cell-bg);border:1px solid var(--cell-border)}.cell-white.is-focus{background:var(--cell-focus)}.cell-white.is-sel{background:var(--cell-sel)}.cell-white.is-scifi:not(.is-focus):not(.is-sel){background:var(--scifi-bg)}.cell-num{font-size:calc(100cqi / var(--cols,11) * .24);color:var(--text-dim);pointer-events:none;-webkit-user-select:none;user-select:none;font-weight:700;line-height:1;position:absolute;top:2px;left:2px}.cell-white.is-focus .cell-num{color:#ffffffa6}.cell-white.is-sel .cell-num{color:var(--accent)}.cell-letter{font-size:calc(100cqi / var(--cols,11) * .45);color:var(--text);pointer-events:none;-webkit-user-select:none;user-select:none;text-transform:uppercase;padding-top:calc(100cqi / var(--cols,11) * .1);font-weight:800;line-height:1}.cell-white.is-focus .cell-letter{color:var(--cell-focus-t)}.cell-letter.is-revealed{color:var(--gold)}.cell-white.is-focus .cell-letter.is-revealed{color:var(--cell-focus-t)}.clues-section{display:none}.clues-two-col{display:flex}.clue-col{flex:1;min-width:0}.clue-col+.clue-col{border-left:1px solid var(--border-dim)}.clue-col-head{letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);padding:10px 12px 5px;font-size:10px;font-weight:800}.clue-list{padding:2px 0}.clue-item{cursor:pointer;border-left:2px solid #0000;gap:6px;padding:4px 12px;display:flex}.clue-item:hover{background:var(--surface2)}.clue-item.clue-active{background:var(--accent-dim);border-left-color:var(--accent)}.clue-n{color:var(--text-faint);flex-shrink:0;min-width:20px;padding-top:2px;font-size:11px;font-weight:800}.clue-item.clue-active .clue-n{color:var(--accent)}.clue-t{color:var(--text-dim);font-size:12px;line-height:1.4}.clue-item.clue-active .clue-t{color:var(--text)}.clue-empty{color:var(--text-faint);font-size:11px;font-style:italic}.scifi-dot{color:var(--accent);opacity:.75;font-size:10px}.clue-nav{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;align-items:stretch;min-height:72px;display:flex}.clue-nav-btn{color:var(--text-dim);background:0 0;border:none;border-radius:0;flex-shrink:0;align-items:center;padding:0 16px;font-size:26px;font-weight:300;display:flex}.clue-nav-btn:hover{background:var(--surface2);color:var(--accent)}.clue-nav-text{text-align:center;color:var(--text);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:10px 4px;font-size:15px;line-height:1.45;display:flex}.clue-nav-ref{color:var(--accent);letter-spacing:.07em;font-size:11px;font-weight:900}.clue-nav-len{color:var(--text-faint);font-size:13px}.ad-slot{border:1px dashed var(--border);background:var(--surface2);color:var(--text-faint);letter-spacing:.05em;text-transform:uppercase;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:11px;font-weight:600;display:flex}.ad-mobile{flex-shrink:0;width:100%;height:60px}.ad-desktop{display:none}.vkb-wrap{background:var(--surface);border-top:1px solid var(--border);padding:7px 4px max(8px, env(safe-area-inset-bottom));flex-shrink:0}.vkb{flex-direction:column;gap:5px;max-width:500px;margin:0 auto;display:flex}.vkb-row{justify-content:center;gap:4px;display:flex}.vkb-key{border:1px solid var(--border);background:var(--vkb-bg);max-width:36px;height:42px;color:var(--vkb-t);touch-action:manipulation;-webkit-user-select:none;user-select:none;box-shadow:0 1px 0 var(--border);border-radius:5px;flex:1;justify-content:center;align-items:center;padding:0;font-size:14px;font-weight:700;display:flex}.vkb-key:active{opacity:.65}.vkb-key.vkb-del{background:var(--del-bg);border-color:var(--del-bg);max-width:54px;color:var(--del-t);box-shadow:0 1px 0 color-mix(in srgb, var(--del-bg) 60%, #000);font-size:17px}.vkb-key.vkb-del:hover{background:var(--del-bg);filter:brightness(1.1)}.win-overlay{z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0000008c;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.win-modal{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:16px;width:88%;max-width:300px;padding:40px 36px;animation:.22s slideUp}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.win-star{color:var(--accent);margin-bottom:10px;font-size:40px;animation:1.2s infinite alternate pulse;display:block}@keyframes pulse{0%{transform:scale(1)}to{transform:scale(1.1)}}.win-title{color:var(--text);margin:0 0 8px;font-size:22px;font-weight:800}.win-time{color:var(--accent);font-variant-numeric:tabular-nums;margin-bottom:4px;font-size:34px;font-weight:800}.win-meta{color:var(--text-dim);margin-bottom:22px;font-size:12px}@media (width>=769px){.game-body{flex-direction:row;flex:1;align-items:flex-start;overflow:auto}.grid-section{flex:0 0 460px;padding:16px 0 16px 20px}.grid-wrap{width:100%;max-width:420px;margin:0}.clues-section{border-left:1px solid var(--border);flex-direction:column;flex:1;min-width:0;max-height:calc(100svh - 100px);padding-bottom:16px;display:flex;overflow-y:auto}.ad-desktop{border-radius:6px;height:250px;margin:16px 12px;display:flex}.active-clue{display:flex}.clue-nav,.ad-mobile,.vkb-wrap{display:none}}@media (width>=1100px){.grid-section{padding:20px 0 20px 32px}}@media (height<=500px) and (orientation:landscape){.game-body{flex-direction:row;overflow:auto}.grid-section{flex-shrink:0;padding:6px}.grid-wrap{max-width:240px}.clues-section{border-left:1px solid var(--border);flex-direction:column;flex:1;min-width:0;display:flex;overflow-y:auto}.active-clue{display:flex}.clue-nav,.ad-mobile,.vkb-wrap{display:none}}
