.study-wrap{z-index:1;text-align:center;flex-direction:column;align-items:center;gap:18px;max-width:1000px;margin:0 auto;display:flex;position:relative}.instructions{color:var(--faint);letter-spacing:.01em;margin:4px 0 0;font-size:13.5px}.stage{flex-direction:column;align-items:center;gap:26px;width:100%;margin-top:6px;display:flex}.stage.fade-in{opacity:1;transition:opacity .2s}.stage.fade-out{opacity:0;transition:opacity .2s}.tool-row{justify-content:center;gap:10px;display:flex}.tool{cursor:pointer;color:var(--text);border:1px solid var(--line);background:var(--surface);border-radius:11px;align-items:center;gap:8px;padding:11px 18px;font-size:13.5px;font-weight:600;transition:all .14s;display:inline-flex}.tool:hover{border-color:var(--accent);transform:translateY(-1px)}.tool.on{background:var(--navy);border-color:var(--navy);color:#fff}.tool svg{stroke:currentColor;stroke-width:2px;fill:none;width:15px;height:15px}.match-rounds{justify-content:space-between;align-items:center;gap:16px;width:min(560px,92vw);margin:0;display:flex}.rounds-label{font-family:var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:13px;font-weight:600;line-height:1}.rounds-count{font-family:var(--font-serif);color:var(--accent);font-size:26px;font-weight:600;line-height:1.2}
.vocab-flashcard-container{cursor:pointer;aspect-ratio:3/2;width:min(480px,90vw);margin:0 auto;animation:.6s ease-out fadeInUp;position:relative}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.vocab-flashcard{perspective:1600px;width:100%;height:100%;position:relative}.vocab-flashcard-front,.vocab-flashcard-back{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);backface-visibility:hidden;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:32px;transition:transform .55s cubic-bezier(.2,.7,.2,1),border-color .2s;display:flex;position:absolute;inset:0;overflow:hidden}.vocab-flashcard-front{transform:rotateY(0)}.vocab-flashcard-back{background:var(--surface2);transform:rotateY(180deg)}.vocab-flashcard.flipped .vocab-flashcard-front{transform:rotateY(-180deg)}.vocab-flashcard.flipped .vocab-flashcard-back{transform:rotateY(0)}.vocab-flashcard-container:hover .vocab-flashcard-front,.vocab-flashcard-container:hover .vocab-flashcard-back{border-color:var(--accent)}.vocab-flashcard-container:focus{outline:none}.vocab-hanzi{font-family:var(--font-hanzi,var(--font-serif));font-size:clamp(40px,10vw,72px);font-weight:var(--font-hanzi-weight,700);color:var(--text);-webkit-user-select:none;user-select:none;text-align:center;line-height:1.6}.vocab-hanzi ruby{ruby-align:center}.vocab-hanzi rt{font-size:.3em;font-family:var(--font-hanzi,var(--font-serif));color:var(--muted);letter-spacing:.02em;padding-bottom:.4em;font-weight:400}.vocab-pinyin{font-family:var(--font-hanzi,var(--font-serif));color:var(--strong);-webkit-user-select:none;user-select:none;text-align:center;font-size:clamp(18px,4vw,26px)}.vocab-definition{font-family:var(--font-ui);color:var(--text);-webkit-user-select:none;user-select:none;text-align:center;font-size:clamp(20px,5vw,32px);font-weight:600;line-height:1.4}.vocab-flashcard-front .audio-button,.vocab-flashcard-back .audio-button{z-index:10;cursor:pointer;background:var(--navy);color:#fff;width:50px;height:50px;box-shadow:0 8px 20px color-mix(in oklab,var(--navy),transparent 50%);border:none;border-radius:50%;place-items:center;transition:transform .14s,background .14s;display:grid;position:absolute;bottom:18px;right:18px}.vocab-flashcard-front .audio-button svg,.vocab-flashcard-back .audio-button svg{width:22px;height:22px}.vocab-flashcard-front .audio-button:hover,.vocab-flashcard-back .audio-button:hover{background:var(--navy-soft);transform:translateY(-2px)scale(1.05)}.vocab-flashcard-front .audio-button:focus,.vocab-flashcard-back .audio-button:focus{outline:none}@media (prefers-reduced-motion:reduce){.vocab-flashcard-front,.vocab-flashcard-back{transition:none}.vocab-flashcard:not(.flipped) .vocab-flashcard-back,.vocab-flashcard.flipped .vocab-flashcard-front{visibility:hidden}}.vocab-hanzi-small{font-size:clamp(32px,7vw,48px);line-height:1.2}.vocab-definition-small{color:var(--strong);font-size:clamp(15px,3.4vw,20px);font-weight:500}.vocab-hanzi.len-1{font-size:clamp(80px,22vw,140px);line-height:1.3}.vocab-hanzi.len-2{font-size:clamp(56px,15vw,100px);line-height:1.4}
.vocab-quiz-container{flex-direction:column;align-items:center;gap:24px;width:min(480px,90vw);display:flex}.vocab-quiz-prompt{aspect-ratio:3/2;border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--surface);width:100%;box-shadow:var(--shadow);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:32px;display:flex}.vocab-quiz-hanzi{font-family:var(--font-hanzi,var(--font-serif));font-size:clamp(40px,10vw,72px);font-weight:var(--font-hanzi-weight,700);color:var(--text);-webkit-user-select:none;user-select:none;text-align:center;line-height:1.6}.vocab-quiz-hanzi ruby{ruby-align:center}.vocab-quiz-hanzi rt{font-size:.3em;font-family:var(--font-hanzi,var(--font-serif));color:var(--muted);font-weight:400}.vocab-quiz-pinyin{font-family:var(--font-hanzi,var(--font-serif));color:var(--strong);-webkit-user-select:none;user-select:none;text-align:center;font-size:clamp(14px,3.5vw,22px)}.vocab-quiz-definition-prompt{font-family:var(--font-ui);color:var(--text);-webkit-user-select:none;user-select:none;text-align:center;font-size:clamp(18px,4.5vw,30px);font-weight:600;line-height:1.4}.vocab-quiz-options{gap:12px;width:100%;display:grid}.vocab-quiz-options.one-col{grid-template-columns:1fr}.vocab-quiz-options.two-col{grid-template-columns:repeat(2,1fr)}.vocab-quiz-option{min-height:60px;font-family:var(--font-ui);color:var(--text);cursor:pointer;border:1px solid var(--line);background:var(--surface);text-align:left;border-radius:13px;padding:16px 18px;font-size:15px;font-weight:600;line-height:1.4;transition:all .14s}.vocab-quiz-options.two-col .vocab-quiz-option{font-family:var(--font-hanzi,var(--font-serif));text-align:center;font-size:22px}.vocab-quiz-option:hover:not(:disabled){border-color:var(--accent);transform:translateY(-2px)}.vocab-quiz-option:focus{outline:none}.vocab-quiz-option:disabled{cursor:default}.vocab-quiz-option.correct{background:var(--green);border-color:var(--green);color:#fff}.vocab-quiz-option.incorrect{background:var(--accent);border-color:var(--accent);color:#fff}.vocab-quiz-option.selected:not(.correct):not(.incorrect){border-color:var(--navy-soft);background:color-mix(in oklab,var(--navy-soft),transparent 84%)}
.type-container{flex-direction:column;align-items:center;gap:24px;width:min(480px,90vw);display:flex}.type-character{aspect-ratio:3/2;border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--surface);width:100%;box-shadow:var(--shadow);place-items:center;display:grid}.type-character .character{font-family:var(--font-hanzi,var(--font-serif));font-weight:var(--font-hanzi-weight,700);color:var(--text);-webkit-user-select:none;user-select:none;font-size:clamp(96px,20vw,150px);line-height:1}.type-zh{font-family:var(--font-hanzi,var(--font-serif));font-size:clamp(48px,10vw,72px);font-weight:var(--font-hanzi-weight,700);color:var(--text);-webkit-user-select:none;user-select:none;text-align:center;line-height:1.6}.type-zh ruby{ruby-align:center}.type-zh rt{font-size:.3em;font-family:var(--font-hanzi,var(--font-serif));color:var(--muted);font-weight:400}.type-en{font-family:var(--font-ui);color:var(--text);-webkit-user-select:none;user-select:none;text-align:center;padding:0 16px;font-size:clamp(20px,4vw,28px);font-weight:500;line-height:1.4}.type-pinyin{font-family:var(--font-hanzi,var(--font-serif));color:var(--muted);text-align:center;margin-top:8px;font-size:clamp(16px,3vw,22px)}.type-input-row{gap:10px;width:100%;display:flex}.type-input{font-family:var(--font-ui);color:var(--text);text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);outline:none;flex:1;padding:15px;font-size:17px;transition:border-color .15s}.type-input::placeholder{color:var(--muted)}.type-input:focus{border-color:var(--navy-soft);box-shadow:0 0 0 3px color-mix(in oklab,var(--navy-soft),transparent 80%)}.type-input:disabled{opacity:.6;cursor:not-allowed}.type-input.type-input-correct{border-color:var(--green)}.type-input.type-input-incorrect{border-color:var(--accent)}.type-submit{border-radius:var(--radius-md);border:1px solid var(--navy);background:var(--navy);color:#fff;font-family:var(--font-ui);cursor:pointer;white-space:nowrap;padding:15px 22px;font-size:14px;font-weight:600;transition:background .14s}.type-submit:hover:not(:disabled){background:var(--navy-soft)}.type-submit:disabled{background:var(--surface);border-color:var(--line);color:var(--muted);cursor:not-allowed}.type-feedback{opacity:0;min-height:20px;font-size:14px;font-weight:600;transition:opacity .2s}.type-feedback-visible{opacity:1}.type-feedback-correct{color:var(--green)}.type-feedback-incorrect{color:var(--accent)}
.matching-container{flex-direction:column;align-items:center;gap:24px;width:min(560px,92vw);display:flex}.matching-grid{grid-template-columns:1fr 1fr;gap:12px;width:100%;display:grid}.matching-column{flex-direction:column;gap:10px;display:flex}.column-title{display:none}.match-item{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:1px solid var(--line);background:var(--surface);border-radius:13px;place-items:center;height:60px;font-weight:600;transition:all .14s;display:grid}@media (hover:hover){.match-item:hover:not(:disabled){border-color:var(--accent)}}.match-item:focus{outline:none}.match-character{font-family:var(--font-hanzi,var(--font-serif));color:var(--text);font-size:clamp(28px,8vw,42px);line-height:1}.match-answer{font-family:var(--font-ui);color:var(--text);font-size:clamp(14px,4vw,20px);line-height:1}.match-item.selected{border-color:var(--navy-soft);background:color-mix(in oklab,var(--navy-soft),transparent 84%)}.match-item.matched{opacity:.45;pointer-events:none;border-color:var(--correct,#4caf50);background:color-mix(in oklab,var(--correct,#4caf50),transparent 84%)}.match-item.incorrect{border-color:var(--accent);animation:.35s shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.matching-progress{font-family:var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:center;font-size:12px;font-weight:600}.match-item.meaning .match-answer{font-size:13.5px;line-height:1.35}
.vocab-review-container{width:100%}.vocab-review-title{font-family:var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--kicker);text-align:center;margin-bottom:20px;font-size:12px;font-weight:600}.vocab-review-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;display:grid}.vocab-review-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);flex-direction:column;gap:6px;min-height:130px;padding:22px 18px 18px;transition:transform .16s,border-color .16s,box-shadow .16s;display:flex;position:relative}.vocab-review-card:hover{border-color:var(--accent);box-shadow:var(--shadow);cursor:pointer;transform:translateY(-4px)}.vocab-review-audio-icon{color:var(--muted);opacity:0;line-height:0;transition:opacity .15s;position:absolute;bottom:8px;right:8px}.vocab-review-card:hover .vocab-review-audio-icon{opacity:1}.vocab-review-hanzi{font-family:var(--font-hanzi,var(--font-serif));font-weight:var(--font-hanzi-weight,700);color:var(--text);font-size:clamp(28px,6vw,38px);line-height:1.6}.vocab-review-hanzi ruby{ruby-align:center}.vocab-review-hanzi rt{font-size:.35em;font-family:var(--font-hanzi,var(--font-serif));color:var(--muted);font-weight:400}.vocab-review-pinyin{font-family:var(--font-hanzi,var(--font-serif));color:var(--strong);font-size:13px}.vocab-review-definition{color:var(--muted);border-top:1px dashed var(--line);margin-top:auto;padding-top:10px;font-size:13px;line-height:1.4}@media (max-width:600px){.vocab-review-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}.vocab-review-card:not(.playable){cursor:default}.vocab-review-strokes{color:var(--muted);margin-top:4px;font-size:12px;text-decoration:none}.vocab-review-strokes:hover{color:var(--accent)}
.score-display{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);box-sizing:border-box;cursor:default;justify-content:space-between;align-items:center;gap:16px;width:min(480px,90vw);padding:18px 24px;display:flex}.score-display.clickable{cursor:pointer}.score-display.clickable:hover{border-color:var(--accent)}.score-left{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.score-label{font-family:var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:12.5px;font-weight:600}.score-value{align-items:baseline;gap:3px;display:flex}.score-correct{font-family:var(--font-serif);color:var(--green);font-size:22px;font-weight:600;line-height:1}.score-separator{font-family:var(--font-serif);color:var(--faint);font-size:16px;font-weight:600;line-height:1}.score-total{font-family:var(--font-serif);color:var(--accent);font-size:22px;font-weight:600;line-height:1}.score-right{flex-direction:column;align-items:flex-end;gap:10px;display:flex}.score-percentage{font-family:var(--font-serif);color:var(--text);font-size:clamp(18px,3.5vw,26px);font-weight:600;line-height:1}.score-percentage.score-dim{color:var(--faint)}.score-hint{font-family:var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);opacity:0;pointer-events:none;font-size:11.5px;font-weight:600}.score-display.clickable .score-hint{opacity:1;pointer-events:auto;color:var(--muted)}.results-overlay{z-index:60;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1d1a1673;justify-content:center;align-items:center;padding:20px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.results-modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);width:fit-content;max-width:min(560px,94vw);max-height:90vh;box-shadow:var(--shadow);flex-direction:column;animation:.3s cubic-bezier(.2,.7,.2,1) slideUp;display:flex;overflow:hidden}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.results-close{border-radius:var(--radius-sm);border:1px solid var(--line);width:36px;height:36px;color:var(--text);cursor:pointer;background:0 0;place-items:center;font-size:18px;line-height:1;transition:border-color .14s;display:grid;position:absolute;top:16px;right:16px}.results-close:hover{border-color:var(--accent)}.results-title{font-family:var(--font-serif);color:var(--text);padding:24px 28px 16px;font-size:14px;font-weight:600;position:relative}.results-content{padding:0 28px 28px;overflow-y:auto}.results-section{margin-bottom:28px}.results-section:last-child{margin-bottom:0}.results-section-title{font-family:var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--kicker);border-bottom:1px solid var(--line);margin-bottom:12px;padding-bottom:8px;font-size:12px;font-weight:600}.correct-title{color:var(--green)}.incorrect-title{color:var(--accent)}.results-grid{grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.result-item{background:var(--bg);border:1px solid var(--line);text-align:center;border-radius:11px;padding:10px}.correct-item{border-color:var(--green);background:color-mix(in oklab,var(--green),transparent 88%)}.incorrect-item{border-color:var(--accent);background:color-mix(in oklab,var(--accent),transparent 90%)}.result-character{font-family:var(--font-serif);color:var(--text);margin-bottom:4px;font-size:28px;font-weight:700;line-height:1}.result-pinyin{font-family:var(--font-ui);color:var(--muted);font-size:11px;font-weight:600}.results-empty{font-family:var(--font-ui);color:var(--faint);text-align:center;padding:4px 0;font-size:14px;font-weight:500}
.navigation-controls{justify-content:center;align-items:center;gap:14px;display:flex}.nav-button{cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--text);font-family:var(--font-ui);border-radius:11px;align-items:center;gap:9px;padding:12px 22px;font-size:14px;font-weight:600;transition:all .14s;display:inline-flex}.nav-button:hover:not(:disabled){border-color:var(--accent);transform:translateY(-2px)}.nav-button:disabled{opacity:.35;cursor:not-allowed}.nav-button:focus{outline:none}.nav-button svg{stroke:currentColor;stroke-width:2.2px;fill:none;width:17px;height:17px}
.progress-indicator{flex-direction:column;align-items:center;gap:9px;width:min(420px,86vw);display:flex}.progress-text{font-family:var(--font-ui);letter-spacing:.12em;color:var(--muted);font-size:12.5px;font-weight:600}.progress-current{color:var(--text)}.progress-separator{color:var(--muted);margin:0 4px}.progress-total{color:var(--text)}.progress-bar{background:var(--surface2);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;height:6px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:var(--radius-sm);height:100%;transition:width .25s}
.font-select{display:inline-flex;position:relative}.font-select:focus-within{border-color:var(--accent)}.font-select-glyph{font-family:var(--font-hanzi,var(--font-serif));pointer-events:none;font-size:16px;line-height:1;position:absolute;top:50%;left:18px;transform:translateY(-50%)}.font-select select{appearance:none;color:inherit;font:inherit;cursor:pointer;border-radius:inherit;background:0 0;border:none;outline:none}.font-select select option{color:var(--text);background:var(--surface)}.font-select:after{content:"";pointer-events:none;border-bottom:2px solid;border-right:2px solid;width:6px;height:6px;position:absolute;top:50%;right:16px;transform:translateY(-70%)rotate(45deg)}
