:root{--ink:#1c2420;--ink-soft:#2e3a34;--muted:#5c6b63;--brand:#34c759;--brand-deep:#1f9d55;--brand-soft:#e9f7ee;--brand-tint:#f6faf8;--brand-rgb:31, 157, 85;--teal:var(--brand-deep);--font-display:"Fraunces", "Songti SC", "Noto Serif SC", serif;--font-body:"Figtree", "PingFang SC", "Microsoft YaHei", sans-serif;--font-en:"Figtree", system-ui, sans-serif;color:var(--ink);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f3f4f6;font-weight:400;line-height:1.5}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px}button,textarea,input{font:inherit}a{color:var(--teal)}::selection{background:color-mix(in srgb, var(--teal) 28%, transparent)}.app-nav{z-index:40;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#f5f5f7db;border-bottom:1px solid #e8eaee;position:sticky;top:0}.app-nav-inner{flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;width:100%;margin:0;padding:.7rem clamp(1rem,3vw,1.75rem);display:flex}.app-nav-brand{font-family:var(--font-display);color:var(--brand-deep);letter-spacing:-.02em;font-size:1.2rem;font-weight:700;text-decoration:none}.app-nav-tabs{background:#eceef3;border-radius:999px;align-items:center;gap:.25rem;padding:.2rem;display:flex}.app-nav-tab{text-align:center;color:#6b7280;border-radius:999px;min-width:3.6rem;padding:.35rem .95rem;font-size:.88rem;font-weight:600;text-decoration:none;transition:background .15s,color .15s,box-shadow .15s}.app-nav-tab:hover{color:#4b5563}.app-nav-tab.is-active{color:var(--brand-deep);background:#fff;box-shadow:0 1px 3px #0f172a14}.app-nav-online{background:var(--brand-soft);color:var(--brand-deep);white-space:nowrap;border-radius:999px;align-items:center;gap:.45rem;margin-left:auto;padding:.3rem .8rem;font-size:.8rem;font-weight:600;display:inline-flex}.app-nav-online-dot{background:var(--brand);width:7px;height:7px;box-shadow:0 0 0 0 rgba(var(--brand-rgb), .45);border-radius:50%;animation:2.2s ease-out infinite online-pulse}@keyframes online-pulse{0%{box-shadow:0 0 0 0 rgba(var(--brand-rgb), .45)}70%{box-shadow:0 0 0 6px rgba(var(--brand-rgb), 0)}to{box-shadow:0 0 0 0 rgba(var(--brand-rgb), 0)}}.resume-gate{z-index:60;box-sizing:border-box;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#11182747;justify-content:center;align-items:center;padding:1.5rem;animation:.2s both resume-fade;display:flex;position:fixed;inset:0}@keyframes resume-fade{0%{opacity:0}to{opacity:1}}.resume-card{text-align:center;background:#fff;border:1px solid #eceef2;border-radius:16px;width:min(24rem,100%);padding:1.75rem 1.6rem 1.4rem;animation:.28s both resume-in;box-shadow:0 18px 48px #0f172a2e}@keyframes resume-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.resume-card h2{color:#1f2937;margin:0 0 .5rem;font-size:1.15rem}.resume-card p{color:#6b7280;margin:0;font-size:.92rem}.resume-actions{justify-content:center;gap:.6rem;margin:1.35rem 0 .9rem;display:flex}.resume-btn{appearance:none;font:inherit;color:#374151;cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:999px;padding:.55rem 1.1rem;font-size:.9rem;transition:background .15s}.resume-btn:hover{background:#f9fafb}.resume-btn.primary{color:#fff;background:#1f2937;border-color:#1f2937}.resume-btn.primary:hover{background:#111827}.resume-btn kbd{font-family:var(--font-en);opacity:.8;border:1px solid #ffffff47;border-radius:4px;margin-left:.3rem;padding:.05rem .3rem;font-size:.7rem;font-weight:500}.resume-note{color:#9ca3af!important;font-size:.78rem!important}.word-board{flex-wrap:wrap;justify-content:center;align-items:stretch;gap:.85rem 1rem;padding:.5rem .25rem 1rem;display:flex}.word-col{background:#fff;border:1px solid #0f172a0a;border-radius:12px;flex-direction:column;align-items:center;gap:.45rem;min-width:5.5rem;max-width:8.5rem;padding:.7rem .85rem .75rem;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex;box-shadow:0 4px 14px #0f172a0f}.word-col.active{border-color:color-mix(in srgb, var(--accent,#2ea44f) 35%, transparent);transform:translateY(-3px);box-shadow:0 8px 20px #2ea44f24}.pos-tag{letter-spacing:.02em;white-space:nowrap;border-radius:999px;padding:.12rem .5rem;font-size:.68rem;font-weight:600;line-height:1.4}.word-text{font-family:var(--font-en);color:#1f2937;cursor:pointer;text-align:center;background:0 0;border:none;border-bottom:2px solid #e5e7eb;width:100%;padding:.15rem .1rem .2rem;font-size:clamp(1.15rem,2.6vw,1.45rem);font-weight:700;line-height:1.2}.word-text:hover{color:var(--accent,#2ea44f);border-bottom-color:var(--accent,#2ea44f)}.word-input{font-family:var(--font-en);color:#1f2937;text-align:center;width:100%;min-width:3ch;caret-color:var(--accent,#2ea44f);background:0 0;border:none;border-bottom:2px solid #d1d5db;outline:none;padding:.2rem .1rem;font-size:clamp(1.1rem,2.5vw,1.4rem);font-weight:700}.word-col.active .word-input{border-bottom-color:var(--accent,#2ea44f)}.word-col.status-correct .word-input,.word-col.status-correct .word-text{color:#2ea44f;border-bottom-color:#2ea44f}.word-col.status-wrong .word-input,.word-col.status-wrong .word-text{color:#d64545;border-bottom-color:#d64545}.word-ipa{font-family:var(--font-en);color:#9ca3af;margin-top:.1rem;font-size:.75rem;line-height:1.2}.word-zh{color:#6b7280;text-align:center;-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;max-width:100%;min-height:2.7em;font-size:.8rem;line-height:1.35;display:-webkit-box;overflow:hidden}.word-board.hide-meta .word-ipa,.word-board.hide-meta .word-zh,.word-board.hide-meta .pos-tag{display:none}.word-board.hide-meta{gap:1.1rem 1.5rem;padding:1.75rem .25rem 2.25rem}.word-board.hide-meta .word-col,.word-board.hide-meta .word-col.active{box-shadow:none;background:0 0;border:0;border-radius:0;gap:0;min-width:0;padding:.2rem 0;position:relative;transform:none}.word-board.hide-meta .word-input{box-shadow:none;background:0 0;border-bottom:3px solid #c3cbd6;border-radius:0;min-width:3.5rem;padding:.25rem .35rem .4rem;font-size:clamp(1.3rem,3vw,1.75rem)}.word-board.hide-meta .word-col.active .word-input{caret-color:#34c759;border-bottom-color:#0000}.word-board.hide-meta .word-col.active:not(.status-wrong) .word-input{color:#12833c}.word-board.hide-meta .word-col.active.status-wrong .word-input{color:#d64545;caret-color:#d64545}.word-board.hide-meta .word-col.active:after{content:"";pointer-events:none;background:linear-gradient(90deg,#6fe39b,#34c759 50%,#6fe39b);border-radius:999px;height:3px;position:absolute;bottom:.2rem;left:0;right:0;box-shadow:0 3px 6px -1px #34c759bf,0 9px 18px #34c75966}.word-board.hide-meta .word-col.active.status-wrong:after{background:linear-gradient(90deg,#ef9a9a,#d64545 50%,#ef9a9a);box-shadow:0 3px 6px -1px #d64545b3,0 9px 18px #d6454559}.word-board.hide-meta .word-col.status-correct .word-input{border-bottom-color:#2ea44f}.word-board.hide-meta .word-col.status-wrong .word-input{border-bottom-color:#d64545}.word-board.reveal{gap:1.25rem 2rem;padding:1.5rem .25rem 1.75rem}.word-board.reveal .word-col{box-shadow:none;background:0 0;border:0;gap:.45rem;max-width:11.5rem;padding:.25rem .2rem}.word-board.reveal .pos-tag{padding:.2rem .7rem;font-size:.85rem}.word-board.reveal .word-text{border-bottom-width:2px;padding-bottom:.3rem;font-size:clamp(1.5rem,3.6vw,2.1rem)}.word-board.reveal .word-ipa{color:#8b93a1;font-size:.95rem}.word-board.reveal .word-zh{color:#4b5563;font-size:1rem;line-height:1.45}@media (width<=640px){.word-board{gap:.65rem}.word-col{min-width:4.6rem;padding:.55rem .55rem .6rem}.word-zh{font-size:.72rem}}.practice{background:radial-gradient(ellipse 70% 40% at 0% 0%, color-mix(in srgb, var(--accent) 18%, transparent), transparent 55%), linear-gradient(180deg, #f4f0e8 0%, #eef3ef 100%);flex-direction:column;min-height:100vh;display:flex}.practice.missing{justify-content:center;align-items:center;gap:1rem}.practice-bar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fff6;border-bottom:1px solid #1e282414;justify-content:space-between;align-items:center;gap:1rem;padding:1rem clamp(1rem,3vw,2rem);display:flex}.back{color:var(--ink);font-family:var(--font-display);font-size:1.05rem;font-weight:600;text-decoration:none}.practice-info{color:var(--muted);flex-direction:column;align-items:center;gap:.15rem;font-size:.85rem;display:flex}.practice-info strong{color:var(--ink);font-size:.95rem}.score{font-variant-numeric:tabular-nums;color:var(--accent);text-align:right;min-width:4.5rem;font-size:.9rem;font-weight:600}.mode-tabs{box-sizing:border-box;gap:.35rem;width:100%;max-width:720px;margin:0 auto;padding:1rem clamp(1rem,3vw,2rem) 0;display:flex}.mode-tabs button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:.65rem .5rem;font-size:.88rem;transition:color .2s,border-color .2s}.mode-tabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.practice-stage{box-sizing:border-box;flex-direction:column;flex:1;gap:1.15rem;width:100%;max-width:720px;margin:0 auto;padding:1.25rem clamp(1rem,3vw,2rem) 2rem;animation:.4s both stage-in;display:flex}@keyframes stage-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.prompt-card{background:#ffffffb8;border:1px solid #1e282412;border-radius:4px;padding:1.35rem 1.4rem}.prompt-card .zh{color:var(--ink);margin:0 0 .75rem;font-size:1.15rem;line-height:1.5}.prompt-card .en{font-family:var(--font-en);color:var(--ink);margin:0;font-size:1.25rem;font-weight:500;line-height:1.55}.prompt-card .en.muted{color:var(--muted);font-style:italic;font-weight:400}.prompt-card .tip{color:var(--muted);margin:.75rem 0 0;font-size:.85rem}.audio-row{flex-wrap:wrap;gap:.6rem;margin-top:1.15rem;display:flex}.btn{font:inherit;cursor:pointer;border:none;border-radius:4px;justify-content:center;align-items:center;padding:.65rem 1.15rem;text-decoration:none;transition:transform .15s,background .2s,opacity .2s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--accent,var(--teal));color:#fff}.btn.primary:hover:not(:disabled){filter:brightness(1.06)}.btn.ghost{color:var(--ink);background:0 0;border:1px solid #1e282426}.btn.wide{width:100%;margin-top:.35rem}.type-panel,.puzzle-panel,.speak-panel{flex-direction:column;gap:.75rem;display:flex}.type-panel label,.panel-label{color:var(--muted);font-size:.88rem}.type-panel textarea{box-sizing:border-box;width:100%;font-family:var(--font-en);color:var(--ink);resize:vertical;background:#ffffffe6;border:1px solid #1e282424;border-radius:4px;outline:none;padding:.9rem 1rem;font-size:1.1rem;line-height:1.5;transition:border-color .2s,box-shadow .2s}.type-panel textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent)}.puzzle-built{background:#ffffff80;border:1px dashed #1e282433;border-radius:4px;flex-wrap:wrap;align-items:center;gap:.45rem;min-height:3.2rem;padding:.65rem;display:flex}.puzzle-built .placeholder{color:var(--muted);font-size:.9rem}.puzzle-pool{flex-wrap:wrap;gap:.45rem;min-height:2.5rem;display:flex}.word-chip{font-family:var(--font-en);cursor:pointer;color:var(--ink);background:#fff;border:1px solid #1e28241f;border-radius:4px;padding:.45rem .75rem;font-size:.95rem;transition:transform .15s,background .2s,border-color .2s}.word-chip:hover{border-color:var(--accent);transform:translateY(-1px)}.word-chip.built{background:color-mix(in srgb, var(--accent) 12%, #fff);border-color:color-mix(in srgb, var(--accent) 35%, transparent)}.speak-panel{text-align:center;align-items:center;padding:.5rem 0 .25rem}.mic-btn{background:var(--accent);color:#fff;width:8.5rem;height:8.5rem;font:inherit;cursor:pointer;box-shadow:0 10px 28px color-mix(in srgb, var(--accent) 35%, transparent);border:none;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;font-weight:600;transition:transform .2s,box-shadow .2s;display:flex}.mic-btn:hover:not(:disabled){transform:scale(1.03)}.mic-btn.listening{animation:1.2s infinite pulse}.mic-icon{opacity:.85;font-size:.65rem}@keyframes pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 45%, transparent)}50%{box-shadow:0 0 0 16px #0000}}.heard{color:var(--muted);margin:.5rem 0 0;font-size:.95rem}.heard em{font-style:normal;font-family:var(--font-en);color:var(--ink);font-weight:500}.feedback{border-radius:4px;padding:1rem 1.15rem;animation:.3s both stage-in}.feedback.correct{background:color-mix(in srgb, var(--teal) 14%, #fff);border:1px solid color-mix(in srgb, var(--teal) 30%, transparent)}.feedback.wrong{background:#f7ebef;border:1px solid #b03a5b40}.feedback strong{font-family:var(--font-display);margin-bottom:.35rem;display:block}.feedback p{color:var(--ink-soft);margin:.25rem 0;font-size:.92rem}.diff{font-family:var(--font-en);line-height:1.7}.diff .correct{color:var(--teal)}.diff .wrong{color:#b03a5b;text-decoration:line-through}.diff .missing{color:#b03a5b;border-bottom:2px solid #b03a5b}.diff .extra{color:#c45c26;opacity:.7}.answer-reveal{font-family:var(--font-en);margin-top:.5rem!important}.feedback-actions{flex-wrap:wrap;gap:.6rem;margin-top:.85rem;display:flex}.error-msg{color:#b03a5b;margin:0;font-size:.9rem}.trail{justify-content:center;gap:.4rem;padding:0 1rem 1.5rem;display:flex}.trail i{background:#1e282426;border-radius:50%;width:.45rem;height:.45rem;display:block}.trail i.done{background:var(--accent)}.trail i.now{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);transform:scale(1.35)}@media (width<=520px){.practice-bar{flex-wrap:wrap}.practice-info{order:3;width:100%;padding-top:.35rem}.mic-btn{width:7.5rem;height:7.5rem}}.practice.yutu{background:#f3f4f6}.yutu-top{background:#fff;border-bottom:1px solid #eceef2;padding:.75rem clamp(1rem,3vw,1.75rem)}.yutu-top-row{align-items:center;gap:.85rem;display:flex}.practice.yutu .back{color:#374151;background:#f2f4f7;border-radius:50%;flex:none;justify-content:center;align-items:center;width:34px;height:34px;transition:background .15s,color .15s;display:inline-flex}.practice.yutu .back svg{width:20px;height:20px;display:block}.practice.yutu .back:hover{background:rgba(var(--brand-rgb), .14);color:var(--brand-deep)}.yutu-progress{background:#e8eaee;border-radius:999px;flex:auto;min-width:4rem;height:6px;overflow:hidden}.yutu-progress i{background:#34c759;border-radius:999px;height:100%;transition:width .35s;display:block}.yutu-count{font-variant-numeric:tabular-nums;flex:0 auto;align-items:center;gap:.65rem;max-width:42%;display:flex}.yutu-count .muted{color:#4b5563;white-space:nowrap;text-overflow:ellipsis;font-size:.88rem;font-weight:500;overflow:hidden}.yutu-duration{font-variant-numeric:tabular-nums;color:#374151;white-space:nowrap;background:#f2f4f7;border:1px solid #eceef2;border-radius:999px;flex:none;align-items:center;gap:.3rem;padding:.28rem .7rem;font-size:.82rem;font-weight:600;display:inline-flex}.yutu-score-pill{color:#1f9d55;background:#eef8f0;border:2px solid #b7ebc6;border-radius:50%;flex:none;place-content:center;width:2rem;height:2rem;font-size:.95rem;font-weight:700;display:grid}.practice.yutu .mode-tabs{background:#fff;border-bottom:1px solid #eceef2;justify-content:flex-start;gap:1.25rem;width:100%;max-width:none;margin:0;padding:.35rem clamp(1rem,3vw,1.75rem) 0}.practice.yutu .mode-tabs button{color:#9ca3af;flex:none;padding:.7rem .15rem;font-size:.92rem}.practice.yutu .mode-tabs button.active{color:#1f9d55;border-bottom-color:#34c759;font-weight:600}.yutu-stage{flex:1;justify-content:center;align-items:center;gap:1.75rem;padding-top:2rem;padding-bottom:2rem;max-width:1100px!important}.yutu-prompt{justify-content:center;align-items:flex-start;gap:.75rem;width:min(720px,100%);display:flex}.yutu-play{color:#fff;cursor:pointer;background:#34c759;border:none;border-radius:50%;flex:none;place-content:center;width:2.4rem;height:2.4rem;margin-top:.15rem;font-size:.85rem;display:grid;box-shadow:0 4px 12px #34c75947}.yutu-play:disabled,.yutu-play.is-speaking{opacity:.7;cursor:default}.yutu-prompt-text{text-align:left;min-width:0}.zh-prompt{text-align:left;color:#111827;margin:0;font-size:clamp(1.45rem,3vw,1.85rem);font-weight:700;line-height:1.35}.en-hint{font-family:var(--font-en);color:#8b93a1;margin:.4rem 0 0;font-size:clamp(1.05rem,2.2vw,1.3rem);line-height:1.5}.result-line{text-align:center;margin:.25rem 0 0;font-size:.92rem}.result-line.wrong{color:#d64545}.result-line.correct{color:#1f9d55}.yutu-footer{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff0;border-top:1px solid #eceef2;flex-direction:column;gap:.75rem;padding:.85rem clamp(1rem,3vw,1.75rem) 1.15rem;display:flex;position:sticky;bottom:0}.yutu-stats{font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:center;gap:1rem 1.5rem;font-size:.9rem;display:flex}.yutu-stats .ok{color:#2ea44f;font-weight:600}.yutu-stats .bad{color:#d64545;font-weight:600}.yutu-stats .rate{color:#3b7ddd;font-weight:600}.yutu-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.55rem;display:flex}.practice.yutu .btn{border-radius:999px;padding:.55rem 1.1rem;font-size:.9rem}.practice.yutu .btn.ghost{color:#374151;background:#fff;border:1px solid #e5e7eb}.practice.yutu .btn.ghost:hover:not(:disabled){background:#f9fafb}.practice.yutu .btn.primary{color:#fff;background:#1f2937}.practice.yutu .btn.primary:hover:not(:disabled){filter:none;background:#111827}.yutu-actions kbd{font-family:var(--font-en);opacity:.8;border:1px solid #ffffff47;border-radius:4px;margin-left:.3rem;padding:.05rem .3rem;font-size:.7rem;font-weight:500}.yutu-actions .btn.ghost kbd{color:#6b7280;border-color:#d1d5db}.practice.yutu .puzzle-panel{align-items:center;gap:1.1rem;width:min(640px,100%);margin:0 auto}.practice.yutu .panel-label{color:#9ca3af;font-size:.85rem}.practice.yutu .puzzle-built{background:0 0;border:0;border-bottom:2px solid #dfe4ea;border-radius:0;justify-content:center;gap:.4rem .7rem;width:100%;min-height:4rem;padding:.5rem .5rem .9rem}.practice.yutu .puzzle-built .placeholder{color:#b6bcc5}.practice.yutu .puzzle-pool{justify-content:center;gap:.6rem;padding-top:.35rem}.practice.yutu .word-chip{color:#374151;border:1px solid #e5e7eb;border-radius:999px;padding:.55rem 1.15rem;font-size:1.12rem;font-weight:600;box-shadow:0 1px 2px #0f172a0a}.practice.yutu .word-chip:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.practice.yutu .word-chip.built{color:#1f9d55;box-shadow:none;background:0 0;border-color:#0000;padding:.2rem .4rem;font-size:clamp(1.5rem,3.6vw,2.1rem)}.practice.yutu .word-chip.built:hover{color:#d64545;transform:none}@media (width<=720px){.yutu-count .muted{display:none}.yutu-prompt{width:100%}.yutu-actions{justify-content:stretch}.yutu-actions .btn{flex:auto}}.ar-finish{text-align:center;padding-top:3rem}.ar-finish h1{font-family:var(--font-display);margin:0 0 .5rem;font-size:1.75rem}.ar-finish>p{color:var(--muted);margin:0 0 1.5rem}.ar-finish-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.ar-finish-actions .btn{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.practice.yutu.ar-practice{height:100dvh;overflow:hidden}.practice.yutu .ar-stage{justify-content:flex-start;width:100%;min-height:0;overflow-y:auto;max-width:none!important}.practice.yutu .ar-stage::-webkit-scrollbar{width:10px}.practice.yutu .ar-stage::-webkit-scrollbar-track{background:0 0}.practice.yutu .ar-stage::-webkit-scrollbar-thumb{background:#d1d5db;border:2px solid #f3f4f6;border-radius:999px}.practice.yutu .ar-stage::-webkit-scrollbar-thumb:hover{background:#9ca3af}.ar-stage .ar-work{margin:auto 0}.ar-work{flex-direction:column;align-items:center;gap:1.15rem;width:min(720px,100%);display:flex}.ar-article-board{flex-direction:column;gap:.35rem;width:min(720px,100%);display:flex}.ar-board-sentence{border:1px solid #0000;border-radius:14px;padding:.8rem 1rem .35rem;transition:background .2s,border-color .2s,box-shadow .2s,opacity .2s}.ar-board-sentence.is-para-start{border-top:1px dashed #e5e7eb;border-radius:0;margin-top:.7rem}.ar-board-sentence.is-current{background:#fff;border-color:#d8efe0;box-shadow:0 6px 18px #34c75914}.ar-board-sentence.is-done{opacity:.88}.ar-board-sentence.is-next{opacity:.45}.ar-board-zh{color:#8b93a1;text-align:center;margin:0 0 .5rem;font-size:.85rem;line-height:1.45}.ar-board-sentence.is-current .ar-board-zh{color:#374151;font-weight:600}.ar-board-sentence .word-board.hide-meta{gap:.7rem 1rem;padding-top:.6rem;padding-bottom:.8rem}.ar-board-slots{flex-wrap:wrap;justify-content:center;gap:.85rem 1rem;min-height:2.5rem;padding:.75rem .25rem 1rem;display:flex}.ar-board-slot{border-bottom:2px solid #d9dee6;height:1.7rem;display:inline-block}.ar-board-fix{flex-direction:column;gap:.5rem;display:flex}.ar-board-fix .word-board.reveal{background:#fbfdf9;border:1px dashed #cde8d3;border-radius:12px;padding:.9rem 1rem 1rem}.gallery{--g-bg:var(--brand-tint);--g-accent:var(--brand-deep);--g-accent-bright:var(--brand);--g-ink:#1f2937;--g-muted:#4b5563;background:var(--g-bg);min-height:calc(100vh - 52px);color:var(--g-ink);padding:0 0 4rem}.gallery-shell{width:min(1440px,100%);margin:0;padding:1.5rem clamp(1rem,4vw,5rem) 0}.gallery-groups{flex-direction:column;align-items:flex-start;gap:3.5rem;display:flex}.gallery-block{width:100%}.gallery-tags{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.gallery-tag{appearance:none;cursor:pointer;white-space:nowrap;font:inherit;color:#4b5563;background:#fff;border:none;border-radius:3rem;padding:.5rem 1rem;font-size:.95rem;font-weight:400;transition:background .15s,color .15s}.gallery-tag:hover{background:var(--brand-soft)}.gallery-tag.is-active{background:var(--g-accent);color:#fff}span.gallery-tag{cursor:default}.gallery-grid{grid-template-columns:repeat(1,max-content);justify-content:start;gap:2.5rem 1.25rem;margin-top:2rem;padding:0 .25rem 1rem;display:grid}@media (width>=768px){.gallery-grid{grid-template-columns:repeat(2,max-content)}}@media (width>=1100px){.gallery-grid{grid-template-columns:repeat(3,max-content)}}@media (width>=1440px){.gallery-grid{grid-template-columns:repeat(4,max-content)}}.gallery-empty{color:#6b7280;grid-column:1/-1;margin:0}.entry-card{width:20rem;height:9rem;box-shadow:0 1px 2px #0f172a0a, 0 8px 18px -8px rgba(var(--brand-rgb), .18);font:inherit;text-align:left;cursor:pointer;color:inherit;background:#fbfcfb;border:none;border-radius:.5rem;padding:1rem;text-decoration:none;transition:background .18s,box-shadow .18s,transform .18s;display:block;position:relative;overflow:hidden}.entry-card:hover{box-shadow:0 2px 4px #0f172a0d, 0 12px 24px -10px rgba(var(--brand-rgb), .28);background:#fff;transform:translateY(-2px)}.entry-card:hover .entry-card-body h3{color:var(--g-accent)}.entry-card.is-selected{background:linear-gradient(135deg, var(--g-accent-bright) 0%, var(--g-accent) 100%);color:#fff;box-shadow:0 4px 6px rgba(var(--brand-rgb), .2), 0 12px 22px -8px rgba(var(--brand-rgb), .45)}.entry-card.is-selected:hover{background:linear-gradient(135deg, var(--g-accent-bright) 0%, var(--g-accent) 100%);transform:translateY(-2px)}.entry-card.is-selected .entry-card-body h3,.entry-card.is-selected .entry-card-body strong,.entry-card.is-selected:hover .entry-card-body h3{color:#fff}.entry-card.is-selected .entry-card-body p{color:#ffffffe6}.entry-card-body{z-index:1;flex-direction:column;align-items:flex-start;height:100%;padding:.25rem 0 0 .15rem;display:flex;position:relative}.entry-card-body h3{color:#1f2937;white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:14.5rem;margin:0 0 .35rem;font-size:1.12rem;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.entry-card-body p{color:#6b7280;white-space:nowrap;text-overflow:ellipsis;max-width:100%;margin:0 0 .25rem;font-size:.85rem;overflow:hidden}.entry-card-body strong{color:var(--g-accent);margin-top:auto;font-size:.82rem;font-weight:650}.entry-card.is-import{box-shadow:none;color:var(--g-muted);background:0 0;border:1.5px dashed #c9d3cc;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;display:flex}.entry-card.is-import:hover{background:rgba(var(--brand-rgb), .06);border-color:var(--g-accent-bright);color:var(--g-accent);box-shadow:none}.import-plus{font-size:1.6rem;font-weight:300;line-height:1}.import-label{font-size:.92rem;font-weight:500}.entry-card-wrap{width:max-content;position:relative}.entry-delete{z-index:2;appearance:none;cursor:pointer;color:#9ca3af;opacity:0;background:#ffffffe6;border:none;border-radius:50%;width:1.6rem;height:1.6rem;font-size:.7rem;line-height:1;transition:opacity .15s,color .15s,background .15s;position:absolute;bottom:.5rem;right:.5rem}.entry-card-wrap:hover .entry-delete,.entry-delete:focus-visible{opacity:1}.entry-delete:hover{color:#d64545;background:#fee2e2}.entry-cover{opacity:.28;filter:saturate(1.05);pointer-events:none;width:4rem;height:auto;position:absolute;top:.75rem;right:.75rem}.entry-card.is-selected .entry-cover{opacity:.55}.import-mask{z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a59;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.import-dialog{background:#fff;border-radius:.75rem;flex-direction:column;gap:1rem;width:min(38rem,100%);max-height:calc(100vh - 3rem);padding:1.25rem 1.5rem 1.5rem;display:flex;overflow-y:auto;box-shadow:0 24px 48px -12px #0f172a4d}.import-head{justify-content:space-between;align-items:center;display:flex}.import-head h2{color:#1f2937;margin:0;font-size:1.15rem;font-weight:650}.import-close{appearance:none;cursor:pointer;color:#9ca3af;background:0 0;border:none;border-radius:.35rem;padding:.25rem .4rem;font-size:1rem}.import-close:hover{color:#4b5563;background:#f3f4f6}.import-field{flex-direction:column;gap:.4rem;display:flex}.import-field>span{color:#4b5563;align-items:center;gap:.75rem;font-size:.85rem;font-weight:600;display:flex}.import-link{appearance:none;cursor:pointer;font:inherit;color:var(--brand-deep);background:0 0;border:none;padding:0;font-size:.82rem;font-weight:500}.import-link:hover{text-decoration:underline}.import-cats{flex-wrap:wrap;gap:.5rem;display:flex}.import-cat{appearance:none;cursor:pointer;white-space:nowrap;font:inherit;color:#4b5563;background:#fff;border:1px solid #e5e7eb;border-radius:3rem;align-items:center;gap:.15rem;padding:.4rem .9rem;font-size:.88rem;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.import-cat-name{appearance:none;cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;padding:0}.import-cat-act{appearance:none;cursor:pointer;color:#ffffffd9;background:#fff3;border:none;border-radius:50%;place-items:center;width:1.15rem;height:1.15rem;margin-left:.2rem;font-size:.7rem;line-height:1;display:grid}.import-cat-act:hover{color:var(--brand-deep);background:#ffffffe6}.import-field input.import-cat-input{box-sizing:border-box;border:1px solid var(--brand);width:7rem;font:inherit;color:#1f2937;background:#fff;border-radius:3rem;outline:none;padding:.4rem .9rem;font-size:.88rem}.import-cat:hover{background:var(--brand-soft);border-color:var(--brand-soft)}.import-cat.is-active{background:var(--brand);border-color:var(--brand);color:#fff}.import-cat.is-new{border-style:dashed}.import-cat:focus-visible{box-shadow:0 0 0 3px rgba(var(--brand-rgb), .2);outline:none}.import-field input,.import-field textarea{box-sizing:border-box;width:100%;font:inherit;color:#1f2937;background:#fbfcfb;border:1px solid #e5e7eb;border-radius:.5rem;padding:.6rem .75rem;font-size:.92rem;transition:border-color .15s,box-shadow .15s}.import-field textarea{resize:vertical;min-height:9rem;line-height:1.6}.import-field input:focus,.import-field textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(var(--brand-rgb), .15);outline:none}.import-hint{color:#6b7280;margin:-.35rem 0 0;font-size:.8rem;line-height:1.6}.import-hint code{color:#374151;background:#f3f4f6;border-radius:.25rem;padding:.05rem .3rem;font-size:.78rem}.import-error{color:#d64545;margin:0;font-size:.82rem}.import-preview{background:var(--brand-tint);border-radius:.5rem;padding:.75rem .9rem}.import-preview strong{color:var(--brand-deep);font-size:.85rem}.import-preview ul{flex-direction:column;gap:.3rem;margin:.5rem 0 0;padding-left:1.1rem;display:flex}.import-preview li{color:#374151;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.import-more{color:#6b7280;margin-top:.4rem;font-size:.78rem;display:inline-block}.import-actions{justify-content:flex-end;gap:.75rem;display:flex}.import-btn{appearance:none;cursor:pointer;font:inherit;border:none;border-radius:.5rem;padding:.55rem 1.4rem;font-size:.92rem;font-weight:600;transition:background .15s,opacity .15s}.import-btn.ghost{color:#4b5563;background:#f3f4f6}.import-btn.ghost:hover{background:#e5e7eb}.import-btn.primary{background:var(--brand);color:#fff}.import-btn.primary:hover:not(:disabled){background:var(--brand-deep)}.import-btn.primary:disabled{opacity:.45;cursor:not-allowed}.wp{color:#1f2937;background:#f3f4f6;flex-direction:column;min-height:100vh;display:flex}.wp-notice{text-align:center;justify-content:center;align-items:center;gap:1rem}.wp-notice p{color:#4b5563;margin:0;font-size:1.05rem}.wp-notice-actions{gap:.6rem;display:flex}.wp-top{background:#fff;border-bottom:1px solid #eceef2;padding:.75rem clamp(1rem,3vw,1.75rem)}.wp-top-row{align-items:center;gap:.85rem;display:flex}.wp-back{color:#374151;background:#f2f4f7;border-radius:50%;flex:none;justify-content:center;align-items:center;width:34px;height:34px;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.wp-back svg{width:20px;height:20px;display:block}.wp-back:hover{color:#1f9d55;background:#e7f7ec}.wp-progress{background:#e8eaee;border-radius:999px;flex:auto;min-width:4rem;height:6px;overflow:hidden}.wp-progress i{background:#34c759;border-radius:999px;height:100%;transition:width .35s;display:block}.wp-count{font-variant-numeric:tabular-nums;flex:0 auto;align-items:center;gap:.65rem;max-width:42%;display:flex}.wp-count .muted{color:#4b5563;white-space:nowrap;text-overflow:ellipsis;font-size:.88rem;font-weight:500;overflow:hidden}.wp-count-num{color:#1f9d55;white-space:nowrap;background:#eef8f0;border:1px solid #cdebd7;border-radius:999px;flex:none;padding:.2rem .6rem;font-size:.82rem;font-weight:700}.wp-duration{font-variant-numeric:tabular-nums;color:#374151;white-space:nowrap;background:#f2f4f7;border:1px solid #eceef2;border-radius:999px;flex:none;align-items:center;gap:.3rem;padding:.28rem .7rem;font-size:.82rem;font-weight:600;display:inline-flex}.wp-tabs{background:#fff;border-bottom:1px solid #eceef2;align-items:center;padding:.35rem clamp(1rem,3vw,1.75rem) 0;display:flex}.wp-tablist{align-items:center;gap:1.25rem;display:flex}.wp-tablist button{font:inherit;color:#9ca3af;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:none;padding:.7rem .15rem;font-size:.92rem;transition:color .2s,border-color .2s}.wp-tablist button.is-active{color:#1f9d55;border-bottom-color:#34c759;font-weight:600}.wp-switch{appearance:none;font:inherit;color:#9ca3af;cursor:pointer;background:0 0;border:0;align-items:center;gap:.45rem;margin-bottom:.35rem;margin-left:auto;padding:.35rem .5rem;font-size:.82rem;transition:color .15s;display:inline-flex}.wp-switch.is-on{color:#1f9d55}.wp-switch-track{box-sizing:border-box;background:#d7dbe0;border-radius:999px;width:2rem;height:1.1rem;padding:2px;transition:background .18s}.wp-switch-track i{background:#fff;border-radius:50%;width:.85rem;height:.85rem;transition:transform .18s;display:block;box-shadow:0 1px 2px #0f172a33}.wp-switch.is-on .wp-switch-track{background:#34c759}.wp-switch.is-on .wp-switch-track i{transform:translate(.9rem)}.wp-switch:focus-visible{outline-offset:2px;border-radius:999px;outline:2px solid #34c759}.wp-stage{text-align:center;cursor:text;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.35rem;padding:2rem clamp(1rem,3vw,1.75rem) 3rem;animation:.35s both wp-in;display:flex;position:relative}@keyframes wp-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.wp-trans{color:#111827;max-width:32rem;margin:0;font-size:clamp(1.35rem,3vw,1.75rem);font-weight:700;line-height:1.35}.wp-phone{min-height:1.2em;font-family:var(--font-en);letter-spacing:.01em;color:#8b93a1;margin:.5rem 0 0;font-size:clamp(1.05rem,2.2vw,1.25rem)}.wp-word{font-family:var(--font-en);flex-wrap:wrap;justify-content:center;gap:.15em;margin:2.25rem 0 0;font-size:clamp(2.1rem,6.5vw,3.2rem);font-weight:700;line-height:1.25;display:flex}.wp-letter{border-bottom:3px solid #e2e5ea;min-width:.62em;padding:0 .04em .12em;transition:color .12s,border-color .12s}.wp-letter.is-todo{color:#d5d9df}.wp-letter.is-ok{color:#1f9d55;border-bottom-color:#b7ebc6}.wp-letter.is-bad{color:#d64545;border-bottom-color:#f3bdbd}.wp-letter.is-active{border-bottom-color:#34c759;animation:1s step-end infinite wp-caret}@keyframes wp-caret{50%{border-bottom-color:#e2e5ea}}.wp-chips{flex-wrap:wrap;justify-content:center;gap:.6rem;max-width:min(640px,100%);margin-top:1.6rem;display:flex}.wp-chip{appearance:none;font:inherit;font-family:var(--font-en);color:#374151;cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:999px;min-width:2.9rem;padding:.6rem .75rem;font-size:1.35rem;font-weight:600;line-height:1;transition:transform .15s,border-color .15s,color .15s;box-shadow:0 1px 2px #0f172a0a}.wp-chip:hover:not(:disabled){color:#1f9d55;border-color:#34c759;transform:translateY(-1px)}.wp-chip.is-used{opacity:.25;cursor:default;box-shadow:none}.wp-speak{flex-direction:column;align-items:center;gap:.75rem;margin-top:1.6rem;display:flex}.wp-mic{appearance:none;color:#fff;width:7.5rem;height:7.5rem;font:inherit;cursor:pointer;background:#34c759;border:0;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;font-size:.95rem;font-weight:600;transition:transform .2s,box-shadow .2s;display:flex;box-shadow:0 10px 24px #34c75947}.wp-mic span{opacity:.85;font-size:.65rem}.wp-mic:hover:not(:disabled){transform:scale(1.03)}.wp-mic:disabled{box-shadow:none;cursor:not-allowed;background:#c8cdd4}.wp-mic.is-listening{animation:1.2s infinite wp-pulse}@keyframes wp-pulse{0%,to{box-shadow:0 0 #34c75973}50%{box-shadow:0 0 0 16px #34c75900}}.wp-heard{color:#6b7280;margin:0;font-size:.95rem}.wp-heard em{font-style:normal;font-family:var(--font-en);color:#1f2937;font-weight:500}.wp-btn.is-peeking{color:#1f9d55;background:#f2fbf5;border-color:#b7ebc6}.wp-word.is-reading .wp-letter.is-todo{color:#1f2937}.wp-word.is-rejected .wp-letter.is-todo{color:#e08585;border-bottom-color:#f3bdbd}.wp-word.is-done .wp-letter{border-bottom-color:#34c759}.wp-word.is-wrong{animation:.18s wp-shake}@keyframes wp-shake{0%,to{transform:translate(0)}35%{transform:translate(-5px)}70%{transform:translate(5px)}}.wp-tip{color:#9ca3af;min-height:1.3em;margin:1.1rem 0 0;font-size:.85rem}.wp-tip.is-ok{color:#1f9d55;font-weight:600}.wp-tip.is-bad{color:#d64545}.wp-input{opacity:0;pointer-events:none;border:0;width:1px;height:1px;padding:0;position:absolute}.wp-footer{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff0;border-top:1px solid #eceef2;padding:.85rem clamp(1rem,3vw,1.75rem) 1.15rem;position:sticky;bottom:0}.wp-actions{flex-wrap:wrap;justify-content:center;gap:.55rem;display:flex}.wp-btn{appearance:none;font:inherit;cursor:pointer;color:#374151;background:#fff;border:1px solid #e5e7eb;border-radius:999px;padding:.55rem 1.1rem;font-size:.9rem;text-decoration:none;transition:background .15s,border-color .15s,color .15s}.wp-btn:hover:not(:disabled){background:#f9fafb}.wp-btn:active:not(:disabled){transform:scale(.98)}.wp-btn:disabled{opacity:.55;cursor:not-allowed}.wp-btn.primary{color:#fff;background:#1f2937;border-color:#1f2937}.wp-btn.primary:hover:not(:disabled){color:#fff;background:#111827;border-color:#111827}.wp-btn.primary kbd{color:#ffffffd9;border-color:#ffffff4d}.wp-btn kbd{font-family:var(--font-en);opacity:.8;color:#6b7280;border:1px solid #d1d5db;border-radius:4px;margin-left:.3rem;padding:.05rem .3rem;font-size:.7rem;font-weight:500}@media (width<=720px){.wp-count .muted{display:none}.wp-actions .wp-btn{flex:auto}}
