/* 词汇、阅读、写作为学习主线；基础练习与资料为辅助。 */
.sidebar{overflow-y:auto}
.sidebar .learning-nav{margin-top:30px}
.sidebar nav .nav-caption{margin:16px 13px 4px}
.sidebar .support-nav{margin-top:8px}
.sidebar .learning-nav a>span{font-size:16px;font-weight:600}
.sidebar-bottom{padding-top:18px;margin-top:24px}
.sidebar-bottom .collection-label{margin-bottom:14px}
.skill-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:24px}
.skill-card{--skill-color:#2653da;--skill-tint:#edf2ff;display:flex;flex-direction:column;align-items:flex-start;padding:24px 20px;min-width:0;border-top:3px solid var(--skill-color)}
.skill-card[data-skill=speaking]{--skill-color:#167047;--skill-tint:#eaf5ee}
.skill-card[data-skill=reading]{--skill-color:#8051a5;--skill-tint:#f4eef9}
.skill-card[data-skill=writing]{--skill-color:#96640e;--skill-tint:#fff4df}
.skill-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:13px;background:var(--skill-tint);color:var(--skill-color);font-size:24px;font-weight:650;margin-bottom:15px}
.skill-card .eyebrow{font-size:11px;color:var(--skill-color);letter-spacing:1px}
.skill-card h2{margin:4px 0 9px;font-size:21px}
.skill-card p{font-size:14px;color:var(--muted)}
.skill-card .skill-material{font-size:12px;margin:14px 0 20px}
.skill-card .button{margin-top:auto;width:100%;color:var(--skill-color);background:var(--skill-tint);border-color:transparent}
.study-order{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px;padding:20px 24px}
.study-order p{font-size:14px;color:var(--muted);margin-top:4px}
.study-order .button{flex-shrink:0}
.review-overview{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(240px,1fr);gap:22px}
.review-overview .today-card h2{font-size:23px}
.review-overview .today-number{font-size:36px;margin-top:20px}
.review-overview .today-card .actions{margin-top:20px}
.review-overview .today-card .progress-rail{margin-top:22px}
.review-note{display:flex;flex-direction:column;gap:16px}
.review-note .review-counts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.review-counts strong{display:block;font-size:28px}
.review-counts span{font-size:13px;color:var(--muted)}
.review-note .actions{margin-top:auto}
.skill-guide{margin-bottom:22px}
.skill-guide ol{display:flex;flex-wrap:wrap;gap:8px 28px;margin:0 0 7px;padding-left:22px;color:var(--ink)}
.skill-guide p{font-size:13px}
.material-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:26px}
.material-card{min-width:0;display:flex;flex-direction:column;gap:12px}
.material-card p{font-size:14px;color:var(--muted)}
.material-card .actions{margin-top:auto}
.material-card h2{font-size:20px}
.material-tags{font-size:12px;color:var(--muted)}
.practice-shortcuts{display:flex;flex-wrap:wrap;gap:9px;margin:0 0 20px}
.practice-shortcuts .button[aria-pressed=true]{background:var(--blue-light);border-color:#a7bbee;color:var(--blue)}
.audio-material-links{margin:20px 0}
.audio-panel .actions{margin-top:15px}
.section-heading{margin:24px 0 15px;font-size:19px}
.vocabulary-guide{margin-bottom:22px}.vocabulary-guide p{margin-top:7px}
.vocabulary-saved-toggle{display:block;margin:0 0 20px;font-size:14px}
.vocabulary-saved-toggle input{accent-color:var(--blue)}
.vocabulary-card details{margin:0 0 12px;font-size:14px}
.vocabulary-card summary{cursor:pointer;color:var(--blue)}
.vocabulary-answer{display:grid;gap:9px;margin-top:16px;padding-top:13px;border-top:1px solid var(--line)}
.vocabulary-card .french{font-size:26px;overflow-wrap:anywhere}
.vocabulary-answer [lang=fr]{color:var(--ink);font-size:17px}
.composition-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);gap:22px;align-items:start}
.composition-task{font-size:15px;margin-bottom:22px}
.composition-editor textarea{display:block;width:100%;min-height:330px;resize:vertical;border:1px solid #cbd4e1;border-radius:10px;padding:16px;font:19px/1.85 Georgia,serif;color:var(--ink);background:white}
.composition-editor textarea:focus-visible{outline:3px solid #789cff;outline-offset:3px}
.composition-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin:10px 0;color:var(--muted);font-size:13px}
.composition-help{display:grid;gap:18px}.composition-help h2,.composition-checks h2{font-size:18px}
.composition-help ol{padding-left:20px;font-size:14px;color:var(--muted)}
.composition-help li+li{margin-top:8px}
.composition-starter{margin-top:8px;font-size:19px}
.composition-words{list-style:none;padding:0;font-size:14px}
.composition-words li{display:grid;gap:3px;padding:9px 0;border-bottom:1px solid var(--line)}
.composition-words strong{font-size:17px;overflow-wrap:anywhere}
.composition-words span,.composition-words small{color:var(--muted);font-size:13px}
.composition-checks{margin:26px 0 22px;display:grid;gap:14px;font-size:14px}
.composition-checks label{display:flex;align-items:flex-start;gap:10px;cursor:pointer}
.composition-checks input{accent-color:var(--blue);flex-shrink:0;margin-top:5px}
@media(max-width:1100px){.composition-layout{grid-template-columns:1fr}.composition-help{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){
  .sidebar{overflow:visible}
  .sidebar .learning-nav{margin-top:14px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;overflow:visible}
  .sidebar .learning-nav a{justify-content:center;padding:9px 3px;font-size:13px}
  .sidebar .learning-nav a>span{display:none}
  .sidebar .support-nav{margin-top:5px;gap:0}
  .sidebar .support-nav a{padding:8px 10px;font-size:12px;flex-shrink:0}
  .skill-grid{grid-template-columns:1fr;gap:12px;margin-bottom:18px}
  .skill-card{padding:18px 14px}
  .skill-card h2{font-size:18px}
  .skill-card p{font-size:13px}
  .skill-card .button{padding:9px 6px;font-size:13px}
  .skill-mark{width:38px;height:38px;font-size:21px;margin-bottom:12px}
  .skill-card .eyebrow{font-size:10px;letter-spacing:.6px}
  .study-order{align-items:flex-start;flex-direction:column;gap:12px;padding:20px;margin-bottom:18px}
  .review-overview,.material-grid{grid-template-columns:1fr;gap:16px}
  .skill-guide ol{display:grid;gap:4px}
  .review-overview .today-number{font-size:32px}
  .review-overview .today-number small{font-size:13px}
  .composition-help{grid-template-columns:1fr}
  .composition-editor textarea{min-height:300px;font-size:18px}
}
/* 统一词库：语义主题与词性分别筛选。 */
.vocabulary-overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:22px}
.vocabulary-overview>div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 22px}
.vocabulary-overview strong{display:block;font-size:30px;line-height:1.3}
.vocabulary-overview strong small{font-size:21px;color:var(--muted);font-weight:400}
.vocabulary-overview span{display:block;font-size:13px;color:var(--muted);margin-top:6px}
.vocabulary-topic-list{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 25px}
.vocabulary-topic-list .button{background:#fff;font-weight:400}
.vocabulary-topic-list .button[aria-pressed=true]{background:var(--blue-light);border-color:#a7bbee;color:var(--blue);font-weight:600}
.vocabulary-topic-list small{margin-left:5px;opacity:.75;font-size:11px}
.vocabulary-filters{margin-bottom:18px}
.vocabulary-secondary{display:flex;align-items:center;flex-wrap:wrap;gap:14px 24px;margin-bottom:15px}
.vocabulary-secondary .field{display:flex;align-items:center;gap:10px;font-size:13px}
.vocabulary-secondary select{width:auto;max-width:265px;font-size:13px;min-height:38px}
.vocabulary-secondary .vocabulary-saved-toggle{margin:0}
.vocabulary-help{margin-bottom:24px;line-height:1.8;max-width:900px}
.vocabulary-results-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px;flex-wrap:wrap}
.vocabulary-results-head .list-count{margin:0}
.vocabulary-card-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.vocabulary-card-meta>.small{font-size:12px}
.vocabulary-card .vocabulary-progress{font-size:12px;margin-top:auto}
.vocabulary-card .actions{margin-top:0}
.vocabulary-card h2{margin:4px 0 0}
.vocabulary-card .vocabulary-answer p{margin:0}
.vocabulary-pagination{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:20px;font-size:14px;color:var(--muted)}
.vocabulary-pagination button:disabled{opacity:.4;cursor:default}
@media(max-width:760px){
 .vocabulary-overview{gap:8px}.vocabulary-overview>div{padding:13px 10px}.vocabulary-overview strong{font-size:26px}.vocabulary-overview strong small{font-size:16px}.vocabulary-overview span{font-size:11px}
 .vocabulary-topic-list{gap:7px;margin-bottom:22px}.vocabulary-topic-list .button{font-size:12px;padding:7px 9px;min-height:35px}
 .vocabulary-secondary{gap:14px}.vocabulary-secondary .field{flex-wrap:wrap}.vocabulary-secondary select{max-width:230px}
 .vocabulary-card{padding:21px}.vocabulary-card-meta{gap:8px}.vocabulary-card-meta>.small{font-size:11px}.vocabulary-pagination{gap:14px}
}
@media(max-width:760px){
 .vocabulary-filters .field{flex:1 1 calc(50% - 8px);min-width:0}
 .vocabulary-filters .search,.vocabulary-filters .field:last-child{flex-basis:100%}
}
/* 已收录的动词变位始终显示在卡片正文中。 */
.verb-conjugation{width:100%;min-width:0;border-top:1px solid var(--line);padding-top:16px;margin:2px 0 8px}
.verb-conjugation h3{font-size:15px;font-weight:600;margin:0 0 12px}
.conjugation-tenses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.conjugation-tense{min-width:0;background:#f7f9fe;border:1px solid #e7edf7;border-radius:9px;padding:12px}
.conjugation-tense h4{font-size:12px;color:var(--muted);margin:0 0 8px;font-weight:600}
.conjugation-tense h4 small{display:block;font-weight:400;margin-top:3px}
.conjugation-tense ul{list-style:none;padding:0;margin:0;display:grid;gap:5px}
.conjugation-tense li{font:17px/1.55 Georgia,'Times New Roman',serif;color:var(--ink);overflow-wrap:anywhere}
.conjugation-tense li small{display:block;color:var(--muted);font-size:14px}
.verb-conjugation .conjugation-note{font-size:11px;color:var(--muted);line-height:1.7;margin:12px 0 0}
.vocabulary-grid{align-items:start}
.verb-reference-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.verb-reference-grid .word-card{cursor:default;width:100%}
.verb-reference-grid .word-card:hover{border-color:var(--line);box-shadow:none}
@media(max-width:760px){.conjugation-tenses{grid-template-columns:1fr 1fr;gap:8px}.conjugation-tense{padding:10px 8px}.conjugation-tense li{font-size:16px}.verb-reference-grid{grid-template-columns:1fr}.conjugation-tense h4{font-size:11px}}
@media(max-width:370px){.conjugation-tenses{grid-template-columns:1fr}}

/* 一次只播放一段 MiniMax 录音，卡片中的变位始终可见。 */
.conjugation-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.conjugation-heading h3{margin:0}
.conjugation-form{display:flex;align-items:center;justify-content:space-between;gap:6px}
.conjugation-form>span{min-width:0}
.button.verb-audio-compact{padding:0;width:30px;min-width:30px;height:30px;min-height:30px;border:1px solid #d8e2ff;background:#fff;color:var(--blue);border-radius:50%;font:11px/1 sans-serif;flex-shrink:0}
.verb-audio-button{gap:6px}
.button.verb-audio-group{padding:2px 0;margin:-4px 0 9px;min-height:28px;font-size:11px;color:var(--blue)}
.button.verb-audio-button.is-playing,.button.verb-audio-current,.button.verb-audio-group.is-playing{color:#fff;background:var(--blue);border-color:var(--blue)}
.verb-audio-button.is-loading,.verb-audio-group.is-loading{opacity:.65}
.verb-audio-player{position:fixed;bottom:20px;right:24px;z-index:90;display:flex;align-items:center;gap:20px;max-width:calc(100vw - 48px);padding:14px 18px;background:#fff;border:1px solid #cbd8fa;border-radius:14px;box-shadow:0 8px 32px #18345424}
.verb-audio-player[hidden]{display:none}
.verb-audio-player p{margin:4px 0 0;font:19px/1.4 Georgia,serif;overflow-wrap:anywhere}
.verb-audio-player>div{min-width:0;max-width:400px}
.verb-audio-player label{display:flex;flex-direction:column;gap:4px;flex-shrink:0}
.verb-audio-player select{font-size:12px;min-height:32px;padding:4px 7px;width:auto}
.verb-audio-player>.button{flex-shrink:0}
.verb-audio-active .shell{padding-bottom:110px}
.verb-audio-active .toast{bottom:130px}
#detail-dialog>.verb-audio-player{position:sticky;bottom:0;max-width:100%;margin-top:16px}
@media(max-width:760px){.conjugation-tenses{grid-template-columns:1fr}.button.verb-audio-compact{width:36px;min-width:36px;height:36px;min-height:36px}.verb-audio-player{right:10px;left:10px;bottom:10px;max-width:none;gap:10px;padding:12px}.verb-audio-player>div{flex:1}.verb-audio-player p{font-size:17px}.verb-audio-player label{font-size:11px}.verb-audio-player select{max-width:96px}#detail-dialog>.verb-audio-player{left:auto;right:auto}}
