/* ============================================================
   英语小伴学 · 开口说 —— 账号 / 记忆 / 复习 / 智能体 界面层
   沿用主界面的「深空舱体」视觉：青色主光 + 紫色辅助 + 金色提示
   ============================================================ */
:root{
  --x-cyan:#34E7F0; --x-violet:#A78BFA; --x-gold:#FFD45E;
  --x-green:#4ADE80; --x-red:#FF7AA2;
  --x-panel:#FFFFFF; --x-panel2:#FFFFFF;
  --x-line:rgba(31,168,91,.24); --x-dim:#9FB0C9; --x-text:#EAFBFF;
}
.x-hide{display:none !important;}
header.appbar #btnPlan{white-space:nowrap;}
.app{width:min(1600px,100%);max-width:1600px;height:100vh;height:100dvh;min-height:0;padding:16px 24px;}
#chatScroll{min-height:0;width:100%;padding:8px 0 20px;overscroll-behavior:contain;}
@media(max-width:700px){.app{padding:10px 12px;}}

/* 学习区采用内容页面排版，消除聊天头像预留的左侧空列。 */
#chat .bubble{width:100%;max-width:none;min-width:0;gap:0;box-sizing:border-box;}
#chat .bubble>.ava{display:none;}
#chat .bubble>.msg{flex:1 1 0;width:100%;max-width:none;min-width:0;box-sizing:border-box;}

