:root{--bg-main: hsl(222, 47%, 9%);--bg-card: hsla(222, 47%, 15%, .7);--border-color: hsl(223, 27%, 24%);--text-main: hsl(210, 40%, 98%);--text-muted: hsl(215, 20%, 65%);--color-primary: hsl(263, 90%, 65%);--color-primary-hover: hsl(263, 90%, 70%);--color-secondary: hsl(217, 91%, 60%);--color-accent: hsl(190, 95%, 50%);--color-success: hsl(142, 70%, 45%);--color-success-bg: hsla(142, 70%, 15%, .8);--color-success-border: hsl(142, 70%, 30%);--color-error: hsl(350, 85%, 55%);--color-error-bg: hsla(350, 85%, 15%, .8);--color-error-border: hsl(350, 85%, 30%);--radius-sm: 8px;--radius-md: 16px;--radius-lg: 24px;--font-family: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--shadow-glow: 0 0 20px hsla(263, 90%, 65%, .25);--shadow-card: 0 10px 30px rgba(0, 0, 0, .4);--transition-fast: .15s ease;--transition-normal: .3s cubic-bezier(.4, 0, .2, 1);--bg-app-container: hsla(222, 47%, 6%, .5);--bg-validation-drawer: hsl(222, 47%, 6%)}:root[data-theme=light]{--bg-main: hsl(220, 30%, 95%);--bg-card: hsla(220, 30%, 100%, .85);--border-color: hsl(220, 20%, 85%);--text-main: hsl(222, 47%, 9%);--text-muted: hsl(215, 15%, 45%);--color-primary: hsl(263, 70%, 55%);--color-primary-hover: hsl(263, 70%, 45%);--color-secondary: hsl(217, 80%, 50%);--color-accent: hsl(190, 85%, 40%);--color-success: hsl(142, 60%, 35%);--color-success-bg: hsla(142, 70%, 90%, .95);--color-success-border: hsl(142, 60%, 75%);--color-error: hsl(350, 75%, 45%);--color-error-bg: hsla(350, 85%, 90%, .95);--color-error-border: hsl(350, 75%, 75%);--shadow-glow: 0 0 20px hsla(263, 70%, 55%, .15);--shadow-card: 0 10px 30px rgba(0, 0, 0, .08);--bg-app-container: hsla(220, 30%, 100%, .4);--bg-validation-drawer: hsl(220, 30%, 90%)}*{box-sizing:border-box;margin:0;padding:0}.hidden{display:none!important}input,textarea,select{font-size:16px}body{font-family:var(--font-family);background-color:var(--bg-main);color:var(--text-main);height:100dvh;width:100vw;display:flex;justify-content:center;align-items:center;overflow:hidden;position:fixed;left:0;top:0;background-image:radial-gradient(at 0% 0%,hsla(263,90%,65%,.08) 0px,transparent 50%),radial-gradient(at 100% 100%,hsla(190,95%,50%,.08) 0px,transparent 50%)}.app-container{width:100%;max-width:650px;height:100dvh;display:flex;flex-direction:column;position:relative;padding:0;overflow:hidden}@media(min-width:650px){.app-container{height:100dvh;max-height:none;border-left:3px solid var(--border-color);border-right:3px solid var(--border-color);border-top:none;border-bottom:none;border-radius:0;background-color:var(--bg-app-container);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:8px 0 #0000000d,-8px 0 #0000000d}}.screen{display:none;flex-direction:column;width:100%;height:100%;max-height:100%;flex:1;min-height:0;overflow:hidden;opacity:0;transition:opacity var(--transition-normal)}.screen.active{display:flex;opacity:1}.primary-btn{background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));color:#fff;border:none;padding:16px 32px;font-size:1.1rem;font-weight:700;border-radius:var(--radius-md);cursor:pointer;box-shadow:var(--shadow-glow);transition:all var(--transition-fast);text-align:center;position:relative;overflow:hidden}.primary-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 0 25px #9355f666;filter:brightness(1.1)}.primary-btn:active:not(:disabled){transform:translateY(1px)}.primary-btn.disabled,.primary-btn:disabled{background:#2b303b;color:var(--text-muted);cursor:not-allowed;box-shadow:none;transform:none}.secondary-btn{background-color:transparent;color:var(--text-muted);border:2px solid var(--border-color);padding:16px 32px;font-size:1.1rem;font-weight:600;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.secondary-btn:hover{border-color:var(--text-muted);color:var(--text-main);background-color:#1b294b4d}.icon-btn{background:none;border:none;color:var(--text-muted);font-size:1.5rem;cursor:pointer;padding:8px;transition:color var(--transition-fast);display:flex;align-items:center;justify-content:center}.icon-btn:hover{color:var(--text-main)}#welcome-screen{align-items:center;padding:40px 24px;overflow-y:auto!important;overflow-x:hidden}.welcome-card{width:100%;max-width:500px;text-align:center;display:flex;flex-direction:column;gap:32px;margin:20px 0}.logo-area h1{font-size:3.5rem;font-weight:800;letter-spacing:-1px;margin-top:10px;background:linear-gradient(135deg,var(--text-main) 30%,var(--color-accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.logo-area h1 span{background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.logo-area .mascot-avatar{font-size:4.5rem;animation:float 4s ease-in-out infinite}.subtitle{color:var(--text-muted);font-size:1.05rem;line-height:1.6}.config-section{display:flex;flex-direction:column;gap:24px;text-align:left}.config-group h3{font-size:.95rem;text-transform:uppercase;letter-spacing:1px;color:var(--color-accent);margin-bottom:12px}.radio-tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.tile-option{position:relative;cursor:pointer}.tile-option input{position:absolute;opacity:0;width:0;height:0}.tile-label{display:block;padding:14px;background-color:var(--bg-card);border:2px solid var(--border-color);border-radius:16px;font-weight:700;text-align:center;transition:transform .1s ease,box-shadow .1s ease,background-color .15s ease,border-color .15s ease,color .15s ease;color:var(--text-muted);box-shadow:0 4px 0 var(--border-color)}.tile-option:active .tile-label{transform:translateY(2px);box-shadow:0 2px 0 var(--border-color)}.tile-option input:checked+.tile-label{border-color:#58cc02;background-color:#e8f5e9;color:#58cc02;box-shadow:0 4px #58cc02}.tile-option:active input:checked+.tile-label{transform:translateY(2px);box-shadow:0 2px #58cc02}.tile-option input:checked+.tile-label:after{content:"✓";position:absolute;top:-6px;right:-6px;width:18px;height:18px;background:#58cc02;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;border:2px solid #fff;box-shadow:0 2px 4px #00000026}.tile-option:hover .tile-label{border-color:color-mix(in srgb,var(--color-primary) 30%,var(--border-color));background-color:var(--bg-tertiary, #f7f7f7)}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.pulse{animation:pulse-glow 2.5s infinite}@keyframes pulse-glow{0%{box-shadow:0 0 #9355f666}70%{box-shadow:0 0 0 15px #9355f600}to{box-shadow:0 0 #9355f600}}#game-screen{height:100%;overflow:hidden}.game-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;gap:16px;border-bottom:1px solid var(--border-color)}.infinite-stop-btn{min-height:40px;padding:7px 11px;flex:0 0 auto;border:2px solid var(--color-error-border);border-radius:12px;background:var(--color-error-bg);color:var(--color-error);font:inherit;font-size:.76rem;font-weight:900;cursor:pointer}.infinite-stop-btn:hover{filter:brightness(.97);transform:translateY(-1px)}.progress-bar-container{flex:1;height:16px;background-color:var(--border-color);border-radius:8px;overflow:hidden;position:relative}.progress-bar{height:100%;background:linear-gradient(90deg,var(--color-accent),var(--color-secondary));border-radius:8px;transition:width .4s cubic-bezier(.4,0,.2,1);box-shadow:0 0 10px #06d0f966}.hearts-container{display:flex;align-items:center;gap:12px}.score-badge{background-color:#06d0f91a;border:1px solid hsla(190,95%,50%,.3);color:var(--color-accent);padding:4px 10px;border-radius:20px;font-size:.85rem;font-weight:700}.hearts-display{display:flex;gap:4px;font-size:1.25rem}.heart{opacity:.3;transform:scale(.85);transition:all var(--transition-fast)}.heart.active{opacity:1;transform:scale(1);animation:heart-beat 1.2s infinite alternate}@keyframes heart-beat{0%{transform:scale(1)}to{transform:scale(1.1)}}.heart.shake{animation:shake .5s ease-in-out}.game-content{flex:1;display:flex;flex-direction:column;padding:24px 20px;gap:20px;max-width:550px;margin:0 auto;width:100%;overflow-y:auto}.prompt-bubble-container{display:flex;gap:16px;align-items:flex-start;flex-shrink:0}.mascot-small{font-size:2.5rem}.speech-bubble{position:relative;background-color:var(--bg-card);border:2px solid var(--border-color);padding:16px 20px;border-radius:var(--radius-md);flex:1;box-shadow:0 4px 12px #00000026}.speech-bubble:before{content:"";position:absolute;left:-10px;top:18px;width:0;height:0;border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:10px solid var(--border-color)}.speech-bubble:after{content:"";position:absolute;left:-7px;top:18px;width:0;height:0;border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:10px solid hsl(222,47%,15%)}.instruction{color:var(--text-muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-weight:600}#vietnamese-sentence{font-size:1.35rem;font-weight:700;line-height:1.4}.workspace{min-height:100px;display:flex;flex-direction:column;justify-content:center;flex-shrink:0}.sentence-slots{display:flex;flex-wrap:wrap;gap:10px;padding:16px;border-bottom:2px dashed var(--border-color);min-height:70px;align-items:center}.sentence-slots:focus{outline:none;border-bottom-color:var(--color-primary)}.single-word-answer-slots{justify-content:center;min-height:156px;padding:8px 0 20px}.single-word-answer-stage{display:grid;flex:0 0 100%;min-height:128px;place-items:center}.single-word-answer-placeholder{visibility:hidden;width:min(100%,480px);min-height:128px}.single-word-answer-slots .builder-replay-btn{flex:0 0 auto}.single-word-answer{position:relative;isolation:isolate;display:grid;width:min(100%,480px);min-height:128px;align-content:center;justify-items:center;gap:7px;overflow:hidden;padding:18px 24px 16px;color:var(--text-main);border:1px solid color-mix(in srgb,var(--color-primary) 72%,var(--border-color));border-bottom:5px solid color-mix(in srgb,var(--color-primary) 70%,var(--border-color));border-radius:22px;background:radial-gradient(circle at 12% 0%,color-mix(in srgb,var(--color-secondary) 27%,transparent),transparent 48%),linear-gradient(135deg,color-mix(in srgb,var(--color-primary) 18%,var(--bg-card)),color-mix(in srgb,var(--color-secondary) 9%,var(--bg-card)));box-shadow:0 12px 28px color-mix(in srgb,var(--color-primary) 16%,transparent),inset 0 1px color-mix(in srgb,white 16%,transparent);cursor:pointer;font:inherit;text-align:center;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),filter var(--transition-fast),background var(--transition-fast)}.single-word-answer:after{content:"";position:absolute;z-index:-1;right:-34px;bottom:-48px;width:150px;height:150px;border-radius:50%;background:color-mix(in srgb,var(--color-primary) 20%,transparent);filter:blur(2px)}.single-word-answer-kicker{color:color-mix(in srgb,var(--text-muted) 86%,white);font-size:.67rem;font-weight:900;letter-spacing:.13em;line-height:1}.single-word-answer-text{max-width:100%;color:var(--text-main);font-size:clamp(1.55rem,5vw,2.2rem);font-weight:900;letter-spacing:.01em;line-height:1.08;overflow-wrap:anywhere}.single-word-answer-hint{color:var(--text-muted);font-size:.72rem;font-weight:700;line-height:1.25}.single-word-answer:hover{border-color:var(--color-secondary);background:radial-gradient(circle at 12% 0%,color-mix(in srgb,var(--color-secondary) 37%,transparent),transparent 48%),linear-gradient(135deg,color-mix(in srgb,var(--color-primary) 24%,var(--bg-card)),color-mix(in srgb,var(--color-secondary) 14%,var(--bg-card)));box-shadow:0 15px 32px color-mix(in srgb,var(--color-primary) 24%,transparent),inset 0 1px color-mix(in srgb,white 20%,transparent)}.single-word-answer:focus-visible{outline:3px solid color-mix(in srgb,var(--color-accent) 62%,transparent);outline-offset:4px}.single-word-answer:active{filter:brightness(.95)}.word-tile{background-color:var(--bg-card);border:2px solid var(--border-color);border-bottom-width:4px;color:var(--text-main);padding:10px 18px;font-size:1.05rem;font-weight:600;border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;transition:transform var(--transition-fast),border-color var(--transition-fast),background-color var(--transition-fast);display:inline-block;box-shadow:0 2px 4px #0003}.word-tile:hover{border-color:var(--text-muted);box-shadow:0 4px 8px #0000003d}.word-tile:active{transform:translateY(1px);border-bottom-width:2px;margin-top:2px}.word-tile.used{opacity:.15;cursor:default;pointer-events:none;transform:none!important;border-bottom-width:2px}.options-container{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;min-height:100px;align-content:flex-start;flex-shrink:0}.fill-blank-sentence{font-size:1.5rem;font-weight:600;text-align:center;line-height:1.8;letter-spacing:.5px}.blank-slot{display:inline-block;min-width:90px;border-bottom:3px dashed var(--color-primary);margin:0 10px;text-align:center;color:var(--color-accent);padding-bottom:2px;font-weight:700}.blank-slot.filled{border-bottom-style:solid;color:var(--color-primary);animation:scale-up .2s ease-out}.choice-list{display:flex;flex-direction:column;gap:12px;width:100%}.choice-card{display:flex;align-items:center;background-color:var(--bg-card);border:2px solid var(--border-color);border-bottom-width:4px;border-radius:var(--radius-md);padding:16px 20px;cursor:pointer;transition:all var(--transition-fast);text-align:left;-webkit-user-select:none;user-select:none;color:var(--text-main);font-family:inherit}.choice-card:hover{border-color:var(--text-muted);box-shadow:0 4px 8px #0000002e}.choice-card:active{transform:translateY(1px);border-bottom-width:2px}.choice-card.selected{border-color:var(--color-primary);background-color:#9355f614;box-shadow:0 0 15px #9355f61a}.choice-number{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:2px solid var(--border-color);border-radius:8px;margin-right:16px;font-size:.85rem;font-weight:700;color:var(--text-muted);transition:all var(--transition-fast)}.choice-card.selected .choice-number{border-color:var(--color-primary);background-color:var(--color-primary);color:#fff}.choice-text{font-size:1.1rem;font-weight:600;flex:1}.validation-drawer{position:relative;background-color:var(--bg-validation-drawer);border-top:2px solid var(--border-color);padding:20px 24px;transition:all var(--transition-normal);z-index:100;width:100%}.drawer-inner{max-width:550px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.drawer-actions{display:flex;justify-content:space-between;align-items:center}.feedback-message{display:none;font-size:1.1rem;font-weight:700;align-items:center;gap:12px;animation:slide-up-subtle .25s cubic-bezier(.18,.89,.32,1.28)}.feedback-message svg{width:28px;height:28px;fill:currentColor}.feedback-details{display:flex;flex-direction:column;gap:2px}.feedback-correct-label{font-size:.85rem;text-transform:uppercase;font-weight:600;opacity:.8}.validation-drawer.correct{background-color:var(--color-success-bg);border-top-color:var(--color-success-border)}.validation-drawer.correct .feedback-message{display:flex;color:var(--color-success)}.validation-drawer.correct #check-btn{background:var(--color-success)!important;box-shadow:0 0 15px #22c35d66}.validation-drawer.incorrect{background-color:var(--color-error-bg);border-top-color:var(--color-error-border)}.validation-drawer.incorrect .feedback-message{display:flex;color:var(--color-error)}.validation-drawer.incorrect #check-btn{background:var(--color-error)!important;box-shadow:0 0 15px #ee2b4b66}.keyboard-help{text-align:center;font-size:.75rem;color:var(--text-muted);pointer-events:none;padding:8px 0;width:100%;display:none}@media(min-width:650px){.keyboard-help{display:block}}#result-screen{align-items:center;padding:40px 24px;overflow-y:auto!important;overflow-x:hidden}.result-card{width:100%;max-width:500px;text-align:center;display:flex;flex-direction:column;gap:24px;margin:20px 0}.trophy-icon{font-size:5rem;animation:bounce-rotate 1.5s ease infinite alternate}.result-subtitle{color:var(--text-muted);margin-top:-10px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:12px;margin:10px 0}.stat-card{background-color:var(--bg-card);border:2px solid var(--border-color);padding:16px 8px;border-radius:var(--radius-md);display:flex;flex-direction:column;gap:6px}.stat-value{font-size:1.5rem;font-weight:800;color:var(--color-accent)}.stat-label{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-weight:600}.review-section{text-align:left;display:flex;flex-direction:column;max-height:250px;overflow-y:auto;border:2px solid var(--border-color);border-radius:20px;padding:20px;background-color:var(--bg-card);box-shadow:0 4px 0 var(--border-color);scrollbar-width:thin;scrollbar-color:var(--border-color) transparent}.review-section h3{margin:0 0 16px;font-size:1.05rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--text-main);display:flex;align-items:center;gap:8px}.review-section::-webkit-scrollbar{width:6px}.review-section::-webkit-scrollbar-thumb{background-color:var(--border-color);border-radius:3px}.review-list{display:flex;flex-direction:column}.review-item{display:flex;gap:14px;font-size:.92rem;line-height:1.4;padding:12px 0;border-bottom:2px solid var(--border-color)}.review-item:first-child{padding-top:0}.review-item:last-child{border-bottom:none;padding-bottom:0}.review-status-icon{font-size:1.2rem;flex-shrink:0;display:flex;align-items:flex-start;padding-top:2px}.review-details{flex:1}.review-vi{font-weight:800;color:var(--text-main);margin-bottom:4px;font-size:.95rem}.review-eng{font-size:.88rem;font-weight:600;color:var(--text-muted)}.review-eng.wrong{color:#ea2b2b;text-decoration:line-through;margin-right:8px}.review-correct{color:#58cc02;font-weight:700;font-size:.88rem}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}.shake-active{animation:shake .4s ease-in-out}@keyframes bounce-rotate{0%{transform:scale(1) rotate(0)}to{transform:scale(1.1) rotate(10deg)}}@keyframes scale-up{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes slide-up-subtle{0%{transform:translateY(15px);opacity:0}to{transform:translateY(0);opacity:1}}.confetti{position:absolute;width:10px;height:10px;border-radius:50%;pointer-events:none;z-index:999;animation:confetti-fall 3s ease-out forwards}@keyframes confetti-fall{0%{transform:translateY(-50px) rotate(0);opacity:1}to{transform:translateY(800px) rotate(720deg);opacity:0}}#welcome-screen,#result-screen,.game-content{scrollbar-width:thin;scrollbar-color:var(--border-color) transparent}#welcome-screen::-webkit-scrollbar,#result-screen::-webkit-scrollbar,.game-content::-webkit-scrollbar{width:6px}#welcome-screen::-webkit-scrollbar-thumb,#result-screen::-webkit-scrollbar-thumb,.game-content::-webkit-scrollbar-thumb{background-color:var(--border-color);border-radius:3px}.matching-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;width:100%;margin-top:10px}.matching-column{display:flex;flex-direction:column;gap:12px}.matching-card{display:flex;align-items:center;justify-content:center;background-color:var(--bg-card);border:2px solid var(--border-color);border-bottom-width:4px;border-radius:var(--radius-md);padding:16px 12px;cursor:pointer;transition:all var(--transition-fast);text-align:center;-webkit-user-select:none;user-select:none;color:var(--text-main);font-family:inherit;font-size:1rem;font-weight:600;min-height:70px}.matching-card:hover:not(.matched){border-color:var(--text-muted);box-shadow:0 4px 8px #0000002e}.matching-card:active:not(.matched){transform:translateY(1px);border-bottom-width:2px}.matching-card.selected{border-color:var(--color-primary);background-color:#9355f61f;box-shadow:0 0 15px #9355f626}.matching-card.matched{border-color:var(--color-success-border);background-color:var(--color-success-bg);color:var(--color-success);opacity:.4;cursor:default;pointer-events:none;border-bottom-width:2px;transform:none!important}.matching-card.wrong{border-color:var(--color-error-border);background-color:var(--color-error-bg);color:var(--color-error);animation:shake .4s ease-in-out}.listen-match-audio{font-size:1.8rem;line-height:1}.listen-match-audio.playing{border-color:var(--color-primary);box-shadow:0 0 15px #9355f640;animation:listenMatchPulse 1s ease-in-out infinite}@keyframes listenMatchPulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}.truefalse-pair{display:flex;flex-direction:column;align-items:center;gap:10px;padding:28px 22px}.truefalse-english{font-size:1.6rem;font-weight:800;color:var(--text-main);text-align:center}.truefalse-divider{width:48px;height:2px;background:var(--border-color);border-radius:2px;opacity:.6}.truefalse-meaning{font-size:1.35rem;font-weight:700;color:var(--color-primary);text-align:center}.kicker-label{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-weight:800;margin:0}.typing-container{display:flex;width:100%;padding:10px 0;flex-shrink:0}.typing-input{width:100%;background-color:var(--bg-card);border:2px solid var(--border-color);border-radius:var(--radius-md);padding:16px 20px;color:var(--text-main);font-family:inherit;font-size:1.25rem;font-weight:600;outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);box-shadow:var(--shadow-card)}.typing-input:focus{border-color:var(--color-primary);box-shadow:0 0 15px #9355f626}.typing-input::placeholder{color:var(--text-muted);opacity:.6}.listening-workspace{display:flex;flex-direction:column;align-items:center;width:100%;gap:12px;margin-bottom:16px;flex-shrink:0}.speaker-container{display:flex;justify-content:center;align-items:center;height:90px}.speaker-btn{width:76px;height:76px;border-radius:50%;background-color:#9355f61f;border:2px solid var(--color-primary);color:var(--color-primary);display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all var(--transition-fast);box-shadow:0 0 10px #9355f61a;position:relative}.speaker-btn:hover{transform:scale(1.06);background-color:#9355f638;box-shadow:0 0 20px #9355f64d}.speaker-btn:active{transform:scale(.95)}.speaker-btn svg{width:32px;height:32px;fill:currentColor}.speaker-btn:after{content:"";position:absolute;inset:-2px;border-radius:50%;border:2px solid var(--color-primary);opacity:0;pointer-events:none}.speaker-btn.playing:after{animation:speakerPulse 1.2s cubic-bezier(.24,0,.38,1) infinite}@keyframes speakerPulse{0%{transform:scale(1);opacity:.8}to{transform:scale(1.4);opacity:0}}.hint-toggle-btn{background:none;border:none;color:var(--text-muted);font-family:inherit;font-size:.9rem;font-weight:600;text-decoration:underline;cursor:pointer;transition:color var(--transition-fast);padding:4px 8px}.hint-toggle-btn:hover{color:var(--color-primary)}.hint-text{font-size:1.1rem;color:var(--color-primary);font-weight:600;text-align:center;min-height:24px;opacity:0;transition:opacity .3s ease;background-color:#9355f60d;padding:6px 16px;border-radius:var(--radius-sm);border:1px dashed hsla(263,90%,65%,.2)}.hint-text.visible{opacity:1}:root[data-theme=light] body{background-image:radial-gradient(at 0% 0%,hsla(263,70%,55%,.04) 0px,transparent 50%),radial-gradient(at 100% 100%,hsla(190,85%,40%,.04) 0px,transparent 50%)}body,.app-container,.screen,.welcome-card,.result-card,.speech-bubble,.choice-card,.word-tile,.matching-card,.typing-input,.primary-btn,.secondary-btn,.game-header,.validation-drawer,.stat-card,.review-item{transition:background-color var(--transition-normal),border-color var(--transition-normal),color var(--transition-normal),box-shadow var(--transition-normal)}.theme-toggle-btn{display:inline-flex;align-items:center;justify-content:space-between;padding:6px;border-radius:20px;background:var(--bg-card);border:2px solid var(--border-color);box-shadow:0 3px 0 var(--border-color);cursor:pointer;position:relative;width:76px;height:38px;box-sizing:border-box;overflow:hidden;-webkit-user-select:none;user-select:none;z-index:100;transition:transform var(--transition-fast),background-color var(--transition-fast),border-color var(--transition-fast)}.theme-toggle-btn:hover{transform:scale(1.05)}.theme-toggle-btn:active{transform:scale(.98)}.toggle-sun{position:absolute;left:8px;top:50%;transform:translateY(-50%);z-index:1;font-size:.95rem;pointer-events:none;line-height:1}.toggle-moon{position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:1;font-size:.95rem;pointer-events:none;line-height:1}.duo-toggle-knob{width:22px;height:22px;border-radius:50%;display:inline-block;transition:transform .2s cubic-bezier(.34,1.56,.64,1);box-shadow:0 2px 4px #00000026;position:absolute;top:6px;left:6px;z-index:2;flex-shrink:0}.duo-toggle-knob.light{transform:translate(0);background:#ff9600}.duo-toggle-knob.dark{transform:translate(38px);background:var(--color-primary)}:root[data-theme=light] .score-badge{background-color:#0fa0bd14;border-color:#0fa0bd40;color:#0d8ca5}:root[data-theme=light] .mascot-avatar{background-color:#7a3cdd14}:root[data-theme=light] .primary-btn.disabled,:root[data-theme=light] .primary-btn:disabled{background:#c2c9d6!important;color:#818898!important}:root[data-theme=light] .secondary-btn:hover{background-color:#bdc7db66;border-color:var(--color-primary);color:var(--color-primary)}.welcome-top-bar{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 16px;position:absolute;top:16px;left:0;z-index:10}#user-profile-area{display:flex;align-items:center;gap:10px}.google-login-btn{display:inline-flex;align-items:center;gap:8px;background:var(--bg-card);color:var(--text-main);border:1px solid var(--border-color);padding:8px 16px;border-radius:50px;font-family:var(--font-family);font-size:.85rem;font-weight:600;cursor:pointer;text-decoration:none;transition:background var(--transition-fast),border-color var(--transition-fast)}.google-login-btn:hover{background:var(--bg-main);border-color:var(--color-primary)}.google-login-btn svg{flex-shrink:0}.welcome-user-chip{display:flex;align-items:center;gap:8px;background:var(--bg-card);border:1px solid var(--border-color);padding:4px 12px 4px 4px;border-radius:50px;text-decoration:none;color:var(--text-main);transition:border-color var(--transition-fast)}.welcome-user-chip:hover{border-color:var(--color-primary)}.welcome-user-chip img{width:28px;height:28px;border-radius:50%;object-fit:cover}.welcome-user-chip .username{font-size:.85rem;font-weight:600;max-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.welcome-user-chip .manage-link{font-size:.75rem;color:var(--color-primary);font-weight:700;margin-left:4px}.deck-dropdown{width:100%;padding:12px 16px;border-radius:var(--radius-md);border:2px solid var(--border-color);background-color:var(--bg-card);color:var(--text-main);font-family:var(--font-family);font-size:.95rem;font-weight:500;cursor:pointer;outline:none;transition:border-color var(--transition-fast)}.deck-dropdown:focus{border-color:var(--color-primary)}.auth-error-alert{padding:12px 16px;background:var(--color-error-bg);border:1px solid var(--color-error-border);color:var(--color-error);border-radius:var(--radius-md);font-size:.88rem;margin-bottom:16px;text-align:left}.top-bar-right{display:flex;align-items:center;gap:12px}.streak-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:var(--bg-card);border:2px solid #ff9600;color:#ff9600;border-radius:99px;font-weight:800;font-size:.85rem;box-shadow:0 3px #ff9600;transition:transform .1s ease;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.streak-badge:hover{transform:scale(1.05)}.streak-badge:active{transform:translateY(2px);box-shadow:0 1px #ff9600}.heatmap-overlay{position:fixed;inset:0;background:#0f172ad9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:10000;animation:heatmap-overlay-in .3s ease;padding:16px}@keyframes heatmap-overlay-in{0%{opacity:0}to{opacity:1}}.heatmap-overlay.fade-out{animation:heatmap-overlay-out .3s ease forwards}@keyframes heatmap-overlay-out{0%{opacity:1}to{opacity:0}}.heatmap-modal{background:var(--bg-card);border:2px solid var(--border-color);border-radius:24px;box-shadow:0 8px 0 var(--border-color),0 20px 50px #00000080;width:520px;max-width:calc(100vw - 32px);max-height:85vh;display:flex;flex-direction:column;overflow:hidden;animation:leaderboard-slideup .3s cubic-bezier(.34,1.56,.64,1);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.heatmap-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:2px solid var(--border-color);flex-shrink:0}.heatmap-title{font-size:1.25rem;font-weight:800;color:var(--text-main);margin:0;display:flex;align-items:center;gap:8px}.heatmap-close-btn{background:none;border:none;color:var(--text-muted);font-size:1.15rem;font-weight:700;cursor:pointer;transition:color .15s;padding:4px;display:flex;align-items:center;justify-content:center}.heatmap-close-btn:hover{color:var(--color-error)}.heatmap-content{display:flex;flex-direction:column;flex:1;overflow-y:auto;padding:20px 24px;gap:20px;scrollbar-width:thin;scrollbar-color:var(--border-color) transparent}.heatmap-content::-webkit-scrollbar{width:6px}.heatmap-content::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.heatmap-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.heatmap-stat{background:#070a1314;border:2px solid var(--border-color);border-radius:12px;padding:12px;text-align:center}.heatmap-stat-value{font-size:1.5rem;font-weight:800;color:#ff9600;margin-bottom:4px}.heatmap-stat-label{font-size:.75rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.heatmap-grid-wrapper{display:flex;flex-direction:column;gap:8px}.heatmap-months{display:grid;grid-template-columns:24px repeat(16,1fr);gap:4px;padding:0 0 0 24px;font-size:.65rem;font-weight:700;color:var(--text-muted)}.heatmap-month-label{text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.heatmap-body{display:flex;gap:4px}.heatmap-weekdays{display:flex;flex-direction:column;gap:4px;width:20px;font-size:.6rem;font-weight:700;color:var(--text-muted)}.heatmap-weekday{height:16px;display:flex;align-items:center;justify-content:flex-end}.heatmap-grid{display:grid;grid-template-columns:repeat(17,1fr);grid-template-rows:repeat(7,1fr);gap:4px;flex:1}.heatmap-cell{aspect-ratio:1;border-radius:3px;background:var(--bg-main);border:1px solid var(--border-color);transition:transform .1s,box-shadow .1s;cursor:pointer;position:relative}.heatmap-cell:hover{transform:scale(1.2);box-shadow:0 0 0 2px #ff9600;z-index:1}.heatmap-cell.level-0{background:var(--bg-main)}.heatmap-cell.level-1{background:#ff960040;border-color:#ff960060}.heatmap-cell.level-2{background:#ff960080;border-color:#ff9600a0}.heatmap-cell.level-3{background:#ff9600c0;border-color:#ff9600e0}.heatmap-cell.level-4{background:#ff9600;border-color:#ff9600}.heatmap-cell[data-tooltip]:hover:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--bg-card);border:1px solid var(--border-color);border-radius:6px;padding:6px 10px;font-size:.7rem;font-weight:700;color:var(--text-main);white-space:nowrap;pointer-events:none;z-index:10;box-shadow:0 4px 12px #0000004d}.heatmap-legend{display:flex;align-items:center;gap:8px;justify-content:flex-end;font-size:.7rem;font-weight:700;color:var(--text-muted)}.heatmap-legend-cells{display:flex;gap:3px}.heatmap-legend-cell{width:12px;height:12px;border-radius:2px;border:1px solid var(--border-color)}.heatmap-empty{text-align:center;padding:30px;color:var(--text-muted);font-weight:700}.duo-profile-chip{display:flex;align-items:center;gap:7px;background:var(--bg-card);border:2px solid var(--border-color);padding:4px 9px 4px 5px;border-radius:99px;box-shadow:0 2px 4px #00000005;color:var(--text-main);cursor:pointer;font:inherit;text-align:left}.duo-profile-chip:hover,.duo-profile-chip[aria-expanded=true]{border-color:var(--color-primary)}.duo-profile-chip:focus-visible,.profile-menu-link:focus-visible{outline:3px solid color-mix(in srgb,var(--color-accent) 65%,transparent);outline-offset:3px}.duo-profile-chip img.user-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover;border:1.5px solid #fff;box-shadow:0 1px 3px #0000001a}.duo-profile-chip .user-name{font-size:.85rem;font-weight:800;color:var(--text-main);max-width:110px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-profile-menu{position:relative}.profile-menu-chevron{color:var(--text-muted);font-size:.9rem;font-weight:900;line-height:1;transition:transform var(--transition-fast)}.duo-profile-chip[aria-expanded=true] .profile-menu-chevron{transform:rotate(180deg)}.user-profile-menu-panel{position:absolute;top:calc(100% + 8px);left:0;z-index:30;display:grid;min-width:154px;gap:4px;padding:6px;border:2px solid var(--border-color);border-radius:14px;background:var(--bg-card);box-shadow:var(--shadow-card)}.profile-menu-link{display:block;padding:9px 10px;border-radius:9px;color:var(--text-main);font-size:.82rem;font-weight:800;text-decoration:none}.profile-menu-link:hover{color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 10%,var(--bg-card))}.config-group h3{color:var(--color-primary)!important;font-weight:800!important;font-size:.88rem!important;letter-spacing:.05em!important;margin-bottom:12px!important;display:flex!important;align-items:center!important;gap:8px!important;text-transform:uppercase!important}.tile-option input:checked+.tile-label{border-color:var(--color-primary)!important;background-color:color-mix(in srgb,var(--color-primary) 10%,var(--bg-card))!important;color:var(--color-primary)!important;box-shadow:0 4px 0 var(--color-primary)!important}.tile-option input:checked+.tile-label:after{background:var(--color-primary)!important}.deck-dropdown{border-radius:16px!important;border:2px solid var(--border-color)!important;box-shadow:0 3px 0 var(--border-color)!important;font-weight:700!important;padding:12px 20px!important}#start-btn{background:var(--color-primary)!important;color:#fff!important;border:none!important;border-bottom:5px solid color-mix(in srgb,var(--color-primary) 70%,black)!important;box-shadow:none!important;border-radius:16px!important;padding:14px 32px!important;font-weight:800!important;font-size:1.1rem!important;letter-spacing:.05em!important;width:100%!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;transition:transform .1s ease,border-bottom-width .1s ease!important;text-shadow:0 1px 2px rgba(0,0,0,.1);box-sizing:border-box;margin-top:10px}#start-btn:active{transform:translateY(3px)!important;border-bottom-width:2px!important}.mascot-illustration{margin-bottom:12px;display:flex;justify-content:center}body:after{content:"";position:fixed;bottom:0;left:0;right:0;height:120px;background-image:radial-gradient(ellipse at 30% 120%,#78c800 50%,transparent 55%),radial-gradient(ellipse at 70% 120%,#58a700 55%,transparent 60%);background-size:100% 120px;z-index:-1;pointer-events:none;opacity:.45}:root[data-theme=dark] body:after{opacity:.15}@media(max-width:480px){.welcome-top-bar{padding:0 8px!important;top:8px!important}.duo-profile-chip{padding:4px 8px!important;gap:6px!important}.duo-profile-chip .user-name{display:none!important}.top-bar-right{gap:6px!important}.streak-badge{padding:6px 10px!important;font-size:.78rem!important}.theme-toggle-btn{transform:scale(.95)!important}}.streak-celebration-overlay{position:fixed;inset:0;background:#0f172ad9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .3s ease forwards}.streak-celebration-card{background:var(--bg-card);border:3px solid var(--border-color);border-radius:28px;padding:32px;max-width:420px;width:90%;text-align:center;box-shadow:0 12px 0 var(--border-color);animation:popIn .5s cubic-bezier(.34,1.56,.64,1) forwards;box-sizing:border-box}.streak-fire-wrapper{position:relative;width:160px;height:160px;margin:0 auto 20px;display:flex;align-items:center;justify-content:center}.streak-huge-fire{font-size:8rem;line-height:1;animation:burn 1.2s ease-in-out infinite alternate;filter:drop-shadow(0 4px 10px rgba(255,69,0,.3))}.streak-huge-number{position:absolute;font-size:2.8rem;font-weight:900;color:#fff;top:55%;left:50%;transform:translate(-50%,-50%);text-shadow:-3px -3px 0 #000,3px -3px 0 #000,-3px 3px 0 #000,3px 3px 0 #000,0px 4px 0 #ff4500;animation:pulseNumber 1.2s ease-in-out infinite alternate}.streak-title{color:#ff8c00;font-size:1.8rem;font-weight:800;margin:10px 0;text-transform:uppercase;letter-spacing:.05em;text-shadow:0 2px 0 rgba(0,0,0,.05)}.streak-desc{font-size:1rem;line-height:1.5;color:var(--text-muted);margin-bottom:24px}.streak-continue-btn{background:#ff8c00!important;border-bottom:5px solid #cc7000!important;color:#fff!important;padding:14px 32px!important;font-size:1.1rem!important;font-weight:800!important;border-radius:16px!important;width:100%!important;cursor:pointer;transition:transform .1s ease,border-bottom-width .1s ease!important}.streak-continue-btn:active{transform:translateY(3px)!important;border-bottom-width:2px!important}.streak-spark{position:absolute;border-radius:50%;pointer-events:none;opacity:1;animation:flyOut 1.5s cubic-bezier(.1,.8,.3,1) forwards}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}@keyframes burn{0%{transform:scale(.95) rotate(-2deg)}to{transform:scale(1.05) rotate(2deg)}}@keyframes pulseNumber{0%{transform:translate(-50%,-50%) scale(.95)}to{transform:translate(-50%,-50%) scale(1.05)}}@keyframes flyOut{to{transform:translate(var(--x-dest),var(--y-dest)) scale(0);opacity:0}}.streak-celebration-overlay.fade-out{opacity:0;transition:opacity .4s ease}.ai-chat-fab{position:fixed;bottom:24px;right:24px;z-index:9000;display:flex;align-items:center;gap:8px;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));color:#fff;border:none;border-radius:50px;padding:14px 20px;cursor:pointer;font-family:var(--font-family);font-weight:700;font-size:.9rem;box-shadow:0 4px #510ac299,0 8px 24px #843df559;transition:transform .15s ease,box-shadow .15s ease;-webkit-user-select:none;user-select:none;animation:ai-fab-pulse 3s ease-in-out infinite}.ai-chat-fab:hover{transform:translateY(-2px);box-shadow:0 6px #510ac299,0 12px 32px #843df566}.ai-chat-fab:active{transform:translateY(1px);box-shadow:0 2px #510ac299,0 4px 12px #843df54d}.ai-chat-fab-icon{font-size:1.3rem;line-height:1}.ai-chat-fab-label{letter-spacing:.03em}@keyframes ai-fab-pulse{0%,to{box-shadow:0 4px #510ac299,0 8px 24px #843df559}50%{box-shadow:0 4px #510ac299,0 8px 32px #9355f68c}}.ai-chat-panel{position:fixed;bottom:90px;right:24px;z-index:9001;width:380px;max-width:calc(100vw - 32px);max-height:580px;background:var(--bg-card);border:2px solid var(--border-color);border-radius:24px;box-shadow:0 6px 0 var(--border-color),0 16px 48px #0006;display:flex;flex-direction:column;overflow:hidden;animation:ai-panel-slidein .3s cubic-bezier(.34,1.56,.64,1);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}@keyframes ai-panel-slidein{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.ai-chat-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));color:#fff;flex-shrink:0}.ai-chat-header-info{display:flex;align-items:center;gap:10px}.ai-chat-header-icon{font-size:1.6rem;line-height:1}.ai-chat-header-title{font-weight:800;font-size:1rem;letter-spacing:.02em}.ai-chat-header-sub{font-size:.78rem;opacity:.85;font-weight:500;margin-top:1px;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-chat-header-actions{display:flex;gap:6px}.ai-chat-icon-btn{background:#ffffff26;border:none;color:#fff;border-radius:8px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1rem;font-weight:700;transition:background .15s}.ai-chat-icon-btn:hover{background:#ffffff47}.ai-chat-topic-screen{padding:18px;overflow-y:auto;flex:1}.ai-chat-topic-intro{font-size:.8rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:14px}.ai-chat-topic-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.ai-chat-topic-chip{background:var(--bg-main);border:2px solid var(--border-color);border-radius:14px;padding:10px 12px;font-family:var(--font-family);font-size:.82rem;font-weight:700;color:var(--text-main);cursor:pointer;text-align:center;transition:all .15s ease;box-shadow:0 3px 0 var(--border-color);line-height:1.3}.ai-chat-topic-chip:hover{background:var(--color-primary);border-color:var(--color-primary);color:#fff;transform:translateY(-2px);box-shadow:0 5px #510ac280}.ai-chat-topic-chip:active{transform:translateY(1px);box-shadow:0 1px 0 var(--border-color)}.ai-chat-custom-topic{display:flex;gap:8px;margin-top:4px}.ai-chat-custom-topic input{flex:1;background:var(--bg-main);border:2px solid var(--border-color);border-radius:12px;padding:10px 14px;font-family:var(--font-family);font-size:.85rem;color:var(--text-main);outline:none;transition:border-color .15s}.ai-chat-custom-topic input:focus{border-color:var(--color-primary)}.ai-chat-custom-topic input::placeholder{color:var(--text-muted)}.ai-chat-custom-go{background:var(--color-primary);border:2px solid var(--color-primary);border-radius:12px;color:#fff;font-size:1.1rem;font-weight:700;width:44px;height:44px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;box-shadow:0 3px #510ac280;flex-shrink:0}.ai-chat-custom-go:hover{background:var(--color-primary-hover);transform:translateY(-1px)}.ai-chat-chat-screen{display:flex;flex-direction:column;flex:1;overflow:hidden;min-height:0}.ai-chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;scrollbar-width:thin;scrollbar-color:var(--border-color) transparent}.ai-chat-messages::-webkit-scrollbar{width:4px}.ai-chat-messages::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:2px}.ai-chat-bubble{max-width:85%;padding:10px 14px;border-radius:18px;font-size:.88rem;line-height:1.5;word-break:break-word;animation:ai-bubble-in .2s ease}@keyframes ai-bubble-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.ai-chat-bubble.ai{background:var(--bg-main);border:2px solid var(--border-color);color:var(--text-main);align-self:flex-start;border-bottom-left-radius:6px;font-weight:500}.ai-chat-bubble.user{background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));color:#fff;align-self:flex-end;border-bottom-right-radius:6px;font-weight:600}.ai-chat-bubble.correction{background:var(--color-success-bg);border:2px solid var(--color-success-border);color:var(--text-main);align-self:flex-start;border-bottom-left-radius:6px;font-size:.84rem}.ai-chat-bubble.correction:before{content:"✅ Correction:";font-weight:800;color:var(--color-success);display:block;margin-bottom:4px;font-size:.78rem;text-transform:uppercase;letter-spacing:.05em}.ai-chat-bubble.loading{background:var(--bg-main);border:2px solid var(--border-color);align-self:flex-start;border-bottom-left-radius:6px;display:flex;align-items:center;gap:4px;padding:12px 16px}.ai-chat-dot{width:7px;height:7px;border-radius:50%;background:var(--text-muted);animation:ai-dot-bounce 1.2s ease-in-out infinite}.ai-chat-dot:nth-child(2){animation-delay:.2s}.ai-chat-dot:nth-child(3){animation-delay:.4s}@keyframes ai-dot-bounce{0%,80%,to{transform:translateY(0);opacity:.5}40%{transform:translateY(-6px);opacity:1}}.ai-chat-input-bar{padding:12px 14px 14px;border-top:2px solid var(--border-color);display:flex;flex-direction:column;gap:8px;background:var(--bg-card);flex-shrink:0}.ai-chat-input-row{display:flex;gap:8px}.ai-chat-input-bar input{flex:1;background:var(--bg-main);border:2px solid var(--border-color);border-radius:14px;padding:10px 14px;font-family:var(--font-family);font-size:.88rem;color:var(--text-main);outline:none;transition:border-color .15s}.ai-chat-input-bar input:focus{border-color:var(--color-primary)}.ai-chat-input-bar input::placeholder{color:var(--text-muted)}.ai-chat-send-btn{background:var(--color-primary);border:2px solid var(--color-primary);border-radius:14px;color:#fff;font-size:1rem;font-weight:700;width:44px;height:44px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;box-shadow:0 3px #510ac280;flex-shrink:0}.ai-chat-send-btn:hover{background:var(--color-primary-hover);transform:translateY(-1px)}.ai-chat-send-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.ai-chat-correct-btn{background:transparent;border:2px solid var(--border-color);border-radius:12px;color:var(--text-muted);font-family:var(--font-family);font-size:.8rem;font-weight:700;padding:7px 14px;cursor:pointer;transition:all .15s;text-align:center;width:100%}.ai-chat-correct-btn:hover{border-color:var(--color-success);color:var(--color-success);background:var(--color-success-bg)}.ai-chat-correct-btn:disabled{opacity:.4;cursor:not-allowed}@media(max-width:480px){.ai-chat-fab{bottom:16px;right:16px;padding:12px 16px;font-size:.85rem}.ai-chat-panel{bottom:80px;right:16px;left:16px;width:auto;max-height:70vh}}.ai-chat-bubble-wrapper{display:flex;flex-direction:column;align-self:flex-start;max-width:85%;gap:4px;animation:ai-bubble-in .2s ease}.ai-chat-translate-btn{background:none;border:none;cursor:pointer;font-size:.75rem;font-family:var(--font-family);font-weight:600;color:var(--text-muted);padding:2px 4px;text-align:left;transition:color .15s;display:inline-flex;align-items:center;gap:4px;opacity:.7}.ai-chat-translate-btn:hover{color:var(--color-secondary);opacity:1}.ai-chat-translate-btn:disabled{opacity:.4;cursor:not-allowed}.ai-chat-translation{background:#3c83f614;border:1.5px solid hsla(217,91%,60%,.25);border-radius:4px 12px 12px;padding:8px 12px;font-size:.83rem;font-weight:500;color:var(--text-main);line-height:1.5;animation:ai-bubble-in .2s ease}.ai-chat-translation-label{font-size:.7rem;font-weight:800;color:var(--color-secondary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px}.leaderboard-toggle-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:12px;background:var(--bg-card);border:2px solid var(--border-color);box-shadow:0 3px 0 var(--border-color);cursor:pointer;font-size:1.15rem;transition:transform var(--transition-fast),background-color var(--transition-fast)}.leaderboard-toggle-btn:hover{transform:translateY(-2px);background-color:var(--border-color)}.leaderboard-toggle-btn:active{transform:translateY(1px);box-shadow:0 1px 0 var(--border-color)}.leaderboard-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#0009;z-index:10000;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:leaderboard-fadein .25s ease}@keyframes leaderboard-fadein{0%{opacity:0}to{opacity:1}}.leaderboard-modal{background:var(--bg-card);border:2px solid var(--border-color);border-radius:24px;box-shadow:0 8px 0 var(--border-color),0 20px 50px #00000080;width:440px;max-width:calc(100vw - 32px);max-height:80vh;display:flex;flex-direction:column;overflow:hidden;animation:leaderboard-slideup .3s cubic-bezier(.34,1.56,.64,1);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}@keyframes leaderboard-slideup{0%{transform:translateY(30px) scale(.95);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.leaderboard-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:2px solid var(--border-color);flex-shrink:0}.leaderboard-title{font-size:1.25rem;font-weight:800;color:var(--text-main);margin:0}.leaderboard-close-btn{background:none;border:none;color:var(--text-muted);font-size:1.15rem;font-weight:700;cursor:pointer;transition:color .15s;padding:4px;display:flex;align-items:center;justify-content:center}.leaderboard-close-btn:hover{color:var(--color-error)}.leaderboard-content{display:flex;flex-direction:column;flex:1;overflow:hidden;position:relative}.leaderboard-list-header{display:grid;grid-template-columns:60px 1fr 100px;padding:10px 24px;border-bottom:2px solid var(--border-color);font-size:.72rem;font-weight:800;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;background:#070a1326;flex-shrink:0}.leaderboard-list{overflow-y:auto;flex:1;padding:8px 0;scrollbar-width:thin;scrollbar-color:var(--border-color) transparent}.leaderboard-list::-webkit-scrollbar{width:6px}.leaderboard-list::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.leaderboard-row{display:grid;grid-template-columns:60px 1fr 100px;align-items:center;padding:12px 24px;border-bottom:1px solid hsla(222,27%,24%,.4);font-size:.92rem;transition:background-color .15s}.leaderboard-row:last-child{border-bottom:none}.leaderboard-row.highlight-me{background-color:#8b5cf61a;border-left:4px solid var(--color-primary);padding-left:20px}.leaderboard-rank{font-weight:800;font-size:.95rem;color:var(--text-muted);display:flex;align-items:center}.leaderboard-rank.top-1,.leaderboard-rank.top-2,.leaderboard-rank.top-3{font-size:1.35rem}.leaderboard-user-info{display:flex;align-items:center;gap:12px;min-width:0}.leaderboard-avatar{width:32px;height:32px;border-radius:50%;border:2px solid var(--border-color);object-fit:cover;flex-shrink:0;background-color:var(--bg-main)}.leaderboard-name{font-weight:700;color:var(--text-main);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.leaderboard-row.highlight-me .leaderboard-name{color:var(--color-primary)}.leaderboard-streak{display:flex;align-items:center;justify-content:flex-end;gap:4px;font-weight:800;font-size:.95rem;color:#ff9600;text-align:right;padding-right:8px}.leaderboard-sticky-row{border-top:2px solid var(--border-color);background:var(--bg-card);box-shadow:0 -4px 15px #00000026;flex-shrink:0}.leaderboard-sticky-row .leaderboard-row{border-bottom:none;background-color:#8b5cf626;border-left:4px solid var(--color-primary);padding:14px 24px 14px 20px}.leaderboard-sticky-label{font-size:.65rem;font-weight:800;color:var(--color-primary);text-transform:uppercase;letter-spacing:.08em;padding:8px 24px 0;background-color:#8b5cf626;display:block}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.tile-option.unavailable{opacity:.45;cursor:not-allowed}.tile-option.unavailable .tile-label{cursor:not-allowed}.deck-picker-trigger{width:100%;min-height:72px;display:flex;align-items:center;gap:12px;padding:12px 16px;color:var(--text-main);background:var(--bg-card);border:2px solid var(--border-color);border-bottom-width:4px;border-radius:16px;font-family:inherit;text-align:left;cursor:pointer;transition:border-color var(--transition-fast),transform var(--transition-fast)}.deck-picker-trigger:hover,.deck-picker-trigger[aria-expanded=true]{border-color:var(--color-primary)}.deck-picker-trigger:active{transform:translateY(2px);border-bottom-width:2px}.deck-picker-icon{font-size:1.7rem}.deck-picker-copy{min-width:0;display:flex;flex:1;flex-direction:column;gap:2px}.deck-picker-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.98rem}.deck-picker-copy small,.deck-picker-status{color:var(--text-muted);font-size:.8rem;font-weight:600}.deck-picker-chevron{color:var(--color-primary);font-size:1.5rem;font-weight:800}.deck-picker-status{min-height:1.1em;margin-top:8px}.app-modal-overlay{position:fixed;z-index:20000;inset:0;display:flex;align-items:center;justify-content:center;padding:16px;background:#0000009e;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:modal-fade-in .18s ease-out}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.deck-picker-modal,.exit-game-modal{width:min(560px,100%);max-height:min(760px,calc(100dvh - 32px));display:flex;flex-direction:column;overflow:hidden;color:var(--text-main);background:var(--bg-card);border:2px solid var(--border-color);border-radius:24px;box-shadow:0 8px 0 var(--border-color),0 22px 54px #0006;animation:modal-pop .24s cubic-bezier(.34,1.56,.64,1)}@keyframes modal-pop{0%{opacity:0;transform:translateY(22px) scale(.96)}to{opacity:1;transform:none}}.picker-modal-header{display:flex;justify-content:space-between;gap:18px;padding:20px 22px 16px;border-bottom:2px solid var(--border-color)}.picker-modal-header h2,.exit-game-modal h2{margin:0;font-size:1.35rem;font-weight:800}.picker-modal-header p{margin-top:5px;color:var(--text-muted);font-size:.9rem}.modal-close-btn{width:44px;height:44px;border:0;color:var(--text-muted);background:transparent;font:inherit;font-size:1.15rem;cursor:pointer}.modal-close-btn:hover{color:var(--color-error)}.picker-modal-body{min-height:0;overflow-y:auto;padding:16px 22px}.deck-picker-search{width:100%;min-height:48px;padding:0 14px;color:var(--text-main);background:var(--bg-main);border:2px solid var(--border-color);border-radius:12px;font-family:inherit;outline:none}.deck-picker-search:focus{border-color:var(--color-primary)}.deck-picker-list{display:flex;flex-direction:column;gap:18px;margin-top:18px}.deck-picker-group h3{margin:0 0 9px;color:var(--text-muted);font-size:.75rem;letter-spacing:.07em;text-transform:uppercase}.deck-picker-system-group h3{color:var(--color-primary)}.deck-picker-own-group h3{color:var(--color-secondary)}.deck-check-row{min-height:64px;display:flex;align-items:center;gap:11px;padding:10px 4px;border-bottom:1px solid var(--border-color);cursor:pointer}.deck-check-row:last-child{border-bottom:0}.deck-check-row input{width:20px;height:20px;accent-color:var(--color-primary);flex:0 0 auto}.deck-check-row.disabled{cursor:not-allowed;opacity:.5}.deck-check-icon{font-size:1.2rem}.deck-check-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.deck-check-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.deck-check-copy small{color:var(--text-muted);font-size:.8rem}.deck-check-mark{color:var(--color-primary);font-size:1.1rem;font-weight:900}.deck-picker-empty{display:flex;min-height:150px;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:var(--text-muted);text-align:center}.deck-picker-empty a{color:var(--color-primary);font-weight:800}.picker-modal-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 22px;border-top:2px solid var(--border-color);background:var(--bg-card)}.deck-picker-count{color:var(--text-muted);font-size:.85rem;font-weight:800}.picker-modal-actions{display:flex;align-items:center;gap:8px}.picker-modal-actions .primary-btn,.picker-modal-actions .secondary-btn{min-height:42px;padding:9px 15px;font-size:.9rem}.text-btn{min-height:42px;padding:7px;color:var(--color-primary);background:transparent;border:0;font-family:inherit;font-weight:800;cursor:pointer}.exit-game-modal{width:min(390px,100%);padding:28px 24px 24px;align-items:center;text-align:center;overflow:visible}.exit-game-icon{font-size:4rem;margin-bottom:10px}.exit-game-modal p{margin:10px 0 22px;color:var(--text-muted);line-height:1.45}.exit-game-actions{width:100%;display:grid;gap:10px}.exit-game-actions .primary-btn,.exit-game-actions .danger-outline-btn{width:100%;min-height:48px}.danger-outline-btn{color:var(--color-error);border:2px solid var(--color-error-border);border-bottom-width:4px;border-radius:14px;background:transparent;font-family:inherit;font-size:1rem;font-weight:800;cursor:pointer}.danger-outline-btn:active{transform:translateY(2px);border-bottom-width:2px}.speedtype-card,.preview-card{width:100%;padding:24px;border:2px solid var(--border-color);border-radius:20px;background:var(--bg-card);box-shadow:var(--shadow-card)}.speedtype-hint{color:var(--text-muted);font-size:.94rem;font-weight:600;line-height:1.5}.speedtype-input{margin-top:20px;font-size:1.25rem}.speedtype-input.speedtype-error{border-color:var(--color-error);box-shadow:0 0 0 3px #ee2b4b1f}.speedtype-input.speedtype-complete{border-color:var(--color-success)!important;color:var(--color-success);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-success) 35%,transparent),0 8px 24px color-mix(in srgb,var(--color-success) 20%,transparent)!important}.speedtype-speech-warning{margin-top:14px;color:var(--text-muted);font-size:.82rem;font-weight:600;line-height:1.45}.speedtype-stats{width:100%;display:flex;justify-content:space-around;gap:8px;padding:11px;color:var(--color-accent);font-size:.84rem;font-weight:800}.speedtype-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:12px}.speedtype-actions>button{width:100%;min-height:48px}.speedtype-actions>:only-child{grid-column:1 / -1}.preview-card{text-align:center}.preview-vietnamese{margin-bottom:20px;color:var(--color-primary);font-size:1.35rem;font-weight:800;line-height:1.4}.listen-again-btn{min-height:44px;padding:9px 15px;color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 10%,var(--bg-card));border:2px solid var(--color-primary);border-radius:12px;font-family:inherit;font-weight:800;cursor:pointer}.preview-actions{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:12px}.preview-actions .primary-btn,.preview-review-btn{min-height:50px;padding:10px;font-size:.9rem}.preview-review-btn{color:#be7000;border:2px solid #ff9600;border-bottom-width:4px;border-radius:14px;background:color-mix(in srgb,#ff9600 10%,var(--bg-card));font-family:inherit;font-weight:800;cursor:pointer}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;gap:12px}.memory-card{position:relative;min-width:0;min-height:112px;padding:0;border:0;background:transparent;cursor:pointer;perspective:700px;font-family:inherit}.memory-card:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px;border-radius:16px}.memory-card-inner{position:absolute;inset:0;display:block;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;will-change:transform;transition:transform .34s cubic-bezier(.22,.9,.28,1.15)}.memory-card.is-open .memory-card-inner,.memory-card.is-matched .memory-card-inner{transform:rotateY(180deg)}.memory-card-face{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:10px;border:2px solid var(--border-color);border-bottom-width:5px;border-radius:16px;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-transform:translateZ(.1px);transform:translateZ(.1px);box-shadow:var(--shadow-card);transition:border-color var(--transition-fast),background-color var(--transition-fast),color var(--transition-fast)}.memory-card-back{color:#fff;background:linear-gradient(145deg,var(--color-primary),var(--color-secondary));font-size:1.55rem}.memory-card-front{transform:rotateY(180deg) translateZ(.1px);-webkit-transform:rotateY(180deg) translateZ(.1px);color:var(--text-main);background:var(--bg-card);font-weight:800;line-height:1.26;text-align:center;overflow-wrap:anywhere}.memory-card-english{font-size:.92rem}.memory-card-vietnamese{color:var(--text-muted);font-size:.78rem;font-weight:700}.memory-card.is-matched .memory-card-front{color:var(--color-success);border-color:var(--color-success-border);background:var(--color-success-bg)}.memory-card.is-wrong{animation:shake .4s ease-in-out}.memory-card.is-wrong .memory-card-front{color:var(--color-error);border-color:var(--color-error-border);background:var(--color-error-bg)}.memory-card:disabled{cursor:default;opacity:1}.memory-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:8px;padding:11px;color:var(--color-accent);border:1px solid var(--border-color);border-radius:13px;background:color-mix(in srgb,var(--bg-card) 88%,var(--color-primary));font-size:.8rem;font-weight:800;text-align:center}.memory-status{min-height:1.4em;margin:3px 0 0;color:var(--text-muted);font-size:.83rem;font-weight:650;line-height:1.45;text-align:center}.swipe-game{width:100%;display:grid;justify-items:center;gap:12px;overflow:hidden;padding:2px 8px 8px}.swipe-timer{width:min(390px,100%);display:grid;grid-template-columns:minmax(0,1fr) 48px;align-items:center;gap:10px}.swipe-timer-track{height:11px;overflow:hidden;border:1px solid var(--border-color);border-radius:999px;background:var(--bg-card)}.swipe-timer-fill{width:100%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--color-secondary),var(--color-primary));transition:width .05s linear,background .2s}.swipe-timer.urgent .swipe-timer-fill{background:linear-gradient(90deg,#ff9600,var(--color-error))}.swipe-timer-text{color:var(--text-muted);font-size:.78rem;font-weight:900;font-variant-numeric:tabular-nums;text-align:right}.swipe-timer.urgent .swipe-timer-text{color:var(--color-error)}.swipe-stage{position:relative;width:min(390px,100%);height:330px;display:grid;place-items:center;perspective:900px}.swipe-stage:before,.swipe-stage:after{content:"";position:absolute;width:88%;height:88%;border:2px solid var(--border-color);border-radius:24px;background:var(--bg-card);box-shadow:var(--shadow-card)}.swipe-stage:before{transform:translateY(13px) scale(.94) rotate(-2deg);opacity:.4}.swipe-stage:after{transform:translateY(7px) scale(.97) rotate(1.3deg);opacity:.7}.swipe-card{position:relative;z-index:2;width:100%;min-height:300px;display:flex;align-items:center;justify-content:center;flex-direction:column;overflow:hidden;padding:32px 24px 24px;color:var(--text-main);border:2px solid var(--border-color);border-bottom-width:6px;border-radius:24px;background:linear-gradient(155deg,color-mix(in srgb,var(--bg-card) 90%,var(--color-primary)),var(--bg-card));box-shadow:0 14px 32px #0003;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;transition:transform .22s ease,opacity .28s ease,border-color .2s,background .2s}.swipe-card.dragging{cursor:grabbing;transition:border-color .2s,background .2s}.swipe-card.snap-back{transition:transform .22s cubic-bezier(.22,.9,.28,1.2)}.swipe-card:focus-visible{outline:3px solid var(--color-accent);outline-offset:4px}.swipe-card-kicker{color:var(--text-muted);font-size:.68rem;font-weight:900;letter-spacing:.12em}.swipe-card-english{max-width:100%;margin-top:6px;font-size:clamp(1.7rem,7vw,2.55rem);font-weight:900;line-height:1.15;overflow-wrap:anywhere;text-align:center}.swipe-card-divider{width:54px;height:4px;margin:22px 0;border-radius:999px;background:linear-gradient(90deg,var(--color-secondary),var(--color-primary))}.swipe-card-vietnamese{max-width:100%;margin-top:7px;color:var(--color-primary);font-size:clamp(1.08rem,4vw,1.42rem);font-weight:800;line-height:1.35;overflow-wrap:anywhere;text-align:center}.swipe-card-hint{margin-top:auto;padding-top:23px;color:var(--text-muted);font-size:.72rem;font-weight:700}.swipe-verdict{position:absolute;z-index:3;top:20px;padding:7px 11px;border:3px solid currentColor;border-radius:10px;font-size:1.05rem;font-weight:950;letter-spacing:.08em;opacity:0;transition:opacity .12s,transform .12s}.swipe-verdict-left{left:18px;color:var(--color-error);transform:rotate(-10deg) scale(.75)}.swipe-verdict-right{right:18px;color:var(--color-success);transform:rotate(10deg) scale(.75)}.swipe-card.lean-left .swipe-verdict-left,.swipe-card.lean-right .swipe-verdict-right{opacity:1;transform:rotate(0) scale(1)}.swipe-card.lean-left{border-color:var(--color-error-border);background:color-mix(in srgb,var(--color-error-bg) 45%,var(--bg-card))}.swipe-card.lean-right{border-color:var(--color-success-border);background:color-mix(in srgb,var(--color-success-bg) 45%,var(--bg-card))}.swipe-card.swipe-answer-correct{border-color:var(--color-success-border);box-shadow:0 14px 32px color-mix(in srgb,var(--color-success) 22%,transparent)}.swipe-card.swipe-answer-wrong{border-color:var(--color-error-border)}.swipe-card.swipe-timeout{transform:scale(.96);opacity:.58;animation:shake .38s ease-in-out}.swipe-actions{width:min(390px,100%);display:grid;grid-template-columns:1fr 1fr;gap:12px}.swipe-action{min-height:52px;padding:10px 16px;border:2px solid;border-bottom-width:5px;border-radius:16px;background:var(--bg-card);font:inherit;font-size:1rem;font-weight:900;cursor:pointer}.swipe-action:active{transform:translateY(3px);border-bottom-width:2px}.swipe-action:disabled{cursor:default;opacity:.55}.swipe-action-wrong{color:var(--color-error);border-color:var(--color-error-border);background:color-mix(in srgb,var(--color-error-bg) 55%,var(--bg-card))}.swipe-action-right{color:var(--color-success);border-color:var(--color-success-border);background:color-mix(in srgb,var(--color-success-bg) 55%,var(--bg-card))}.swipe-stats{width:min(390px,100%);display:grid;grid-template-columns:repeat(3,1fr);gap:7px;color:var(--text-muted);font-size:.76rem;font-weight:850;text-align:center}.swipe-status{width:100%;min-height:1.4em;margin:0;color:var(--text-muted);font-size:.8rem;font-weight:700;text-align:center}@media(max-width:520px){.app-modal-overlay{align-items:flex-end;padding:0}.deck-picker-modal{width:100%;max-height:86dvh;border-radius:24px 24px 0 0;border-bottom:0}.picker-modal-header,.picker-modal-body,.picker-modal-footer{padding-left:16px;padding-right:16px}.picker-modal-footer{align-items:flex-start;flex-direction:column}.picker-modal-actions{width:100%}.picker-modal-actions .primary-btn,.picker-modal-actions .secondary-btn{flex:1}.text-btn{margin-right:auto}.exit-game-modal{margin:auto 16px}.preview-actions,.speedtype-actions{grid-template-columns:1fr}.memory-board{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.memory-card{min-height:102px}.memory-card-face{padding:8px;border-radius:14px}.memory-card-english{font-size:.82rem}.memory-card-vietnamese{font-size:.7rem}.memory-stats{padding:9px 6px;font-size:.72rem}.swipe-stage{height:305px}.swipe-card{min-height:278px;padding:28px 18px 20px;border-radius:20px}.swipe-card-divider{margin:17px 0}.swipe-card-hint{padding-top:18px}.swipe-action{min-height:50px}}@media(max-width:360px){.memory-board{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.memory-card{min-height:106px}}.deck-check-row{gap:8px;cursor:default}.deck-check-select{min-width:0;flex:1;min-height:48px;display:flex;align-items:center;gap:11px;cursor:pointer}.deck-check-row.disabled .deck-check-select{cursor:not-allowed}.deck-mindmap-btn{flex:0 0 auto;min-height:40px;padding:7px 9px;color:var(--color-primary);border:1.5px solid color-mix(in srgb,var(--color-primary) 46%,var(--border-color));border-radius:10px;background:color-mix(in srgb,var(--color-primary) 8%,var(--bg-card));font:inherit;font-size:.72rem;font-weight:800;cursor:pointer}.deck-mindmap-btn:hover{background:var(--color-primary);color:#fff}.deck-complete-btn{flex:0 0 auto;min-height:40px;padding:7px 9px;color:var(--color-text-secondary);border:1.5px solid var(--border-color);border-radius:10px;background:var(--bg-card);font:inherit;font-size:.72rem;font-weight:800;cursor:pointer;transition:all .15s ease}.deck-complete-btn:hover{background:color-mix(in srgb,var(--color-success) 10%,var(--bg-card));border-color:var(--color-success);color:var(--color-success)}.deck-complete-btn.completed{background:color-mix(in srgb,var(--color-success) 15%,var(--bg-card));border-color:var(--color-success);color:var(--color-success)}.deck-complete-btn.completed:hover{background:color-mix(in srgb,var(--color-success) 25%,var(--bg-card))}.deck-completed-badge{margin-left:6px;font-size:.85em;vertical-align:middle}.deck-mindmap-view{display:flex;min-height:0;flex-direction:column;gap:10px}.mindmap-toolbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) minmax(0,1fr);align-items:center;gap:8px}.mindmap-toolbar .text-btn{justify-self:start}.mindmap-title{min-width:0;margin:0;overflow:hidden;color:var(--text-main);font-size:.9rem;font-weight:900;text-align:center;text-overflow:ellipsis;white-space:nowrap;outline:none}.mindmap-zoom-controls{display:flex;justify-content:flex-end;gap:4px}.mindmap-zoom-controls button{width:32px;height:32px;padding:0;color:var(--text-main);border:1.5px solid var(--border-color);border-radius:9px;background:var(--bg-main);font:inherit;font-weight:900;cursor:pointer}.mindmap-status{min-height:1.2em;margin:0;color:var(--text-muted);font-size:.75rem;font-weight:600;text-align:center}.deck-mindmap-viewport{position:relative;min-height:420px;overflow:hidden;border:2px solid var(--border-color);border-radius:18px;background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--color-primary) 14%,var(--bg-card)),var(--bg-main) 70%);cursor:grab;touch-action:none}.deck-mindmap-viewport.dragging{cursor:grabbing}.deck-mindmap-scene{position:absolute;top:calc(50% - 340px);left:calc(50% - 460px);width:920px;height:680px;transform-origin:center center;will-change:transform}.mindmap-lines{position:absolute;z-index:1;inset:0;width:920px;height:680px;overflow:visible}.mindmap-lines path{fill:none;stroke:color-mix(in srgb,var(--color-primary) 46%,var(--border-color));stroke-width:2.5;stroke-linecap:round;opacity:.72}.mindmap-root,.mindmap-word-node{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:translate(-50%,-50%);text-align:center}.mindmap-root{z-index:3;width:164px;min-height:108px;padding:13px 15px;color:#fff;border:3px solid rgba(255,255,255,.62);border-radius:30px;background:linear-gradient(145deg,var(--color-primary),var(--color-secondary));box-shadow:0 10px 24px color-mix(in srgb,var(--color-primary) 40%,transparent)}.mindmap-root strong{display:-webkit-box;overflow:hidden;font-size:.9rem;line-height:1.22;-webkit-line-clamp:3;-webkit-box-orient:vertical}.mindmap-root small{margin-top:4px;font-size:.68rem;font-weight:700;opacity:.86}.mindmap-word-node{z-index:2;width:144px;min-height:86px;padding:9px 11px;color:var(--text-main);border:2px solid color-mix(in srgb,var(--color-primary) 36%,var(--border-color));border-radius:16px;background:color-mix(in srgb,var(--bg-card) 92%,var(--color-primary));box-shadow:0 5px color-mix(in srgb,var(--border-color) 76%,var(--color-primary))}.mindmap-word-node:focus-visible{outline:3px solid var(--color-accent);outline-offset:4px}.mindmap-word-node strong{display:-webkit-box;width:100%;overflow:hidden;font-size:.84rem;font-weight:900;line-height:1.18;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical}.mindmap-word-node small{display:-webkit-box;width:100%;overflow:hidden;margin-top:5px;padding-top:4px;color:var(--text-muted);border-top:1px solid color-mix(in srgb,var(--border-color) 76%,var(--color-primary));font-size:.7rem;font-weight:700;line-height:1.2;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical}.mindmap-pagination{display:flex;min-height:42px;align-items:center;justify-content:center;gap:10px;color:var(--text-muted);font-size:.8rem;font-weight:800}.mindmap-pagination .secondary-btn{min-height:38px;padding:6px 10px;font-size:.78rem}@media(min-width:521px){.deck-picker-modal{width:min(980px,calc(100vw - 48px));max-height:min(920px,calc(100dvh - 24px))}.deck-mindmap-viewport{height:clamp(490px,61vh,620px);min-height:490px}}.preview-tools{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.preview-example-btn{min-height:44px;padding:9px 15px;color:var(--text-main);border:2px solid var(--border-color);border-radius:12px;background:var(--bg-main);font:inherit;font-weight:800;cursor:pointer}.preview-example-btn:hover{border-color:var(--color-secondary);color:var(--color-secondary)}.preview-example-btn:disabled{opacity:.64;cursor:wait}.preview-examples{margin-top:16px;text-align:left}.preview-example-list{display:grid;gap:8px}.preview-example-row{padding:10px 12px;border:1.5px solid var(--border-color);border-radius:12px;background:var(--bg-main)}.preview-example-row strong,.preview-example-row small{display:block}.preview-example-row strong{color:var(--text-main);font-size:.88rem;line-height:1.4}.preview-example-row small{margin-top:4px;color:var(--text-muted);font-size:.8rem;line-height:1.4}.preview-example-empty,.preview-example-loading{margin:6px 0;color:var(--text-muted);font-size:.83rem;font-weight:600;line-height:1.45;text-align:center}.preview-example-source{margin:10px 0 0;color:var(--text-muted);font-size:.7rem;text-align:center}.preview-example-source a{color:var(--color-primary);font-weight:800}.ai-chat-mode-grid{display:grid;gap:12px}.ai-chat-mode-card{min-height:94px;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:15px;color:var(--text-main);border:2px solid var(--border-color);border-radius:16px;background:var(--bg-main);box-shadow:0 4px 0 var(--border-color);font:inherit;text-align:left;cursor:pointer;transition:transform .15s,border-color .15s}.ai-chat-mode-card strong{font-size:.95rem}.ai-chat-mode-card small{color:var(--text-muted);font-size:.78rem;font-weight:600;line-height:1.4}.ai-chat-mode-card:hover{transform:translateY(-2px);border-color:var(--color-primary)}.ai-chat-tutor-suggestions{display:flex;flex-wrap:wrap;gap:8px}.ai-chat-tutor-suggestions button{min-height:38px;padding:7px 10px;color:var(--color-primary);border:1.5px solid color-mix(in srgb,var(--color-primary) 40%,var(--border-color));border-radius:999px;background:color-mix(in srgb,var(--color-primary) 7%,var(--bg-card));font:inherit;font-size:.76rem;font-weight:700;cursor:pointer}.ai-chat-input-bar textarea{flex:1;min-height:44px;max-height:110px;resize:none;overflow-y:auto;padding:10px 14px;color:var(--text-main);border:2px solid var(--border-color);border-radius:14px;background:var(--bg-main);font-family:var(--font-family);font-size:.88rem;line-height:1.35;outline:none}.ai-chat-input-bar textarea:focus{border-color:var(--color-primary)}.ai-chat-input-bar textarea::placeholder{color:var(--text-muted)}.ai-chat-bubble,.ai-chat-translation{white-space:pre-wrap}.ai-chat-message-actions{display:flex;gap:7px}.ai-chat-user-wrapper{align-self:flex-end}.ai-chat-message-actions button{padding:2px 4px;color:var(--text-muted);border:0;background:transparent;font:inherit;font-size:.72rem;font-weight:700;cursor:pointer}.ai-chat-retry-btn{align-self:flex-start;min-height:34px;padding:5px 9px;color:var(--color-primary);border:1.5px solid var(--color-primary);border-radius:9px;background:transparent;font:inherit;font-size:.76rem;font-weight:800;cursor:pointer}@media(max-width:520px){.deck-mindmap-viewport{min-height:365px}.mindmap-toolbar{grid-template-columns:1fr auto}.mindmap-title{grid-column:1 / -1;grid-row:1}.mindmap-toolbar .text-btn{grid-row:2}.mindmap-zoom-controls{grid-column:2;grid-row:2}.mindmap-root{width:156px;min-height:102px}.mindmap-word-node{width:140px;min-height:84px}}.speak-workspace{width:min(100%,530px);display:grid;justify-items:center;gap:14px;padding:22px 18px 18px;border:2px solid var(--border-color);border-radius:22px;background:linear-gradient(145deg,color-mix(in srgb,var(--color-primary) 10%,var(--bg-card)),var(--bg-card) 56%);box-shadow:var(--shadow-card);text-align:center}.speak-lead{max-width:390px;margin:0;color:var(--text-muted);font-size:.88rem;font-weight:650;line-height:1.5}.speak-recording-timer{width:min(100%,280px);position:relative;overflow:hidden;padding:9px 14px;color:var(--text-main);border:1.5px solid var(--border-color);border-radius:999px;background:var(--bg-main);font-size:.84rem;font-weight:800;isolation:isolate}.speak-recording-timer:before{position:absolute;z-index:-1;top:0;bottom:0;left:0;width:var(--recording-progress, 0%);content:"";background:color-mix(in srgb,var(--color-primary) 17%,transparent);transition:width .1s linear}.speak-actions{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(108px,.65fr);width:100%;gap:10px}.speak-login-btn{min-height:48px;display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;font-size:.88rem;text-decoration:none}.speak-record-btn{min-height:52px;padding:10px 14px;color:#fff;border:2px solid var(--color-primary);border-bottom-width:5px;border-radius:15px;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));box-shadow:0 6px 17px color-mix(in srgb,var(--color-primary) 28%,transparent);font:inherit;font-size:.9rem;font-weight:900;cursor:pointer;transition:transform .15s ease,filter .15s ease}.speak-record-btn:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-1px)}.speak-record-btn:active:not(:disabled){transform:translateY(2px);border-bottom-width:3px}.speak-record-btn.is-recording{border-color:#f04d63;background:linear-gradient(135deg,#ef4660,#fc7a5d);animation:speak-pulse 1.15s ease-in-out infinite}.speak-record-btn:disabled,.speak-skip-btn:disabled{cursor:not-allowed;opacity:.62}.speak-skip-btn{min-height:52px;padding:8px 12px;font-size:.9rem}.speak-status{min-height:1.45em;margin:0;color:var(--text-muted);font-size:.83rem;font-weight:700;line-height:1.45}.speak-status[data-tone=recording]{color:#d84b5d}.speak-status[data-tone=success]{color:var(--color-success)}.speak-status[data-tone=error]{color:var(--color-error)}.speak-outcome{display:grid;width:100%;gap:7px}.speak-transcript,.speak-score{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0;padding:10px 12px;border:1.5px solid var(--border-color);border-radius:12px;background:var(--bg-main);color:var(--text-muted);font-size:.82rem;text-align:left}.speak-transcript strong{min-width:0;overflow-wrap:anywhere;color:var(--text-main);font-size:.91rem}.speak-outcome-label{flex:0 0 auto;font-weight:700}.speak-score strong{color:var(--color-primary);font-size:1rem}.speak-score.passed{border-color:var(--color-success-border);background:var(--color-success-bg)}.speak-score.passed strong{color:var(--color-success)}.speak-quota{color:var(--text-muted);font-size:.72rem;font-weight:650}.speak-workspace.is-busy .speak-recording-timer{border-color:color-mix(in srgb,var(--color-primary) 55%,var(--border-color))}@keyframes speak-pulse{50%{box-shadow:0 0 0 8px color-mix(in srgb,#ef4660 18%,transparent),0 8px 21px color-mix(in srgb,#ef4660 28%,transparent)}}@media(prefers-reduced-motion:reduce){.speak-record-btn.is-recording{animation:none}}@media(max-width:420px){.speak-workspace{padding:18px 13px 15px;border-radius:18px}.speak-actions{grid-template-columns:1fr}.speak-actions>button{width:100%}}.sentence-workspace{width:min(100%,560px);display:grid;justify-items:center;gap:13px;padding:22px 18px 18px;border:2px solid var(--border-color);border-radius:22px;background:linear-gradient(145deg,color-mix(in srgb,var(--color-primary) 10%,var(--bg-card)),var(--bg-card) 56%);box-shadow:var(--shadow-card);text-align:center}.sentence-lead{max-width:460px;margin:0;color:var(--text-muted);font-size:.88rem;font-weight:650;line-height:1.5}.sentence-lead strong{color:var(--text-main)}.sentence-input{width:100%;min-height:86px;box-sizing:border-box;padding:12px 14px;color:var(--text-main);border:1.5px solid var(--border-color);border-radius:14px;background:var(--bg-main);font:inherit;font-size:1rem;font-weight:650;line-height:1.5;resize:vertical;transition:border-color .15s ease}.sentence-input:focus{outline:3px solid color-mix(in srgb,var(--color-primary) 35%,transparent);border-color:var(--color-primary)}.sentence-input:disabled{cursor:not-allowed;opacity:.62}.sentence-actions{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(108px,.65fr);width:100%;gap:10px}.sentence-login-btn{min-height:48px;display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;font-size:.88rem;text-decoration:none}.sentence-submit-btn{min-height:52px;padding:10px 14px;color:#fff;border:2px solid var(--color-primary);border-bottom-width:5px;border-radius:15px;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));box-shadow:0 6px 17px color-mix(in srgb,var(--color-primary) 28%,transparent);font:inherit;font-size:.9rem;font-weight:900;cursor:pointer;transition:transform .15s ease,filter .15s ease}.sentence-submit-btn:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-1px)}.sentence-submit-btn:active:not(:disabled){transform:translateY(2px);border-bottom-width:3px}.sentence-submit-btn:disabled,.sentence-skip-btn:disabled{cursor:not-allowed;opacity:.62}.sentence-skip-btn{min-height:52px;padding:8px 12px;font-size:.9rem}.sentence-status{min-height:1.45em;max-width:480px;margin:0;color:var(--text-muted);font-size:.83rem;font-weight:700;line-height:1.45}.sentence-status[data-tone=success]{color:var(--color-success)}.sentence-status[data-tone=error]{color:var(--color-error)}.sentence-outcome{display:grid;width:100%;gap:7px;text-align:left}.sentence-score{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0;padding:10px 12px;border:1.5px solid var(--border-color);border-radius:12px;background:var(--bg-main);color:var(--text-muted);font-size:.82rem}.sentence-score>span:first-child{font-weight:700}.sentence-score strong{color:var(--color-primary);font-size:1rem}.sentence-score.passed{border-color:var(--color-success-border);background:var(--color-success-bg)}.sentence-score.passed strong{color:var(--color-success)}.sentence-feedback{margin:0;padding:10px 12px;border:1.5px dashed var(--border-color);border-radius:12px;background:var(--bg-main);color:var(--text-main);font-size:.83rem;line-height:1.5;overflow-wrap:anywhere;font-weight:650}.sentence-example{display:flex;gap:8px;margin:0;padding:10px 12px;border:1.5px solid var(--border-color);border-radius:12px;background:var(--bg-main);color:var(--text-muted);font-size:.82rem;font-weight:700;line-height:1.5}.sentence-example strong{min-width:0;color:var(--color-success);overflow-wrap:anywhere}.sentence-quota{color:var(--text-muted);font-size:.72rem;font-weight:650}.sentence-workspace.is-busy .sentence-input{border-color:color-mix(in srgb,var(--color-primary) 55%,var(--border-color))}@media(max-width:420px){.sentence-workspace{padding:18px 13px 15px;border-radius:18px}.sentence-actions{grid-template-columns:1fr}.sentence-actions>button{width:100%}}.custom-mode-summary-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px}.custom-mode-summary{min-width:0;margin:0;color:var(--text-muted);font-size:.8rem;font-weight:700;line-height:1.4}.custom-mode-config{min-height:42px;flex:0 0 auto;padding:8px 12px;font-size:.8rem}.custom-mode-modal{width:min(540px,100%);max-height:min(710px,calc(100dvh - 32px));display:flex;flex-direction:column;overflow:hidden;color:var(--text-main);border:2px solid var(--border-color);border-radius:24px;background:var(--bg-card);box-shadow:0 8px 0 var(--border-color),0 22px 54px #0006;animation:modal-pop .24s cubic-bezier(.34,1.56,.64,1)}.custom-mode-list{display:grid;min-height:0;gap:7px;overflow-y:auto;padding:15px 22px}.custom-mode-row{min-height:58px;display:flex;align-items:center;gap:12px;padding:9px 11px;border:1.5px solid var(--border-color);border-radius:14px;background:var(--bg-main);cursor:pointer}.custom-mode-row:has(input:checked){border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 8%,var(--bg-card))}.custom-mode-row.unavailable{opacity:.68}.custom-mode-row input{width:20px;height:20px;flex:0 0 auto;accent-color:var(--color-primary)}.custom-mode-copy{min-width:0;display:grid;gap:2px}.custom-mode-copy strong{color:var(--text-main);font-size:.9rem}.custom-mode-copy small{color:var(--text-muted);font-size:.74rem;font-weight:650}.custom-result-breakdown{grid-column:1 / -1;margin:2px 0 0;color:var(--text-muted);font-size:.78rem;font-weight:700;line-height:1.45;text-align:center}.speed-fall-game{width:100%;display:grid;gap:12px}.speed-fall-arena{position:relative;width:100%;min-height:clamp(360px,51vh,510px);overflow:hidden;border:2px solid color-mix(in srgb,var(--color-primary) 44%,var(--border-color));border-radius:24px;background:radial-gradient(ellipse at 50% -22%,color-mix(in srgb,var(--color-secondary) 28%,transparent),transparent 54%),linear-gradient(180deg,color-mix(in srgb,var(--bg-card) 74%,var(--color-primary)),var(--bg-main));box-shadow:inset 0 -25px 38px color-mix(in srgb,var(--color-primary) 9%,transparent),var(--shadow-card)}.speed-fall-grid{position:absolute;inset:0;pointer-events:none;opacity:.33;background-image:linear-gradient(90deg,transparent calc(33.333% - 1px),color-mix(in srgb,var(--border-color) 74%,transparent) calc(33.333% - 1px),color-mix(in srgb,var(--border-color) 74%,transparent) 33.333%,transparent 33.333%,transparent calc(66.666% - 1px),color-mix(in srgb,var(--border-color) 74%,transparent) calc(66.666% - 1px),color-mix(in srgb,var(--border-color) 74%,transparent) 66.666%,transparent 66.666%)}.speed-danger-line{position:absolute;z-index:3;right:12px;bottom:74px;left:12px;height:3px;display:flex;align-items:center;justify-content:center;color:var(--color-error);border-radius:999px;background:linear-gradient(90deg,transparent,var(--color-error) 11%,var(--color-error) 89%,transparent);box-shadow:0 0 12px color-mix(in srgb,var(--color-error) 52%,transparent);font-size:.62rem;font-weight:950;letter-spacing:.13em;text-shadow:0 1px var(--bg-card)}.falling-word-card{position:absolute;z-index:2;top:0;width:min(29%,220px);min-height:78px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;padding:10px 12px;color:var(--text-main);border:2px solid color-mix(in srgb,var(--color-primary) 45%,var(--border-color));border-bottom-width:5px;border-radius:17px;background:color-mix(in srgb,var(--bg-card) 92%,var(--color-primary));box-shadow:0 8px 22px color-mix(in srgb,var(--color-primary) calc(var(--fall-glow, .2) * 55%),transparent);text-align:center;will-change:transform,opacity}.falling-word-vietnamese{display:block;width:100%;overflow:hidden;font-size:clamp(.88rem,2.3vw,1.05rem);font-weight:950;line-height:1.17;overflow-wrap:anywhere;transition:opacity .2s ease}.falling-word-english{display:block;width:100%;overflow:hidden;color:var(--text-muted);opacity:.35;font-size:clamp(.65rem,1.6vw,.76rem);font-weight:600;line-height:1.2;letter-spacing:.03em;overflow-wrap:anywhere}.falling-word-cleared{z-index:99!important;overflow:visible!important;pointer-events:none;border-color:var(--color-success)!important;border-width:2px!important;border-bottom-width:5px!important;background:color-mix(in srgb,var(--color-success-bg) 88%,var(--bg-card))!important;box-shadow:0 8px 24px color-mix(in srgb,var(--color-success) 35%,transparent),0 0 16px color-mix(in srgb,var(--color-success) 25%,transparent)!important;animation:falling-card-burst .7s cubic-bezier(.22,1,.36,1) forwards!important}.falling-word-cleared .falling-word-vietnamese{display:none!important}.falling-word-cleared .falling-word-english{display:block!important;width:100%!important;opacity:1!important;color:#fff!important;background:transparent!important;padding:0!important;font-size:clamp(1.05rem,2.8vw,1.28rem)!important;font-weight:850!important;letter-spacing:.02em!important;text-shadow:0 1px 3px rgba(0,0,0,.45),0 0 10px color-mix(in srgb,var(--color-success) 55%,transparent)!important;animation:falling-english-zoom .7s cubic-bezier(.22,1,.36,1) forwards!important}.falling-word-missed{pointer-events:none;border-color:var(--color-error-border);background:var(--color-error-bg);animation:falling-miss .36s ease-out forwards}.falling-word-skipped{pointer-events:none;opacity:.45;animation:falling-skip .36s ease-out forwards}@keyframes falling-card-burst{0%{transform:translate(-50%,var(--fall-y, 0px)) scale(1);opacity:1}35%{transform:translate(-50%,calc(var(--fall-y, 0px) - 10px)) scale(1.12);opacity:1}75%{transform:translate(-50%,calc(var(--fall-y, 0px) - 14px)) scale(1.08);opacity:.9}to{transform:translate(-50%,calc(var(--fall-y, 0px) - 20px)) scale(1);opacity:0}}@keyframes falling-english-zoom{0%{transform:scale(.9);opacity:.7}35%{transform:scale(1.15);opacity:1}75%{transform:scale(1.1);opacity:1}to{transform:scale(1);opacity:0}}@keyframes falling-miss{to{opacity:0;filter:saturate(.4)}}@keyframes falling-skip{to{opacity:0;filter:grayscale(.45)}}.speed-input-dock{position:relative;z-index:4;margin-top:-48px;padding:0 18px}.speed-fall-input{width:100%;min-height:56px;margin:0;border-width:2px 2px 5px;border-color:var(--color-primary);border-radius:16px;background:var(--bg-card);box-shadow:0 8px 24px color-mix(in srgb,var(--color-primary) 16%,transparent);font-size:max(16px,1.16rem);font-weight:750}.speedtype-stats{flex-wrap:wrap}@media(prefers-reduced-motion:reduce){.falling-word-cleared,.falling-word-missed,.falling-word-skipped{animation:none;opacity:0}.falling-word-cleared .falling-word-english{animation:none}}@media(max-width:520px){.custom-mode-modal{width:100%;max-height:86dvh;border-radius:24px 24px 0 0;border-bottom:0}.custom-mode-list{padding-right:16px;padding-left:16px}.custom-mode-summary-row{align-items:flex-start;flex-direction:column}.custom-mode-config{width:100%}.speed-fall-arena{min-height:385px;border-radius:19px}.speed-fall-grid{background-image:linear-gradient(90deg,transparent calc(50% - 1px),color-mix(in srgb,var(--border-color) 74%,transparent) calc(50% - 1px),color-mix(in srgb,var(--border-color) 74%,transparent) 50%,transparent 50%)}.falling-word-card{width:min(43%,182px);min-height:74px;padding:9px 8px}.speed-input-dock{padding:0 11px}.infinite-stop-btn{padding-inline:8px;font-size:.7rem}}@media(prefers-reduced-motion:reduce){.memory-card-inner{transition:none}.memory-card.is-wrong,.listen-match-audio.playing{animation:none}}.learning-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:20px 0 14px;padding:5px;border-radius:15px;background:var(--bg-secondary)}.learning-tab{border:0;border-radius:11px;padding:11px 8px;color:var(--text-secondary);background:transparent;font:inherit;font-weight:800;cursor:pointer}.learning-tab.active{color:var(--text-primary);background:var(--bg-card);box-shadow:0 2px 6px #0000001c}.choice-card.correct-answer{border-color:var(--color-success);background:var(--color-success-bg);color:var(--color-success-text)}.choice-card.wrong-answer{border-color:var(--color-error);background:var(--color-error-bg);color:var(--color-error-text)}.review-explanation{margin-top:4px;color:var(--text-secondary);font-size:.88rem;white-space:pre-wrap}@media(max-width:480px){.learning-tab{font-size:.83rem;padding:10px 4px}}@media(max-width:520px){.heatmap-modal{width:100%;max-height:88dvh;border-radius:20px}.heatmap-stats{grid-template-columns:1fr;gap:8px}.heatmap-stat{display:flex;align-items:center;justify-content:space-between;padding:10px 14px}.heatmap-stat-value{margin-bottom:0;margin-right:8px;font-size:1.25rem}.heatmap-content{padding:16px;gap:14px}.heatmap-header{padding:14px 16px}.heatmap-cell[data-tooltip]:hover:after{display:none}.heatmap-cell:active:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%);background:var(--bg-card);border:1px solid var(--border-color);border-radius:6px;padding:4px 8px;font-size:.65rem;white-space:nowrap;z-index:10;pointer-events:none}}
