.private-mock-player{padding-bottom:2rem}.private-mock-player .pm-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem;padding:.9rem 1.2rem;border:1px solid var(--border);border-radius:1rem;background:var(--surface)}.private-mock-player .pm-toolbar p{margin:0}.private-mock-player .pm-timer{margin-left:auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.private-mock-player .pm-timer-urgent{color:var(--error,var(--danger))}.private-mock-player .pm-result{margin-bottom:1.5rem;padding:1.4rem}.private-mock-player .pm-result h2{scroll-margin-top:5rem}.private-mock-player .pm-result li{margin-block:.4rem}.private-mock-player .pm-layout{display:grid;grid-template-columns:minmax(0,1fr) 17rem;grid-gap:1.5rem;gap:1.5rem;align-items:start}.private-mock-player .pm-sections{min-width:0}.private-mock-player .pm-section{margin-bottom:2.5rem}.private-mock-player .pm-section-heading{margin-bottom:1rem}.private-mock-player .pm-section-heading h2{margin:.4rem 0}.private-mock-player .pm-section-heading p{white-space:pre-wrap}.private-mock-player .pm-group,.private-mock-player .pm-question{margin-bottom:1rem;padding:1.3rem;scroll-margin-top:5rem}.private-mock-player .pm-group{background:var(--surface-soft)}.private-mock-player .pm-group h3{font-size:.95rem;margin:0 0 .8rem}.private-mock-player fieldset{margin:0;padding:0;border:0;min-width:0}.private-mock-player legend{margin-bottom:.7rem;padding:0;font-weight:700}.private-mock-player .pm-question-points{font-size:.85rem;font-weight:400;color:var(--muted)}.private-mock-player .pm-pending{display:inline-block;margin-bottom:.7rem;padding:.15rem .5rem;border-radius:.4rem;color:var(--warning);background:var(--warning-soft)}.private-mock-player .pm-source-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9}.private-mock-player .pm-source-text .ni-hanzi{font-size:1.15rem}.private-mock-player .pm-prompt{margin-block:.5rem 1rem}.private-mock-player .pm-image{display:block;max-width:100%;height:auto;max-height:25rem;object-fit:contain;margin:.7rem 0}.private-mock-player .pm-audio{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem;margin:1rem 0}.private-mock-player .pm-audio audio{max-width:100%;width:19rem;min-width:0}.private-mock-player .pm-audio .ni-button{font-size:.85rem}.private-mock-player .pm-media-notice{color:var(--muted);font-size:.9rem}.private-mock-player .pm-options{display:grid;grid-gap:.7rem;gap:.7rem;margin-top:1rem}.private-mock-player .pm-option{display:flex;align-items:flex-start;gap:.7rem;padding:.8rem;border:1px solid var(--border);border-radius:.65rem;cursor:pointer}.private-mock-player .pm-option input{margin-top:.4rem;flex:0 0 auto;accent-color:var(--primary,var(--accent))}.private-mock-player .pm-option strong{margin-top:.15rem}.private-mock-player .pm-option-content{min-width:0}.private-mock-player .pm-selected{border-color:var(--primary,var(--accent));background:var(--secondary,var(--accent-soft))}.private-mock-player .pm-correct-option{border-color:var(--success);box-shadow:inset 3px 0 var(--success)}.private-mock-player .pm-option:has(input:disabled){cursor:default}.private-mock-player .pm-options-images{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.private-mock-player .pm-options-images .pm-option{flex-wrap:wrap;gap:.4rem;padding:.5rem}.private-mock-player .pm-options-images .pm-option-content{flex:1 0 100%}.private-mock-player .pm-options-images .pm-image{width:100%;max-height:9rem;margin:0}.private-mock-player .pm-text-answer{display:grid;grid-gap:.6rem;gap:.6rem;margin-top:1rem;font-size:.9rem}.private-mock-player .pm-self-score input,.private-mock-player .pm-text-answer input,.private-mock-player .pm-text-answer textarea{border:1px solid var(--border);border-radius:.6rem;padding:.8rem;font:inherit;background:var(--surface);color:inherit}.private-mock-player .pm-text-answer input,.private-mock-player .pm-text-answer textarea{width:100%;box-sizing:border-box;font-size:1.2rem}.private-mock-player .pm-text-answer textarea{resize:vertical;min-height:8rem}.private-mock-player .pm-text-answer input:disabled,.private-mock-player .pm-text-answer textarea:disabled{opacity:1;-webkit-text-fill-color:currentColor;background:var(--surface-soft)}.private-mock-player .pm-feedback{margin-top:1rem;border-top:1px solid var(--border);padding-top:.7rem}.private-mock-player .pm-feedback p{margin:.4rem 0;white-space:pre-wrap;overflow-wrap:anywhere}.private-mock-player .pm-feedback-correct{color:var(--success)}.private-mock-player .pm-feedback-incorrect,.private-mock-player .pm-feedback-unanswered{color:var(--error,var(--danger))}.private-mock-player .pm-explanation,.private-mock-player .pm-self-score{margin-top:1rem;border-top:1px solid var(--border);padding-top:1rem}.private-mock-player .pm-explanation h3,.private-mock-player .pm-self-score h3{font-size:1rem;margin:0 0 .5rem}.private-mock-player .pm-self-score label{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}.private-mock-player .pm-self-score input{width:6rem}.private-mock-player .pm-self-score small{display:block;margin-top:.6rem;color:var(--muted)}.private-mock-player .pm-answer-sheet{position:-webkit-sticky;position:sticky;top:6rem}.private-mock-player .pm-answer-sheet>.ni-card{padding:1.1rem}.private-mock-player .pm-answer-sheet h2{font-size:1.1rem;margin-top:0}.private-mock-player .pm-sheet-section{margin-block:1rem}.private-mock-player .pm-sheet-section h3{font-size:.85rem;margin-bottom:.5rem}.private-mock-player .pm-sheet-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:.4rem;gap:.4rem}.private-mock-player .pm-sheet-grid a{display:grid;place-items:center;min-height:2.5rem;border:1px solid var(--border);border-radius:.4rem;text-decoration:none;color:inherit;font-size:.85rem}.private-mock-player .pm-sheet-grid .pm-sheet-filled{background:var(--primary,var(--accent));color:var(--text-on-primary,var(--accent-ink));border-color:var(--primary,var(--accent))}.private-mock-player .pm-mobile-submit{display:none}.private-mock-player :is(input,textarea,button,a):focus-visible{outline:3px solid var(--focus);outline-offset:3px}@media (max-width:850px){.private-mock-player{padding-bottom:5rem}.private-mock-player .pm-layout{grid-template-columns:minmax(0,1fr)}.private-mock-player .pm-answer-sheet{position:static}.private-mock-player .pm-mobile-submit{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:.8rem;background:var(--surface);border-top:1px solid var(--border);padding:.7rem 1rem calc(.7rem + env(safe-area-inset-bottom));box-shadow:0 -3px 16px var(--shadow-sticky);font-size:.9rem}}@media (max-width:480px){.private-mock-player .pm-group,.private-mock-player .pm-question,.private-mock-player .pm-result{padding:1rem}.private-mock-player .pm-toolbar{gap:.7rem;padding:.8rem}.private-mock-player .pm-toolbar>.ni-button{width:100%}.private-mock-player .pm-option{padding:.7rem;gap:.5rem}}@media (max-width:720px){.learning-app .private-mock-player{padding-bottom:10rem}.learning-app .private-mock-player .pm-mobile-submit{bottom:calc(70px + env(safe-area-inset-bottom, 0px));padding-bottom:.7rem}}.pm-catalog{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border)}.pm-catalog-heading{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:1rem}.pm-catalog-heading h2{margin-top:0}.pm-catalog-heading p{color:var(--muted)}.pm-catalog-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));grid-gap:1rem;gap:1rem;margin:1rem 0}.pm-catalog-grid h3{margin-top:0}.pm-catalog-actions{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:1rem}.pm-download{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin:1rem 0}.pm-download progress{max-width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:999px;background:var(--border);accent-color:var(--primary,var(--accent))}.pm-download progress::-webkit-progress-bar{background:var(--border);border-radius:999px}.pm-download progress::-webkit-progress-value{background:var(--brand-gradient);border-radius:999px}.pm-download progress::-moz-progress-bar{background:var(--brand-gradient);border-radius:999px}@media(max-width:600px){.pm-catalog-heading{display:block}.pm-catalog-heading button{margin-bottom:1rem}.pm-catalog-actions .btn{width:100%}}.question-player{display:grid;grid-gap:10px;gap:10px;padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}.question-player p{margin:0}.question-instruction{color:var(--text-secondary);font-size:.9rem}.question-zh{font-size:1.3rem}.question-pinyin{color:var(--text-secondary)}.question-blank{display:inline-block;min-width:3em;border-bottom:2px solid var(--primary);text-align:center;margin:0 2px}.question-choices{display:flex;flex-wrap:wrap;gap:8px}.question-choices img{max-width:120px;max-height:120px;display:block}.question-choices .selected{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.question-input{font:inherit;min-height:40px;padding:4px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text-primary)}.question-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.question-ok{color:var(--success);font-weight:600}.question-wrong{color:var(--error);font-weight:600}.question-explanation{color:var(--text-secondary);font-size:.9rem}.extra-practice{display:grid;grid-gap:12px;gap:12px}.stroke-animator{margin:0;display:inline-grid;gap:4px;justify-items:center}.stroke-animator svg{max-width:100%;height:auto;background:var(--surface);border:1px solid var(--border);border-radius:10px}.stroke-animator figcaption{font-size:.8rem;color:var(--text-secondary,var(--muted))}.stroke-grid{stroke:var(--border);stroke-width:3;fill:none;stroke-dasharray:12 12}.stroke-outline{fill:var(--border)}.stroke-draw{fill:none;stroke:var(--text-primary,var(--ink));stroke-width:140;stroke-linecap:round;stroke-linejoin:round;animation-name:stroke-reveal;animation-timing-function:linear;animation-fill-mode:forwards}.stroke-fill{fill:var(--text-primary,var(--ink))}.stroke-fade{opacity:0;animation-name:stroke-appear;animation-fill-mode:forwards}@keyframes stroke-reveal{to{stroke-dashoffset:0}}@keyframes stroke-appear{to{opacity:1}}@media (prefers-reduced-motion:reduce){.stroke-draw{animation:none;stroke-dashoffset:0!important}.stroke-fade{animation:none;opacity:1}}.writing-pad{margin:0;display:inline-grid;gap:6px;justify-items:center}.writing-pad svg{max-width:100%;height:auto;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:crosshair;-webkit-user-select:none;-moz-user-select:none;user-select:none}.writing-pad figcaption{font-size:.85rem;color:var(--text-secondary,var(--muted));text-align:center}.stroke-hint{fill:var(--error,var(--danger));opacity:.55}.stroke-user{fill:none;stroke:var(--primary,var(--accent));stroke-width:40;stroke-linecap:round;stroke-linejoin:round;opacity:.8}.lesson-writing{display:grid;grid-gap:10px;gap:10px}.lesson-writing-chars{display:flex;flex-wrap:wrap;gap:6px}.lesson-writing-char{min-width:48px;min-height:48px;font:inherit;font-size:1.4rem;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text-primary,var(--ink));cursor:pointer}.lesson-writing-char.selected{border-color:var(--primary,var(--accent));box-shadow:inset 0 0 0 1px var(--primary,var(--accent))}.lesson-writing-work{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}