:root{--brand: #1cb0f6;--brand-deep: #1492d6;--brand-dim: #9fdcff;--brand-soft: #ddf2ff;--brand-ink: #0b6fa6;--good: #58cc02;--good-deep: #58a700;--good-soft: #d8f7b5;--again: #ff4b4b;--again-deep: #e23b3b;--again-soft: #ffe0e1;--hard: #ff9600;--hard-soft: #ffe9cc;--gold: #ffc800;--gold-deep: #e0a800;--bg: #f1f7fd;--surface: #ffffff;--surface-2: #eef4fb;--line: #e3ebf3;--line-strong: #d6e0ea;--text: #2b3b4e;--muted: #8794a6;--radius: 20px;--radius-sm: 14px;--shadow: 0 10px 26px rgba(26, 86, 148, .1);--shadow-card: 0 2px 0 var(--line-strong);--font-en: "Times New Roman", Times, "Liberation Serif", serif;--font-cn: "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;--font-body: "Times New Roman", Times, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", serif;--font-display: "Times New Roman", Times, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", serif;font-family:var(--font-body)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-weight:500;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}.app{max-width:520px;margin:0 auto;min-height:100%;min-height:100dvh;display:flex;flex-direction:column;background:transparent;position:relative;z-index:1}body{background:radial-gradient(1200px 600px at 8% -10%,rgba(28,176,246,.16),transparent 60%),radial-gradient(900px 520px at 110% 4%,rgba(124,92,255,.1),transparent 55%),radial-gradient(820px 560px at 50% 118%,rgba(88,204,2,.08),transparent 62%),var(--bg);background-attachment:fixed}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:radial-gradient(rgba(28,130,220,.05) 1px,transparent 1.5px);background-size:24px 24px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;background:#ffffffd1;-webkit-backdrop-filter:blur(12px) saturate(1.1);backdrop-filter:blur(12px) saturate(1.1)}.brand{font-family:var(--font-display);font-weight:800;font-size:19px;letter-spacing:.2px;color:var(--text)}.brand .spark{background:linear-gradient(90deg,#1cb0f6,#6a8bff);-webkit-background-clip:text;background-clip:text;color:transparent}.lib-pill{font-size:12px;font-weight:700;color:var(--brand-ink);background:var(--brand-soft);border:1.5px solid var(--brand-dim);border-radius:999px;padding:5px 12px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content{flex:1;padding:18px;padding-bottom:calc(94px + env(safe-area-inset-bottom))}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:520px;display:flex;border-top:1px solid var(--line);background:#fffffff0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding-bottom:env(safe-area-inset-bottom)}.tabbar button{flex:1;background:none;border:none;color:var(--muted);padding:10px 0 13px;font-size:11px;font-weight:800;font-family:var(--font-body);display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;transition:color .15s,transform .1s}.tabbar button .ico{font-size:21px;transition:transform .18s cubic-bezier(.34,1.56,.64,1)}.tabbar button.active{color:var(--brand)}.tabbar button.active .ico{transform:translateY(-2px) scale(1.12)}.card{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:14px;box-shadow:var(--shadow-card)}.muted{color:var(--muted)}.small{font-size:13px}.row{display:flex;gap:10px;align-items:center}.between{justify-content:space-between}.wrap{flex-wrap:wrap}h1{font-family:var(--font-display);font-weight:800;font-size:25px;margin:4px 0 16px;letter-spacing:.2px}h2{font-family:var(--font-display);font-weight:800;font-size:18px;margin:0 0 12px}button.btn{background:var(--brand);color:#fff;border:none;border-radius:var(--radius-sm);padding:15px 18px;font-size:16px;font-weight:800;font-family:var(--font-body);letter-spacing:.3px;cursor:pointer;width:100%;box-shadow:0 4px 0 var(--brand-deep);transition:transform .06s ease,box-shadow .06s ease,filter .15s}button.btn:hover{filter:brightness(1.04)}button.btn:active{transform:translateY(4px);box-shadow:0 0 0 var(--brand-deep)}button.btn:disabled{background:#c4d2df;box-shadow:0 4px #aebccb;color:#fff;cursor:not-allowed;filter:none}button.btn.ghost{background:var(--surface);color:var(--brand-ink);border:2px solid var(--line-strong);box-shadow:0 4px 0 var(--line-strong)}button.btn.ghost:active{transform:translateY(4px);box-shadow:0 0 0 var(--line-strong)}button.btn.sm{padding:10px 16px;font-size:14px;width:auto;box-shadow:0 3px 0 var(--brand-deep)}button.btn.sm:active{transform:translateY(3px);box-shadow:0 0 0 var(--brand-deep)}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:14px}.stat{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:14px 14px 13px;box-shadow:var(--shadow-card)}.stat .num{font-family:var(--font-display);font-size:28px;font-weight:800;line-height:1.05;color:var(--text)}.stat .lbl{font-size:12px;font-weight:700;color:var(--muted);margin-top:3px}.stat .num.brand{color:var(--brand)}.bar{height:10px;border-radius:10px;background:var(--surface-2);overflow:hidden;margin-top:8px}.bar>span{display:block;height:100%;background:var(--brand);border-radius:10px}.session-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.progress-line{flex:1;height:16px;background:#e6eef6;border-radius:999px;margin:0 12px;overflow:hidden;position:relative;box-shadow:inset 0 1px 2px #0000000d}.progress-line>span{display:block;height:100%;border-radius:999px;background:linear-gradient(180deg,#7fd0ff,var(--brand));transition:width .45s cubic-bezier(.22,1,.36,1);position:relative}.progress-line>span:after{content:"";position:absolute;left:6px;right:6px;top:3px;height:4px;border-radius:4px;background:#ffffff73}.x-btn{background:none;border:none;color:var(--muted);font-size:24px;cursor:pointer;line-height:1;font-weight:700}.x-btn:active{transform:scale(.9)}.study-card{text-align:center;padding:26px 18px}.headword{font-family:var(--font-display);font-size:42px;font-weight:800;letter-spacing:.4px;color:var(--text)}.headword.small{font-size:30px}.phonetic{color:var(--muted);margin-top:6px;font-size:16px;font-weight:700}.pos-tag{display:inline-block;font-size:12px;font-weight:800;color:var(--brand-ink);border:1.5px solid var(--brand-dim);background:var(--brand-soft);border-radius:8px;padding:1px 8px;margin-bottom:8px}.meaning-big{font-size:22px;font-weight:700;margin:14px 0}.mnemonic{text-align:left;background:var(--brand-soft);border:1.5px solid var(--brand-dim);border-radius:var(--radius-sm);padding:14px;margin-top:14px;font-size:15px;line-height:1.6}.mnemonic .tag{font-size:11px;font-weight:800;color:var(--hard);display:block;margin-bottom:6px;letter-spacing:.5px}.mnemonic details{margin-top:10px}.mnemonic summary{cursor:pointer;color:var(--brand-ink);font-size:13px;font-weight:700}.mnemonic details p{margin:8px 0 0;color:var(--muted)}.mnemonic .mfull{margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.6}.speak-btn{background:var(--brand);color:#fff;border:none;border-radius:50%;width:66px;height:66px;font-size:28px;cursor:pointer;margin:8px 0;box-shadow:0 4px 0 var(--brand-deep);transition:transform .06s,box-shadow .06s}.speak-btn:active{transform:translateY(4px);box-shadow:0 0 0 var(--brand-deep)}.prompt-q{font-family:var(--font-display);font-size:27px;font-weight:800;text-align:center;margin:8px 0 22px;min-height:36px}.options{display:flex;flex-direction:column;gap:11px}.opt{text-align:left;background:var(--surface);border:2px solid var(--line-strong);border-radius:var(--radius-sm);padding:15px 16px;font-size:16.5px;font-weight:500;color:var(--text);cursor:pointer;box-shadow:0 2px 0 var(--line-strong);transition:border-color .12s,background .12s,transform .06s,box-shadow .06s}.opt:hover{border-color:var(--brand-dim);background:var(--brand-soft)}.opt:active{transform:translateY(2px);box-shadow:0 0 0 var(--line-strong)}.opt.correct{border-color:var(--good);background:var(--good-soft);color:var(--good-deep);box-shadow:0 2px 0 var(--good-deep);animation:pop .42s cubic-bezier(.18,.89,.32,1.4)}.opt.wrong{border-color:var(--again);background:var(--again-soft);color:var(--again-deep);box-shadow:0 2px 0 var(--again-deep);animation:shake .4s}.opt:disabled{cursor:default}.spell-input{width:100%;font-size:22px;text-align:center;letter-spacing:2px;font-weight:700;padding:14px;border-radius:var(--radius-sm);border:2px solid var(--line-strong);background:var(--surface);color:var(--text);font-family:var(--font-display)}.spell-input:focus{outline:none;border-color:var(--brand)}.spell-input.correct{border-color:var(--good)}.spell-input.wrong{border-color:var(--again)}.text-input{width:100%;font-size:16px;font-weight:700;padding:13px 14px;border-radius:var(--radius-sm);border:2px solid var(--line-strong);background:var(--surface);color:var(--text);font-family:var(--font-body)}.text-input:focus{outline:none;border-color:var(--brand)}.fb{text-align:center;padding:10px 0}.fb .verdict{font-family:var(--font-display);font-size:21px;font-weight:800;margin-bottom:4px}.fb .verdict.good{color:var(--good-deep)}.fb .verdict.hard{color:var(--hard)}.fb .verdict.again{color:var(--again)}.fb .verdict.soft{color:var(--brand-ink)}.fb .answer-en{font-family:var(--font-display);font-size:32px;font-weight:800;margin:8px 0 2px}.chip{display:inline-block;font-size:12px;font-weight:800;padding:4px 11px;border-radius:999px;background:var(--surface-2);color:var(--muted);margin:4px 4px 0}.chip.book{color:var(--again);background:var(--again-soft);border:1.5px solid rgba(255,75,75,.35)}.fb{border-radius:var(--radius)}.dropzone{border:2.5px dashed var(--brand-dim);border-radius:var(--radius);padding:26px 18px;text-align:center;cursor:pointer;background:var(--brand-soft);transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.drag{border-color:var(--brand);background:#cfeaff}.map-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:10px}.map-table td{padding:6px 8px;border-bottom:1px solid var(--line)}.map-table td:first-child{color:var(--muted);width:40%}.ok{color:var(--good-deep);font-weight:800}.miss{color:var(--again);font-weight:800}.warn-box{background:var(--hard-soft);border:1.5px solid rgba(255,150,0,.4);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;font-weight:700;margin-top:10px}.lib-item{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}.lib-item:last-child{border-bottom:none}.lib-item .nm{font-weight:800}.lib-item.active .nm{color:var(--brand)}.field{margin-bottom:18px}.field label{display:block;font-size:13px;font-weight:700;color:var(--muted);margin-bottom:8px}.seg{display:flex;gap:8px;flex-wrap:wrap}.seg button{background:var(--surface);border:2px solid var(--line-strong);color:var(--text);border-radius:12px;padding:9px 15px;cursor:pointer;font-size:14px;font-weight:800;font-family:var(--font-body);box-shadow:0 2px 0 var(--line-strong);transition:transform .06s,box-shadow .06s,border-color .12s,color .12s,background .12s}.seg button:active{transform:translateY(2px);box-shadow:0 0 0 var(--line-strong)}.seg button.on{border-color:var(--brand);color:var(--brand-ink);background:var(--brand-soft);box-shadow:0 2px 0 var(--brand-dim)}input[type=range]{width:100%;accent-color:var(--brand)}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0}.empty{text-align:center;color:var(--muted);padding:50px 20px;font-weight:700}.empty .big{font-size:48px;margin-bottom:12px}.basic-row{display:block;width:100%;text-align:left;background:var(--surface);border:1.5px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:10px;cursor:pointer;box-shadow:0 2px 0 var(--line-strong)}.basic-row:active{transform:translateY(2px);box-shadow:0 0 0 var(--line-strong)}.basic-row-top{display:flex;align-items:baseline;gap:10px}.basic-label{font-family:var(--font-display);font-weight:800;font-size:18px;color:var(--brand-ink);white-space:nowrap}.basic-mean{flex:1;font-size:14px;font-weight:600;color:var(--text)}.basic-check{color:var(--good-deep);font-weight:800;font-size:16px}.basic-pct{font-size:12px;font-weight:800;color:var(--muted);width:40px;text-align:right;flex-shrink:0}.practice-card{border:1.5px solid var(--line)}.practice-card.soon{opacity:.65}.reading-passage{font-size:16px;line-height:1.85;color:var(--text);font-weight:500}.lp-passage{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.lp-word{border-radius:4px;padding:0 1px;cursor:pointer;transition:background .12s}.lp-word:active{background:#1cb0f62e}.lp-word.booked{background:#fff2bf;box-shadow:inset 0 -2px #f6c948}.reading-toast{position:fixed;left:50%;bottom:88px;transform:translate(-50%);background:#11181ce6;color:#fff;padding:9px 18px;border-radius:22px;font-size:14px;font-weight:600;z-index:60;max-width:86%;text-align:center;box-shadow:0 6px 20px #00000040;animation:toastIn .18s ease}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.reading-cn{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-strong);font-size:14px;color:var(--muted);line-height:1.7}.boot{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;padding:24px}.boot-bar{width:min(280px,70vw);height:12px;border-radius:999px;background:var(--surface-2);overflow:hidden;margin-top:24px;box-shadow:inset 0 1px 2px #0000000f}.boot-bar>span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7fd0ff,var(--brand));transition:width .3s ease}.boot-text{margin-top:12px;font-size:13px;font-weight:700;color:var(--muted)}.mbar{position:relative;flex:1;height:10px;border-radius:10px;background:var(--surface-2);overflow:hidden}.mbar.big{height:16px;border-radius:12px;box-shadow:inset 0 1px 2px #0000000d}.mbar>span{position:absolute;left:0;top:0;display:block;height:100%;border-radius:10px;background:var(--brand);transition:width .8s cubic-bezier(.22,1,.36,1)}.mbar.big>span{background:linear-gradient(90deg,#5cc1ff,var(--brand))}.mbar>span.good{background:var(--good)}.mbar.big>span.good{background:linear-gradient(90deg,#7ee03f,var(--good))}.mbar>span.mid{background:var(--hard)}.mbar.big>span.mid{background:linear-gradient(90deg,#ffb84d,var(--hard))}.mbar>span.low{background:var(--again)}.gain-badge{font-family:var(--font-display);text-align:center;font-size:32px;font-weight:800;color:var(--good-deep);margin:6px 0 2px;letter-spacing:.5px;transform-origin:center;animation:gain-pop .55s cubic-bezier(.18,.89,.32,1.4) both}@keyframes gain-pop{0%{opacity:0;transform:scale(.3) translateY(8px)}60%{opacity:1;transform:scale(1.2) translateY(0)}to{opacity:1;transform:scale(1)}}.mastery-pct{font-family:var(--font-display);font-size:22px;font-weight:800}.tier-hint{margin-top:10px;font-size:13px;font-weight:700;color:var(--brand-ink);background:var(--brand-soft);border-radius:10px;padding:9px 11px}.sentence-cn{margin:10px 0 4px;background:var(--surface-2);border-radius:12px;padding:10px 12px;text-align:left}.sentence-cn .en{font-size:15px;color:var(--text);line-height:1.5;font-weight:700}.sentence-cn .cn{font-size:14px;color:var(--muted);margin-top:4px}.ai-tag{display:inline-block;margin-left:6px;font-size:11px;font-weight:800;color:var(--hard);border:1.5px solid rgba(255,150,0,.4);background:var(--hard-soft);border-radius:7px;padding:0 6px;vertical-align:middle}.combo-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-display);font-weight:800;font-size:15px;color:#8a5a00;background:linear-gradient(180deg,#ffe08a,var(--gold));border:2px solid var(--gold-deep);border-radius:999px;padding:5px 14px;margin:0 auto 4px;box-shadow:0 3px 0 var(--gold-deep);animation:combo-pop .4s cubic-bezier(.18,.89,.32,1.5) both}@keyframes combo-pop{0%{transform:scale(.4) rotate(-8deg);opacity:0}60%{transform:scale(1.15) rotate(3deg);opacity:1}to{transform:scale(1) rotate(0)}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:60;overflow:hidden}.confetti i{position:absolute;top:-14px;width:9px;height:14px;border-radius:2px;opacity:0;animation:confetti-fall 1.5s linear forwards}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:.9;transform:translateY(108vh) rotate(760deg)}}.studied-row{padding:12px 2px;border-bottom:1px solid var(--line)}.studied-row:last-child{border-bottom:none}.sl-word{font-family:var(--font-display);font-size:19px;font-weight:700}.sl-pct{font-family:var(--font-display);font-weight:800;font-size:16px}.sl-pct.good{color:var(--good-deep)}.sl-pct.mid{color:var(--hard)}.sl-pct.low{color:var(--again)}.sl-mean{font-size:15px;color:var(--text)}.sl-mnem{font-size:13px;color:var(--muted);line-height:1.5;background:var(--surface-2);border-radius:8px;padding:6px 10px}.sl-meta{font-size:12px;color:var(--muted)}.sl-mask{display:inline-block;background:var(--surface-2);color:var(--muted);border:1.5px dashed var(--line-strong);border-radius:8px;padding:4px 14px;font-size:13px;font-weight:700;cursor:pointer}.sl-mask:active{background:var(--brand-soft)}.detail-link{display:inline-flex;align-items:center;gap:4px;margin-top:10px;font-size:13px;font-weight:700;color:#fff;background:var(--brand);border:none;border-radius:999px;padding:7px 14px;cursor:pointer;box-shadow:0 3px 0 var(--brand-deep);transition:transform .06s,box-shadow .06s,filter .15s}.detail-link:hover{filter:brightness(1.05)}.detail-link:active{transform:translateY(3px);box-shadow:0 0 0 var(--brand-deep)}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#142d4b6b;display:flex;align-items:flex-end;justify-content:center;animation:sheet-fade .18s ease both;padding-bottom:env(safe-area-inset-bottom)}.sheet{width:100%;max-width:520px;max-height:88vh;overflow-y:auto;background:var(--surface);border-radius:22px 22px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -10px 40px #142d4b2e;animation:sheet-up .26s cubic-bezier(.22,1,.36,1) both}@media (min-width: 700px){.sheet-overlay{align-items:center}.sheet{border-radius:22px;max-height:82vh}}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#142d4b6b;display:flex;align-items:center;justify-content:center;padding:20px;padding-top:max(20px,env(safe-area-inset-top));padding-bottom:max(20px,env(safe-area-inset-bottom));animation:sheet-fade .18s ease both}.modal{width:100%;max-width:440px;max-height:86vh;overflow-y:auto;background:var(--surface);border-radius:22px;padding:22px 20px;box-shadow:0 20px 60px #142d4b47;animation:modal-pop .24s cubic-bezier(.22,1,.36,1) both}@keyframes modal-pop{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.detail-sec{margin-top:16px}.detail-title{font-family:var(--font-display);font-weight:700;font-size:15px;margin-bottom:8px;color:var(--text)}@keyframes sheet-fade{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translateY(28px);opacity:.6}to{transform:translateY(0);opacity:1}}@keyframes pop{0%{transform:scale(1)}45%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-7px)}40%,60%{transform:translate(7px)}}@keyframes float-y{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.match-tip{background:var(--brand-soft);border:1.5px solid var(--brand-dim);border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:14px;font-weight:700;color:var(--brand-ink);line-height:1.5}.match-tip b{color:var(--brand-ink)}.match{display:flex;gap:10px}.match-col{flex:1;display:flex;flex-direction:column;gap:8px}.match-chip{text-align:left;background:var(--surface);border:2px solid var(--line-strong);color:var(--text);border-radius:12px;padding:11px 13px;font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 2px 0 var(--line-strong);transition:all .12s}.match-chip:active{transform:translateY(2px);box-shadow:0 0 0 var(--line-strong)}.match-chip.cue{font-size:13px;color:var(--muted)}.match-chip.sel{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 2px 0 var(--brand-dim)}.match-chip.done{border-color:var(--good);background:var(--good-soft);color:var(--good-deep);box-shadow:0 2px 0 var(--good-deep);cursor:default}.match-chip.bad{border-color:var(--again);background:var(--again-soft);animation:shake .4s}.learn-item{padding:16px}.li-head{font-family:var(--font-display);font-size:20px;font-weight:800}.li-mean{color:var(--muted);font-size:14px;font-weight:700}.li-mnemonic{margin-top:8px;font-size:14px;line-height:1.6;background:var(--brand-soft);border-radius:12px;padding:10px 12px;font-weight:600}.li-mnemonic.na{color:var(--muted);font-size:13px;background:var(--surface-2)}.li-full{color:var(--muted)}.li-tip{margin-top:8px;font-size:12px;font-weight:700;color:var(--hard)}.phase-tag{display:inline-block;font-size:12px;font-weight:800;color:var(--brand-ink);background:var(--brand-soft);border:1.5px solid var(--brand-dim);border-radius:999px;padding:5px 14px;margin-bottom:14px}.phase-tag.warn{color:var(--hard);background:var(--hard-soft);border-color:#ff960059}.q-why{font-size:12px;color:var(--muted);margin:-6px 0 14px;line-height:1.5}.prompt-q.sm{font-size:19px;min-height:0;margin:6px 0 14px}.speak-mini{background:none;border:none;cursor:pointer;font-size:18px;margin-left:8px;vertical-align:middle}.speak-mini:active{transform:scale(.86)}.phon{color:var(--muted);font-size:14px;font-weight:700}.stem{font-size:19px;font-weight:500;line-height:1.8;text-align:center;margin:0 auto 18px;max-width:440px;color:var(--text)}.stem-target{color:var(--brand-ink)}.blank-box{display:inline-block;min-width:56px;border-bottom:3px solid var(--brand);color:var(--brand);text-align:center;margin:0 4px;font-weight:800}.tiny-note{text-align:center;font-size:11px;font-weight:700;color:var(--muted);margin:-8px 0 12px}.options.compact{gap:8px}.opt.sm{padding:12px 14px;font-size:15px}.decomp{text-align:left;background:var(--brand-soft);border:1.5px dashed var(--brand-dim);border-radius:12px;padding:12px 14px;margin-top:12px;font-size:14px;line-height:1.6}.decomp .tag{font-size:11px;font-weight:800;color:var(--brand-ink);display:block;margin-bottom:6px;letter-spacing:.5px}.note-input{width:100%;min-height:64px;resize:vertical;font-size:14px;line-height:1.5;font-weight:600;padding:10px 12px;border-radius:12px;border:2px solid var(--line-strong);background:var(--surface);color:var(--text);font-family:var(--font-body)}.note-input:focus{outline:none;border-color:var(--brand)}.dim-row{display:flex;align-items:center;gap:10px;margin-bottom:9px}.dim-name{font-size:13px;font-weight:700;width:64px;flex-shrink:0}.dim-pct{width:38px;text-align:right;font-weight:800;flex-shrink:0}.vb-item{padding:12px 0;border-bottom:1px solid var(--line)}.vb-item.key{background:var(--again-soft);border-radius:12px;padding:12px 10px;margin:4px 0;border-bottom:none}.vb-item.sel{background:var(--brand-soft, rgba(28,176,246,.08));border-radius:10px}.vb-item:last-child{border-bottom:none}.vb-check{width:18px;height:18px;flex:none;accent-color:var(--brand);cursor:pointer}.vb-head{display:flex;align-items:baseline;justify-content:space-between}.vb-head .en{font-family:var(--font-display);font-size:18px;font-weight:800}.brandblock{display:flex;align-items:center;gap:10px;min-width:0}.brandblock-text{min-width:0}.brandblock .brand{line-height:1.15}.credit{font-size:10px;font-weight:700;color:var(--muted);margin-top:2px;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:62vw}.auth-brand{text-align:center;margin-bottom:28px;display:flex;flex-direction:column;align-items:center}.auth-brand .credit{white-space:normal;max-width:300px;line-height:1.5}.auth-wrap{max-width:460px;margin:0 auto}.scope-card{padding:14px 16px}.scope-head{width:100%;display:flex;align-items:center;justify-content:space-between;background:none;border:none;padding:0;cursor:pointer;color:var(--text);text-align:left;font-weight:800;font-family:var(--font-body)}.scope-caret{font-size:13px;font-weight:800;color:var(--brand-ink);white-space:nowrap}.unit-wordlist{display:flex;flex-direction:column;max-height:360px;overflow-y:auto;margin-top:2px;border:1px solid var(--line-strong);border-radius:12px}.uw-row{display:flex;align-items:baseline;gap:8px;padding:7px 11px;border-bottom:1px solid var(--line);font-size:14px}.uw-row:last-child{border-bottom:none}.uw-dot{width:14px;flex:none;font-weight:800;text-align:center}.uw-word{font-family:Times New Roman,Georgia,serif;font-weight:700;min-width:92px;flex:none;color:var(--text)}.uw-mean{color:var(--muted);font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uw-due{flex:none;font-size:11px;font-weight:700;color:var(--again);background:#ff4b4b1a;border-radius:6px;padding:1px 6px}.group-list{display:flex;flex-direction:column;gap:8px;max-height:340px;overflow-y:auto}.group-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--surface);border:2px solid var(--line-strong);border-radius:12px;padding:11px 13px;font-size:15px;font-weight:700;color:var(--text);cursor:pointer;text-align:left;box-shadow:0 2px 0 var(--line-strong);transition:all .12s}.group-row:active{transform:translateY(2px);box-shadow:0 0 0 var(--line-strong)}.group-row.on{border-color:var(--brand);color:var(--brand-ink);background:var(--brand-soft);box-shadow:0 2px 0 var(--brand-dim)}.gtype{font-size:11px;font-weight:800;color:var(--muted);border:1.5px solid var(--line);border-radius:7px;padding:1px 6px;margin-left:6px}.group-row.on .gtype{color:var(--brand-ink);border-color:var(--brand-dim)}.topbar,.content{padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}.topbar{padding-top:max(14px,env(safe-area-inset-top))}@media (max-width: 699px){.topbar .libname{display:none}}@media (max-width: 380px){.content{padding:14px;padding-bottom:calc(88px + env(safe-area-inset-bottom))}h1{font-size:22px}.stat-grid{gap:10px}.stat{padding:12px}.stat .num{font-size:24px}.headword{font-size:36px}.headword.small{font-size:27px}.meaning-big{font-size:20px}.prompt-q{font-size:23px;margin:6px 0 18px}.prompt-q.sm,.stem{font-size:17px}.opt{padding:13px 14px;font-size:15px}.options{gap:10px}button.btn{padding:14px 16px;font-size:15px}.speak-btn{width:58px;height:58px;font-size:24px}.study-card{padding:20px 14px}}@media (max-width: 340px){.headword{font-size:31px}.prompt-q{font-size:21px}}@media (orientation: landscape) and (max-height: 460px){.study-card{padding:10px 16px}.headword{font-size:32px}.prompt-q{margin:4px 0 12px}.speak-btn{width:46px;height:46px;font-size:22px}}@media (min-width: 700px){.app,.tabbar{max-width:760px}.content{padding:24px 28px 100px}h1{font-size:30px}h2{font-size:20px}.options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.opt{font-size:17px}.headword{font-size:56px}.headword.small{font-size:40px}.prompt-q{font-size:32px}.meaning-big{font-size:24px}button.btn{font-size:17px;padding:16px 20px}}@media (min-width: 1024px){.app,.tabbar{max-width:940px}.content{padding:28px 40px 104px}.stat-grid{grid-template-columns:repeat(4,1fr)}.study-card,.fb,.session-head,.options,.prompt-q,.spell-input,.text-input{max-width:680px;margin-left:auto;margin-right:auto}.options{grid-template-columns:1fr 1fr}.vb-list{columns:2;column-gap:28px}.vb-item{break-inside:avoid;-webkit-column-break-inside:avoid}.group-list{columns:2;column-gap:12px;max-height:none}.group-row{break-inside:avoid;margin-bottom:8px;width:100%}}@media (min-width: 1280px){.app,.tabbar{max-width:1040px}}@media (orientation: landscape) and (min-width: 900px) and (min-height: 600px){.app,.tabbar{max-width:min(94vw,1080px)}.stat-grid{grid-template-columns:repeat(4,1fr)}.study-card,.options,.prompt-q,.fb,.session-head,.spell-input,.text-input{max-width:640px;margin-left:auto;margin-right:auto}.learn-item{max-width:720px;margin-left:auto;margin-right:auto}}.good-text{color:var(--good-deep)}.again-text{color:var(--again-deep)}.rec-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.rec-tag{font-size:12px;font-weight:800;padding:2px 9px;border-radius:999px;white-space:nowrap}.rec-tag.study{color:var(--brand-ink);background:var(--brand-soft);border:1.5px solid var(--brand-dim)}.rec-tag.speed{color:var(--good-deep);background:var(--good-soft);border:1.5px solid #b6e88a}.rec-main{font-size:14px}.rec-rw{margin-left:auto;font-size:13px;white-space:nowrap}.rec-detail{margin-top:8px;border-top:1px dashed var(--line, #e6e9ee);padding-top:8px;display:flex;flex-direction:column;gap:5px}.rec-sub{display:flex;align-items:center;gap:8px;font-size:13px}.rec-sub-kind{width:16px;text-align:center}.rec-sub-scope{color:var(--ink, #2b3338);font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.verify-trigger{color:var(--muted, #8a939b)!important}.verify-box{margin-top:4px;padding:10px 12px;border-radius:12px;font-size:13.5px;line-height:1.6;border:1.5px solid var(--line, #e6e9ee);background:#f7f9fb}.verify-box.pending{color:var(--brand-ink, #1f4fc7);background:var(--brand-soft);border-color:var(--brand-dim)}.verify-box.ok{color:var(--good-deep, #3a8a00);background:var(--good-soft, #eefae0);border-color:#b6e88a}.verify-box.warn{color:#9a6a00;background:#fff6e3;border-color:#ffd98a}.verify-box.bad{color:var(--again, #d33);background:#fdecec;border-color:#f6b9b9}.verify-votes{margin-top:8px;display:flex;flex-direction:column;gap:5px}.verify-vote{display:flex;align-items:baseline;gap:8px;font-size:12.5px}.vv-by{font-weight:700;min-width:42px;color:var(--ink, #2b3338)}.vv-ok{color:var(--good-deep, #3a8a00);font-weight:600}.vv-bad{color:var(--again, #d33);font-weight:600}.vv-reason{color:var(--muted, #8a939b);overflow:hidden;text-overflow:ellipsis}.tutor-sheet{max-height:86vh;display:flex;flex-direction:column}.tutor-q{font-size:14px;color:var(--ink, #2b3338);background:#f4f7fb;border-radius:12px;padding:10px 12px;margin-bottom:10px;line-height:1.5}.tutor-msgs{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:2px;min-height:80px;max-height:38vh}.tutor-bubble{border-radius:14px;padding:11px 13px;font-size:14.5px;line-height:1.65;white-space:pre-wrap}.tutor-bubble.ai{background:var(--brand-soft);border:1.5px solid var(--brand-dim);color:var(--ink, #2b3338)}.tutor-bubble.ai.dim{opacity:.65}.tutor-bubble.sys{align-self:flex-end;background:var(--brand, #2563EB);color:#fff;font-weight:700;font-size:13px;padding:7px 12px;border-radius:14px 14px 4px}.tutor-tools{border-top:1px solid var(--line, #e6e9ee);margin-top:12px;padding-top:12px}.tutor-similar{margin-top:14px}.tl-dots{display:inline-flex;gap:4px;align-items:center;vertical-align:middle;flex-wrap:wrap}.tl-dot{width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff}.tl-dot.ok{background:var(--good, #1f9d6b)}.tl-dot.bad{background:var(--again, #e0556b)}.mascot{-webkit-user-select:none;user-select:none;pointer-events:none;object-fit:contain}.linklike{background:none;border:none;padding:0;color:var(--brand, #2b6cb0);cursor:pointer;font-size:inherit;text-decoration:underline}:root{--font-display: "SF Pro Rounded", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;--m-study: #1cb0f6;--m-study-deep: #1492d6;--m-study-soft: #e1f3ff;--m-book: #ff5a5f;--m-book-deep: #e23b46;--m-book-soft: #ffe4e5;--m-practice: #ff9600;--m-practice-deep: #e07d00;--m-practice-soft: #ffeccd;--m-speed: #ffb800;--m-speed-deep: #e09e00;--m-speed-soft: #fff1c2;--m-set: #8794a6;--m-set-deep: #6c7889;--m-set-soft: #edf1f6;--m-grammar: #7c5cff;--m-grammar-deep: #5f43d6;--m-grammar-soft: #ece6ff;--m-reading: #ff7a3d;--m-reading-deep: #e0611f;--m-reading-soft: #ffe6d8;--m-basics: #12c2a0;--m-basics-deep: #0fa386;--m-basics-soft: #d4f6ee;--m-wrong: #ff5a5f;--m-wrong-deep: #e23b46;--m-wrong-soft: #ffe4e5}h1,h2,.brand,.stat .num,.combo-badge{font-family:var(--font-display)}h1{font-size:27px;letter-spacing:-.2px}button.btn{font-family:var(--font-display);border-radius:18px;background:linear-gradient(180deg,#ffffff47,#fff0 52%),var(--brand);box-shadow:0 6px 0 var(--brand-deep),0 11px 18px #1482dc38;letter-spacing:.4px;transition:transform .08s cubic-bezier(.34,1.56,.64,1),box-shadow .08s ease,filter .15s}button.btn:hover{filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 7px 0 var(--brand-deep),0 14px 22px #1482dc42}button.btn:active{transform:translateY(6px);box-shadow:0 0 0 var(--brand-deep),0 2px 6px #1482dc2e}button.btn.ghost{background:linear-gradient(180deg,#fff,#f6fafe);box-shadow:0 5px 0 var(--line-strong),0 8px 14px #1a569412}button.btn.ghost:hover{transform:translateY(-1px);box-shadow:0 6px 0 var(--line-strong),0 11px 18px #1a56941a}button.btn.ghost:active{transform:translateY(5px);box-shadow:0 0 0 var(--line-strong)}button.btn.sm{border-radius:13px;box-shadow:0 4px 0 var(--brand-deep),0 6px 10px #1482dc2e}button.btn.sm.ghost{box-shadow:0 4px 0 var(--line-strong),0 6px 10px #1a56940f}button.btn.sm:active{transform:translateY(4px);box-shadow:0 0 0 var(--brand-deep)}.card{background:linear-gradient(180deg,#fff,#fbfdff);border-radius:22px;box-shadow:0 2px 0 var(--line-strong),0 10px 26px #1a569412}.practice-card{position:relative;border-radius:20px;border:1.5px solid var(--line);background:linear-gradient(180deg,#fff,#fbfdff);box-shadow:inset 6px 0 0 var(--accent, var(--brand)),0 3px 0 var(--line-strong),0 8px 20px #1a56940f;transition:transform .12s cubic-bezier(.34,1.56,.64,1),box-shadow .12s ease,border-color .12s;padding-left:22px}.practice-card:hover{transform:translateY(-3px);border-color:var(--accent, var(--brand-dim));box-shadow:inset 6px 0 0 var(--accent, var(--brand)),0 6px 0 var(--line-strong),0 16px 30px #1a56941f}.practice-card:active{transform:translateY(0);box-shadow:inset 6px 0 0 var(--accent, var(--brand)),0 2px 0 var(--line-strong),0 6px 14px #1a569414}.practice-card.soon{opacity:.6;box-shadow:inset 6px 0 0 var(--line-strong)}.practice-card[class*=accent-] .row:not(.between)>span:first-child,.practice-card.has-badge .row:not(.between)>span:first-child{width:48px;height:48px;flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:14px;font-size:26px!important;background:var(--accent-soft, var(--brand-soft));box-shadow:inset 0 0 0 1.5px #ffffffb3,0 2px 6px #1a56941a}.practice-card .scope-caret{color:var(--accent, var(--brand-ink))}.accent-study{--accent: var(--m-study);--accent-deep: var(--m-study-deep);--accent-soft: var(--m-study-soft)}.accent-book{--accent: var(--m-book);--accent-deep: var(--m-book-deep);--accent-soft: var(--m-book-soft)}.accent-practice{--accent: var(--m-practice);--accent-deep: var(--m-practice-deep);--accent-soft: var(--m-practice-soft)}.accent-speed{--accent: var(--m-speed);--accent-deep: var(--m-speed-deep);--accent-soft: var(--m-speed-soft)}.accent-grammar{--accent: var(--m-grammar);--accent-deep: var(--m-grammar-deep);--accent-soft: var(--m-grammar-soft)}.accent-reading{--accent: var(--m-reading);--accent-deep: var(--m-reading-deep);--accent-soft: var(--m-reading-soft)}.accent-basics{--accent: var(--m-basics);--accent-deep: var(--m-basics-deep);--accent-soft: var(--m-basics-soft)}.accent-wrong{--accent: var(--m-wrong);--accent-deep: var(--m-wrong-deep);--accent-soft: var(--m-wrong-soft)}.section-head{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:800;font-size:13.5px;color:var(--text);letter-spacing:.2px;margin:18px 2px 9px}.section-head:before{content:"";width:4px;height:15px;border-radius:3px;background:var(--accent, var(--brand))}.stat{position:relative;overflow:hidden;border-radius:18px;background:linear-gradient(180deg,#fff,#fbfdff);box-shadow:0 2px 0 var(--line-strong),0 8px 18px #1a56940f}.stat:before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--brand-dim)}.stat .num.good{color:var(--good-deep)}.stat:has(.good):before{background:var(--good)}.stat .num.again{color:var(--again)}.stat:has(.again):before{background:var(--again)}.bar,.mbar{height:13px;border-radius:999px;background:#e9eef5;box-shadow:inset 0 1.5px 3px #1a56941a}.bar>span{border-radius:999px;background:linear-gradient(180deg,#ffffff59,#fff0 60%),var(--brand);box-shadow:inset 0 0 0 1px #ffffff40}.tabbar{border-top:1px solid var(--line);box-shadow:0 -6px 20px #1a56940f}.tabbar button{gap:5px;padding-top:8px}.tabbar button .ico{font-size:20px;width:50px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:12px;transition:background .18s,transform .18s cubic-bezier(.34,1.56,.64,1)}.tabbar button.active .ico{transform:translateY(-1px) scale(1.06)}.tabbar button:nth-child(1).active{color:var(--m-study)}.tabbar button:nth-child(1).active .ico{background:var(--m-study-soft)}.tabbar button:nth-child(2).active{color:var(--m-book)}.tabbar button:nth-child(2).active .ico{background:var(--m-book-soft)}.tabbar button:nth-child(3).active{color:var(--m-practice-deep)}.tabbar button:nth-child(3).active .ico{background:var(--m-practice-soft)}.tabbar button:nth-child(4).active{color:var(--m-speed-deep)}.tabbar button:nth-child(4).active .ico{background:var(--m-speed-soft)}.tabbar button:nth-child(5).active{color:var(--m-set-deep)}.tabbar button:nth-child(5).active .ico{background:var(--m-set-soft)}.panel{border-radius:22px;padding:15px 16px 14px;margin-bottom:16px;background:var(--panel-bg, linear-gradient(180deg,#ffffff,#fbfdff));border:1.6px solid var(--panel-border, var(--line));box-shadow:0 2px #1a56940d,0 10px 24px #1a56940f}.panel-title{font-family:var(--font-display);font-weight:800;font-size:16.5px;color:var(--panel-ink, var(--text));letter-spacing:.2px}.panel-sub{font-size:12.5px;color:var(--panel-sub-c, #6f7d8f);margin:4px 0 13px;line-height:1.55}.tint-study{--panel-bg: linear-gradient(180deg,#e8f4ff,#f4faff 72%);--panel-border:#c5e4fb;--panel-ink:#0b6fa6;--panel-sub-c:#3f7ba5}.tint-speed{--panel-bg: linear-gradient(180deg,#fff4d2,#fffdf2 74%);--panel-border:#f0da90;--panel-ink:#946400;--panel-sub-c:#876619}.tint-import{--panel-bg: linear-gradient(180deg,#eafaef,#f6fdf8 74%);--panel-border:#c6e8ce;--panel-ink:#1b884c;--panel-sub-c:#3f8a5f}.tint-list{--panel-bg: linear-gradient(180deg,#e7fbf4,#f5fdfb 74%);--panel-border:#bbe8da;--panel-ink:#0e8f76;--panel-sub-c:#3a8d7c}.card.tint-study,.card.tint-speed,.card.tint-import,.card.tint-list{background:var(--panel-bg);border-color:var(--panel-border)}.panel .stat-grid{margin-bottom:13px}.panel>.btn:last-child{margin-bottom:0!important}button.btn{white-space:nowrap}.practice-card{-webkit-appearance:none;-moz-appearance:none;appearance:none}.practice-card>div{width:100%}.vb-head{flex-wrap:wrap;gap:4px 8px}.vb-head .en{min-width:0}.vb-head>.row{flex-shrink:0;margin-left:auto}.vb-head>.row .btn{flex:none}.phon{white-space:nowrap}
