:root{--bg: #0b0d12;--bg-elevated: #12151d;--border: #232836;--text: #e6e9f0;--muted: #6b7385;--dim: #3a4152;--correct: #8be9b0;--incorrect: #ff6b81;--accent: #ffcc66;--accent-soft: rgba(255, 204, 102, .12);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(1100px 600px at 50% -15%,#1b2131 0%,transparent 60%),var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font-family:inherit}.app{min-height:100%;max-width:1180px;margin:0 auto;padding:28px clamp(16px,4vw,56px) 36px;display:flex;flex-direction:column;gap:clamp(24px,4vw,44px)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:10px;font-size:.85rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}.dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent)}.nav{display:flex;gap:2px;padding:4px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elevated)}.nav-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--muted);font-size:.78rem;letter-spacing:.04em;padding:6px 15px;border-radius:7px;cursor:pointer;transition:color .15s ease,background .15s ease}.nav-item:hover{color:var(--text)}.nav-item.active{background:var(--accent-soft);color:var(--accent)}.nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sound{display:grid;place-items:center;width:36px;height:36px;padding:0;border:1px solid var(--border);border-radius:10px;background:var(--bg-elevated);color:var(--muted);cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease}.sound:hover{color:var(--text)}.sound.on{color:var(--accent);border-color:#ffcc6659}.sound.on:hover{border-color:var(--accent)}.sound:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.modes{display:flex;gap:4px;padding:4px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elevated)}.mode{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--muted);font-size:.78rem;letter-spacing:.04em;padding:6px 13px;border-radius:7px;cursor:pointer;transition:color .15s ease,background .15s ease}.mode:hover{color:var(--text)}.mode.active{background:var(--accent-soft);color:var(--accent)}.mode:focus-visible,.restart:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.best{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);white-space:nowrap}.best strong{color:var(--text);font-size:.95rem;letter-spacing:0;margin:0 3px}.stage{flex:1;display:flex;width:100%}.stage-center{align-items:center}.test-view{display:flex;flex-direction:column;gap:16px;width:100%}.test-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px}.panel{position:relative;width:100%;padding:clamp(22px,3.5vw,42px);border:1px solid var(--border);border-radius:18px;background:linear-gradient(180deg,#171b25e6,#0f1219e6);box-shadow:0 30px 80px -40px #000000e6,inset 0 1px #ffffff08;cursor:text;transition:border-color .2s ease}.panel:focus-within{border-color:#313a4f}.meta{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:18px;color:var(--muted)}.timer{font-size:1.4rem;color:var(--accent);font-variant-numeric:tabular-nums;line-height:1}.hint{font-size:.66rem;letter-spacing:.18em;text-transform:uppercase}.progress{height:2px;margin-bottom:clamp(24px,4vw,38px);border-radius:2px;background:var(--border);overflow:hidden}.progress-fill{height:100%;background:var(--accent);box-shadow:0 0 10px var(--accent);transition:width .12s linear}.passage{min-height:8.4em;font-size:clamp(1.2rem,2.4vw,1.7rem);line-height:2;letter-spacing:.01em;color:var(--dim);-webkit-user-select:none;user-select:none}.word{display:inline-block;white-space:pre}.char{position:relative;transition:color .06s linear}.char.correct{color:var(--correct)}.char.incorrect{color:var(--incorrect);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}.char.space{display:inline-block;width:.55em;height:1.1em}.char.current:after{content:"";position:absolute;left:-1px;top:.2em;bottom:.2em;width:2px;border-radius:2px;background:var(--accent);box-shadow:0 0 8px var(--accent);animation:blink 1.1s steps(1) infinite}.char.space.current:after{left:.08em;top:auto;bottom:0;height:.77em}@keyframes blink{0%,45%{opacity:1}55%,to{opacity:0}}.capture{position:absolute;top:0;left:0;width:1px;height:1px;padding:0;border:0;opacity:0;pointer-events:none}.results{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:28px;min-height:8.4em}.label{display:block;font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.hero strong{display:block;margin-top:4px;font-size:clamp(3rem,8vw,4.5rem);font-weight:500;line-height:1;color:var(--accent);font-variant-numeric:tabular-nums}.stats{display:flex;flex-wrap:wrap;gap:clamp(22px,5vw,54px)}.stat strong{display:block;margin-top:5px;font-size:1.5rem;font-weight:500;font-variant-numeric:tabular-nums}.muted{color:var(--muted);font-size:.9em}.restart{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elevated);color:var(--text);font-size:.85rem;cursor:pointer;transition:border-color .15s ease,color .15s ease,transform .1s ease}.restart:hover{border-color:var(--accent);color:var(--accent)}.restart:active{transform:translateY(1px)}.lessons{display:flex;flex-direction:column;gap:20px;width:100%;padding-top:6px}.lessons-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap}.lessons-head h1{margin:0;font-size:1.35rem;font-weight:500;letter-spacing:.02em}.lessons-head p{margin:7px 0 0;max-width:54ch;font-size:.78rem;line-height:1.6;color:var(--muted)}.mastery{text-align:right;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.mastery strong{display:block;font-size:1.7rem;font-weight:500;letter-spacing:0;color:var(--text);line-height:1.1}.weak-keys{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:#12151d99}.weak-title{margin-right:4px;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.lesson-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.lesson-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;flex-direction:column;gap:7px;padding:16px;text-align:left;border:1px solid var(--border);border-radius:14px;background:linear-gradient(180deg,#171b25cc,#0f1219cc);color:var(--text);cursor:pointer;transition:border-color .15s ease,transform .1s ease}.lesson-card:hover:not(:disabled){border-color:#3a445c;transform:translateY(-1px)}.lesson-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lesson-card.locked{opacity:.45;cursor:not-allowed}.lesson-card.mastered{border-color:#8be9b047}.lesson-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.lesson-index{font-size:.66rem;letter-spacing:.14em;color:var(--muted)}.lesson-state{font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.lesson-card.available .lesson-state{color:var(--accent)}.lesson-card.mastered .lesson-state{color:var(--correct)}.lesson-title{font-size:.98rem}.lesson-sub{font-size:.72rem;line-height:1.5;color:var(--muted)}.lesson-keys{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.lesson-keys kbd{margin:0;padding:1px 5px;font-size:.6rem}.lesson-runner{display:flex;flex-direction:column;gap:16px;width:100%}.runner-bar{display:flex;align-items:center;justify-content:space-between;gap:12px}.runner-heading{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}.runner-heading strong{font-size:.95rem;font-weight:500}.runner-heading span{font-size:.68rem;color:var(--muted)}.runner-count{font-size:.68rem;letter-spacing:.14em;color:var(--muted);font-variant-numeric:tabular-nums}.ghost{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:6px 0;color:var(--muted);font:inherit;font-size:.75rem;letter-spacing:.03em;cursor:pointer}.ghost:hover{color:var(--text)}.ghost:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.ghost.tiny{align-self:center;font-size:.66rem;color:var(--dim)}.ghost.tiny:hover{color:var(--muted)}.result-actions{display:flex;flex-wrap:wrap;gap:10px}.restart.primary{border-color:#ffcc6680;background:var(--accent-soft);color:var(--accent)}.result-note{margin:0;font-size:.72rem;color:var(--muted)}.key-report{display:flex;flex-wrap:wrap;gap:8px}.key-chip{display:inline-flex;align-items:center;gap:7px;padding:4px 9px;border:1px solid var(--border);border-radius:8px;font-size:.72rem;color:var(--muted)}.key-name{color:var(--text)}.key-chip.good{border-color:#8be9b059}.key-chip.good .key-accuracy{color:var(--correct)}.key-chip.ok{border-color:#ffcc6659}.key-chip.ok .key-accuracy{color:var(--accent)}.key-chip.bad{border-color:#ff6b8159}.key-chip.bad .key-accuracy{color:var(--incorrect)}.lesson-stage{display:flex;flex-direction:column}.lesson-stage .passage{min-height:5.4em}.finger-left-pinky,.finger-right-pinky{--finger: #ff9aa8;--finger-soft: rgba(255, 154, 168, .16)}.finger-left-ring,.finger-right-ring{--finger: #ffcc66;--finger-soft: rgba(255, 204, 102, .16)}.finger-left-middle,.finger-right-middle{--finger: #8be9b0;--finger-soft: rgba(139, 233, 176, .16)}.finger-left-index,.finger-right-index{--finger: #7cc4ff;--finger-soft: rgba(124, 196, 255, .16)}.finger-thumb{--finger: #c9a3ff;--finger-soft: rgba(201, 163, 255, .16)}.virtual-keyboard{--u: clamp(15px, 5vw, 42px);--gap: clamp(2px, .45vw, 4px);display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;margin-top:clamp(18px,3vw,30px);-webkit-user-select:none;user-select:none}.vk-frame{padding:clamp(8px,1.4vw,14px);border:1px solid var(--border);border-radius:16px;background:linear-gradient(180deg,#12151df0,#0b0d12f0);box-shadow:0 26px 60px -42px #000000f2,inset 0 1px #ffffff09}.vk-keys{position:relative;display:flex;flex-direction:column;gap:var(--gap)}.vk-row{position:relative;z-index:1;display:flex;justify-content:center;gap:var(--gap)}.vk-key{display:grid;place-items:center;width:var(--u);height:var(--u);border:1px solid #2a3141;border-radius:max(4px,calc(var(--u) * .16));background:linear-gradient(180deg,#1b202b,#141821);box-shadow:inset 0 1px #ffffff09,0 1px #00000080;color:#7e879b;font-size:calc(var(--u) * .34);line-height:1;transition:color .12s ease,border-color .12s ease,background .12s ease,box-shadow .12s ease,transform .12s ease}.vk-key-mod{width:calc(var(--u) * 2 + var(--gap));font-size:calc(var(--u) * .27);letter-spacing:.06em;text-transform:uppercase;color:#545d70}.vk-key-space{width:calc(var(--u) * 7 + var(--gap) * 6);font-size:calc(var(--u) * .27);letter-spacing:.14em;text-transform:uppercase;color:#545d70}.vk-key.is-active{border-color:var(--finger);background:var(--finger-soft);color:var(--finger);box-shadow:0 0 0 1px var(--finger),0 0 20px var(--finger-soft),inset 0 0 14px var(--finger-soft);transform:translateY(1px)}.vk-hands{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none}.vk-hand{position:absolute;top:calc((var(--u) + var(--gap)) * 2 + var(--u) * .18);width:calc(var(--u) * 4 + var(--gap) * 3);height:calc(var(--u) * 2.9 + var(--gap) * 2.5);opacity:.58;transition:opacity .15s ease}.vk-hand.is-active{opacity:.95}.vk-hand-left{left:calc((var(--u) + var(--gap)) * .5)}.vk-hand-right{left:calc((var(--u) + var(--gap)) * 6.5)}.vk-palm{position:absolute;top:calc(var(--u) * 2.15);left:calc(var(--u) * -.15);right:calc(var(--u) * -.15);height:calc(var(--u) * .95);border:1px solid rgba(205,214,230,.22);border-radius:34% 34% 46% 46%/26% 26% 64% 64%;background:linear-gradient(180deg,#cdd6e612,#cdd6e606)}.vk-finger,.vk-thumb{position:absolute;top:0;width:calc(var(--u) * .72);border:1px solid rgba(205,214,230,.28);border-radius:999px;background:linear-gradient(180deg,#cdd6e617,#cdd6e609);transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.vk-finger{top:calc(var(--u) * .62)}.vk-finger:before,.vk-thumb:before{content:"";position:absolute;top:calc(var(--u) * .09);left:50%;width:calc(var(--u) * .13);height:calc(var(--u) * .13);border-radius:50%;background:#e6ecf63d;transform:translate(-50%)}.vk-hand-left .finger-left-pinky{left:calc(var(--u) * .14);height:calc(var(--u) * 1.62)}.vk-hand-left .finger-left-ring{left:calc((var(--u) + var(--gap)) + var(--u) * .14);height:calc(var(--u) * 2.15)}.vk-hand-left .finger-left-middle{left:calc((var(--u) + var(--gap)) * 2 + var(--u) * .14);height:calc(var(--u) * 2.36)}.vk-hand-left .finger-left-index{left:calc((var(--u) + var(--gap)) * 3 + var(--u) * .14);height:calc(var(--u) * 2.02)}.vk-hand-right .finger-right-index{left:calc(var(--u) * .14);height:calc(var(--u) * 2.02)}.vk-hand-right .finger-right-middle{left:calc((var(--u) + var(--gap)) + var(--u) * .14);height:calc(var(--u) * 2.36)}.vk-hand-right .finger-right-ring{left:calc((var(--u) + var(--gap)) * 2 + var(--u) * .14);height:calc(var(--u) * 2.15)}.vk-hand-right .finger-right-pinky{left:calc((var(--u) + var(--gap)) * 3 + var(--u) * .14);height:calc(var(--u) * 1.62)}.vk-hand-left .vk-thumb{top:calc(var(--u) * 1.55);left:calc((var(--u) + var(--gap)) * 3.1);height:calc(var(--u) * 1.05);transform:rotate(38deg);transform-origin:top center}.vk-hand-right .vk-thumb{top:calc(var(--u) * 1.55);left:calc(var(--u) * -.4);height:calc(var(--u) * 1.05);transform:rotate(-38deg);transform-origin:top center}.vk-finger.is-active,.vk-thumb.is-active{border-color:var(--finger);background:var(--finger-soft);box-shadow:0 0 0 1px var(--finger),0 0 18px var(--finger-soft),inset 0 0 12px var(--finger-soft);animation:vk-finger-pulse 1.3s ease-in-out infinite}.vk-finger.is-active:before,.vk-thumb.is-active:before{background:var(--finger);box-shadow:0 0 10px var(--finger)}@keyframes vk-finger-pulse{0%,to{box-shadow:0 0 0 1px var(--finger),0 0 14px var(--finger-soft),inset 0 0 10px var(--finger-soft)}50%{box-shadow:0 0 0 1px var(--finger),0 0 24px var(--finger-soft),inset 0 0 16px var(--finger-soft)}}.vk-caption{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:14px;min-height:1.4em;font-size:.72rem;color:var(--muted);letter-spacing:.03em}.vk-caption-item{display:inline-flex;align-items:center;gap:8px}.vk-caption-item.is-idle{color:var(--dim);letter-spacing:.12em;text-transform:uppercase}.vk-caption-dot{width:7px;height:7px;border-radius:50%;background:var(--finger, var(--accent));box-shadow:0 0 10px var(--finger-soft, var(--accent-soft))}.vk-caption-item kbd{margin:0;color:var(--finger, var(--accent));border-color:var(--finger, var(--border));box-shadow:0 0 12px var(--finger-soft, transparent)}.vk-caption-shift{font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}.game-view{display:flex;flex-direction:column;gap:18px;width:100%;padding-top:6px}.game-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap}.game-head h1{margin:0;font-size:1.35rem;font-weight:500;letter-spacing:.02em}.game-head p{margin:7px 0 0;max-width:58ch;font-size:.78rem;line-height:1.6;color:var(--muted)}.game-scores{display:flex;gap:clamp(20px,4vw,36px);text-align:right}.game-scores span{display:block;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.game-scores strong{display:block;font-size:1.7rem;font-weight:500;line-height:1.1;color:var(--text);font-variant-numeric:tabular-nums}.game-panel{position:relative;width:100%;overflow:hidden;border:1px solid var(--border);border-radius:18px;background:#0b0e16;box-shadow:0 30px 80px -40px #000000e6,inset 0 1px #ffffff08}.game-canvas{display:block;width:100%;height:auto;aspect-ratio:5 / 2}.game-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 50% 42%,#0b0d1285,#0b0d12e0);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.game-card{width:min(430px,100%);padding:24px;text-align:center;border:1px solid var(--border);border-radius:16px;background:linear-gradient(180deg,#171b25f0,#0f1219f7);box-shadow:0 24px 60px -30px #000000e6}.game-kicker{font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}.game-card h2{margin:9px 0 8px;font-size:1.4rem;font-weight:500;letter-spacing:.01em}.game-card p{margin:0 auto 16px;max-width:40ch;font-size:.75rem;line-height:1.65;color:var(--muted)}.game-demo{display:flex;align-items:center;justify-content:center;gap:12px;margin:18px 0 20px}.game-demo-key{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--border);border-bottom-width:3px;border-radius:9px;background:var(--bg-elevated);color:var(--text);font-size:1.05rem}.game-demo-arrow{color:var(--accent);font-size:1.15rem}.game-demo-crate{width:22px;height:22px;border-radius:5px;background:var(--incorrect);box-shadow:0 0 14px #ff6b8180}.game-stats{display:flex;justify-content:center;gap:30px;margin:18px 0 22px}.game-stats span{display:block;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.game-stats strong{display:block;margin-top:4px;font-size:1.3rem;font-weight:500;color:var(--text);font-variant-numeric:tabular-nums}.boggle-view-typing{display:flex;flex-direction:column;gap:18px;width:100%}.boggle-head-typing{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap}.boggle-head-typing h1{margin:0;font-size:1.35rem}.boggle-head-typing p{margin:7px 0 0;font-size:.78rem;color:var(--muted)}.boggle-stats-typing{display:flex;gap:clamp(20px,4vw,36px);text-align:right}.boggle-stats-typing span{display:block;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.boggle-stats-typing strong{display:block;font-size:1.7rem;font-variant-numeric:tabular-nums}.boggle-main-typing{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:18px}.boggle-board-section{position:relative;display:flex;flex-direction:column;align-items:center;gap:16px;padding:clamp(18px,3vw,28px);border:1px solid var(--border);border-radius:18px;background:linear-gradient(180deg,#171b25e6,#0f1219e6)}.boggle-cell-display-large{width:clamp(64px,12vw,90px);height:clamp(64px,12vw,90px);border:1px solid var(--border);border-radius:12px;background:radial-gradient(circle at 50% 30%,#272d3d,#161a25);color:var(--text);font-size:clamp(1.4rem,4vw,2.2rem);font-weight:500;text-transform:uppercase;display:grid;place-items:center}.boggle-input-wrapper{width:min(400px,100%)}.boggle-typing-input{width:100%;padding:12px 16px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elevated);color:var(--text);font-size:.95rem;text-transform:uppercase;letter-spacing:.1em}.boggle-typing-input:focus{outline:1px solid rgba(255,204,102,.5)}.boggle-msg{font-size:.85rem;color:var(--accent)}.boggle-overlay-typing{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:18px;overflow-y:auto;background:radial-gradient(circle at 50% 42%,#0b0d12b3,#0b0d12eb)}.boggle-card-typing{width:min(380px,100%);margin:auto;padding:24px;text-align:center;border:1px solid var(--border);border-radius:16px;background:linear-gradient(180deg,#171b25f5,#0f1219fa)}.boggle-end-card{width:min(560px,100%)}.boggle-end-inline{margin:0;width:min(560px,100%)}.boggle-missed{margin:0 0 18px;text-align:left}.boggle-missed h3{margin:0 0 8px;font-size:.7rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.boggle-missed-list{display:flex;flex-wrap:wrap;align-content:flex-start;gap:6px;max-height:220px;overflow-y:auto;padding:10px;border:1px solid var(--border);border-radius:10px;background:#0b0d1259}.boggle-missed-word{padding:3px 8px;border-radius:6px;background:#ffcc661a;color:var(--accent);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;border-bottom:1px solid transparent;transition:border-color .12s ease,background .12s ease}.boggle-missed-word:hover,.boggle-missed-word:focus-visible{border-bottom-color:currentColor;background:#ffcc662e}.boggle-missed-empty{margin:0;padding:10px 0 0;font-size:.75rem;color:var(--muted)}.boggle-card-typing h2{margin:9px 0 8px;font-size:1.4rem}.boggle-card-typing p{margin:0 0 18px;font-size:.75rem;color:var(--muted);line-height:1.65}.boggle-sidebar-typing{display:flex;flex-direction:column;gap:14px}.boggle-missed-panel-list{max-height:260px;padding:10px 12px;border:none;border-radius:0;background:transparent}.boggle-words-typing{border:1px solid var(--border);border-radius:14px;background:linear-gradient(180deg,#171b25cc,#0f1219cc);overflow:hidden}.boggle-words-header-typing{display:flex;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border);font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.12em}.boggle-words-list-typing{max-height:420px;overflow-y:auto}.boggle-word-item-typing{display:flex;justify-content:space-between;padding:8px 14px;border-bottom:1px solid rgba(35,40,54,.6);text-transform:uppercase;letter-spacing:.08em}.boggle-word-item-typing.found{color:#4ade80}.boggle-word-link-typing{color:inherit;text-decoration:none;border-bottom:1px solid transparent;transition:border-color .12s ease}.boggle-word-link-typing:hover,.boggle-word-link-typing:focus-visible{border-bottom-color:currentColor}.boggle-word-item-typing.found .boggle-word-points-typing{color:#4ade80}.boggle-empty-typing{padding:16px 14px;font-size:.75rem;color:var(--muted)}.boggle-view{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:500px;margin:0 auto;padding-top:6px}.boggle-header{display:flex;width:100%;justify-content:space-between;align-items:center;padding:0 8px}.boggle-timer{font-size:2rem;font-weight:600;font-variant-numeric:tabular-nums}.boggle-score{text-align:right}.boggle-score span{display:block;font-size:.6rem;letter-spacing:.16em;color:var(--muted)}.boggle-score strong{display:block;font-size:1.8rem;font-weight:600;font-variant-numeric:tabular-nums}.boggle-word-display{position:relative;min-height:40px;width:100%;text-align:center;display:flex;align-items:center;justify-content:center}.boggle-current{font-size:1.4rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.boggle-current.empty{font-size:.75rem;color:var(--muted);letter-spacing:.18em}.boggle-message-overlay{position:absolute;font-size:1rem;font-weight:600;color:var(--accent);animation:fadeInOut 1.2s ease}@keyframes fadeInOut{0%{opacity:0;transform:scale(.9)}20%{opacity:1;transform:scale(1.05)}80%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.boggle-board-container{width:100%;padding:12px}.boggle-netflix-board{display:flex;flex-direction:column;gap:6px;background:#0a0a0a;padding:10px;border-radius:12px;border:2px solid #1a1a1a}.boggle-netflix-board.dragging{cursor:grabbing}.boggle-netflix-row{display:flex;gap:6px}.boggle-netflix-cell{flex:1;aspect-ratio:1;border:none;border-radius:8px;background:linear-gradient(145deg,#2a2a2a,#1a1a1a);color:#fff;font-size:clamp(1.4rem,8vw,2.2rem);font-weight:700;text-transform:uppercase;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;transition:all .1s ease;box-shadow:0 2px 4px #00000080;display:grid;place-items:center}.boggle-netflix-cell:active{cursor:grabbing}.boggle-netflix-cell.active{background:linear-gradient(145deg,#fc6,#ffb84d);color:#000;transform:scale(1.05);box-shadow:0 0 12px #fc69;z-index:2}.boggle-netflix-cell.used{background:linear-gradient(145deg,#1a1a1a,#0a0a0a);color:#666}.boggle-netflix-cell:disabled{cursor:default}.boggle-cell-letter{font-size:inherit}.boggle-words-found{width:100%;background:#0f0f0f;border-radius:10px;border:1px solid #1a1a1a;overflow:hidden;max-height:200px;display:flex;flex-direction:column}.boggle-words-header-netflix{display:flex;justify-content:space-between;padding:10px 14px;background:#151515;font-size:.65rem;letter-spacing:.14em;color:var(--muted)}.boggle-words-list-netflix{flex:1;overflow-y:auto;padding:8px 0}.boggle-word-item-netflix{display:flex;justify-content:space-between;padding:6px 14px;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em}.boggle-word-points-netflix{color:var(--accent);font-weight:600}.boggle-empty-netflix{padding:20px 14px;text-align:center;font-size:.75rem;color:var(--muted)}.boggle-overlay-netflix{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;display:grid;place-items:center;z-index:100}.boggle-card-netflix{text-align:center;padding:40px 30px;background:linear-gradient(180deg,#151515,#0a0a0a);border-radius:16px;border:2px solid #252525;min-width:280px}.boggle-card-netflix h2{margin:0 0 12px;font-size:2.5rem;font-weight:700;letter-spacing:.2em}.boggle-card-netflix p{margin:6px 0;color:var(--muted);font-size:.9rem}.boggle-card-netflix .boggle-sub{font-size:.75rem;letter-spacing:.12em}.boggle-start-btn{margin-top:24px;padding:12px 40px;background:var(--accent);color:#000;border:none;border-radius:8px;font-size:.9rem;font-weight:700;letter-spacing:.12em;cursor:pointer}.boggle-final-score{font-size:3rem;font-weight:700;color:var(--accent);margin:16px 0}.boggle-new-best{color:var(--accent)!important;font-weight:600}.boggle-view{display:flex;flex-direction:column;gap:18px;width:100%;padding-top:6px}.boggle-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap}.boggle-head h1{margin:0;font-size:1.35rem;font-weight:500;letter-spacing:.02em}.boggle-head p{margin:7px 0 0;font-size:.78rem;line-height:1.6;color:var(--muted)}.boggle-stats{display:flex;gap:clamp(20px,4vw,36px);text-align:right}.boggle-stats span{display:block;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.boggle-stats strong{display:block;font-size:1.7rem;font-weight:500;line-height:1.1;color:var(--text);font-variant-numeric:tabular-nums}.boggle-stats .time-warning{color:var(--incorrect)}.boggle-main{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:18px;align-items:start}.boggle-board-wrapper{position:relative;display:flex;flex-direction:column;align-items:center;gap:16px;padding:clamp(18px,3vw,28px);border:1px solid var(--border);border-radius:18px;background:linear-gradient(180deg,#171b25e6,#0f1219e6);box-shadow:0 30px 80px -40px #000000e6,inset 0 1px #ffffff08}.boggle-current-word{min-height:32px;font-size:1.1rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);text-align:center}.boggle-board{display:flex;flex-direction:column;gap:6px}.boggle-row{display:flex;gap:6px}.boggle-cell-display{width:clamp(64px,12vw,90px);height:clamp(64px,12vw,90px);border:1px solid var(--border);border-radius:12px;background:radial-gradient(circle at 50% 30%,#272d3d,#161a25);color:var(--text);font-size:clamp(1.2rem,3.5vw,2rem);font-weight:500;text-transform:uppercase;display:grid;place-items:center;-webkit-user-select:none;user-select:none}.boggle-input-section{display:flex;gap:10px;width:min(320px,100%)}.boggle-input{flex:1;padding:10px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elevated);color:var(--text);font-size:.9rem;text-transform:uppercase;letter-spacing:.08em}.boggle-input:focus{outline:1px solid rgba(255,204,102,.5)}.boggle-submit{padding:10px 18px;border:1px solid rgba(255,204,102,.6);border-radius:10px;background:linear-gradient(180deg,#ffcc662e,#ffcc6614);color:var(--accent);cursor:pointer;font-size:.8rem}.boggle-message{font-size:.8rem;color:var(--muted)}.boggle-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 50% 42%,#0b0d1299,#0b0d12e6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.boggle-card{width:min(380px,100%);padding:24px;text-align:center;border:1px solid var(--border);border-radius:16px;background:linear-gradient(180deg,#171b25f0,#0f1219f7);box-shadow:0 24px 60px -30px #000000e6}.boggle-kicker{font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}.boggle-card h2{margin:9px 0 8px;font-size:1.4rem;font-weight:500}.boggle-card p{margin:0 0 18px;font-size:.75rem;line-height:1.65;color:var(--muted)}.boggle-sidebar{display:flex;flex-direction:column;gap:12px}.boggle-words{border:1px solid var(--border);border-radius:14px;background:linear-gradient(180deg,#171b25cc,#0f1219cc);overflow:hidden}.boggle-words-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border);font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.12em}.boggle-words-list{display:flex;flex-direction:column;max-height:420px;overflow-y:auto}.boggle-word-item{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid rgba(35,40,54,.6);font-size:.85rem;text-transform:uppercase;letter-spacing:.08em}.boggle-word-item:last-child{border-bottom:none}.boggle-word-points{color:var(--accent);font-variant-numeric:tabular-nums}.boggle-empty{padding:16px 14px;font-size:.75rem;color:var(--muted)}@media (max-width: 880px){.boggle-main{grid-template-columns:1fr}.boggle-sidebar{order:-1}.boggle-words-list{max-height:200px}}@media (max-width: 760px){.topbar{flex-wrap:wrap}.nav{order:3;flex:1 0 100%;width:100%}.nav-item{flex:1;text-align:center}}.footnote{display:flex;flex-wrap:wrap;justify-content:center;gap:20px;font-size:.72rem;letter-spacing:.04em;color:var(--muted)}kbd{display:inline-block;padding:2px 6px;margin-right:2px;border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;font-family:inherit;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}@media (max-width: 640px){.app{padding:20px 16px 28px;gap:24px}.brand{font-size:.72rem;letter-spacing:.16em}.nav-item{padding:6px 4px;font-size:clamp(.6rem,2.9vw,.72rem);letter-spacing:0}.sound{width:32px;height:32px}.test-toolbar{flex-wrap:wrap}.passage{line-height:1.85}.lesson-grid{grid-template-columns:1fr}.lessons-head{align-items:flex-start}.mastery{text-align:left}.runner-heading span{display:none}.game-head{align-items:flex-start}.game-scores{gap:22px;text-align:left}.game-scores strong{font-size:1.4rem}.game-card{padding:18px}.game-card h2{font-size:1.15rem}.game-card p{font-size:.7rem}.game-demo{margin:14px 0 16px}.game-overlay{padding:12px}}@media (max-width: 480px){.nav{display:grid;grid-template-columns:1fr 1fr}.nav-item{padding:6px 8px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