/* 主页与学习功能卡共用整列宽度，短对话按内容排布。 */
#chat .bubble:has(> .msg > :is(.hero,.chat-entry,.row,.curriculum-picker,.unit-overview,.learning-screen)){width:100%;min-width:0;}
#chat .bubble:has(> .msg > :is(.hero,.chat-entry,.row,.curriculum-picker,.unit-overview,.learning-screen)) > .msg{flex:1 1 0;min-width:0;max-width:none;}
#chat .msg > :is(.hero,.chat-entry,.row,.curriculum-picker,.unit-overview,.learning-screen){width:100%;max-width:none;min-width:0;box-sizing:border-box;}
#chat .chat-entry .ce-body{min-width:0;overflow-wrap:anywhere;}
#chat .chat-entry:is(.ce-ico,.ce-go){flex:0 0 auto;}
.curriculum-picker{padding:4px;}
.learning-mode-switch{display:flex;gap:10px;margin:8px 0 14px;}.learning-mode-switch button{font:inherit;font-size:16px;padding:11px 22px;border-radius:12px;border:1px solid var(--x-line);background:#FFFDF6;color:var(--x-dim);cursor:pointer;}.learning-mode-switch button.active{border-color:var(--x-cyan);color:var(--x-cyan);background:rgba(34,180,94,.08);}@media(max-width:700px){.learning-mode-switch button{flex:1;font-size:14px;padding:10px 12px;}}
.home-greeting{display:flex;align-items:center;gap:14px;padding:5px 4px;}.home-greeting h2{margin:0;color:var(--x-text);font-size:20px;line-height:1.4;}.home-greeting p{margin:5px 0 0;color:var(--x-dim);font-size:14px;line-height:1.5;}@media(max-width:700px){.home-greeting h2{font-size:18px;}}
.example-options{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:6px;margin:9px 0;}.example-option{font:inherit;font-size:12px;color:var(--x-dim);padding:5px 9px;border:1px solid var(--x-line);border-radius:8px;background:transparent;cursor:pointer;}.example-option.active{color:var(--x-cyan);border-color:var(--x-cyan);background:rgba(34,180,94,.06);}.example-source{font-size:11px;color:var(--x-dim);margin-left:6px;}#wordExampleText{max-width:780px;margin:12px auto 0;line-height:1.65;overflow-wrap:anywhere;}
.curriculum-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.curriculum-heading b{font-size:20px;}
.term-field{display:flex;align-items:center;gap:8px;font-size:14px;}
.term-field .x-input{flex:none;width:110px;}
.curriculum-total{font-size:13px;color:var(--x-dim);margin:12px 0;}
.unit-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;}
.unit-grid.fltrp{grid-template-columns:repeat(2,minmax(0,1fr));}
.unit-card{display:flex;flex-direction:column;align-items:stretch;text-align:left;gap:7px;padding:15px 18px;border-radius:16px;
  border:1px solid var(--x-line);background:linear-gradient(135deg,#FFFFFF,#FFFFFF);color:var(--x-text);cursor:pointer;min-width:0;
  font-family:inherit;transition:border-color .16s,box-shadow .16s,transform .16s;}
.unit-card:hover,.unit-card.selected{border-color:var(--x-cyan);box-shadow:0 0 14px rgba(34,180,94,.16);}
.unit-card:hover{transform:translateY(-2px);}
.unit-card:focus-visible{outline:2px solid var(--x-cyan);outline-offset:3px;}
.unit-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.unit-arrow{font-size:18px;color:var(--x-dim);}
.unit-number{font-size:21px;font-weight:700;color:var(--x-cyan);}
.unit-name{font-size:15px;line-height:1.4;overflow-wrap:anywhere;min-height:0;}
.unit-progress-secondary{font-size:12px;color:var(--x-dim);line-height:1.5;}
.word-quiz-slot:empty{display:none;}.word-quiz-slot{margin-top:16px;padding:14px;border:1px solid var(--x-line);border-radius:14px;background:#FFFDF6;}.word-quiz-slot .say{font-size:16px;}.word-quiz-slot .choices{justify-content:center;}
.follow-quiz-action{margin:12px 0 4px;}.quiz-nudge{border-color:var(--x-gold)!important;color:var(--x-gold)!important;box-shadow:0 0 15px rgba(255,212,94,.17);}
.unit-meter{display:block;height:5px;margin-top:4px;border-radius:8px;background:#EDF5E4;overflow:hidden;}
.unit-meter i{display:block;height:100%;border-radius:8px;background:var(--x-cyan);}
.unit-card.welcome{grid-column:1/-1;flex-direction:row;align-items:center;gap:20px;}
.unit-card.welcome .unit-card-top{gap:12px;flex:0 0 auto;}
.unit-card.welcome .unit-name{min-height:0;flex:1;}
.unit-card.welcome .unit-meter{display:none;}
.unit-card.welcome .unit-progress{white-space:nowrap;}
.word-forms{font-size:13px;color:var(--x-dim);margin-top:5px;}
.appbar{gap:10px;padding:14px 18px!important;margin-bottom:10px;flex-wrap:wrap;}
.appbar .logo{width:44px;height:44px;font-size:28px;box-shadow:none;flex:0 0 auto;}
.appbar .title{min-width:0;}
.appbar .title h1{font-size:21px;letter-spacing:0;}
.appbar .title p{font-size:12px;letter-spacing:0;margin-top:5px;}
.appbar .top-toggle,.appbar .top-toggle.mini{display:inline-flex;position:static;align-self:center;width:auto;height:auto;gap:7px;
  padding:9px 12px;margin:0;font-size:13px;background:transparent;border:1px solid var(--x-line);border-radius:12px;}
.appbar .top-toggle #ttTip{display:inline;}
.appbar .status{font-size:11px;background:transparent;border:0;box-shadow:none;}
.x-toolbar{gap:8px;padding:4px 8px 12px;flex-wrap:wrap;}
.chat-word-actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:10px;margin-top:8px;border-top:1px solid var(--x-line);}
.chat-word-action{display:inline-flex;align-items:center;gap:5px;flex-wrap:wrap;}
.chat-add-word{font-size:12px!important;white-space:nowrap;}
.chat-add-word:disabled{opacity:.65;cursor:default;}
.r-say{flex-wrap:wrap;gap:8px;}
.follow-demo{padding:14px;font-size:15px;text-align:center;}
.voice-hint:empty{display:none;}
.agent-trace{margin-top:12px;border-top:1px solid var(--x-line);padding-top:9px;font-size:12px;color:var(--x-dim);}
.agent-trace summary{cursor:pointer;color:var(--x-cyan);padding:5px 0;}
.agent-trace ol{padding-left:22px;margin:8px 0;}.agent-trace li{padding:5px 0;}
.agent-trace b,.agent-trace span,.agent-trace small{display:block;overflow-wrap:anywhere;}
.agent-trace b{font-size:13px;color:var(--x-text);}.agent-trace p{margin:5px 0;font-size:11px;}
.prompt-settings{margin:14px 0;padding:12px;border:1px solid var(--x-line);border-radius:12px;}
.prompt-settings summary{cursor:pointer;color:var(--x-cyan);font-weight:600;}
.prompt-settings textarea{display:block;width:100%;box-sizing:border-box;resize:vertical;min-height:220px;margin:10px 0;line-height:1.6;font-size:13px;}
.settings-layout{display:grid;grid-template-columns:156px minmax(0,1fr);gap:22px;align-items:start;}
.settings-nav{display:flex;flex-direction:column;gap:8px;position:sticky;top:0;}
.settings-nav-button{font:inherit;font-size:14px;text-align:left;padding:11px 13px;color:var(--x-dim);background:transparent;border:1px solid transparent;border-radius:10px;cursor:pointer;}
.settings-nav-button.active{color:var(--x-cyan);background:rgba(34,180,94,.08);border-color:var(--x-line);font-weight:600;}
.settings-nav-button:focus-visible{outline:2px solid var(--x-cyan);outline-offset:2px;}
.settings-content,.settings-panel{min-width:0;}.settings-panel[hidden]{display:none!important;}
.settings-panel h3{font-size:18px;line-height:1.5;margin-top:0;}
.settings-panel h3:not(:first-child){margin-top:22px;}
.settings-panel:is(label,.note,.x-input,.x-btn,summary){font-size:14px;line-height:1.6;}
.settings-panel input[type=checkbox]{width:16px;height:16px;vertical-align:middle;accent-color:var(--x-cyan);margin-right:7px;}
.settings-panel textarea{font-size:14px;}.settings-panel .prompt-settings{margin-top:0;}
.prompt-history{margin-top:16px;padding-top:12px;border-top:1px solid var(--x-line);}
.prompt-version{padding:8px 0;border-bottom:1px solid var(--x-line);}
.prompt-version pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow:auto;font-size:14px;line-height:1.6;padding:12px;border-radius:10px;background:#FFFDF6;}
.chat-practice-row{margin:9px 0;padding:12px;border:1px solid var(--x-line);border-radius:13px;background:#FFFDF6;min-width:0;}
.chat-practice-row{cursor:pointer;}.chat-practice-row:hover{border-color:rgba(34,180,94,.5);}.chat-practice-row:focus-visible{outline:2px solid var(--x-cyan);outline-offset:2px;}
.unit-word-row,.chat-practice-row,.today-word-record,[data-word-listen]{transition:background .15s,border-color .15s,box-shadow .15s,transform .12s;}
.unit-word-row:hover,.chat-practice-row:hover,.today-word-record:hover,[data-word-listen]:hover{box-shadow:0 0 12px rgba(34,180,94,.08);}
.unit-word-row:active,.chat-practice-row:active,.today-word-record:active,[data-word-listen]:active{transform:scale(.997);}
.word-card-flash{animation:word-card-feedback .65s ease-out;}
#wordExampleText[role=button]{cursor:pointer;border-radius:8px;outline-offset:4px;}
#wordExampleText:hover,#wordExampleText:focus-visible{color:var(--x-cyan);}
#wordExampleText:focus-visible{outline:2px solid var(--x-cyan);}
.card .ex-chinese{font-size:clamp(14px,1.25vw,19px);line-height:1.6;color:var(--x-muted,#84755C);margin:5px auto 12px;max-width:90%;}
.card .ex-chinese[hidden]{display:none;}
@keyframes word-card-feedback{0%,35%{border-color:var(--x-cyan);background:rgba(34,180,94,.12);box-shadow:0 0 18px rgba(34,180,94,.16);}100%{box-shadow:none;}}
@media(prefers-reduced-motion:reduce){.unit-word-row,.chat-practice-row,.today-word-record,[data-word-listen]{transition:none;transform:none!important;}.word-card-flash{animation:none;background:rgba(34,180,94,.12);}}
.chat-practice-row-main{display:flex;align-items:center;justify-content:space-between;gap:14px;}
.chat-practice-word-info{display:flex;align-items:center;gap:10px;min-width:0;flex:1;}
.chat-practice-word-button{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--x-cyan);font:inherit;font-weight:700;font-size:20px;padding:0;cursor:pointer;}
.chat-row-art,.learned-art{display:block;width:36px;height:42px;object-fit:contain;background:#edf8ff;border-radius:8px;padding:3px;box-sizing:border-box;}.chat-practice-art{flex:0 0 auto;}.x-word .e:has(.learned-art){flex:0 0 36px;width:36px;}
.chat-practice-word-button:focus-visible,.chat-inline-word:focus-visible{outline:2px solid var(--x-cyan);outline-offset:4px;border-radius:3px;}
.today-word-record{padding:12px 14px;margin:8px 0;border:1px solid var(--x-line);border-radius:12px;background:#FFFDF6;font-size:14px;line-height:1.6;}
.today-word-record,[data-word-listen]{cursor:pointer;transition:border-color .15s,background .15s;}.today-word-record:hover,[data-word-listen]:hover{border-color:rgba(34,180,94,.55);background:#FFFDF6;}.today-word-record:focus-visible,[data-word-listen]:focus-visible{outline:2px solid var(--x-cyan);outline-offset:2px;}
.today-word-main{display:flex;align-items:center;gap:12px;}.today-word-main strong{color:var(--x-cyan);font-size:20px;}
.today-word-art{flex:0 0 48px;}.calendar-art{display:block;width:48px;height:52px;object-fit:contain;border-radius:10px;background:#edf8ff;padding:4px;box-sizing:border-box;}.calendar-art-fallback{font-size:32px;}
.today-word-info{flex:1;min-width:0;}.today-word-name{display:flex;align-items:center;gap:6px;}.today-word-name strong{overflow-wrap:anywhere;min-width:0;}.today-word-meaning{display:block;font-size:13px;line-height:1.55;margin-top:4px;overflow-wrap:anywhere;}
.today-score{flex:0 0 auto;text-align:right;min-width:70px;}.today-score strong{display:block;font-size:20px;}.today-score small{font-size:11px;color:var(--x-dim);}.today-score-stars{font-size:13px;letter-spacing:1px;}.today-score.needs-practice strong{color:var(--x-gold);}.today-score-pending{font-size:12px;color:var(--x-dim);}
.today-word-badges{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px;}.day-tag{display:inline-flex;align-items:center;gap:4px;font-size:12px;line-height:1.4;padding:5px 8px;border-radius:9px;background:rgba(31,168,91,.14);color:var(--x-dim);}.day-tag.read{color:var(--x-cyan);background:rgba(34,180,94,.08);}.day-tag.correct{color:var(--x-green);background:rgba(74,222,128,.08);}.day-tag.retry{color:var(--x-gold);background:rgba(255,212,94,.08);}.day-tag.dictation{color:var(--x-violet);background:rgba(255,159,67,.08);}
.quiz-entry{border:1px solid var(--x-line);font-family:inherit;cursor:pointer;}.quiz-entry:hover{border-color:var(--x-cyan);color:var(--x-cyan);}
.word-quiz-mask{position:fixed;inset:0;z-index:260;display:grid;place-items:center;padding:20px;background:rgba(3,8,22,.82);backdrop-filter:blur(7px);box-sizing:border-box;}
.word-practice-dialog{display:flex;flex-direction:column;width:min(1440px,calc(100vw - 48px));max-width:calc(100vw - 48px);max-height:calc(100dvh - 48px);margin:auto;padding:16px 24px;border:1px solid var(--line-green,#CDE5CD);border-radius:22px;background:var(--paper,#FFF);color:var(--ink,#3F3722);font-family:inherit;box-shadow:0 18px 60px rgba(35,68,34,.18);overflow:hidden;overscroll-behavior:contain;}
.word-practice-dialog[open]{display:flex;flex-direction:column;}
.word-practice-dialog:not([open]){display:none;}
.word-practice-dialog::backdrop{background:rgba(39,57,36,.3);backdrop-filter:blur(3px);}
.word-practice-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:0 0 auto;position:sticky;top:0;z-index:1;background:var(--paper,#FFF);}
.word-practice-content{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding-right:2px;padding-bottom:8px;}
.word-practice-header h2{flex:1;min-width:0;margin:0;font:700 18px/1.5 var(--font-body,inherit);color:var(--ink,#3F3722);}.word-practice-header #skipWord{min-height:44px;font:inherit;font-size:14px;white-space:nowrap;}
.word-practice-close{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;border:1px solid var(--line-green,#CDE5CD);border-radius:12px;background:var(--cream,#FFF9E8);color:var(--leaf-deep,#167743);font-family:inherit;font-size:28px;line-height:1;font-weight:400;cursor:pointer;}
.word-practice-dialog .bubble{display:block;width:100%;margin:0;}.word-practice-dialog .bubble>.ava{display:none;}.word-practice-dialog .bubble>.msg{max-width:none;padding:0;background:transparent;border:0;box-shadow:none;}
.word-practice-dialog .prog-wrap{grid-column:1/-1;grid-row:1;align-self:center;margin:0;min-width:0;}.word-practice-dialog .prog-wrap>.txt:last-child{display:none;}
.word-practice-dialog .card{padding:18px 24px;border:1px solid #E8DDBA;border-radius:18px;background:#FFFEF8;box-shadow:none;text-align:left;}.word-practice-dialog .card .word-art-frame{display:grid;place-items:center;margin:0;}.word-practice-dialog .card .learning-art{width:120px;height:120px;padding:0;border-radius:22px;background:transparent;filter:none;}.word-practice-dialog .card .word{font-family:inherit;font-size:36px;font-weight:750;line-height:1.25;letter-spacing:0;margin:0;color:var(--leaf-deep,#149A48);}.word-practice-dialog .card .mean{font-size:20px;font-weight:500;line-height:1.45;margin:0;color:var(--ink,#3F3722);}.word-practice-dialog .card #wordExampleText{font-size:18px;line-height:1.55;min-height:44px;margin:8px 0 0;padding:8px 0;max-width:65ch;text-align:left;color:var(--ink,#3F3722);}.word-practice-dialog .card .ex-chinese{font-size:15px;line-height:1.6;margin:0;max-width:65ch;color:#786A52;}.word-practice-dialog .card .word-forms{font-size:14px;color:#786A52;}.word-practice-dialog .card .example-options{justify-content:flex-start;gap:4px;margin:8px 0 0;}.word-practice-dialog .card .example-option{min-height:44px;padding:6px 12px;font-family:inherit;font-size:14px;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:#786A52;}.word-practice-dialog .card .example-option.active{border-bottom-color:var(--leaf-deep,#149A48);background:transparent;color:var(--leaf-deep,#149A48);}
.word-practice-dialog .row{gap:8px;margin-top:0;}.word-practice-dialog .mini{min-height:44px;font-family:inherit;font-size:14px;}
.word-practice-dialog .learning-screen{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 14px;animation:none;}.word-practice-dialog .learning-screen>:is(.card,.row,.follow-slot,.word-quiz-slot,#nextPracticeWord){grid-column:1/-1;}.word-practice-dialog .follow-slot:empty,.word-practice-dialog .word-quiz-slot:empty{display:none;}
.word-practice-dialog .follow-demo{margin:0;padding:6px 12px;font-size:14px;line-height:1.5;border-radius:10px;}
.word-practice-dialog [hidden]{display:none!important;}
.word-practice-teacher{flex:0 0 auto;position:relative;z-index:1;margin-top:0;padding-top:12px;border-top:1px solid var(--line-green,#CDE5CD);background:var(--paper,#FFF);box-shadow:0 -12px 18px -14px rgba(35,68,34,.28);}
/* 不在内容区上压白色渐变：它会盖住紧贴底部的工具按钮文字 */
.word-practice-messages{display:flex;flex-direction:column;min-height:clamp(88px,13dvh,150px);max-height:clamp(180px,32dvh,360px);overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;margin-bottom:10px;padding-right:4px;}
/* 消息少的时候贴着输入框排列（聊天习惯），多了再往上撑满并滚动 */
.word-practice-messages>.bubble{flex:0 0 auto;}
.word-practice-messages>.bubble:first-child{margin-top:auto;}
.word-practice-messages:empty{display:none;}
.word-practice-dialog:has(.word-practice-messages:not(:empty)) .follow-demo{display:none;}
.word-practice-dialog .word-practice-messages .bubble>.msg{flex:0 1 auto;min-width:0;max-width:calc(100% - 40px);padding:10px 13px;border:1px solid var(--line-green,#CDE5CD);border-radius:13px;background:var(--cream,#FFF9E8);overflow-wrap:anywhere;}.word-practice-dialog .word-practice-messages .bubble.me>.msg{background:#E9F9EE;}
.word-practice-messages .r-wcard{box-shadow:none;animation:none;}.word-practice-messages .chat-art{width:32px;height:36px;}.word-practice-messages .rw-spell{display:none;}.word-practice-messages .rw-word{font-size:18px;}.word-practice-messages .r-mini{min-height:44px;}.word-practice-messages .r-say{align-items:center;}
.word-practice-dialog .word-practice-messages .bubble{display:flex;gap:8px;padding:5px 0;}.word-practice-dialog .word-practice-messages .bubble>.ava{display:flex;flex:0 0 28px;width:28px;height:28px;font-size:18px;background:var(--cream,#FFF9E8);}.word-practice-messages .msg,.word-practice-messages .r-p{font-size:14.5px;line-height:1.7;}
.word-practice-dialog .chatbar{position:static;margin:0;padding:0;box-shadow:none;border:0;border-radius:0;backdrop-filter:none;gap:10px;}
.word-practice-dialog .chatbar button,.word-practice-dialog #dwInput{min-height:50px;font-family:inherit;}
.word-practice-dialog #dwInput{font-size:15px;padding:13px 15px;border-radius:13px;background:#FFFEF8;}
.word-practice-dialog .chatbar>.dw-rt{flex:0 0 50px;width:50px;padding:0;display:grid;place-items:center;font-size:19px;border-radius:13px;}
/* 麦克风按钮的文案会从「🎤」变成「🎤 说话」，宽度必须随内容走，否则文字会挤到输入框上 */
.word-practice-dialog .chatbar>.dw-mic{flex:0 0 auto;min-width:50px;padding:0 13px;display:grid;place-items:center;font-size:16px;line-height:1;white-space:nowrap;border-radius:13px;}
.word-practice-dialog .dw-send{min-width:82px;padding:13px 22px;font-size:15px;border-radius:13px;background:#E3F2DD;color:var(--leaf-deep,#167743);border:1px solid var(--line-green,#CDE5CD);box-shadow:none;}.word-practice-dialog .dw-send:hover{background:#D8ECCD;filter:none;transform:none;}
.word-practice-dialog #nextPracticeWord{display:block;width:100%;min-height:46px;font-family:inherit;font-size:16px;margin-top:0!important;}
.word-practice-dialog button:focus-visible{outline:3px solid var(--leaf-deep,#167743);outline-offset:3px;}
.word-example-status{font-size:13px;line-height:1.5;color:#786A52;margin-left:8px;}
.word-practice-dialog .card .example-option.active{color:#167743;}
@media(min-width:601px){.word-practice-dialog .card{display:grid;grid-template-columns:128px minmax(0,650px);justify-content:center;column-gap:28px;row-gap:4px;}.word-practice-dialog .card .word-art-frame{grid-column:1;grid-row:1/7;align-self:center;width:128px;height:128px;}.word-practice-dialog .card>:not(.word-art-frame){grid-column:2;}.word-practice-dialog .card .word{grid-row:1;}.word-practice-dialog .card .mean{grid-row:2;}}
@media(max-width:600px){.word-practice-dialog{padding:16px;width:calc(100vw - 24px);max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);border-radius:18px;}.word-practice-header h2{font-size:16px;}.word-practice-dialog .card{display:grid;grid-template-columns:88px minmax(0,1fr);column-gap:14px;row-gap:4px;padding:14px;}.word-practice-dialog .card .word-art-frame{grid-column:1;grid-row:1/3;align-self:center;width:88px;height:88px;}.word-practice-dialog .card .learning-art{width:88px;height:88px;}.word-practice-dialog .card .word{grid-column:2;grid-row:1;font-size:32px;}.word-practice-dialog .card .mean{grid-column:2;grid-row:2;font-size:18px;}.word-practice-dialog .card>:is(.word-forms,.ex,.ex-chinese,.example-options){grid-column:1/-1;}.word-practice-dialog .row .mini{flex:1 1 calc(33% - 8px);padding:8px 7px;font-size:13px;}.word-practice-messages{min-height:84px;max-height:38dvh;}.word-practice-dialog .chatbar button,.word-practice-dialog #dwInput{min-height:46px;}.word-practice-dialog .chatbar>.dw-mic,.word-practice-dialog .chatbar>.dw-rt{min-height:46px;}.word-practice-dialog .chatbar>.dw-rt{flex:0 0 46px;width:46px;}.word-practice-dialog .chatbar>.dw-mic{min-width:46px;font-size:15px;}.word-practice-dialog .dw-send{min-width:68px;padding:12px 16px;}}
.word-quiz-panel{width:min(540px,100%);max-height:calc(100dvh - 40px);overflow:auto;padding:24px;border:1px solid var(--x-line);border-radius:20px;background:var(--x-panel);color:var(--x-text);box-sizing:border-box;}
/* 窗口不高时（笔记本半屏、横屏平板）：把词卡压扁一点，保证「轮到你读」提示条和输入框都在视线里 */
@media(max-height:720px){
  .word-practice-dialog{padding:12px 20px;}
  .word-practice-header h2{font-size:16px;}
  .word-practice-dialog .card{padding:10px 18px;}
  .word-practice-dialog .card .learning-art{width:96px;height:96px;}
  .word-practice-dialog .card .word{font-size:30px;}
  .word-practice-dialog .card .mean{font-size:18px;line-height:1.4;}
  .word-practice-dialog .card #wordExampleText{font-size:16px;line-height:1.5;margin:4px 0 0;padding:4px 0;min-height:36px;}
  .word-practice-dialog .card .ex-chinese{font-size:14px;line-height:1.5;}
  .word-practice-dialog .row{gap:6px;}
  .word-practice-dialog .mini{min-height:40px;font-size:13.5px;}
  .word-practice-dialog .follow-demo{padding:4px 10px;font-size:13px;line-height:1.45;}
  .word-practice-messages{min-height:72px;max-height:30dvh;}
  .word-practice-teacher{padding-top:8px;}
  .word-practice-dialog .chatbar button,.word-practice-dialog #dwInput{min-height:44px;}
}
/* 窗口特别矮（悬浮小窗 / 分屏）：只保留「单词 + 例句 + 工具 + 轮到你读」，
   例句切换和配图让位，保证整块内容不用滚动也看得全 */
@media(max-height:560px){
  .word-practice-dialog{padding:8px 14px;}
  .word-practice-header h2{font-size:15px;}
  .word-practice-header #skipWord{min-height:34px;font-size:13px;}
  .word-practice-close{flex-basis:36px;width:36px;height:36px;font-size:22px;}
  .word-practice-dialog .card{padding:8px 14px;grid-template-columns:72px minmax(0,1fr);column-gap:12px;row-gap:2px;}
  .word-practice-dialog .card .word-art-frame{grid-column:1;grid-row:1/4;align-self:center;width:72px;height:72px;}
  .word-practice-dialog .card .learning-art{width:72px;height:72px;}
  .word-practice-dialog .card .word{grid-column:2;grid-row:1;font-size:26px;}
  .word-practice-dialog .card .mean{grid-column:2;grid-row:2;font-size:15px;}
  .word-practice-dialog .card #wordExampleText{grid-column:2;grid-row:3;font-size:14px;line-height:1.45;margin:2px 0 0;padding:2px 0;min-height:0;}
  .word-practice-dialog .card .ex-chinese{grid-column:1/-1;font-size:13px;line-height:1.4;}
  .word-practice-dialog .card .example-options{display:none;}
  .word-practice-dialog .row{gap:5px;}
  .word-practice-dialog .mini{min-height:34px;padding:5px 9px;font-size:12.5px;}
  .word-practice-dialog .follow-demo{padding:3px 9px;font-size:12.5px;}
  .word-practice-teacher{padding-top:6px;}
  .word-practice-messages{min-height:56px;max-height:22dvh;}
  .word-practice-dialog .chatbar button,.word-practice-dialog #dwInput{min-height:38px;}
  .word-practice-dialog .chatbar>.dw-rt{flex:0 0 38px;width:38px;font-size:16px;}
}
.word-quiz-header{display:flex;align-items:center;justify-content:space-between;gap:15px;}.word-quiz-header h2{font-size:21px;color:var(--x-cyan);margin:0;}.word-quiz-close{border:0;background:transparent;color:var(--x-dim);font-size:27px;cursor:pointer;}
.word-quiz-question{font-size:22px;line-height:1.5;text-align:center;margin:24px 0;overflow-wrap:anywhere;}.word-quiz-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.word-quiz-choice{font:inherit;font-size:19px;line-height:1.4;min-height:56px;padding:12px;border:1px solid var(--x-line);border-radius:12px;background:var(--x-panel2);color:var(--x-text);cursor:pointer;overflow-wrap:anywhere;}.word-quiz-choice.correct{color:var(--x-green);border-color:var(--x-green);background:rgba(74,222,128,.08);}.word-quiz-choice.retry{border-color:var(--x-gold);}
.word-quiz-status{min-height:28px;font-size:16px;line-height:1.6;margin:18px 0;color:var(--x-gold);}.word-quiz-footer{display:flex;gap:10px;justify-content:center;}.word-quiz-panel .note{font-size:12px;color:var(--x-dim);text-align:center;line-height:1.5;}.word-quiz-panel button:focus-visible{outline:2px solid var(--x-cyan);outline-offset:3px;}
#wordReviewMask [data-action=add]{display:none;}#wordReviewMask .chat-practice-actions{display:flex;}#wordReviewMask .chat-practice-row-main{flex-wrap:wrap;}.word-review-confirm{display:flex;align-items:center;gap:8px;font-size:13px;line-height:1.5;margin:14px 0;color:var(--x-dim);}
.today-word-play{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:3px;width:28px;height:28px;background:transparent;border:0;border-radius:6px;color:var(--x-cyan);font:inherit;cursor:pointer;}.today-word-play:hover{background:rgba(34,180,94,.1);}
.today-word-main>span,.today-word-detail,.today-word-record small{color:var(--x-dim);}.today-word-rating{margin-left:auto;}.today-word-rating.needs-practice{color:var(--x-gold);}
.today-word-record small{display:block;font-size:12px;}#todayLearningSummary{margin:8px 0 12px;}#todayLearningMore[hidden]{display:none;}
.chat-practice-meaning{color:var(--x-dim);font-size:14px;overflow-wrap:anywhere;}
.chat-practice-actions{display:flex;gap:7px;flex-wrap:wrap;}.chat-practice-actions .x-btn{font-size:13px;padding:7px 10px;}
.chat-practice-example,.chat-practice-status{font-size:13px;color:var(--x-dim);line-height:1.6;margin-top:8px;}
.chat-practice-result{margin-top:10px;}.chat-inline-word{display:inline;color:var(--x-cyan);background:transparent;border:0;border-bottom:1px dotted var(--x-line);font:inherit;padding:0 2px;cursor:pointer;}
.chat-word-row-anchor{margin:8px 0;}.memory-units{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
.memory-unit,.memory-record{border:1px solid var(--x-line);border-radius:10px;padding:10px;margin:7px 0;font-size:14px;line-height:1.6;}
.memory-unit span,.memory-record span,.memory-record small{display:block;color:var(--x-dim);}
.memory-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0 12px;}.memory-preferences{margin:12px 0;}
@media(max-width:700px){.chat-practice-row-main{flex-direction:column;align-items:stretch;gap:9px;}
  .chat-practice-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));}.chat-practice-actions .x-btn{font-size:12px;padding:6px;white-space:normal;line-height:1.5;}
  .memory-units{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:700px){.settings-layout{grid-template-columns:1fr;gap:15px;}
  .settings-nav{flex-direction:row;position:static;overflow-x:auto;max-width:100%;padding-bottom:6px;}
  .settings-nav-button{flex:0 0 auto;white-space:nowrap;text-align:center;padding:8px 11px;}
  .settings-panel .x-field{flex-wrap:wrap;}.settings-panel .x-field .x-input{min-width:0;}}
.unit-start-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.unit-start-actions .unit-dictate{padding:12px 16px;font-size:14px;}
.unit-dictation{width:100%;box-sizing:border-box;}
.dictation-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.dictation-head strong{font-size:19px;flex:1;text-align:center;}
.dictation-controls{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin:24px 0 16px;}
.dictation-delay{display:flex;align-items:center;gap:9px;font-size:14px;}.dictation-delay .x-input{width:95px;flex:none;}
.dictation-progress{font-size:13px;color:var(--x-dim);text-align:center;}
.dictation-current{padding:36px 20px;margin:18px auto;text-align:center;border:1px solid var(--x-line);border-radius:18px;background:#FFFDF6;max-width:800px;}
.dictation-clock{font-size:44px;font-weight:700;color:var(--x-cyan);}.dictation-status{font-size:16px;line-height:1.7;}
.dictation-note,.dictation-saved{font-size:13px;color:var(--x-dim);text-align:center;}
.dictation-answers{max-width:800px;margin:24px auto;padding-left:35px;}.dictation-answers li{padding:10px;border-bottom:1px solid var(--x-line);}
.dictation-answers b{display:inline-block;min-width:150px;}.dictation-answers span{color:var(--x-dim);}
@media(max-width:700px){.unit-start-actions{width:100%;}.unit-start-actions>*{flex:1;}.dictation-head strong{font-size:15px;order:2;flex-basis:100%;}
  .dictation-head .mini{font-size:12px;}.dictation-clock{font-size:36px;}.dictation-controls{gap:8px;}.dictation-current{padding:24px 12px;}}
.word-art-frame{display:grid;place-items:center;margin:0 auto 12px;height:138px;}
.learning-art{width:136px;height:138px;object-fit:contain;background:#edf8ff;border-radius:22px;padding:8px;box-sizing:border-box;filter:drop-shadow(0 5px 10px rgba(0,0,0,.18));}
.chat-art{width:68px;height:78px;object-fit:contain;flex:0 0 auto;}
.unit-word-art{display:flex;align-items:center;justify-content:center;width:48px;flex:0 0 48px;}
.list-art{width:44px;height:48px;object-fit:contain;background:#edf8ff;border-radius:10px;padding:4px;box-sizing:border-box;}
@media(max-width:700px){.word-art-frame{height:110px;margin-bottom:8px;}.learning-art{width:108px;height:110px;}
  .unit-word-art{width:36px;flex-basis:36px;}.list-art{width:34px;height:40px;}.unit-word-row{gap:9px;}}
@media(max-width:700px){
  .appbar{padding:10px!important;gap:8px;}
  .appbar .logo{width:34px;height:34px;font-size:24px;}
  .appbar .title h1{font-size:16px;white-space:nowrap;}.appbar .title p{display:none;}
  .appbar .spacer{display:none;}.appbar .title{flex:1 0 calc(100% - 44px);}.appbar .status{display:none;}
  .appbar .chip{order:1;margin-right:auto;font-size:11px;}
  .appbar .ghost-btn{order:2;}.appbar .top-toggle.mini{order:3;}
  .appbar:is(.chat-cta,.ghost-btn,.top-toggle.mini){font-size:12px;padding:7px 9px!important;}
  .chat-word-action{width:100%;}.chat-add-word{padding:6px 8px!important;}
}
@media(max-width:700px){.unit-card.welcome{flex-wrap:wrap;gap:10px;}.unit-card.welcome .unit-progress{flex-basis:100%;}}
.unit-progress{font-size:12px;color:var(--x-dim);line-height:1.5;}
.personal-words{margin-top:16px;}
.learning-actions{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:14px;}
.learning-actions .mini{font-size:14px;padding:8px 12px;}
.learning-back{display:flex;gap:8px;flex-wrap:wrap;}
.unit-overview-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;}
.unit-overview-head .mini{padding:7px 11px;font-size:13px;}
.unit-book{font-size:12px;color:var(--x-dim);}
.unit-overview-title{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;margin:22px 0 18px;}
.unit-overview-title h2{font-size:25px;line-height:1.35;margin:7px 0;color:var(--x-text);}
.unit-overview-title p,.unit-overview-note{font-size:13px;line-height:1.6;color:var(--x-dim);margin:8px 0;}
.unit-overview-title .primary{font-size:15px;padding:13px 18px;white-space:normal;}
.unit-word-list{display:flex;flex-direction:column;border:1px solid var(--x-line);border-radius:16px;overflow:hidden;margin-top:14px;}
.unit-word-row{display:flex;align-items:center;gap:14px;padding:15px;background:#FFFDF6;border-bottom:1px solid var(--x-line);min-width:0;}
.unit-word-row:last-child{border-bottom:0;}
.unit-word-index{font-size:12px;width:20px;flex:0 0 auto;color:var(--x-dim);}
.unit-word-info{display:flex;flex-direction:column;gap:5px;flex:1;min-width:0;}
.unit-word-info b{font-size:18px;color:var(--x-text);overflow-wrap:anywhere;}
.unit-word-info span{font-size:13px;color:var(--x-dim);}
.unit-word-state{font-size:11px;border:1px solid var(--x-line);border-radius:999px;padding:4px 9px;white-space:nowrap;color:var(--x-dim);}
.unit-word-state.known{color:var(--x-green);}
.unit-word-tools{display:flex;gap:8px;flex:0 0 auto;}
.unit-word-tools .mini{font-size:13px;padding:7px 10px;}
.word-history{flex-basis:100%;font-size:12px;line-height:1.6;padding:8px 10px;background:#FFFDF6;border-radius:10px;}
.word-history>div{padding:6px 0;border-bottom:1px solid var(--x-line);overflow-wrap:anywhere;}
.word-history>div:last-child{border-bottom:0;}
.word-history span{color:var(--x-dim);font-size:11px;}
#chat .bubble:has(> .msg > .completion-screen){width:100%;max-width:820px;margin-left:auto;margin-right:auto;}
#chat .bubble:has(> .msg > .completion-screen)>.msg{flex:1;max-width:none;min-width:0;padding:28px;}
#chat .completion-screen{width:100%;max-width:none;box-sizing:border-box;text-align:center;background:transparent;border:0;padding:0;}
.completion-icon{display:grid;place-items:center;margin:0 auto 14px;width:48px;height:48px;border-radius:50%;background:rgba(74,222,128,.13);color:var(--x-green);font-size:25px;}
.completion-screen h2{font-size:24px;margin:0 0 8px;color:var(--x-text);line-height:1.4;}
.completion-screen.has-quiz .completion-stats{grid-template-columns:repeat(2,minmax(0,1fr));}
.completion-range,.completion-attention{font-size:13px;line-height:1.7;color:var(--x-dim);margin:12px 0;}
.completion-attention{color:var(--x-gold);}
.completion-book{font-size:13px;color:var(--x-dim);margin:0 0 24px;}
.completion-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--x-line);border-radius:14px;padding:16px 0;background:#FFFDF6;}
.completion-stats>div{display:flex;flex-direction:column;gap:7px;border-right:1px solid var(--x-line);padding:4px 8px;}
.completion-stats>div:last-child{border-right:0;}
.completion-stats b{font-size:27px;font-weight:600;color:var(--x-cyan);}
.completion-stats span{font-size:12px;color:var(--x-dim);}
.completion-note{font-size:13px;line-height:1.7;color:var(--x-dim);margin:20px 0;}
.completion-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;}
.completion-actions:is(.primary,.mini){font-size:14px;padding:11px 18px;border-radius:12px;}
@media(max-width:500px){#chat .bubble:has(> .msg > .completion-screen)>.msg{padding:20px 14px;}.completion-screen h2{font-size:21px;}.completion-stats b{font-size:22px;}.completion-stats span{font-size:11px;}}
@media(max-width:600px){.unit-word-row{gap:8px;padding:13px 10px;flex-wrap:wrap;}.unit-word-state{margin-left:auto;}.unit-word-tools{flex-basis:100%;justify-content:flex-end;}.unit-overview-title .primary{width:100%;}.unit-overview-title h2{font-size:22px;}}
.learning-screen .prog-wrap{flex-wrap:wrap;}
.learning-screen .card .word{overflow-wrap:anywhere;}
@media(max-width:700px){.unit-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}.unit-card{padding:14px;}.curriculum-heading b{font-size:17px;}}
@media(max-width:380px){.unit-grid,.unit-grid.fltrp{grid-template-columns:1fr;}}

/* —— 全屏登录层 —— */
#loginMask{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 30%,#FFFFFF,rgba(4,9,24,.97));
  backdrop-filter:blur(10px);padding:16px;overflow:auto;}
.login-card{width:min(560px,100%);background:var(--x-panel);border:1.5px solid var(--x-line);
  border-radius:22px;padding:22px 24px;box-shadow:0 20px 70px rgba(0,0,0,.65),inset 0 0 40px rgba(34,180,94,.06);}
.login-card h1{font-size:24px;margin:0 0 4px;color:var(--x-cyan);text-shadow:0 0 16px rgba(34,180,94,.5);}
.login-card .sub{font-size:13px;color:var(--x-dim);margin-bottom:16px;line-height:1.6;}
.login-sec{margin-top:14px;border-top:1px dashed var(--x-line);padding-top:12px;}
.login-sec h3{font-size:14px;color:var(--x-gold);margin:0 0 9px;letter-spacing:1px;}
.user-grid{display:flex;gap:9px;flex-wrap:wrap;}
.user-tile{flex:1;min-width:96px;background:var(--x-panel2);border:1px solid var(--x-line);
  border-radius:14px;padding:10px 8px;text-align:center;cursor:pointer;color:var(--x-text);}
.user-tile:hover{border-color:var(--x-cyan);box-shadow:0 0 18px rgba(34,180,94,.25);transform:translateY(-2px);}
.user-tile .e{font-size:26px;display:block;}
.user-tile .n{font-size:13px;margin-top:3px;display:block;}
.user-tile .g{font-size:11px;color:var(--x-dim);}
.x-field{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0;}
.x-field label{font-size:13px;color:var(--x-dim);min-width:64px;}
.x-input{flex:1;min-width:110px;background:#FFFFFF;color:var(--x-text);
  border:1px solid var(--x-line);border-radius:10px;padding:9px 11px;font-size:15px;}
.x-input:focus{outline:none;border-color:var(--x-cyan);box-shadow:0 0 12px rgba(34,180,94,.25);}
/* 4位密码框的占位圆点只是提示「有4个空位」，必须明显淡于真实输入的密码掩码，
   否则容易被误认为已经输过密码。opacity:1 统一 Firefox 默认的 0.54 透明度。 */
#pinInput::placeholder{color:rgba(42,33,24,.16);opacity:1;}
#pinInput::-webkit-input-placeholder{color:rgba(42,33,24,.16);opacity:1;}
#pinInput::-moz-placeholder{color:rgba(42,33,24,.16);opacity:1;}
textarea.x-input{width:100%;min-height:132px;font-family:var(--font-mono,monospace);font-size:13px;line-height:1.6;resize:vertical;}
.avatar-row{display:flex;gap:7px;flex-wrap:wrap;}
.avatar-pick{width:38px;height:38px;border-radius:50%;border:1px solid var(--x-line);
  background:var(--x-panel2);font-size:21px;cursor:pointer;}
.avatar-pick.on{border-color:var(--x-cyan);box-shadow:0 0 14px rgba(34,180,94,.55);}
.x-btn{background:linear-gradient(135deg,rgba(34,180,94,.20),rgba(255,159,67,.20));
  border:1px solid var(--x-cyan);color:var(--x-text);border-radius:12px;
  padding:9px 16px;font-size:14px;cursor:pointer;white-space:nowrap;}
.x-btn:hover{box-shadow:0 0 18px rgba(34,180,94,.45);}
.x-btn.ghost{border-color:var(--x-line);background:var(--x-panel2);}
.x-btn.gold{border-color:var(--x-gold);}
.x-btn.mic{padding:9px 12px;font-size:17px;line-height:1;}
.x-btn.mic.rec{border-color:#ff5f7a;background:rgba(255,95,122,.16);animation:x-mic-pulse 1.1s ease-in-out infinite;}
@keyframes x-mic-pulse{
  0%,100%{box-shadow:0 0 6px rgba(255,95,122,.35);}
  50%{box-shadow:0 0 20px rgba(255,95,122,.9);}
}
.voice-hint{font-size:12.5px;color:var(--x-dim);min-height:18px;margin:-4px 2px 4px;line-height:1.6;white-space:pre-line;}
.x-msg{font-size:13px;margin-top:9px;line-height:1.6;color:var(--x-gold);}

/* —— 通用面板 —— */
.x-mask{position:fixed;inset:0;z-index:150;display:flex;align-items:center;justify-content:center;
  background:rgba(255,240,200,.66);backdrop-filter:blur(6px);padding:24px;box-sizing:border-box;}
.x-panel{width:min(1040px,100%);max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px);
  box-sizing:border-box;min-width:0;overflow:auto;background:var(--x-panel);
  border:1.5px solid var(--x-line);border-radius:20px;padding:18px 20px;
  box-shadow:0 18px 50px rgba(120,100,40,.22);}
.x-panel h2{margin:0 0 10px;font-size:19px;color:var(--x-cyan);text-shadow:none;}
.x-panel h3{margin:14px 0 7px;font-size:15px;color:#B07C00;}
.x-panel .note{font-size:12px;color:var(--x-dim);line-height:1.65;}
.x-close{float:right;display:inline-grid;place-items:center;min-width:44px;min-height:44px;padding:0;border:none;background:transparent;color:var(--x-dim);font-size:24px;cursor:pointer;}
.x-close:hover{color:var(--x-cyan);}
.x-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:9px 0;}

/* —— 统计卡 —— */
.learning-center-panel{width:min(1560px,100%);height:calc(100dvh - 48px);display:flex;flex-direction:column;overflow:hidden;padding:20px;}
.learning-center-panel{color-scheme:dark;}.learning-center-panel *{scrollbar-width:thin;scrollbar-color:#EDF5E4 transparent;}
.learning-center-panel::-webkit-scrollbar{width:6px;height:6px;}.learning-center-panel::-webkit-scrollbar-track{background:transparent;}.learning-center-panel::-webkit-scrollbar-thumb{background:#EDF5E4;border-radius:6px;}
.learning-center-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:16px;border-bottom:1px solid var(--x-line);}
.learning-center-header strong{display:block;font-size:21px;color:var(--x-cyan);}.learning-center-header span{display:block;font-size:13px;color:var(--x-dim);margin-top:5px;}
.learning-center-layout{display:grid;grid-template-columns:170px minmax(0,1fr);gap:24px;flex:1;min-height:0;padding-top:20px;}
.learning-center-nav{display:flex;flex-direction:column;gap:8px;}.learning-center-nav button{font:inherit;font-size:14px;text-align:left;padding:12px 14px;border:1px solid transparent;border-radius:11px;background:transparent;color:var(--x-dim);cursor:pointer;}
.learning-center-nav button.active{background:rgba(34,180,94,.09);border-color:var(--x-line);color:var(--x-cyan);font-weight:600;}
/* 有到期的词时，「到期复习」入口亮一下，家长一眼能看到今天要复习几个 */
.learning-center-nav button.has-due:not(.active){color:var(--x-gold);border-color:rgba(255,212,94,.35);background:rgba(255,212,94,.08);}
.learning-center-content{min-width:0;min-height:0;overflow:auto;padding-right:5px;overscroll-behavior:contain;}.learning-center-section{min-width:0;}
.learning-center-view>h2{font-size:18px;margin-bottom:18px;}.learning-center-view .x-step{padding:13px;margin:8px 0;}.calendar-plan{margin-top:20px;border-top:1px solid var(--x-line);padding-top:16px;}.calendar-plan>summary{font-size:15px;color:var(--x-cyan);cursor:pointer;padding:6px 0;}
.learning-calendar-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:space-between;margin-bottom:14px;}
.learning-calendar-toolbar button{font:inherit;font-size:14px;color:var(--x-dim);background:transparent;border:1px solid var(--x-line);border-radius:9px;padding:7px 12px;cursor:pointer;}
.calendar-view-switch{display:flex;gap:4px;}.calendar-view-switch button[aria-pressed=true]{color:var(--x-cyan);border-color:var(--x-cyan);background:rgba(34,180,94,.1);}
.calendar-period{display:flex;align-items:center;gap:14px;}.calendar-period strong{font-size:15px;color:var(--x-text);text-align:center;}.calendar-period button{font-size:21px;line-height:1;}
.calendar-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:20px;min-height:62px;}.calendar-summary>span{padding:11px 13px;border-radius:12px;background:#FFFDF6;border:1px solid rgba(31,168,91,.16);font-size:12px;color:var(--x-dim);}.calendar-summary b{display:block;font-size:21px;color:var(--x-text);font-weight:600;}
.learning-calendar-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px;align-items:start;}.calendar-date-pane,.calendar-day-pane{min-width:0;}.calendar-day-pane{border-left:1px solid var(--x-line);padding-left:20px;max-height:none;overflow:visible;}.calendar-day-pane>h3{margin-top:0;color:var(--x-text);}
.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;}.calendar-weekdays{margin-bottom:7px;text-align:center;font-size:12px;color:var(--x-dim);}
.calendar-day{font:inherit;min-width:0;min-height:76px;display:flex;flex-direction:column;align-items:center;gap:5px;border:1px solid rgba(31,168,91,.16);border-radius:12px;background:#F7FBF1;color:var(--x-dim);padding:10px 3px;cursor:pointer;}.calendar-day.has-learning{background:#E6F9EC;border-color:rgba(31,168,91,.32);color:var(--x-text);}.calendar-day.selected{border-color:var(--x-cyan);background:#DCF6E6;box-shadow:0 0 0 3px rgba(34,180,94,.12);}.calendar-day-number{font-size:15px;line-height:1.4;}.calendar-day.is-today .calendar-day-number{color:var(--x-cyan);font-weight:700;}.calendar-day-count,.calendar-day-issue{font-size:10px;}.calendar-day-count{color:var(--x-cyan);}.calendar-day-issue{color:var(--x-gold);}.calendar-grid.week .calendar-day-number{font-size:12px;}
.calendar-legend{font-size:12px;color:var(--x-dim);display:flex;align-items:center;gap:7px;margin-top:12px;}.calendar-legend i{width:9px;height:9px;border-radius:3px;background:var(--x-cyan);}
.calendar-empty{font-size:14px;line-height:1.7;color:var(--x-dim);padding:35px 12px;border:1px dashed var(--x-line);border-radius:12px;text-align:center;}
.calendar-year-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}.calendar-month-preview{display:block;text-align:left;font:inherit;padding:12px;border:1px solid rgba(31,168,91,.18);border-radius:12px;background:#F7FBF1;color:var(--x-text);cursor:pointer;min-width:0;}.calendar-month-preview>span:first-child{display:flex;justify-content:space-between;align-items:center;font-size:13px;margin-bottom:10px;}.calendar-month-preview small{font-size:10px;color:var(--x-dim);}.calendar-mini-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;}.calendar-mini-day{aspect-ratio:1;display:block;border-radius:3px;background:#EEF6E6;}.calendar-mini-day.active{background:rgba(34,180,94,.6);}.calendar-mini-day.today{outline:1px solid var(--x-gold);outline-offset:1px;}
.learning-center-panel:is(button,summary):focus-visible{outline:2px solid var(--x-cyan);outline-offset:3px;}
@media(max-width:1000px){.learning-center-layout{grid-template-columns:145px minmax(0,1fr);gap:15px;}.learning-calendar-layout{grid-template-columns:1fr;gap:20px;}.calendar-day-pane{padding-left:0;border-left:0;border-top:1px solid var(--x-line);padding-top:16px;max-height:none;}}
@media(max-width:700px){.learning-center-panel{height:calc(100dvh - 32px);padding:14px;}.learning-center-layout{display:flex;flex-direction:column;padding-top:12px;gap:14px;}.learning-center-nav{flex-direction:row;gap:5px;overflow:auto;flex-shrink:0;}.learning-center-nav button{min-height:44px;font-size:12px;padding:9px 10px;white-space:nowrap;}.learning-center-header strong{font-size:18px;}.learning-center-header span{font-size:12px;}.learning-center-content{padding-right:0;}.calendar-summary{gap:6px;}.calendar-summary>span{padding:9px 7px;font-size:10px;}.calendar-summary b{font-size:18px;}.calendar-period{order:3;justify-content:space-between;width:100%;}.calendar-day{min-height:66px;border-radius:7px;padding:8px 2px;}.calendar-weekdays,.calendar-grid{gap:3px;}.calendar-day-issue{font-size:9px;}.calendar-year-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.today-word-rating{margin-left:0;}}
.x-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:9px;margin:10px 0;}
.x-stat{background:var(--x-panel2);border:1px solid var(--x-line);border-radius:13px;
  padding:10px 8px;text-align:center;}
.x-stat b{display:block;font-size:22px;color:var(--x-cyan);text-shadow:0 0 12px rgba(34,180,94,.45);}
.x-stat span{font-size:11px;color:var(--x-dim);}

/* —— 智能体计划步骤 —— */
.x-reason{background:rgba(255,212,94,.08);border:1px solid rgba(255,212,94,.30);
  border-radius:13px;padding:11px 13px;font-size:14px;line-height:1.7;color:#3F3722;}
.x-step{background:var(--x-panel2);border:1px solid var(--x-line);border-radius:14px;
  padding:12px 14px;margin:9px 0;}
.x-step .t{font-size:15px;color:var(--x-text);font-weight:700;}
.x-step .d{font-size:13px;color:var(--x-cyan);margin-top:5px;line-height:1.6;}
.x-step .r{font-size:12px;color:var(--x-dim);margin-top:5px;}
.x-tag{display:inline-block;font-size:11px;border-radius:999px;padding:2px 9px;margin-right:6px;
  border:1px solid var(--x-line);color:var(--x-violet);}

/* —— 复习 / 单词列表 —— */
.x-word{display:flex;align-items:center;gap:9px;background:var(--x-panel2);
  border:1px solid var(--x-line);border-radius:12px;padding:9px 11px;margin:7px 0;flex-wrap:wrap;}
.x-word .e{font-size:23px;}
.x-word .w{font-weight:700;color:var(--x-cyan);font-size:16px;}
.x-word .m{color:var(--x-dim);font-size:13px;}
.x-word .sp{flex:1;}
.x-word .due{font-size:11px;color:var(--x-gold);}
.x-empty{text-align:center;color:var(--x-dim);padding:26px 10px;font-size:14px;line-height:1.8;}

/* —— 学习报告：点得开的统计 —— */
.rp-chips{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0 4px;}
.rp-chip{font-family:inherit;font-size:12.5px;line-height:1.4;padding:7px 12px;border-radius:999px;cursor:pointer;
  border:1px solid var(--x-line);background:var(--x-panel2);color:var(--x-dim);transition:.15s;}
.rp-chip b{color:var(--x-cyan);margin-left:2px;font-size:13px;}
.rp-chip:hover{border-color:var(--x-cyan);}
.rp-chip.open{background:rgba(34,180,94,.16);border-color:var(--x-cyan);color:#3F3722;font-weight:600;}
.rp-chip.dim{opacity:.5;}
.rp-row{width:100%;font-family:inherit;text-align:left;padding:4px 6px;border:1px solid transparent;
  border-radius:10px;background:none;cursor:pointer;transition:.15s;}
.rp-row:hover{background:var(--x-panel2);border-color:var(--x-line);}
.rp-row.open{background:rgba(34,180,94,.12);border-color:var(--x-cyan);}
.rp-row.zero{opacity:.55;}
.rp-row .n{width:30px;text-align:right;font-variant-numeric:tabular-nums;}
.rp-badge{font-size:11px;line-height:1.4;padding:1px 7px;border-radius:999px;color:var(--x-gold);margin-left:10px;
  background:rgba(255,212,94,.16);border:1px solid rgba(255,212,94,.38);white-space:nowrap;}
.rp-arrow{margin-left:12px;color:var(--x-dim);font-size:15px;line-height:1;}
.x-bar.rp-bar{border:1px solid transparent;border-radius:10px;background:none;font-family:inherit;
  cursor:pointer;padding:0 2px;transition:.15s;}
.x-bar.rp-bar:hover{background:var(--x-panel2);border-color:var(--x-line);}
.x-bar.rp-bar.open{background:rgba(34,180,94,.12);border-color:var(--x-cyan);}
.rp-themes{display:flex;flex-direction:column;gap:2px;margin:8px 0 4px;}
.rp-theme{display:flex;align-items:center;gap:8px;font-size:12px;width:100%;text-align:left;
  font-family:inherit;padding:5px 6px;border:1px solid transparent;border-radius:9px;
  background:none;cursor:pointer;transition:.15s;}
.rp-theme:hover{background:var(--x-panel2);border-color:var(--x-line);}
.rp-theme.open{background:rgba(34,180,94,.12);border-color:var(--x-cyan);}
.rp-theme .tl{width:72px;color:var(--x-dim);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rp-theme .bar{flex:1;height:10px;background:rgba(255,255,255,.05);border-radius:5px;overflow:hidden;}
.rp-theme .bar i{display:block;height:100%;background:linear-gradient(90deg,var(--x-gold),var(--x-cyan));}
.rp-theme .n{width:46px;color:var(--x-cyan);font-size:11.5px;font-variant-numeric:tabular-nums;}
.rp-detail{margin:6px 0 12px;padding:10px 12px;border:1px solid var(--x-line);border-radius:13px;
  background:var(--x-panel2);animation:rpIn .18s ease-out;}
@keyframes rpIn{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}
.rp-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:4px;}
.rp-head b{font-size:14px;color:var(--x-cyan);}
.rp-head span{font-size:11.5px;color:var(--x-dim);}
.rp-word,.rp-item{display:flex;align-items:center;gap:8px;padding:6px 2px;
  border-bottom:1px dashed var(--x-line);font-size:13px;}
.rp-word:last-child,.rp-item:last-child{border-bottom:none;}
.rp-word .e,.rp-item .e{font-size:19px;}
.rp-word .w,.rp-item .w{font-weight:700;color:var(--x-text);min-width:62px;}
.rp-item .w{font-weight:600;font-size:13.5px;}
.rp-word .m,.rp-item .m{color:var(--x-dim);font-size:12.5px;}
.rp-word .sp,.rp-item .sp{flex:1;}
.rp-word .due{font-size:11px;color:var(--x-dim);white-space:nowrap;}
.rp-word .due.hot{color:var(--x-gold);}
.rp-tag{font-size:11px;line-height:1.4;padding:1px 7px;border-radius:999px;color:var(--x-dim);
  background:rgba(255,255,255,.05);border:1px solid var(--x-line);white-space:nowrap;}
.rp-item .tm{font-size:11.5px;color:var(--x-dim);font-variant-numeric:tabular-nums;}
.rp-ok{font-size:11.5px;padding:1px 7px;border-radius:999px;white-space:nowrap;}
.rp-ok.yes{color:#2F7D3A;background:rgba(34,180,94,.16);}
.rp-ok.no{color:#B4453B;background:rgba(214,90,72,.14);}
.rp-ok.none{color:var(--x-dim);}
/* —— 学过的词：搜索 / 筛选 / 排序 —— */
.lv-tools{display:flex;gap:8px;align-items:center;margin:10px 0 2px;flex-wrap:wrap;}
.lv-search{flex:1 1 200px;min-width:150px;font-family:inherit;font-size:13.5px;padding:9px 13px;
  border-radius:11px;border:1px solid var(--x-line);background:var(--x-panel2);color:var(--x-text);}
.lv-search::placeholder{color:var(--x-dim);}
.lv-search:focus{outline:none;border-color:var(--x-cyan);}
.lv-sort{font-family:inherit;font-size:12.5px;height:38px;padding:0 10px;border-radius:11px;cursor:pointer;
  border:1px solid var(--x-line);background:var(--x-panel2);color:var(--x-text);}
.lv-search{height:38px;box-sizing:border-box;}
.lv-count{margin:2px 0 8px;font-size:11.5px;}
.lv-meta{font-size:11px;color:var(--x-dim);white-space:nowrap;}
.rp-tag.weak{color:var(--x-gold);background:rgba(255,212,94,.16);border-color:rgba(255,212,94,.38);}
.rp-tag.ok{color:#2F7D3A;background:rgba(34,180,94,.16);border-color:rgba(34,180,94,.34);}
.rp-word .due.hot,.x-word .due.hot{color:#B4453B;font-weight:600;}
@media(max-width:600px){
  .rp-theme .tl{width:56px;}
  .rp-row .lab{width:46px;}
  .rp-row{gap:6px;}
  .rp-badge{margin-left:6px;font-size:10.5px;}
  .rp-arrow{margin-left:6px;}
  .x-stats{grid-template-columns:repeat(3,minmax(0,1fr));}
  .rp-word,.rp-item{flex-wrap:wrap;row-gap:4px;}
  .rp-word .m,.rp-item .m{max-width:132px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .rp-item .tm{display:none;}
  .rp-word .due,.rp-word .rp-tag{font-size:10.5px;}
  .rp-word .rp-tag{display:none;}
  .rp-word .sp{flex:1 1 100%;height:0;margin:0;}
  .rp-word .due{order:1;}
  .rp-word button{order:2;margin-left:auto;}
  .x-word .lv-meta{display:none;}
  .x-word .rp-tag{font-size:10.5px;}
  .lv-list .x-word{flex-wrap:wrap;row-gap:7px;}
  .lv-list .x-word .m{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .lv-list .x-word .sp{flex:1 1 100%;height:0;margin:0;}
  .lv-list .x-word .due{order:1;}
  .lv-list .x-word button{order:2;}
  .lv-tools .lv-search{flex:1 1 100%;}
  .lv-tools .lv-sort{flex:0 0 auto;margin-left:auto;}
  .x-bar span{font-size:9px;}
  .rp-stage{gap:6px;padding:3px 4px;}
  .rp-stage .lab{width:42px;font-size:11px;}
  .rp-stage .rp-dueb{font-size:10px;padding:0 5px;}
  .rp-stage-more{margin-left:6px;font-size:11.5px;}
  .h3-note{display:block;margin:3px 0 0;}
  .rv-filter{font-size:11.5px;}
  /* 复习面板窄屏：统计卡 2×2，单词行排成两行 */
  #reviewMask .x-stats{grid-template-columns:repeat(2,minmax(0,1fr));}
  #reviewList .x-word{flex-wrap:wrap;row-gap:7px;}
  #reviewList .x-word .sp{flex:1 1 100%;height:0;margin:0;}
  #reviewList .x-word .due,#reviewList .x-word .rv-tag{font-size:10.5px;}
}

/* —— 复习自动归类：筛选条 + 状态标签 —— */
.rv-chips{display:flex;flex-wrap:wrap;gap:7px;margin:9px 0 4px;}
.rv-chip{font-family:inherit;font-size:12.5px;line-height:1.4;padding:6px 11px;border-radius:999px;cursor:pointer;
  border:1px solid var(--x-line);background:var(--x-panel2);color:var(--x-dim);transition:.15s;}
.rv-chip b{color:var(--x-cyan);margin-left:2px;}
.rv-chip:hover{border-color:var(--x-cyan);}
.rv-chip.on{background:rgba(34,180,94,.16);border-color:var(--x-cyan);color:#3F3722;}
.rv-chip.dim{opacity:.5;}
.rv-tag{font-size:11px;line-height:1.4;padding:2px 8px;border-radius:999px;color:var(--x-gold);
  background:rgba(255,212,94,.16);border:1px solid rgba(255,212,94,.38);}

/* —— 图表 —— */
.x-chart{display:flex;align-items:flex-end;gap:8px;height:110px;padding:8px 4px;
  background:var(--x-panel2);border:1px solid var(--x-line);border-radius:13px;}
.x-bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;}
.x-bar i{display:block;width:100%;max-width:34px;background:linear-gradient(180deg,var(--x-cyan),rgba(34,180,94,.18));
  border-radius:5px 5px 0 0;min-height:2px;}
.x-bar span{font-size:10px;color:var(--x-dim);margin-top:4px;}
.x-bar b{font-size:10px;color:var(--x-cyan);}
.x-curve{margin:7px 0;}
.x-curve-row{display:flex;align-items:center;gap:8px;font-size:12px;margin:4px 0;}
.x-curve-row .lab{width:56px;color:var(--x-dim);text-align:right;}
.x-curve-row .bar{flex:1;height:12px;background:rgba(255,255,255,.05);border-radius:6px;overflow:hidden;}
.x-curve-row .bar i{display:block;height:100%;background:linear-gradient(90deg,var(--x-violet),var(--x-cyan));}
.x-curve-row .n{width:26px;color:var(--x-cyan);}

/* —— 复习节奏：每一档可点开，跟下面的到期分类交叉对照 —— */
.rp-stage-wrap{position:relative;}
.rp-stage{width:100%;box-sizing:border-box;font-family:inherit;font-size:12px;color:inherit;
  background:transparent;border:1px solid transparent;border-radius:9px;padding:3px 6px;
  cursor:pointer;text-align:left;}
.rp-stage:hover{background:rgba(34,180,94,.08);border-color:var(--x-line);}
.rp-stage.on{background:rgba(34,180,94,.14);border-color:var(--x-cyan);}
.rp-stage.zero{opacity:.5;}
.rp-stage.dim{opacity:.62;}
.rp-stage.dim .n{color:var(--x-dim);}
.rp-stage.dim .bar i{background:linear-gradient(90deg,rgba(130,130,130,.45),rgba(170,170,170,.5));}
.rp-stage .n{width:auto;min-width:26px;text-align:right;font-variant-numeric:tabular-nums;}
.rp-stage .rp-dueb{font-size:11px;line-height:1.5;padding:1px 7px;border-radius:999px;white-space:nowrap;
  color:var(--x-gold);background:rgba(255,212,94,.16);border:1px solid rgba(255,212,94,.38);}
.rp-stage-more{margin:2px 0 7px 64px;padding:7px 10px;font-size:12px;line-height:1.75;color:var(--x-dim);
  border-left:2px solid var(--x-cyan);background:rgba(34,180,94,.05);border-radius:0 9px 9px 0;}
.rp-stage-more b{color:var(--x-cyan);}
.h3-note{font-size:11.5px;font-weight:400;color:var(--x-dim);margin-left:8px;}
.rv-filter{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0 2px;padding:7px 11px;
  font-size:12px;border-radius:10px;background:rgba(34,180,94,.08);border:1px solid var(--x-line);}
.rv-filter b{color:var(--x-cyan);}
.rv-clear{margin-left:auto;font-family:inherit;font-size:11.5px;padding:3px 9px;border-radius:999px;
  cursor:pointer;color:var(--x-dim);background:transparent;border:1px solid var(--x-line);}
.rv-clear:hover{color:var(--x-gold);border-color:var(--x-gold);}
.rv-tag.dim{color:var(--x-dim);background:rgba(120,120,120,.1);border-color:var(--x-line);}
/* 某一类由哪些档组成 */
.rv-comp{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:9px 0 2px;
  font-size:12px;color:var(--x-dim);}
.rv-cstage{font-family:inherit;font-size:12px;line-height:1.4;padding:4px 9px;border-radius:999px;
  cursor:pointer;color:var(--x-dim);background:var(--x-panel2);border:1px solid var(--x-line);}
.rv-cstage b{color:var(--x-cyan);margin-left:2px;}
.rv-cstage:hover{border-color:var(--x-cyan);color:var(--x-text);}
.rv-cstage.on{background:rgba(34,180,94,.16);border-color:var(--x-cyan);color:#3F3722;}

/* —— 聊天 —— */
.x-chat{height:min(46vh,340px);overflow:auto;background:#FFFFFF;
  border:1px solid var(--x-line);border-radius:13px;padding:11px;}
.x-msgline{display:flex;gap:8px;margin:8px 0;align-items:flex-start;}
.x-msgline .who{font-size:19px;}
.x-msgline .bub{background:var(--x-panel2);border:1px solid var(--x-line);border-radius:12px;
  padding:8px 11px;font-size:13.5px;line-height:1.7;white-space:pre-wrap;max-width:86%;}
.x-msgline.me{flex-direction:row-reverse;}
.x-msgline.me .bub{background:rgba(34,180,94,.13);border-color:var(--x-cyan);}
.chat-message{display:flex;flex-direction:column;gap:4px;max-width:92%;min-width:0;}
.x-msgline .chat-message .bub{display:block;max-width:none;}
.chat-time{font-size:11px;color:var(--x-dim);padding:0 3px;}
.x-msgline.me .chat-time{text-align:right;}
.chat-history-info{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--x-dim);margin:3px 0 8px;}
.chat-history-info details{max-width:100%;font-size:12px;}
.chat-history-info summary{cursor:pointer;color:var(--x-cyan);}
.chat-history-info details>div{display:flex;gap:6px;flex-wrap:wrap;padding-top:8px;max-height:110px;overflow:auto;}
.memory-item{padding:4px 8px;border:1px solid var(--x-line);border-radius:8px;overflow-wrap:anywhere;}
.chat-older{display:block;margin:3px auto 12px;padding:6px 12px;background:transparent;border:1px solid var(--x-line);border-radius:999px;color:var(--x-dim);cursor:pointer;font-size:12px;}
.chat-empty{font-size:14px;color:var(--x-dim);text-align:center;padding:24px 12px;line-height:1.7;}
.r-tools{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px;}
.r-mini{font-family:inherit;font-size:12px;padding:6px 10px;border:1px solid var(--x-line);border-radius:10px;
  background:var(--x-panel2);color:var(--x-cyan);cursor:pointer;}
.r-mini:hover{border-color:var(--x-cyan);}
.x-quick{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0;}
.x-quick button{font-size:12px;padding:5px 10px;border-radius:999px;border:1px solid var(--x-line);
  background:var(--x-panel2);color:var(--x-cyan);cursor:pointer;}

/* 聊天占满可用视口；只有回复区滚动，输入与快捷操作保持可见。 */
#chatMask .x-panel{position:relative;display:flex;flex-direction:column;width:min(1440px,100%);
  height:calc(100vh - 48px);height:calc(100dvh - 48px);overflow:hidden;}
#chatMask .x-panel > :not(.x-chat){flex:0 0 auto;min-width:0;}
#chatMask .x-panel > h2{padding-right:36px;}
#chatMask .x-close{position:absolute;top:12px;right:14px;float:none;line-height:1;padding:6px;}
#chatMask .x-chat{flex:1 1 0;height:auto;min-height:0;min-width:0;overscroll-behavior:contain;}
#chatMask .x-msgline .who{flex:0 0 auto;}
#chatMask .x-msgline .bub{min-width:0;overflow-wrap:anywhere;}
#chatMask .x-row .x-input{flex:1 1 180px;min-width:0;width:0;}
#chatMask button,#chatMask .x-btn{max-width:100%;white-space:normal;overflow-wrap:anywhere;}
#chatMask .chat-practice{min-width:0;max-width:100%;}

/* —— 提示条 —— */
.x-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:300;
  background:#FFFFFF;border:1px solid var(--x-cyan);color:var(--x-text);
  border-radius:12px;padding:10px 18px;font-size:14px;box-shadow:0 0 26px rgba(34,180,94,.35);}
.x-banner{background:rgba(255,212,94,.08);border:1px solid rgba(255,212,94,.3);border-radius:12px;
  padding:9px 12px;font-size:12.5px;color:#3F3722;line-height:1.6;margin:8px 0;}

@media(max-width:600px){
  .x-mask{padding:16px;}
  .x-panel{padding:14px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);}
  #chatMask .x-panel{height:calc(100vh - 32px);height:calc(100dvh - 32px);}
  #chatMask .x-panel>.x-banner{font-size:11px;line-height:1.45;padding:7px 9px;margin:5px 0;}
  #chatMask .x-quick{flex-wrap:nowrap;overflow:auto;flex-shrink:0;white-space:nowrap;padding-bottom:4px;margin:5px 0;}
  #chatMask .x-quick button{flex:0 0 auto;white-space:nowrap;}
  #chatMask .voice-hint{font-size:11px;line-height:1.4;}
  #chatMask .x-row:has(#btnOpenSettings){margin:5px 0 !important;}
  #chatMask #btnOpenSettings{font-size:12px;padding:7px 10px;}
  #chatMask .chat-history-info{font-size:11px;margin:3px 0 5px;}
  #chatMask .x-chat + .x-row .x-input{flex-basis:100%;width:100%;order:-1;}
  .login-card{padding:16px;}
}

/* —— 功能工具条（主顶栏下方第二行）—— */
.x-toolbar{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:9px 0 2px;
  padding:8px 10px;background:#FFFDF6;border:1px solid var(--x-line);border-radius:13px;}
.x-toolbar .ghost-btn{font-size:12.5px;padding:5px 10px;}
.example-source,.fp-example-source{display:none!important;}

/* —— 悬浮小老师机器人：全页面可见、可拖拽 —— */
.buddy-bot{position:fixed;right:22px;bottom:96px;z-index:140;display:flex;flex-direction:column;align-items:center;gap:5px;
  padding:0;border:0;background:transparent;font:inherit;color:inherit;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none;}
.buddy-bot.dragging{cursor:grabbing;}
.buddy-bot:focus-visible{outline:3px solid #167743;outline-offset:4px;border-radius:18px;}
.buddy-bot .bb-face{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;font-size:32px;line-height:1;
  background:linear-gradient(135deg,#34C759,#1FA85B);border:3px solid #FFFFFF;
  box-shadow:0 6px 18px rgba(31,168,91,.35),0 2px 6px rgba(120,100,40,.18);
  transition:transform .15s ease;pointer-events:none;}
@media(hover:hover) and (pointer:fine){.buddy-bot:hover .bb-face{transform:scale(1.08) rotate(-4deg);}}
.buddy-bot .bb-tag{font-size:12px;font-weight:700;color:#1FA85B;background:#FFFDF6;border:2px solid rgba(31,168,91,.3);
  border-radius:999px;padding:2px 10px;box-shadow:0 2px 6px rgba(120,100,40,.12);pointer-events:none;}

/* —— 我的画册（学习中心页签）—— */
.gal-tip{margin:4px 0 12px;color:#5A6B52;font-size:14px;}
.gal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;}
.gal-card{background:#FFFDF6;border:2px solid rgba(31,168,91,.18);border-radius:16px;overflow:hidden;box-shadow:0 3px 10px rgba(120,100,40,.10);}
.gal-thumb{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#EAF7EE;cursor:zoom-in;}
.gal-thumb.gal-video{object-fit:contain;cursor:default;}
.gal-thumb[hidden],.gal-preview-error[hidden]{display:none!important;}
.gal-thumb:focus-visible{outline:3px solid #267747;outline-offset:-3px;}
.gal-preview-error{aspect-ratio:4/3;margin:0;padding:20px;display:flex;align-items:center;justify-content:center;background:#EAF7EE;color:#5A6B52;box-sizing:border-box;}
.gal-more{grid-column:1/-1;justify-self:center;}
.gal-info{padding:10px 12px 12px;}
.gal-words{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;}
.gal-word{font:inherit;font-size:14px;font-weight:700;color:#1FA85B;background:#E6F9EC;border:2px solid rgba(31,168,91,.25);border-radius:999px;padding:3px 12px;}
.gal-date{font-size:12px;color:#8a967f;margin-bottom:8px;}
.gal-actions{display:flex;gap:8px;justify-content:flex-start;}
.gal-actions .x-btn{flex:0 0 auto;min-width:88px;padding:8px 14px;font-size:14px;}
.gal-empty{color:#5A6B52;padding:30px 10px;text-align:center;}
.gal-zoom{position:fixed;inset:0;z-index:500;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  background:rgba(255,246,225,.9);backdrop-filter:blur(6px);cursor:zoom-out;padding:24px;box-sizing:border-box;}
.gal-zoom img{max-width:92vw;max-height:82vh;border-radius:18px;border:4px solid #FFFFFF;box-shadow:0 16px 50px rgba(120,100,40,.3);}
.gal-zoom p{margin:0;color:#5A6B52;font-size:14px;font-weight:700;}
.gal-zoom-toolbar{width:100%;max-width:1800px;display:flex;align-items:center;justify-content:space-between;gap:12px;}
.gal-zoom-toolbar button{font:inherit;font-size:15px;min-height:44px;border:2px solid #B7DBC1;border-radius:12px;background:#F2FAED;color:#17663A;cursor:pointer;}
.gal-zoom-detail{padding:8px 16px;}.gal-zoom-close{width:44px;padding:0;font-size:27px!important;line-height:1;}
.gal-zoom-view{width:100%;max-width:1800px;height:min(82vh,calc(100dvh - 124px));max-height:1100px;overflow:auto;display:block;touch-action:pan-x pan-y;cursor:default;}
.gal-zoom-canvas{display:flex;align-items:center;justify-content:center;min-width:100%;min-height:100%;}
.gal-zoom-view img{display:block;box-sizing:border-box;width:100%;height:100%;max-width:none;max-height:none;object-fit:contain;border:0;box-shadow:none;}
.gal-zoom-enlarged .gal-zoom-view{display:block;cursor:grab;}.gal-zoom-enlarged .gal-zoom-view img{max-width:none;max-height:none;object-fit:initial;}
.gal-zoom-dragging{cursor:grabbing!important;user-select:none;}.gal-zoom-toolbar button:focus-visible,.gal-zoom-view:focus-visible{outline:3px solid #267747;outline-offset:4px;}
@media(max-width:560px){.gal-zoom{padding:12px;gap:8px;}.gal-zoom-view{height:min(78vh,calc(100dvh - 100px));}.gal-zoom-toolbar button{font-size:14px;}}

/* ==== 听写遮罩：小测验时把单词卡整张盖住，避免孩子照着念 ==== */
.card .dictation-veil{display:none;}
.card.dictation-mask{
  display:flex !important;flex-direction:column;align-items:center;justify-content:center;
  gap:6px;min-height:186px;padding:20px;box-sizing:border-box;text-align:center;
  background:linear-gradient(180deg,#FFFDF4,#FFF4DD) !important;
  border:2px dashed #E8D597 !important;box-shadow:none !important;cursor:default;
}
.card.dictation-mask>:not(.dictation-veil){display:none !important;}
.card.dictation-mask .dictation-veil{display:flex;flex-direction:column;align-items:center;gap:6px;}
.card.dictation-mask .dictation-veil .dv-ico{font-size:30px;line-height:1;}
.card.dictation-mask .dictation-veil .dv-t{font-size:16px;font-weight:800;color:#8A6200;}
.card.dictation-mask .dictation-veil .dv-d{font-size:13px;color:#A98B4E;line-height:1.5;}
@media(max-width:600px){
  .card.dictation-mask{min-height:148px;padding:14px;}
  .card.dictation-mask .dictation-veil .dv-ico{font-size:24px;}
  .card.dictation-mask .dictation-veil .dv-t{font-size:14px;}
  .card.dictation-mask .dictation-veil .dv-d{font-size:12px;}
}
